18 个版本
0.2.2 | 2024年6月10日 |
---|---|
0.2.1 | 2023年11月18日 |
0.2.0 | 2023年9月5日 |
0.2.0-rc.1 | 2023年8月29日 |
0.1.1 | 2023年2月25日 |
在 密码学 类别中排名第 365
每月下载量 1,149
180KB
3.5K SLoC
罗森帕斯 README
此仓库包含
- 罗森帕斯协议描述
- 协议的参考实现 – rosenpass 工具
- 集成罗森帕斯和 WireGuard 创建 VPN 的前端 – rp 前端
- 使用 proverif 对协议进行的安全分析
入门
首先,安装 rosenpass。然后,查看 rp
& rosenpass
的帮助函数
rp help
rosenpass help
遵循 快速入门说明,将 VPN 配置并运行。
软件架构
rosenpass 工具 使用 Rust 编写,并使用 liboqs^liboqs 和 libsodium^libsodium。该工具建立对称密钥并将其提供给 WireGuard。由于它通过 PSK 功能向 WireGuard 提供密钥,因此使用 Rosenpass+WireGuard 在加密上不亚于单独使用 WireGuard ("混合安全")。罗森帕斯每两分钟刷新一次对称密钥。
与任何应用程序一样,存在轻微的安全风险(如缓冲区溢出、远程代码执行);Rosenpass应用程序是用Rust编程语言编写的,这种语言更不容易出现此类问题。Rosenpass还可以将密钥写入文件,而不是像WireGuard一样提供它们。通过一些脚本,可以单独使用实现模式,在容器、虚拟机或另一台主机上运行应用程序。此模式还可以用于将除了WireGuard之外的工具与Rosenpass集成。
使用bash编写的rp
工具可以轻松地使用WireGuard和Rosenpass创建VPN。
rp
易于入门,但也有一些缺点;它以root身份运行,需要访问WireGuard和Rosenpass的私有密钥,控制接口,并且只与一个接口一起工作。如果您不自信以root身份运行Rosenpass,应使用独立模式来创建使用容器、jails或虚拟机的更安全设置。
网络与端口
rp分配了两个UDP端口;如果为rosenpass指定端口N,它将为WireGuard分配端口N+1。
与WireGuard一样,Rosenpass不强制在客户端和服务器之间进行分离。如果不指定listen
选项,Rosenpass和WireGuard将选择随机端口;这是客户端模式。如果不指定endpoint
,Rosenpass将不会尝试连接到对等方,而是等待对等方连接。这是服务器模式。您可以同时指定两者。省略两者不被禁止,但也不是很有用。
安全分析
我们正在努力进行安全性的密码学证明,但我们已经提供了软件包的一部分,使用proverif进行符号分析。您可以使用nix包管理器运行安全分析,该管理器处理安装依赖项,或者可以直接调用./analyze.sh
脚本。在这种情况下,您需要确保系统上已安装proverif
、graphviz
、awk
和cpp
。
(nix) $ nix build .#proof-proverif --print-build-logs
(manual) $ ./analyze.sh
分析是根据现代软件工程原则实现的:使用C预处理器,我们能够将分析拆分成多个文件,并使用一些元编程来避免重复。代码使用各种优化来加快分析,例如使用秘密函数来模拟可信/恶意设置。我们将模型分成两个独立的入口点,可以并行进行分析。每个入口点都比两个模型组合起来快得多。包装脚本会立即以颜色提供关于哪些查询按预期执行的反馈:如果查询失败,则显示红色交叉,如果成功,则显示绿色勾号。
[^pqwg-statedis]: 如果没有提供预共享密钥,但这会破坏密钥交换协议 [^wg-statedis]: https://lists.zx2c4.com/pipermail/wireguard/2021-August/006916.htmlA
获取Rosenpass
Rosenpass为更多和更多的发行版打包,也许也包括您选择的发行版?
镜像
不想使用GitHub或者只有IPv6连接?Rosenpass为此设置了两个镜像
支持者
通过NLNet资助,为欧洲委员会的NGI Assure计划提供财务支持。
依赖项
~29–41MB
~727K SLoC