云服务器价格_云数据库_云主机【优惠】最新活动-搜集站云资讯

美国服务器_免备案服务器_怎么买

小七 141 0

BoringTun,Rust中的用户空间WireGuard实现

今天,我们很高兴发布过去几个月我们一直在做的一个项目的源代码。它被称为BoringTun,是用Rust编写的WireGuard®协议的用户空间实现。关于WireGuardWireGuard是一个相对较新的项目,它试图用一个简单、快速和安全的协议取代旧的VPN协议。与传统的vpn不同,WireGuard是围绕Noise协议框架构建的,它只依赖于一些精选的现代加密原语:X25519用于公钥操作,ChaCha20-Poly1305用于身份验证加密,Blake2s用于消息验证。和QUIC一样,WireGuard通过UDP工作,但它的唯一目标是安全地封装IP包。因此,它不能保证数据包的传递,也不能保证数据包按发送的顺序发送。协议的简单性意味着它比旧的、不可维护的代码库更健壮,并且可以相对快速地实现。尽管它相对年轻,WireGuard正在迅速普及。从头开始在评估WireGuard可能为我们提供的潜在价值时,我们首先考虑了现有的实现。目前,有三种可用的实现WireGuard内核模块—用C语言编写,它与Linux内核紧密集成,在外不可用。由于它与内核的集成,它提供了最好的性能。它是根据GPL-2.0许可证授权的。wireguard go-这是wireguard唯一兼容的用户空间实现。顾名思义,它是用Go编写的,一种我们喜欢的语言,并且是在麻省理工学院许可下授权的。TUNSAFILE——用C++编写的,它没有精确地实现用户空间协议,而是它的一个偏差。它支持多种平台,但从设计上讲,它只支持一个对等平台。TunSafe使用AGPL-1.0许可证。鉴于我们正在寻找:用户空间跨平台-包括Linux、Windows、macOS、iOS和Android快很明显,我们认为,只有一个符合要求,那就是wireguard go。然而,基准测试很快表明,wireguard go远远低于内核模块提供的性能。这是因为尽管Go语言非常适合编写服务器,但对于原始数据包处理(VPN基本上就是这样做的)。选择铁锈在我们决定创建一个userspacewireguard实现之后,只需要选择正确的语言。虽然C和C++都是高性能、低层语言,但最近的历史证明,它们的内存模型对于现代密码学和面向安全的项目来说太脆弱了。wireguard Go显示Go在这个用例中是次优的。显而易见的答案是生锈。RISE是一种现代的、安全的语言,它既和C++一样快,也可以说比GO更安全(它是内存安全的,并且还规定了允许更安全并发的规则),同时支持大量的平台选择。我们也有一些业内最优秀的防锈人才在公司工作。事实上,WireGuard的另一个Rust实现WireGuard rs是存在的。但是wireguard rs非常不成熟,我们强烈认为,如果在许可的许可下实现完全独立的实现,wireguard生态系统将受益匪浅。博林顿就这样诞生了。这个名字听起来有点无聊,但有一个原因:BoringTun通过"无聊"创造了一个隧道。这是对Google的BoringSSL的认可,它将OpenSSL的复杂性剥离出来。我们认为WireGuard有机会对像OpenVPN这样的传统VPN协议做同样的事情。我们希望BoringTun可以作为生态系统的一部分成为一个有价值的工具。WireGuard是一个令人难以置信的工具,我们相信它有机会成为未来类似VPN技术的事实标准。我们正在将WireGuard的Rust实现添加到生态系统中,希望人们能发现它有用。下一步行动BoringTun目前正在接受内部安全审查,可能还没有完全准备好用于关键任务。我们会在发现问题的时候解决问题,我们也欢迎社区在Github项目页面上的贡献。该项目是在开源3条款BSD许可下获得许可的。注:WireGuard是Jason a.Donenfeld的注册商标。