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 加密学

Download history 9/week @ 2024-03-31

51 每月下载量
用于 2 crates

AGPL-3.0-only

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