#hashing #security #ssl #no-alloc #no-std

已删除 rs_ssl

一个综合的Rust库,提供包括SHA和Keccak系列在内的加密哈希函数以及HMAC的高效实现,适用于no_std环境。符合GPL-2.0-only许可证。

0.1.2 2023年6月4日
0.1.1 2023年6月4日
0.1.0 2023年5月30日

#78 in #ssl

每月26次下载

GPL-2.0-only

9MB

RustySSL rs_ssl

一个受OpenSSL启发的基于Rust的加密库

Documentation GitHub Workflow Status

愿景

RustySSL通过提供与Rust的核心库完全兼容的API,旨在实现Rust语言的自主性,尽管不仅限于它。RustySSL旨在提供可靠、用户友好、标准兼容和平台无关的加密工具套件。

如何使用

请参阅实现文档以获取示例。

针对NIST测试向量的测试

RustySSL中实现的所有经NIST批准和发布的算法都经过彻底的NIST测试向量测试。这种严格测试确保了我们的实现的正确性和可靠性,为使用RustySSL构建的任何应用程序提供了强大的安全基础。

路线图

  1. RustySSL的初始目标是把所有OpenSSL算法移植到Rust生态系统。
  2. 移植之后,RustySSL将继续扩展并纳入更多的加密算法。
  3. 尽管当前的实现不是最快的,但仍有很大的改进空间。一旦SIMD模块稳定,可能会获得有竞争力的性能提升;

之后计划实现一些加密货币哈希算法,如Equihash以太坊的Keccak-256和其他算法。

为什么是这个项目?

RustySSL的益处包括

  • 最小依赖和供应链安全:通过仅依赖Rust的核心库,RustySSL最大限度地减少了依赖相关问题的风险,并提供了一个更高的供应链安全级别。只需要信任Rust核心库团队;
  • alloc外部包和平台无关:RustySSL避免了alloc包,使其能够在没有假设宿主具有堆分配器的情况下运行,并使其适用于更多的嵌入式应用程序和内核级用途。此外,利用Rust的libcore确保了跨平台的可靠性,减少了最终用户的复杂性;
  • 统一的设计模式:通过遵循Rust核心库中的HashHasherBuildHasher设计模式,用户可以使用对这些特性有基本了解的任何算法。
  • 生态系统自给自足:该项目通过依赖自身的实现来增强Rust生态系统的自给自足,通过FFI调用减少对外部变量的依赖。

哲学

受到Unix哲学的启发,但适应了本项目的目的

  1. 一事一终:每个实现应该专注于单一责任。如果责任分散,应该创建一个新的crate。
  2. 避免依赖中断:更改实现不应破坏依赖。如果需要新的特性,它们应该对所有项目实现有益。
  3. 自给自足:实现应该能够仅使用Rust的libcore独立运行,并且与其向后兼容。
  4. 清晰胜于效率:清晰易懂的代码优于高度优化但晦涩难懂的解决方案。

支持算法

加密算法 散列函数 公钥
AES - 即将推出 BLAKE2 - 即将推出 DSA - 即将推出
Blowfish - 即将推出 通用Keccak {200, 400, 800, 1600} - rs_keccak_nbits Diffie-Hellman密钥交换 - 即将推出
Camellia - 即将推出 GOST R 34.11-94 - 即将推出 Ed25519 - 即将推出
CAST-128 - 即将推出 HMAC - rs_hmac Ed448 - 即将推出
Chacha20 - 即将推出 MD2 - 即将推出 椭圆曲线 - 即将推出
DES - 即将推出 MD4 - 即将推出 GOST R 34.10-2001 - 即将推出
GOST 28147-89 - 即将推出 MD5 - 即将推出 RSA - 即将推出
IDEA - 即将推出 MDC-2 - 即将推出 SM2 - 即将推出
Poly1305 - 即将推出 RIPEMD-160 - 即将推出 X25519 - 即将推出
RC2 - 即将推出 SHA-1 - rs_sha1 X448 - 即将推出
RC4 - 即将推出 SHA-224 - rs_sha224
RC5 - 即将推出 SHA-256 - rs_sha256
SEED - 即将推出 SHA-384 - rs_sha384
SM4 - 即将推出 SHA-512 - rs_sha512
三重DES - 即将推出 SHA-512/224 - rs_sha512_224
SHA-512/256 - rs_sha512_256
SHA3-224 - rs_sha3_224
SHA3-256 - rs_sha3_256
SHA3-384 - rs_sha3_384
SHA3-512 - rs_sha3_512
SHAKE128 - rs_shake128
SHAKE256 - rs_shake256
SM3 - 即将推出
Whirlpool - 即将推出

贡献

欢迎每个人的贡献。

如果您建议将某种算法包含在此项目中,请提出一个issue。

要贡献,请遵循贡献指南

行为准则

每个Rust社区成员的参与都很有价值,每个人都期待有一个愉快和充实的体验。因此,所有参与者、维护者和贡献者都必须遵守行为准则

许可

RustySSL采用GPL-2.0-only许可。

简单来说,这意味着您可以自由使用、修改和分发软件,但任何修改也必须以GPL-2.0-only许可。或者,如果更方便的话,对于改进并符合贡献指南的修改,将其纳入项目中。

依赖关系