Skip to main content

Crate ferritls_core

Crate ferritls_core 

Source
Expand description

§ferritls-core

纯 Rust 实现的密码学核心,为 ferritls-rustls (rustls CryptoProvider 适配层)提供全部密码原语。

§FIPS 140-3 模块边界

本 crate 是规划中提交 CMVP 验证的模块边界:所有算法在边界内用纯 Rust 自研实现(无 C、无汇编、#![forbid(unsafe_code)]),依赖白名单仅 subtlezeroize(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 批准状态落地里程碑
sha2SHA-256/384/512批准M1
sha3SHA3-256/512、SHAKE-128/256(FIPS 202)批准M8.3
hmac / hkdfHMAC、HKDF批准M1
aes / gcm / ccmAES、AES-GCM、AES-CCM批准M2
chacha20poly1305ChaCha20-Poly1305非批准M2
ecdhX25519(非批准)、P-256/384(批准)混合M3
mlkemML-KEM-768(FIPS 203,批准 KEM)批准M8.3
signECDSA、RSA、Ed25519(非批准)混合M4
drbg / entropySP 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
边界内统一的错误类型。