基于环形洋葱电路的隐藏服务解析
1. 环形网络的运行阶段
1.1 数据包生成
环形网络的入口节点需周期性生成 NQ 个查询(Query)数据包和 NR 个响应(Response)数据包,分别沿逆时针和顺时针方向循环。以 OR1 为例,生成查询和响应数据包时,各字段填充规则如下:
- CircID :根据数据包是查询还是响应,填入与父节点或子节点的公共 CircID。
- ID 字段 :填入 ID1。
- 序列号 :使用唯一随机数填充。OR1 初始化两个计数器 seq1 和 seq2,前者用于生成查询数据包,后者用于生成响应数据包。每次创建数据包时,对应计数器加 1,其输出值用于填充序列号字段。
- StreamID :用随机数填充,因为 StreamID 仅对客户端查询数据包或隐藏服务(HS)对客户端的响应数据包有意义。
- CMT :填充为“Dummy”。
- 数据字段 :填充随机值,Len 字段相应填充。
1.2 查询数据包的循环
当 OR1 生成查询数据包后,先使用 Ko1 对其加密,然后转发给父节点(如图 5 中的 OR4)。后续每个洋葱路由器(OR)收到子节点的数据包后,用自身洋葱密钥加密再转发给父节点。数据包到达 HS 后,HS 先记录副本用于检查和指纹识别阶段,再用自身洋葱密钥加密后转发给父节点。查询数据包沿逆时针方向在环中循环,直至再次回到入口节点(OR
超级会员免费看
订阅专栏 解锁全文
2万+

被折叠的 条评论
为什么被折叠?



