#身份验证 #签名密钥 #系统 #实现 #本地 #ecksport #基于NaCl的

ecksport-auth

使用基于NaCl签名密钥系统的本地身份验证实现

6个版本

0.3.3 2024年8月22日
0.3.2 2024年8月21日
0.2.0 2024年8月9日
0.1.1 2024年8月1日

#387 in 密码学

Download history 84/week @ 2024-07-26 31/week @ 2024-08-02 113/week @ 2024-08-09 487/week @ 2024-08-16

每月 715 次下载

MIT 许可证

52KB
1K SLoC

Ecksport

传输 -> xport -> ecksport

Ecksport 是一种低开销的多用传输协议的另一次迭代。

这是我尝试的这种想法的第三次迭代,所以希望这次能成功。在使用之前,还有很多工作要做。

设计目标

Ecksport 对其设计有某种看法,但对使用案例没有看法。核心协议是一系列传输的帧,我们通过它构建一个通道范式来复用独立的流。每个通道都在“主题”的上下文中打开,默认为双向。连接的每一方都必须确认通道的关闭才能完全关闭它。

在此基础上,我们可以在不同的主题上并行构建一些原语并使用它们

  • RPC 调用/响应模式
  • 订阅
  • 消息接收器

安全性

底层协议不假设加密系统,但我们有一些特殊消息用于实现身份验证。Ecksport 可以在 TLS(或任何可以传输其帧的系统)上使用,并继承其安全性。您还可以将其用于 Noise 会话,将 Ecksport 帧放入 Noise 帧中 1:1。目标是支持通过 WebSockets 传输帧,以便在 Wasm 上下文中使用。

详细信息

我们在内部使用 Borsh 进行一些编码,但我们打算将其限制在有限范围内。完整的协议规范待定。

用途

Ecksport 旨在在 Aspect 消息协议中使用,作为典型的客户端-服务器和服务器-服务器传输协议。提交一个 PR 添加使用它的应用程序吧!

项目结构

  • ecksport-auth - 使用基于NaCl签名密钥系统的本地身份验证实现
  • ecksport-codec - 用于 RPC 服务器中序列化类型的 Trait 定义
  • ecksport-core - 帧类型、特质、主题、错误代码等定义
  • ecksport-net - 连接抽象、通道句柄等
  • ecksport-rpc - RPC 协议定义
  • ecksd - 将 RPC 调用调度到子进程等的服务器 [wip]
  • eckscat - 像netcat这样的命令行工具 [wip]

已知问题

  • Borsh 在流帧格式中的使用非常糟糕。这将在不久的将来得到修复,并替换为更好的编码,同时还有一些辅助编写帧器的工具。
  • 有很多缓冲参数不可配置,这将被公开。
  • 特征标记不足,您可能希望构建所有Tokio相关功能。
  • 没有第一方TLS帧器。

待办事项

  • 修复Borsh问题。
  • 支持native-tlsrustls作为可以在ClientBuilder上使用的新方法,这样我们可以使用TlsDomain身份类型。
  • 清理crate导出。
  • ecksd真正实现其描述的功能。
  • 可能需要一个阻塞的同步接口?

依赖关系

~22–32MB
~240K SLoC