C-toxcore: 记录与加密和 p2p 网络相关的问题和答案

创建于 2017-01-05  ·  10评论  ·  资料来源: TokTok/c-toxcore

如何防止将流量泄漏到节点?
节点应该仅用于帮助客户端找到彼此。 不是为了传递数据。
它看起来像一个中间人。 它并不比带有 Microsoft 服务器的 Skype 好。

最有用的评论

我理解这一点让人感觉不正确,因此我提交了一个文档问题以改进我们对此的表述。 感谢您解释您的想法。

为了快速解释您的具体担忧,我将对其进行解释。 如果我误解了,请告诉我:

问:_我担心来自我计算机的数据包不会直接传送到我朋友的计算机,而是有时(或一直,取决于网络条件)通过第三方计算机中继。_

答:首先,假设您在本地 wifi 上,考虑一个数据包直接从您的计算机发送到您朋友的计算机:

  • 您的计算机创建一个加密的 Tox 数据包(请参阅加密详细信息),它将其包装在一个包含源/目标端口(随机/33445)的 UDP 数据包中,然后在一个包含源/目标 IP 地址的 IP 数据包中(您和您的朋友) ,然后是包含源/目标 MAC 地址(您和接入点)的无线帧。
  • 此无线帧通过 AES 加密通道(假设为 WPA2)发送。
  • 无线接入点以及网络的每个其他用户都会收到它。 其他用户通常会忽略该数据包,但不必这样做。 读取不适合您的数据包称为嗅探。 这是其他人可以读取数据包的第一个点。
  • 无线接入点连接到 WAN(互联网)路由器,该路由器通过某种方式(声学耦合、ISDN、ADSL、电缆、卫星、光纤……)与您的互联网服务提供商的路由器建立连接。 此连接可以加密(某些卫星),但通常不是。 此时,您已将数据包发送到的 WAN 路由器将创建一个以太网帧,其中包含它自己的 MAC 地址和它连接的下一个路由器的 MAC 地址,即您的 ISP 路由器。 在传输过程中,IP 和 MAC 地址可能未加密,任何嗅探您和 ISP 之间的光纤的人都可以读取。 这是其他人可以读取数据包的第二个点。
  • 一旦数据包到达 ISP,它将通过其数据中心的各种内部系统,可能在不同的时间点加密或未加密。 然后,ISP 路由器将根据 IP 地址决定它应该将数据包发送到的下一个路由器。 为此,它将解开接收到的以太网帧并将其包装在一个新帧中并将其发送到下一个路由器。 在 ISP 处理过程中的任何时候,该 ISP 的数据中心或系统管理人员都可以访问您的数据包。 第三个访问点。
  • 现在,您的数据包将从路由器跳到路由器(尝试traceroute $your_friend_ip以查看它的去向),每个路由器都可以自由访问以太网帧、IP 数据包和 UDP 数据包及其内容。 许多访问点,我们称之为第四个。
  • 那么您的朋友可能处于类似的情况,在不同的地方使用本地 wifi。 他们的路由器和无线网络成员再次可以读取数据包。 第五入口。
  • 直到现在,最后,您的数据包才到达您朋友的计算机。 它收到一个无线帧,解包找到IP包,解包找到UDP包,解包找到Tox包,然后由Tox协议实现处理。 此处理涉及对数据包进行解密和解码并对其进行操作,通常会导致您朋友的客户端显示消息、播放音频或视频,或执行一些其他应用程序级别的活动。

如您所见,在从您到您的朋友的“直接”传输过程中,有很多点可以由任意人检查数据包。 端到端加密意味着在您和您的朋友之间,任何人都无法读取您打算传达的实际内容。 他们总是只能看到加密的数据。

现在,在中间添加一个 TCP 中继只会延长路由(理论上它可以缩短它,但这不太可能)。 任何运行中继的人都可以读取数据包,就像您和您的朋友之间的其他任何人一样。 Tox 加密协议可确保您的通信安全。

