3个版本

0.1.2 2024年8月17日
0.1.1 2024年8月12日
0.1.0 2024年8月12日

402身份验证

Download history 308/week @ 2024-08-10

308 每月下载量
用于 geph5-client

ISC 许可证

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