安全路由给路由消息加上"验真"与"防伪"两道工序,代表思路是签名校验(SAODV 一类)与逐跳 MAC 累积(Ariadne 一类);位置隐私则反过来防止协议本身泄露行踪,手段有假名轮换、混淆区域与 k 匿名。前者保护消息不被篡改,后者保护人不被看见。
6.1 拆解了攻击,6.2 建好了身份与信誉的地基,这一节把它们装回路由协议本体。装的过程处处是取舍:每加一道校验,路由发现就慢一拍、报文就长一截、弱节点就多喘一口气。安全设计的成熟度不体现在"加了多少锁",而体现在"每把锁都对着一个明确的攻击、且付了明码标价的代价"。
签名路线(SAODV 的思想):每份路由消息(RREQ、RREP)由发起者签名,沿途任何节点都能用其公钥验证"这确实是它发的、没被改过"。对跳数这种沿途要递增的字段,签名没法覆盖(一签就锁死),配套用"哈希链"处理——发起者预先生成一串哈希,每过一 hop 摘掉一层,任何人改大跳数都会让哈希对不上。签名路线的验证是逐包独立的,实现直白;代价是公钥运算在弱节点上开销可观,且需要 6.2 的密钥体系先就位(公钥从哪来、怎么信)。
逐 hop 挟持路线(Ariadne 的思想):不验"谁发的",验"路过的每个人都点头"。发起者在请求里附一个目标才知道的密钥材料,消息每过一 hop,该节点用与下一 hop 的共享密钥做一个消息认证码(MAC)挂在后面,像传阅文件每人签一笔。到了终点,终点校验整串 MAC——路径上任何一个人被动过手脚都露馅。这条路线只用对称密码(快),但要求两两共享密钥(预分发假设),且路径上的节点列表公开,隐私性差——这就自然引出本节下半场。
两条路线的对比表:
| 维度 | 签名路线 | 逐 hop MAC 路线 |
|---|---|---|
| 密码学开销 | 高(公钥验签每节点每包) | 低(对称 MAC) |
| 信任前提 | 公钥体系可用 | 两两预共享密钥 |
| 防伪造源 | 强,源头可追溯 | 中,源头靠目标回验 |
| 防篡改路径 | 哈希链护跳数 | 每人签名护全程 |
| 路径隐私 | 较好 | 差,节点列表公开 |
| 弱节点友好 | 一般 | 好 |
除验真之外,安全路由还有一条设计公理:不把鸡蛋放进一条路径。多路径加随机选择,让黑洞吸不走全部流量、让干扰者掐不准主路——这与 4.3 的多路径自愈共享同一套机制,安全性与可靠性在多路径上合流。给路由请求加随机延迟窗口则直接废掉 6.1 的"抢答优势":大家都等一个随机时长再答,攻击者不再天然第一。
安全路由保护消息的完整,位置隐私保护人的行踪——而后者的泄露源常常是协议自己。攻击者不需要解密任何内容,只要长期监听同一个稳定地址的报文出现方位,就能描出这辆车、这个人的活动范围;路由消息里的节点列表更是把"谁和谁相邻"白白写在报头里。
三道防线按强度递进。假名轮换:节点定期换地址(配合 6.2 的身份机制在幕后保持账号连续),让外部观察者串不起长期轨迹;代价是轮换瞬间会打断正在进行的会话与路由缓存,要挑业务空档做。混淆区域:在区域入口把一批报文混合重排再发出(时序与顺序都打散),观察者只能知道"这批人里有他",不知道他去了哪——代价是时延与缓冲开销,适合保护关键路口。k 匿名:确保任何位置上报都至少和 k 减一个邻居混在一起(报同一坐标或同一网格),个人的位置被 k 人摊薄;代价是精度损失,k 越大位置越糊,救援类业务要谨慎选 k。
假名轮换的一个周期(示意): 节点当前假名 P17,轮换定时到 向 k 个邻居声明:P17 即将换为 P53,窗口 2 秒 邻居更新映射表(对上层会话保持连续) 节点切换到 P53,旧假名冷却期后回收 风险点:声明消息本身若被长期关联,轮换形同虚设 改进:轮换声明也加密并随混淆区域批量发出
背景:某物流车队组网项目,验收前做隐私审计:攻击者模型为"路边的被动监听者,只收报文不解密"。操作:审计员在一座枢纽站附近架设监听两天,完全不碰加密层,只做三件事——按地址聚合报文、按信号方位三角定位、把两者按时间拼成轨迹。结果:二十九辆车的常驻路线被完整复原,其中三辆押运车的路线规律清晰到可以预测每日到站时刻;而项目原本的隐私设计只有"内容加密"。处置:全队启用假名轮换(周期十五分钟,加混淆窗口)、路由报头去除稳定节点列表(改用逐 hop 替换的临时标识)、枢纽站半径两百米内启用混淆区域。复审:轨迹复原度从"完整路线"降到"知道经过枢纽站,方向与班次不可辨"。代价:轮换窗口内会话重建使平均时延增加约百分之六,业务可接受。解读:加密保护内容,保护不了元数据——谁在说话、说给谁、从哪说,这些"信封外面的字"在自组织网络里到处都是(路由、信标、邻居发现全在广播),隐私设计的对象是元数据而不只是内容。变式:若对手是懂协议的主动攻击者(发探测包试探假名映射),还要加"对陌生询问的应答限速与噪声",隐私与可用性的拔河永无终局。
位置隐私的每个手段都在向可用性借债:假名轮换打断会话与缓存,混淆区域加时延,k 匿名损失定位精度。所以隐私设计的第一步不是挑技术,而是划定保护对象与场景——全车队都匿名代价过高,通常只保护特定车辆(押运、医护、家暴受害者用车);全时段都混淆没必要,只在固定路线的暴露段启用。分级保护让代价只花在刀刃上。第二步才是配手段,并且给每条手段写明"付出什么、防住谁"——能写出这两句的隐私设计才算完成,写不出就是跟风堆料。
隐私机制还有一个常被忽略的属性:它会过期。假名轮换的周期若与用户作息同相(比如恰好每小时整点换),观察者按周期重新关联即可破解;混淆区域的缓冲策略若长期不变,对手可以统计进出时间差缩小范围。因此隐私参数要当作"会被研究透的秘密"来管理——定期更换轮换相位、随机化混淆窗口、给 k 匿名组重新洗牌。把隐私机制的参数排进运维日历,和换密钥一个待遇,这套机制才真正长期有效。
位置隐私的三道防线各自挡住不同的观察手段,合在一张图上看得最清楚:假名轮换切断"长期身份"与"报文来源"的关联,混淆区域切断"进出配对"的推断,k 匿名把精确坐标摊成一片网格。图下方标注了每道防线的代价与失效条件——防御图配上失效条件,才是完整的攻防认知。
