#iota #安全 #密码学

无需std iota-crypto

所有IOTA Rust项目的密码学基础真相的规范来源

40个版本 (22个破坏性版本)

新版本 0.23.2 2024年8月14日
0.23.1 2024年1月16日
0.23.0 2023年7月13日
0.17.0 2023年3月13日
0.2.0 2019年6月24日

#1409 in 魔法豆

Download history 5642/week @ 2024-04-24 4579/week @ 2024-05-01 4646/week @ 2024-05-08 8538/week @ 2024-05-15 6418/week @ 2024-05-22 10382/week @ 2024-05-29 5260/week @ 2024-06-05 5559/week @ 2024-06-12 4636/week @ 2024-06-19 6174/week @ 2024-06-26 5479/week @ 2024-07-03 2878/week @ 2024-07-10 2827/week @ 2024-07-17 3964/week @ 2024-07-24 3080/week @ 2024-07-31 2698/week @ 2024-08-07

每月下载量12,963次
用于 43 个crate(28个直接使用)

Apache-2.0

480KB
11K SLoC

crypto.rs

tests coverage dependency status FOSSA Status

一个边界crate,包含了IOTA基金会认为安全使用的密码原语的选择性实现。

要被列入此列表,实现必须满足以下条件:

  • 通过使用最简单可能的类型和高度语义密度的最小接口公开
  • 明确指出他们执行什么算法(例如 PBKDF_HMAC_SHA512
  • 尽可能使用显式内存分配,并优先选择 no_std
  • 由以下证明:数学证明、审计、安全专家的审查、广泛采用
  • 使用从建立的参考实现以及相关规范中可用的测试向量生成的独立测试向量进行测试

算法列表

类型 名称 功能 规范/RFC Rust源 测试源 评分*
加密 AES-256-GCM aes spec aes-gcm nist ★★★☆☆
加密 AES-KW aes-kw spec aes-crate nist ★★★☆☆
加密 XCHACHA20-POLY1305 chacha rfc chacha20poly1305 official ★★★★★
加密 AES-CBC aes-cbc rfc crypto.rs official ☆☆☆☆☆
散列 BLAKE2b-160 blake2b rfc blake2 official ★★★★☆
散列 BLAKE2b-256 blake2b rfc blake2 official ★★★★☆
散列 CURL-P curl-p rfc bee-ternary official ★★☆☆☆
散列 SHA2-256 sha spec sha2 nist ★★★★★
散列 SHA2-384 sha spec sha2 nist ★★★★★
散列 SHA2-512 sha spec sha2 nist ★★★★★
密钥 X25519 x25519 RFC7748 x25519-dalek official ★★★★★
密钥 PBKDF2-HMAC-SHA256 pbkdf rfc pbkdf2 self ★★★★☆
密钥 PBKDF2-HMAC-SHA384 pbkdf rfc pbkdf2 self ★★★★☆
密钥 PBKDF2-HMAC-SHA512 pbkdf rfc pbkdf2 self ★★★★☆
密钥 BIP-39 bip39 rfc crypto.rs multilang ★★☆☆☆
密钥 SLIP-10 slip10 rfc crypto.rs official ★★★☆☆
macs HMAC-SHA2-256 hmac rfc hmac official ★★★★☆
macs HMAC-SHA2-384 hmac rfc hmac official ★★★★☆
macs HMAC-SHA2-512 hmac rfc hmac official ★★★★☆
签名 Ed25519 ed25519 rfc (草案) ed25519-zebra 扩展 ★★★★☆
签名 Secp256k1 ECDSA secp256k1 spec k256 扩展 ★★★☆☆
工具 RANDOM random getrandom 数学 ★★★★★

我们根据对每种算法的一般感觉,为每个算法选择了完全随机的评级。

用法

Cargo.toml


[dependencies.iota-crypto]
git = "https://github.com/iotaledger/crypto.rs"
# be sure to grab the latest github commit revision hash!!!
rev = "09ff1a94d6a87838589ccf1b874cfa3283a00f26"
features = [ "random", "ed25519", "sha", "hmac", "bip39-en" ]
version = "*"

[features]
default = [ "crypto" ]
crypto = [ "iota-crypto" ]

src/main.rs

use crypto::{
    ciphers::{aes, aes-kw}
    hashes::{blake2b, curl-p, sha}
    keys::{bip39, pbkdf, slip10, x25519}
    macs::hmac
    signatures::ed25519
    utils::random
}

参考

cargo doc --workspace --no-deps --open

警告

这个库尚未经过安全审计,因此请自行承担使用风险。在正式的第三方安全审计进行之前,IOTA基金会不对该库的适用性做出任何保证。

因此,它们应被视为实验性的,尚未准备好用于实际应用。

尽管如此,我们对关于设计和实现的反馈非常感兴趣,并鼓励您提出任何疑问或建议。

审阅者

分别审阅实现和API。使用不同的功能标志验证依赖项树。

贡献者

  • 关注提供各种测试向量,超过了任何关于选择初始实现(如性能)的担忧。
  • 审阅导入的代码

硬件/操作系统社区测试

  • 待定:测试硬件矩阵。

讨论

如果您对这个库的使用方式或为何做出某些决定有任何疑问,请创建新的讨论

测试

cargo test --lib --all --all-features --tests

Doctest

我们旨在为每个接口提供至少一个docstest,因此要了解实际使用情况,请查阅rustdocs。

许可证

Apache 2.0

FOSSA Status

依赖关系

~0–2.9MB
~55K SLoC