20 个版本 (5 个稳定版)
3.0.0-pre.4 | 2023年7月25日 |
---|---|
3.0.0-pre.2 | 2023年3月15日 |
2.0.0 | 2022年9月22日 |
2.0.0-pre.3 | 2022年7月11日 |
0.1.0 | 2020年6月5日 |
#15 in 无标准库
8,346 每月下载量
用于 7 个 Crates (6 个直接使用)
470KB
8K SLoC
OPAQUE 密钥交换协议
OPAQUE 是一种非对称密码认证密钥交换协议。它允许客户端使用密码认证服务器,而不需要向服务器暴露明文密码。
本实现基于 OPAQUE 互联网草案。
背景
非对称密码认证密钥交换 (aPAKE) 协议旨在提供密码认证和相互认证的密钥交换,而不依赖于 PKI(除用户/密码注册期间外)且不需要向服务器或其他实体(除客户端机器外)披露密码。
OPAQUE 是一种无需 PKI 的 aPAKE,可抵御预计算攻击并能够使用密钥盐。
文档
API 可以在此处找到,以及使用示例。更多示例可以在 示例目录 中找到。
安装
将以下行添加到您的 Cargo.toml
依赖项中
opaque-ke = "3.0.0-pre.4"
最低支持的 Rust 版本
Rust 1.65 或更高版本。
审计
该库于2021年6月由 NCC Group 进行审计。审计由 WhatsApp 赞助,用于 启用端到端加密备份。
审计发现了 v0.5.0
版本中的问题,并且修复已随后合并到 v1.2.0
版本中。请参阅 完整的审计报告。
资源
- OPAQUE学术出版物,包括形式定义和安全证明
- 草案-irtf-cfrg-opaque-11,包含对OPAQUE的详细(字节级)规范
- “让我们谈谈PAKE”,由Matthew Green撰写的一篇介绍性博客文章,涵盖了OPAQUE
- @serenity-kit/opaque,这个库的WebAssembly包
- opaque-wasm,这个库的WebAssembly包。有关@serenity@kit/opaque和
opaque-wasm
的比较,请参阅此处 - react-native-opaque,一个与@serenity@kit/opaque API相匹配的React Native包
贡献者
此代码的作者为Kevin Lewi (@kevinlewi)和François Garillot (@huitseeker)。要了解更多关于为此项目做出贡献的信息,请参阅此文档。
致谢
特别感谢Hugo Krawczyk和Chris Wood帮助澄清差异并为此实现提供建议。此外,还要感谢@daxpedda添加了no_std支持、p256支持以及对库的其他一般改进。
许可证
本项目可在MIT许可证或Apache License,版本2.0下使用。您可以选择上述许可证中的一种。
依赖项
~3–5MB
~99K SLoC