10次发布

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

#213 in 认证

Download history 246/week @ 2024-08-06 552/week @ 2024-08-13

798 每月下载量
用于 geph5-client

ISC 许可证

3KB

Geph5

Geph5 是基于 Geph4 的一些主要架构差异的重大重构,主要目的是 简化设计并大量清理

概述

  • sosistab2 或类似的在不可靠管道上构建可靠传输的方法不再使用。相反,混淆的传输必须本身提供可靠传输。在实践中,这意味着基于TCP的流复用,而不是数据包和UDP。
  • 客户端不再具有复杂的智能热插拔管道的逻辑。鉴于不同的网络环境、极其不准确/迟钝的手机时钟等,这已被证明是很难实现的。相反,启动一个会话并使用它直到它中断,然后启动另一个会话等。只要有足够的会话创建速度,唯一可感知的差异是代理的TCP连接重置,这对于大多数应用程序来说是可以优雅处理的。
  • 中心认证服务器称为 代理 而不是绑定器。它现在还使用简单的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

无运行时依赖