Tor 使用各种不同的密钥,有三个目标。1) 加密,以确保Tor 网络内的数据隐私;2) 身份认证,以便客户端知道他们是在与他们想要连接的中继进行通讯;3) 签名,以确保所有客户知道是同一组中继。
加密:首先,所有 Tor 连接使用 TLS 链接加密,因此观察者无法通过流量检测来查看指定数据包属于哪条线路。
此外,Tor 客户端与线路中的每个中继创建临时加密密钥;这些额外的加密层意味着只有出口中继可以读取来自客户端的数据包。
当线路结束时双方都将丢弃密钥,因此,记录流量并入侵中继获取密钥是无效的。
身份验证:每个 Tor 中继都有相应的解密公钥,称为“洋葱密钥 (onion key)”。
每个中继每四周轮换其洋葱密码。
当 Tor 客户端建立线路,在每一步都要求 Tor 中继证明其洋葱密钥的知识。
通过这种方式,线路的第一个节点不能欺骗线路上的其他节点。
由于 Tor 客户端选择连接线路,它可以确保实现 Tor “分布式信任”属性:线路上没有单个中继,能够同时知道客户端以及客户端的目的地。
协调:客户端如何得知哪些是中继,以及如何得知他们的密钥对于中继是否正确?
每个中继都有长期的签名公钥,称为“身份密钥”。
每个目录管理机构都另有一个“目录签名密钥”。
目录管理机构为所有已知中继提供已签名的列表,列出了每个中继的一组证书(由它们的身份密钥自签名),指定了它们的密钥、位置、退出策略等。
所以,除非对手可以控制大多数目录管理机构(截至 2022 年共有 8 个),否则无法欺骗 Tor 客户端使用其他 Tor 中继。
客户端如何知道谁是目录管理机构?
Tor 软件自带内置位置列表以及每个目录管理机构的公钥。
因此,唯一欺骗用户使用虚假 Tor 网络的方法是提供专门修改过的软件版本。
用户如何知道他们获得了正确的软件?
在分发源代码或者程序包时,我们使用 GNU Privacy Guard 进行数字签名。
请查看如何检查 Tor 浏览器签名的说明。
为了确定它的签名真的来自我们,你需要亲自与我们见面,获得我们的 GPG 密钥指纹副本,或者你需要认识这样做过的人。
如果你担心这个级别的攻击,我们建议你参与安全社区并与成员互动。