3个版本
新 0.1.2 | 2024年8月17日 |
---|---|
0.1.1 | 2024年8月12日 |
0.1.0 | 2024年8月12日 |
402 在 身份验证
308 每月下载量
用于 geph5-client
20KB
448 行
Geph5
Geph5 是对 Geph4 的一次重大重写,与 Geph4 相比有一些大的架构差异,主要目的是 简化并大量清理设计
概述
sosistab2
或类似构建在不可靠管道上的可靠传输不再使用。相反,混淆传输必须自己提供可靠传输。在实践中,这意味着基于流的多路复用传输在TCP上,而不是在数据包和UDP上。- 客户端不再有复杂的逻辑来智能地热插拔管道。鉴于不同的网络环境、极其不准确/迟钝的手机时钟等,这已被证明是难以实现的。相反,启动一个会话并使用它,直到它中断,然后启动另一个会话等。只要有足够的会话创建速度,唯一 noticeable difference is that proxied TCP connections reset, which most applications handle gracefully.
- 中央认证服务器称为 代理,而不是绑定器。它现在使用简单的 JSON-RPC API,没有端到端加密,并且完整性关键响应具有 ed25519 签名。
- 与基于 RSA 盲签名的实现相比,mizaru2 将使用一些方案,该方案在每个匿名凭据中嵌入一些未混淆的位,以及出口侧的非交互式验证。后者将 大大 降低代理的负载以及连接延迟,因为出口不再需要与代理通信以建立每个新会话。
- 代理负责与桥梁和出口通信以设置用户的路由。消除了复杂的
(桥梁数量) * (出口数量)
通信模式,并且可以轻松地将代理用于生成 Earendil 和类似软件的路由。 - VPN 模式通过流("socks5")模式进行隧道传输,但支持拦截类似 tun2socks 风格的流量。
- 我们普遍使用配置文件而不是大量的命令行参数。
- 我们不再使用Web视图进行GUI。相反,GUI客户端是用Rust编写的,并直接调用协议库。
许可证
代码通常采用 MPL 2.0 许可。对各种项目有用的底层库,例如 sillad
框架,通常采用ISC许可证。
代码组织
与Geph4不同,Geph5采用Cargo工作空间组织,采用“单一仓库”风格。
libraries/
包含可能相互依赖的库crate。所有这些crate也收到crates.io发布。binaries/
包含二进制crate。geph5-client
geph5-exit
geph5-bridge
geph5-broker
依赖
~7–39MB
~572K SLoC