20 个版本
使用旧的 Rust 2015
0.1.1 | 2019年9月27日 |
---|---|
0.1.0 | 2019年7月19日 |
0.0.19 | 2019年1月28日 |
0.0.16 | 2018年12月2日 |
0.0.1 | 2017年1月29日 |
#749 in 加密学
51 每月下载量
用于 2 crates
93KB
1K SLoC
rust-sphinxcrypto
本软件包提供了一个 Sphinx 加密包格式的具体参数化,可用于构建各种类型的加密包交换网络,包括高延迟和低延迟匿名网络;
特别是 混洗网络。
sphinx
"一种古埃及的石像,狮身人面或动物头。"
Sphinx 的参考实现使用了 Lioness,一种宽块加密(即 SPRP)来加密包体,因此得名。这个实现使用 AEZ 来加密包体,而不是 Lioness,因为它的速度更快。
"Sphinx 混洗网络加密包格式规范" :
https://github.com/katzenpost/docs/blob/master/specs/sphinx.rst
Sphinx: 一种紧凑且可证明安全的混洗格式 by George Danezis 和 Ian Goldberg.
https://cypherpunks.ca/~iang/pubs/Sphinx_Oakland09.pdf
此 Sphinx 实现与 Katzenpost golang Sphinx 兼容,并共享测试向量。( https://github.com/katzenpost/core/tree/master/sphinx )加密参数化为
- EXP(X, Y) - X25519
- MAC(K, M), H(M) - HMAC-SHA256-128
- S(K, IV) - CTR-AES128
- KDF(SALT, IKM) - HKDF expand SHA256
- SPRP_Encrypt(K, M)/SPRP_Decrypt(K, M) - AEZv5
Sphinx 包的几何参数化在 常数 子模块中。
Sphinx 具有以下特性
- 单次使用回复块
- 每跳位运算不可链接性
- 不可区分的回复
- 隐藏路径长度
- 隐藏中继位置
- 标签攻击检测
- 回复攻击检测
警告
此代码尚未经过密码学家的正式审计。因此,不应将其视为安全或正确。使用时请自行承担风险!
安装
要导入 sphinxcrypto
,请将以下内容添加到您项目 Cargo.toml
文件的依赖项部分
sphinxcrypto = "^0.1.1"
然后按照以下方式导入包
extern crate sphinxcrypto;
致谢
这个库是 Yawning 的 Katzenpost Sphinx 实现的 Rust 语言版本
https://github.com/katzenpost/core/tree/master/sphinx
感谢 Jeff Burdges 在我的 Rust 问题上的帮助。
许可证
GNU AFFERO 通用公共许可证
依赖项
~11MB
~195K SLoC