#broker #protocols #routes #bridge #exit #user #credentials

geph5-broker-protocol

Geph5的代理协议

9次发布

0.2.0-alpha.122024年8月17日
0.2.0-alpha.112024年8月13日
0.2.0-alpha.102024年8月12日

#493 in 认证

Download history 942/week @ 2024-08-10

942 每月下载量
用于geph5-client

ISC许可证

21KB
448

Geph5

Geph5是对Geph4的重大重写,与Geph4相比,在架构上略有不同,主要目的是简化并大幅清理设计

概览

  • sosistab2或类似构建在不可靠管道上的可靠传输不再使用。相反,混淆的传输本身必须提供可靠传输。在实践中,这意味着基于TCP流的多路复用,而不是数据包和UDP。
  • 客户端不再有智能热插拔管道的复杂逻辑。鉴于不同的网络环境、极其不准确/迟钝的手机时钟等,这已被证明是难以实现的。相反,启动一个会话并使用,直到它中断,然后启动另一个会话等。如果会话创建足够快,唯一 noticeable difference is that proxied TCP connections reset,大多数应用程序都能优雅地处理。
  • 中央认证服务器称为经纪人,而不是绑定器。它现在使用简单的JSON-RPC API,没有端到端加密,完整性关键响应具有ed25519签名。
    • 与基于RSA盲签名的大规模密钥实现不同,mizaru2将使用一些方案,在每个匿名凭证中嵌入一些未盲化的位,以及退出端的非交互式验证。后者将大大减少经纪人以及连接延迟的负载,因为退出不再需要与经纪人就每个新会话进行通信。
  • 经纪人负责与桥梁和出口通信以为用户设置路由。消除了复杂的(桥梁数量) * (出口数量)通信模式,经纪人可以轻松用于生成Earendil和类似软件的路由。
  • 通过流("socks5")模式进行隧道传输支持VPN模式,但支持拦截类似tun2socks风格的流量。
  • 我们普遍使用配置文件而不是大量的命令行参数。
  • 我们不再使用网页视图进行GUI。相反,GUI客户端是用Rust编写的,并直接调用协议库。

许可证

代码通常在 MPL 2.0 许可下。对各种项目都有用的底层库,例如 sillad 框架,通常在ISC许可证下发布。

代码组织

与Geph4不同,Geph5以Cargo工作空间的形式组织,采用“monorepo”风格。

  • libraries/ 包含可能相互依赖的库crate。所有这些crate也都会在crates.io上发布。
  • binaries/ 包含二进制crate。
    • geph5-client
    • geph5-exit
    • geph5-bridge
    • geph5-broker

依赖项

~13MB
~270K SLoC