6 个版本 (稳定)
1.1.2 | 2024 年 6 月 2 日 |
---|---|
1.1.1 | 2024 年 4 月 30 日 |
1.1.0 | 2024 年 4 月 6 日 |
1.0.1 | 2023 年 11 月 24 日 |
0.0.0 | 2023 年 3 月 3 日 |
#1828 在 密码学
14,637 每月下载量
用于 2 crates
135KB
2.5K SLoC
Maybenot 🤔
Maybenot 是一个用于隐藏加密通信中模式以进行流量分析的框架。其目标是增加网络攻击者的不确定性,因此其标志 🤔 - 思考表情符号 (U+1F914)。
考虑加密通信协议,如 TLS、QUIC、WireGuard 或 Tor。虽然连接是加密的,但在加密通信中的 模式 可能仍然会泄露有关通信明文的有关信息。Maybenot 是一个创建防御框架,用于隐藏这些模式。
有关基于 Maybenot 的防御模拟,请参阅 Maybenot 模拟器。
设计
Maybenot 的一个实例会重复接收一个或多个 事件,这些事件描述了通过加密通道传输的加密流量,并产生零个或多个 预定操作,例如注入 填充 流量或阻止出站流量。一个或多个 状态机 根据事件确定采取哪些操作。状态机具有轻量级运行时,并受限于可以安排的填充量和阻止量。
通过报告事件和执行预定操作与加密通信协议集成。Maybenot 不指定特定的异步运行时或如何保持时间,以便于集成。
示例用法
use maybenot::{
framework::{Action, Framework, TriggerEvent},
machine::Machine,
};
use std::{str::FromStr, time::Instant};
// deserialize state machine from string
let s = "789cedca2101000000c230e85f1a8387009f9e351d051503ca0003";
let m = vec![Machine::from_str(s).unwrap()];
// create framework instance
let mut f = Framework::new(&m, 0.0, 0.0, 1420, Instant::now()).unwrap();
loop {
// collect one or more events
let events = [TriggerEvent::NonPaddingSent { bytes_sent: 1420 }];
// trigger events, schedule actions, at most one per machine
for action in f.trigger_events(&events, Instant::now()) {
match action {
Action::Cancel { machine: MachineId } => {
// if any scheduled action for this machine, cancel it
}
Action::InjectPadding {
timeout: Duration,
size: u16,
bypass: bool,
replace: bool,
machine: MachineId,
} => {
// schedule padding of a specific size after timeout
}
Action::BlockOutgoing {
timeout: Duration,
duration: Duration,
bypass: bool,
replace: bool,
machine: MachineId,
} => {
// schedule blocking of outgoing traffic for duration after timeout
}
}
}
}
更多详情
Maybenot 的防御开发正在积极进行中。有关一些早期结果,请参阅 https://github.com/ewitwer/maybenot-defenses。
虽然框架和模拟器的 v1 版本已稳定,但 v2 版本正在逐步成形,因为我们正在扩展框架的功能。目标是使框架尽可能简单,同时仍然足够灵活,以实现广泛的防御。
贡献
除非你明确说明,否则任何旨在包含在作品中并由你提交的贡献,如 Apache-2.0 许可证中定义的,应双重许可为 MIT 或 Apache-2.0,无需任何额外条款或条件。
来源
Maybenot 是基于 Perry 和 Kadianakis 在 2019 年提出的 Tor 电路填充框架,这是一个基于 2016 年 Juarez 等人设计的 WTF-PAD 网站指纹防御的推广,该设计又基于 2006 年 Shmatikov 和 Wang 提出的 自适应填充概念。
赞助
得到了 Mullvad VPN、瑞典互联网基金会和瑞典知识基金会的支持。
依赖项
~9–17MB
~308K SLoC