lbl
|
c2fd1ff870
|
refactor: remove panic-prone unwrap and expect calls
|
2026-08-23 12:04:40 +08:00 |
|
lbl
|
de0183139d
|
feat: add TAP device mode and Ethernet interoperability
|
2026-08-22 21:47:49 +08:00 |
|
lbl
|
af42ff7fe6
|
refactor(crypto): nonce 与 AAD 职责分离
nonce 只承担唯一性职责:seq(随机起始计数器,现占满 4 字节,
每流约 43 亿包才回绕)+ src + dst;不再用 msg_type 覆盖 seq 低位。
AAD 承担认证职责:msg_type(byte0)/flags(byte2)/reserved(byte3),
即所有传输中不变且不参与 nonce 的头部字节;ttl(byte1) 中继会递减,
仍不认证。
线上协议头部布局不变,但 nonce 推导方式改变,与旧版本
(含 48ba12d)加密不互通。
新增测试 test_tampered_msg_type_rejected:篡改 msg_type 必须解密失败。
|
2026-08-20 22:54:38 +08:00 |
|
lbl
|
016165ff8e
|
fix(crypto): flags/reserved 头部字节纳入 AAD 认证
chacha20_poly1305 加解密 AAD 为空,flags 字节(COMPRESSED/FEC/GATEWAY)
未经认证,中间人可翻转标志位造成不可检测的丢包/语义篡改。
AAD 取头部 byte2(flags)/byte3(reserved);ttl(byte1) 中继转发时会递减,
不纳入 AAD 以保持中继兼容。
注意:此改动与旧版本(AAD 为空)不兼容,新旧节点间无法互通加密包。
测试:
- test_tampered_flags_rejected: 翻转 flags 必须解密失败
- test_ttl_change_still_decrypts: ttl 递减不影响解密
|
2026-08-20 22:40:30 +08:00 |
|
lbl
|
b0db6c9659
|
补充加解密跨版本兼容性测试
nonce 完全由包自带的头部字节计算,解密端不依赖发送端状态,因此
seq 修复与旧版本线上兼容。测试双向验证:旧版本(seq=0)加密的包新版本
可解密,新版本(递增 seq)加密的包按旧逻辑(仅读头部算 nonce)也可解密。
|
2026-08-20 21:44:50 +08:00 |
|
lbl
|
3c0532b4c5
|
修复加密 nonce 全局重用
PacketCrypto 的 nonce 由 msg_type+seq+src+dst 构成,但 seq 字段从未赋值,
同一 (msg_type,src,dst) 的所有包共用同一 nonce,AEAD 密钥流重用。
- PacketCrypto 增加 Arc<AtomicU32> 出站序号计数器(随机起始值,避免
进程重启后相同密钥复用低序号段),encrypt_in_place 时自动分配 seq
- 补充 nonce 唯一性与 clone 共享计数器的测试
|
2026-08-20 21:33:37 +08:00 |
|
lbl
|
b4301a8106
|
v2
|
2026-02-10 18:20:39 +08:00 |
|