2个版本

0.1.1 2023年7月28日
0.1.0 2023年5月14日
0.0.0 2022年10月11日

#2627 in 密码学

MIT/Apache

105KB
2K SLoC

RustCrypto: AuCPace

crate Docs Build Status Apache2/MIT licensed Rust Version Project Chat

Pure Rust实现的AuCPace密码认证密钥交换算法。

文档

关于

此库是AuCPace(增强可组合密码认证连接建立)协议的实现。AuCPace是一种针对工业物联网应用设计的基于验证器的PAKE协议,允许两个共享弱密码的当事人安全地导出强共享密钥(因此可以建立加密+认证的通道)。

被动攻击者(监听连接的人)无法从密码或生成的密钥中获取任何信息。主动攻击者(中间人攻击)对密码的猜测次数正好一次,除非他们猜对了,否则他们无法从密码或生成的密钥中获取任何信息。该协议的每次执行允许一次猜测。通过猜测限制,使用弱密码变得更加安全:网络级别攻击者无法进行离线字典攻击。

该协议需要在安全通道上先对用户进行“注册”。如果没有这个,进行注册是不安全的。

ClientMessageServerMessage 结构体包含了客户端和服务器之间消息中发送的所有数据。可选地,可以启用 serde 功能,以允许 serde 序列化和反序列化这些消息。

目前此实现使用的是“Ristretto255”群组,但这可能会改变。

它是做什么的?

AuCPace是为工业物联网环境设计的,特别是当你有许多低功耗服务器和一个假设上更强大的单个客户端时。此协议专门为具有有限公共密钥基础设施(PKI)的情况设计,使用V-PAKE协议通过防止钓鱼和离线字典攻击提供了显著的安全改进。

此外,还实现了该协议的变体——StrongAuCPace,它通过在传输过程中对敏感值进行遮蔽来抵抗预计算攻击。

该协议的局部增强版本通过在每个服务器上为每个用户使用长期密钥对,而不是每次都生成一个新的,从而减少了服务器上的计算负担。

⚠️ 安全警告

此crate从未接受过独立的第三方审计,以验证其安全性和正确性。

自行承担风险使用!

最低支持的Rust版本

Rust 1.60 或更高版本。

最低支持的Rust版本可能会在未来更改,但将通过小版本升级来实现。

许可证

根据您的选择,许可协议可以是以下之一

贡献

除非您明确声明,否则根据 Apache-2.0 许可证定义的,任何有意提交供包含在您的工作中的贡献,将以上述方式双许可,不附加任何额外的条款或条件。

依赖项

~2–2.9MB
~60K SLoC