×

magic-wormhole-zh

hqy hqy 发表于2025-12-09 17:25:47 浏览3 评论0

抢沙发发表评论

magic-wormhole 项目[magic-wormhole/magic-wormhole: get things from one computer to another, safely]文档翻译。

原文:magic-wormhole.readthedocs.iol

设计

wormhole使用PAKE ”密码认证 密钥交换“,一种使用简短低熵密码的加密算法,来建立强大的高熵共享密钥。该密钥之后可以用来加密数据。wormhole使用SPAKE2算法,见论文:2005_rsa.pdf

PAKE 在交互操作与抵御离线攻击之间做出了有效的权衡。网络攻击者要想得知共享密钥,唯一的途径就是在初始连接尝试时进行中间人攻击,并且准确地猜出双方所使用的密码。

攻击者成功的机会与虫洞代码的熵值成反比。默认情况下,系统使用的是16位代码(用户可以通过设置 –code-length= 来改变这一数值)。这意味着每次使用该工具时,攻击者成功的几率仅为1/65536。因此,通常情况下,在攻击者获得较为显著的成功机会之前,用户可能会遇到很多次错误提示。

超时

此程序并未设置任何内置的超时时间,但预期是两个客户端在大约一小时之内相继启动。因此,这个工具最适合那些已经在进行实时交流并打算转至安全连接的用户。为确保文件传输成功,双方客户端都需要保持运行状态直到整个传输过程结束。


中转

虫洞库依赖于一个“邮箱服务器”(亦称“会合服务器”),这是一个基于WebSocket的简易中继器,能够将消息从一个客户端转发给另一个客户端。这样设计的好处是虫洞代码无需包含IP地址和端口号。库中预设了一个公共服务器的URL作为默认服务器,该服务将免费提供,直至因访问量过大或滥用而难以维持。对于那些对可靠性有更高要求的应用程序,用户可以自行搭建中继服务器,并配置客户端使用自建服务器。邮箱服务器的代码被封装在名为magic-wormhole-mailbox-server的独立软件包内,相关文档可参见其说明[magic-wormhole-mailbox-server/docs/welcome.md at master · magic-wormhole/magic-wormhole-mailbox-server]。为确保正常通信,双方客户端需使用同一个邮箱服务器。用户可通过--relay-url选项来覆盖默认服务器设置。

文件传输命令同样依赖于一种叫做“传输中继”的机制,这是一种简单的服务器,能够将两个入站的TCP连接连接起来,并在两者之间转发数据(其功能类似于TURN服务器)。在使用虫洞发送文件时,会通过加密消息共享双方的IP地址,客户端首先尝试直接建立连接。若直接连接失败,则会转而使用传输中继。默认情况下,库中内置了一个公共服务器的地址和端口,适合处理一般的数据流量。传输中继的实现代码位于名为magic-wormhole-transit-relay的独立软件包中,相关文档可在该软件包中找到。客户端在连接协商过程中会交换关于使用哪个传输中继的信息,这意味着即使配置了不同的中继也不会出现问题。用户可以通过--transit-helper选项来自定义传输中继服务器,从而覆盖默认设置。

此协议设计有向客户端发送通知和错误消息的机制:如果需要关闭任何一个中继服务器,将会通过这些渠道告知客户端有关替代方案的信息。

虫洞模块允许其他应用程序利用这些由密码保护的通信通道。目前该模块已支持Twisted框架,并计划在未来增加阻塞/同步操作的支持。具体细节可参考docs/api.md文档获取更多信息。

文件传输工具依赖于另一个名为wormhole.transit的模块,此模块创建了一个加密的数据传输管道。wormhole.transit不仅支持使用传输中继也支持直接连接,并能同时尝试这两种方式进行数据传输。尽管TransitSender(发送端)与TransitReceiver(接收端)是独立的组件,但一旦建立了连接,数据就可以双向流通。所有传输的数据均采用基于PAKE阶段生成的密钥并通过nacl/libsodium提供的“secretbox”机制进行加密。关于如何实现的具体示例,请参阅src/wormhole/cli/cmd_send.py文件。


打赏

本文链接:https://www.kinber.cn/post/6038.html 转载需授权!

分享到:


推荐本站淘宝优惠价购买喜欢的宝贝:

image.png

 您阅读本篇文章共花了: 

群贤毕至

访客