现在,我还看到了第二个问题:

问: _如果中继我的数据的节点之一是邪恶的会发生什么?_
答: Tox 会选择一些 TCP 中继,以防无法直接进行 UDP 连接(例如,由于 NAT 或防火墙)。 邪恶中继可以做很少的事情来做坏事:

  • 他们可以选择不发送数据包。 在这种情况下,Tox 将通过不同的中继重试。 只有当所有引导节点都是邪恶的时,传输才会失败。
  • 他们可以发送修改后的数据包。 多亏了消息验证码,任何篡改数据的行为都可能被检测到。 如果发送者设法以软件无法检测到的方式进行篡改,则解密的数据包将是垃圾,应用层(Tox 协议解码器)将丢弃它。 因此,这与根本不中继数据包具有相同的效果。

基本上就是这样。 在任何情况下,邪恶的中继都无法读取您的数据。 它只能选择不中继,并且只有每个引导节点都是邪恶的,才能进行通信。 这会很烦人,我们会对此不满意,但任何时候都不会泄露任何人的信息。


我希望这能澄清一些事情。 我没有校对这个回复,但我会确保它在网站上正确显示以供将来参考。 如果您有任何其他疑虑,请告诉我。 再次感谢您提出这个问题。

所有10条评论

你误会了。 存在 DHT 引导节点以促进加入 DHT。 如果您想进一步解释,可以查看这篇文章: https://en.wikipedia.org/wiki/Distributed_hash_table。 或者,您可以加入 IRC,在 Freenode 上的#tox 频道,我们会尽力解释事情。

您的流量可能会通过充当 TCP 中继的引导节点,而 tox 使用 TCP 进行朋友连接。 它类似于TURN 。 您的流量仍然是端到端加密的,因此您的消息的机密性和真实性永远不会受到损害。 这种 TCP 中继可能就是您在流量分析中看到的。 在tox 协议规范中有详细描述。

utox-inline_1

是语音流量。 它是加密的,现在第三方无法解密,但这并不意味着将来不可能。

我有直接的 IPv4/IPv6 地址。 为什么我应该将我的数据发送到节点?
你说 - '存在 DHT 引导节点以促进加入 DHT。',但事实并非如此。 在附加的屏幕截图中,流量通过一个节点,而不是直接流向我。

“Tox 是一款易于使用的软件,可以让您与朋友和家人联系起来,无需其他人监听。 ”——这是谎言吗? 流量加密,好的。 但它使用节点进行交付? 我不知道,谁维护了这个节点。 如果一个或多个节点为假怎么办?

我理解这一点让人感觉不正确,因此我提交了一个文档问题以改进我们对此的表述。 感谢您解释您的想法。

为了快速解释您的具体担忧,我将对其进行解释。 如果我误解了,请告诉我:

问:_我担心来自我计算机的数据包不会直接传送到我朋友的计算机,而是有时(或一直,取决于网络条件)通过第三方计算机中继。_

