#tor #arti

tor-llcrypto

由Tor使用的低级加密包装器

32个版本 (12个破坏性更新)

新增 0.21.0 2024年8月1日
0.20.0 2024年6月27日
0.19.0 2024年6月5日
0.7.0 2024年2月5日
0.0.0 2021年6月24日

#265 in 加密学

Download history 326/week @ 2024-04-15 294/week @ 2024-04-22 642/week @ 2024-04-29 481/week @ 2024-05-06 349/week @ 2024-05-13 949/week @ 2024-05-20 680/week @ 2024-05-27 520/week @ 2024-06-03 986/week @ 2024-06-10 1612/week @ 2024-06-17 1324/week @ 2024-06-24 1432/week @ 2024-07-01 254/week @ 2024-07-08 903/week @ 2024-07-15 800/week @ 2024-07-22 1815/week @ 2024-07-29

每月3,859次下载
用于 41 个crate (23 直接使用)

MIT/Apache

120KB
2K SLoC

tor-llcrypto

为Tor提供低级加密实现。

概述

tor-llcrypto crate包装了Tor需要的低级加密原语,并提供了几个较小的加密功能,这些功能是实现Tor所需的。

此crate是Arti的一部分,Arti是一个在Rust中实现Tor的项目。Arti中的许多其他crate都依赖于它。

你可能不想使用此crate来实现非Tor协议;相反,如果你有一个低级协议要实现,你应该使用它所依赖的其他crate,或者如果你想要在其他东西中添加安全性,应该使用更高层次的加密系统。不小心将这些函数组合在一起的方式可能是不安全的。

为什么有一个独立的crate?

为什么我们在这里收集并重新导出我们的加密库,而不是让Arti中的不同crate直接使用底层的加密crate?

通过在这个crate中包装我们的加密,我们确保在整个生态系统中使用相同的实现,并提供一个升级和测试我们加密的单一位置。

添加到tor-llcrypto

任何在Arti中的至少两个其他crate中使用的低级加密算法都应包含在tor-llcrypto中,特别是如果该算法的目的不是针对Tor算法的任何单个部分。

加密特质(如RustCrypto中的那些)不必放入tor-llcrypto,因为它们是接口而不是实现。

内容

加密在cipher中实现:目前只公开或需要AES。

加密摘要在d中:Tor协议在不同位置使用多个摘要,这些摘要都收集在这里。

公钥密码学(包括签名、加密和密钥协商)在 [pk] 中。Tor 协议的较老部分需要 RSA;较新部分基于 Curve25519 和 Ed25519。这里还提供了用于这些对称算法中使用的密钥的 密钥操作 功能。

util 模块提供了一些用于操作与密码学相关的对象和代码的杂项兼容性实用工具。

特性

API 特性

relay -- 启用仅在网关上使用的密码学。

hsv3-client -- 启用仅作为 v3 红洋葱服务客户端运行时所需的密码学。

hsv3-service -- 启用仅作为 v3 红洋葱服务运行时所需的密码学。

keymgr -- 启用仅用于密钥管理的密码学。

cvt-x25519 -- 导出将 ed25519 密钥转换为 x25519 以及相反转换的函数。

加速特性

这些特性不应从库中默认启用,因为它们不是“严格累加”的:它们禁用一个实现以启用另一个。

with-openssl -- 使用 openssl 作为其支持的密码学特性的后端。

with-sha1-asm -- 如果启用,使用 sha1 算法的汇编实现。

许可证:MIT OR Apache-2.0

依赖项

~10MB
~185K SLoC