Expand description
§ferritls-core
纯 Rust 实现的密码学核心,为 ferritls-rustls
(rustls CryptoProvider 适配层)提供全部密码原语。
§FIPS 140-3 模块边界
本 crate 是规划中提交 CMVP 验证的模块边界:所有算法在边界内用纯 Rust
自研实现(无 C、无汇编、#![forbid(unsafe_code)]),依赖白名单仅
subtle 与 zeroize(M3 起增加 getrandom 作为边界外熵源输入)。
任何新依赖都必须先更新 docs/FIPS.md 的白名单与审计依据(见 AGENTS.md
硬性规则 2)。
§默认 feature simd(P2)
默认启用的 simd feature 在 AES/ChaCha20 热路径使用标准库
core::simd(portable_simd)的显式向量类型——属 std,不是第三方
依赖,白名单不变。stable 工具链上需要 RUSTC_BOOTSTRAP=1 环境变量
(本仓库 .cargo/config.toml 已提供;下游用户自带该 env 或以
default-features = false 退出到标量回退)。通道宽度按编译目标自动
选择(SSE2/NEON 基线;用户以 RUSTFLAGS 开启 target-feature 时升级
AVX2/AVX-512),无运行时分发、无 unsafe。
§模块地图
| 模块 | 内容 | FIPS 批准状态 | 落地里程碑 |
|---|---|---|---|
sha2 | SHA-256/384/512 | 批准 | M1 |
sha3 | SHA3-256/512、SHAKE-128/256(FIPS 202) | 批准 | M8.3 |
hmac / hkdf | HMAC、HKDF | 批准 | M1 |
aes / gcm / ccm | AES、AES-GCM、AES-CCM | 批准 | M2 |
chacha20poly1305 | ChaCha20-Poly1305 | 非批准 | M2 |
ecdh | X25519(非批准)、P-256/384(批准) | 混合 | M3 |
mlkem | ML-KEM-768(FIPS 203,批准 KEM) | 批准 | M8.3 |
sign | ECDSA、RSA、Ed25519(非批准) | 混合 | M4 |
drbg / entropy | SP 800-90A CTR-DRBG、OS 熵 | 批准 | M5 |
selftest | 上电自检(KAT) | 要求项 | M5 |
der | 最小 DER/PKCS#8/SEC1 解析 | — | M4 |
rsabig(内部) | RSA 固定宽度大数 + Montgomery 模幂 | 非公开支撑 | M4 |
ct / policy / ops | 常数时间工具、批准策略、后端分发 | — | M0(M8.1 分发实装) |
§实现状态
M1–M7 已全部落地:上表各模块的实现与向量测试(NIST/RFC 官方向量、
Wycheproof、RFC 8448 密钥调度)均已启用并全绿,无 todo!() 残留。
M8.1 起 AES-GCM 公开类型经 ops 对象分发、SHA-256 块压缩经
ops 函数分发(均为默认软件直连、零开销;可安装边界外硬件
后端 crate 替换执行核心,见 ops 模块文档)。
新增测试向量时沿用既有流程:核对官方原文 → 入库 → 全绿
(见 AGENTS.md“测试体系”)。
Re-exports§
pub use policy::Approval;
Modules§
- aes
- AES 块密码(FIPS 197),128/192/256 位密钥的软件实现。
- ccm
- AES-CCM(RFC 3610 / SP 800-38C),认证加密。
- chacha20poly1305
- ChaCha20-Poly1305(RFC 8439),认证加密。
- ct
- 常数时间工具与边界内标准 crate 的统一出口。
- der
- 最小 DER 解析:PKCS#8 / SEC1 / PKCS#1 私钥与 SPKI 公钥的拆包。
- drbg
- CTR-DRBG(NIST SP 800-90A Rev.1 §10.2.1),AES-256 为基、无推导 函数(no df),安全强度 256 位,seedlen = 48 字节。
- ecdh
- 椭圆曲线 Diffie-Hellman 密钥交换:X25519(RFC 7748)与 NIST P-256/P-384(SP 800-56A)。
- entropy
- OS 熵源接入(getrandom 系统调用)。
- gcm
- AES-GCM(NIST SP 800-38D),认证加密。
- hkdf
- HKDF(RFC 5869),基于
crate::hmac。 - hmac
- HMAC(RFC 2104 / FIPS 198-1),基于
crate::sha2。 - mlkem
- FIPS 203:ML-KEM 模格 KEM——全部三个参数集(M8.3 起 768, M8.4 泛化为 512/768/1024)。
- ops
- 后端分发入口(性能优化的唯一挂接点)。
- policy
- 批准策略:FIPS 140-3 下各算法的批准状态与批准模式门控。
- selftest
- 上电自检(FIPS 140-3 ISO/IEC 19790 §7.9.2 强制项)。
- sha2
- SHA-2 家族:SHA-256 / SHA-384 / SHA-512(FIPS 180-4)。
- sha3
- FIPS 202:Keccak 海绵族——SHA3-256/512 与 SHAKE-128/256(M8.3)。
- sign
- 数字签名:ECDSA(P-256/P-384,RFC 6979 确定性 nonce)、Ed25519 (RFC 8032)、RSA(PKCS#1 v1.5 / PSS,M4b 落地)。
Enums§
- Error
- 边界内统一的错误类型。