答:首先,假设您在本地 wifi 上,考虑一个数据包直接从您的计算机发送到您朋友的计算机:

  • 您的计算机创建一个加密的 Tox 数据包(请参阅加密详细信息),它将其包装在一个包含源/目标端口(随机/33445)的 UDP 数据包中,然后在一个包含源/目标 IP 地址的 IP 数据包中(您和您的朋友) ,然后是包含源/目标 MAC 地址(您和接入点)的无线帧。
  • 此无线帧通过 AES 加密通道(假设为 WPA2)发送。
  • 无线接入点以及网络的每个其他用户都会收到它。 其他用户通常会忽略该数据包,但不必这样做。 读取不适合您的数据包称为嗅探。 这是其他人可以读取数据包的第一个点。
  • 无线接入点连接到 WAN(互联网)路由器,该路由器通过某种方式(声学耦合、ISDN、ADSL、电缆、卫星、光纤……)与您的互联网服务提供商的路由器建立连接。 此连接可以加密(某些卫星),但通常不是。 此时,您已将数据包发送到的 WAN 路由器将创建一个以太网帧,其中包含它自己的 MAC 地址和它连接的下一个路由器的 MAC 地址,即您的 ISP 路由器。 在传输过程中,IP 和 MAC 地址可能未加密,任何嗅探您和 ISP 之间的光纤的人都可以读取。 这是其他人可以读取数据包的第二个点。
  • 一旦数据包到达 ISP,它将通过其数据中心的各种内部系统,可能在不同的时间点加密或未加密。 然后,ISP 路由器将根据 IP 地址决定它应该将数据包发送到的下一个路由器。 为此,它将解开接收到的以太网帧并将其包装在一个新帧中并将其发送到下一个路由器。 在 ISP 处理过程中的任何时候,该 ISP 的数据中心或系统管理人员都可以访问您的数据包。 第三个访问点。
  • 现在,您的数据包将从路由器跳到路由器(尝试traceroute $your_friend_ip以查看它的去向),每个路由器都可以自由访问以太网帧、IP 数据包和 UDP 数据包及其内容。 许多访问点,我们称之为第四个。
  • 那么您的朋友可能处于类似的情况,在不同的地方使用本地 wifi。 他们的路由器和无线网络成员再次可以读取数据包。 第五入口。
  • 直到现在,最后,您的数据包才到达您朋友的计算机。 它收到一个无线帧,解包找到IP包,解包找到UDP包,解包找到Tox包,然后由Tox协议实现处理。 此处理涉及对数据包进行解密和解码并对其进行操作,通常会导致您朋友的客户端显示消息、播放音频或视频,或执行一些其他应用程序级别的活动。

如您所见,在从您到您的朋友的“直接”传输过程中,有很多点可以由任意人检查数据包。 端到端加密意味着在您和您的朋友之间,任何人都无法读取您打算传达的实际内容。 他们总是只能看到加密的数据。

现在,在中间添加一个 TCP 中继只会延长路由(理论上它可以缩短它,但这不太可能)。 任何运行中继的人都可以读取数据包,就像您和您的朋友之间的其他任何人一样。 Tox 加密协议可确保您的通信安全。

现在,我还看到了第二个问题:

问: _如果中继我的数据的节点之一是邪恶的会发生什么?_
答: Tox 会选择一些 TCP 中继,以防无法直接进行 UDP 连接(例如,由于 NAT 或防火墙)。 邪恶中继可以做很少的事情来做坏事:

  • 他们可以选择不发送数据包。 在这种情况下,Tox 将通过不同的中继重试。 只有当所有引导节点都是邪恶的时,传输才会失败。
  • 他们可以发送修改后的数据包。 多亏了消息验证码,任何篡改数据的行为都可能被检测到。 如果发送者设法以软件无法检测到的方式进行篡改,则解密的数据包将是垃圾,应用层(Tox 协议解码器)将丢弃它。 因此,这与根本不中继数据包具有相同的效果。

基本上就是这样。 在任何情况下,邪恶的中继都无法读取您的数据。 它只能选择不中继,并且只有每个引导节点都是邪恶的,才能进行通信。 这会很烦人,我们会对此不满意,但任何时候都不会泄露任何人的信息。


我希望这能澄清一些事情。 我没有校对这个回复,但我会确保它在网站上正确显示以供将来参考。 如果您有任何其他疑虑,请告诉我。 再次感谢您提出这个问题。

刚刚又看了你的留言,发现又漏掉了一个问题:

Q:虽然现在数据是加密的,但是是什么保证了以后不会被解密呢?
答: Tox 协议通过使用临时密钥来实现完美的前向保密。 这意味着,如果其中一个密钥被泄露,则可以解密一些消息,但不能解密您的整个通信历史记录。 以后这句话的“几条消息”部分会缩减为“一条消息”。 如果您的长期密钥被泄露,则无法解密过去的通信。

如果我们使用的密码原语被破坏,我们就输了。 这取决于它们被破坏的方式,这些是可能的最坏情况:

  • 无需密钥即可轻松反转密码( salsa20 )。 在这种情况下,所有过去的通信都会受到影响。
  • 密钥交换原语 ( curve25519 ) 被破坏的方式是,在给定公钥的情况下,可以轻松恢复密钥。 在这种情况下,所有过去的通信也会受到影响。

这些情景不太可能在不久的将来或永远成为现实。 根据密码学界目前的理解,只有量子计算才能实现第二种情况。 第一种情况被认为是不可能的。


说了这么多,我还注意到你说你有一个直接的 IPv4 地址。 这是什么意思? 如果您有一个公共 IPv4 地址分配给您的计算机,并且端口 33445 是打开的,那么 Tox 应该会很快建立直接连接。 如果没有,那就是一个错误,我们应该一起找出它为什么选择使用 TCP。

非常感谢您的解释。 现在我明白了一点。
我不确定直接 IPv4 地址...我使用的是 WireGuard VPN。 WireGuard 安装在具有直接 IPv4 和 IPv6 地址的虚拟服务器上。 所有流量都包装在命名空间中。
笔记本电脑网络信息: https ://gist.github.com/DebugReport/1268e15c3bd1c99b56929d645d99392b
如果我弄错了,我很抱歉。
也许 IPv4 不是直接的,但 IPv6 呢? 如果其他客户端也有 IPv6,我可以使用直接连接吗?

是的,如果双方都有 IPv6,并且防火墙配置没有阻止端口 33445(或附近的其他端口,介于 33445 和 33545 之间),它应该可以工作。 您的朋友在同一个 VPN 中吗?

不。
嗯……问题。 我们需要一直使用节点吗? 或者仅当我们中的一个人没有直接 IP(仅限 IPv4?)?
IPv6 (me) <-> IPv6 (friend) 是否需要节点? 如果是 - 为什么?

(保持这个问题开放,直到所有这些问题都在文档中得到回答)

如果你们中的一个人有一个公共 IP,那么另一个人可以使用另一个人的 IP 和端口进行引导。 这需要客户支持我认为目前没有任何客户:

  • 从具有公共 IP 和开放端口 ( tox_self_get_dht_id ) 及其端口 ( tox_self_get_udp_port ) 的客户端获取 DHT 公钥。
  • 以某种方式将此密钥发送给另一个(通过电话或 Skype 上的消息或其他方式口述)。
  • 另一个现在需要使用(key, ip, port)元组进行引导。

在此之后,您将拥有一个 2 人的个人 Tox 网络。 所以,理论上你不需要任何其他节点。 不过,它们确实使事情变得更容易。

如果你们中的一个人有公共 IP 和开放端口,那么连接到引导节点也应该让您建立直接连接。 DHT引导节点与是否可以连接几乎没有关系。 即使你们中只有一个人拥有公共 IP 和开放端口,也应该可以进行直接连接。 另一个将连接到它,这将在本地路由器中创建一个路由,并为客户端提供一个临时的随机公共端口。

请注意:我注意到 C-Toxcore 的行为相同。 其中一方位于具有公共 IP 地址且没有防火墙的 VPS 上,另一方位于 NAT 之后,但转发了 Tox 端口 - 因此它们应该可以相互访问。 流量仍然通过 TCP 路由。

我不认为这是一个安全问题,但如果 P2P 网络通过中继中继其所有流量,这肯定是一个可扩展性问题。

此页面是否有帮助?
0 / 5 - 0 等级

相关问题

iphydf picture iphydf  ·  9评论

DataMaster-2501 picture DataMaster-2501  ·  6评论

iphydf picture iphydf  ·  5评论

tox-user picture tox-user  ·  4评论

SkyzohKey picture SkyzohKey  ·  8评论