
rscrypto v0.8.0
Cripto en Rust con cero dependencias por defecto: BLAKE3, Ed25519/X25519, hashes, MACs, KDFs, AEADs y sumas de verificación con aceleración completa SIMD/ASM.
rscrypto
rscrypto coloca primitivas criptográficas, hashes criptográficos y rápidos, hashing de contraseñas
y sumas de verificación detrás de un único modelo de características.
SIMD y ensamblador condicionados por objetivo aceleran los backends portables de Rust sin una dependencia de producción de C/FFI,
OpenSSL o bibliotecas del sistema.
rscrypto es un crate de primitivas, no una pila TLS, un kit de herramientas PKI, un almacén de claves ni una implementación de protocolos.
Rendimiento medido
Las afirmaciones de rendimiento se limitan a campañas retenidas exactas y cargas de trabajo equivalentes. La campaña corregida de septiembre de 2026 contiene 19.614 casos completados, incluidas comparaciones corregidas de ML-KEM y Argon2, pero no se ha curado ninguna tarjeta de puntuación agregada de reemplazo. Los agregados más antiguos que mezclaban entropía, preparación de claves, representación de salida o longitudes de salt siguen siendo registros históricos y no son afirmaciones de rendimiento actuales.
La descripción general de benchmarks registra las campañas, los resultados específicos por objetivo y los límites restantes.
Los contratos de comparación definen cargas de trabajo equivalentes de ML-KEM y Argon2.
Garantía
Las afirmaciones de seguridad fallan de forma cerrada: la evidencia faltante u obsoleta elimina la afirmación en lugar de debilitar la barrera.
- La evidencia de corrección combina vectores de NIST, RFC, upstream y Wycheproof con implementaciones separadas, propiedades, pruebas negativas y Miri.
- Los objetivos de fuzzing ejercitan implementaciones de producción a través de límites de primitivas, parsers, máquinas de estado y traits. Las semillas minimizadas se reproducen como pruebas, con un carril separado de sanitizadores.
- Las pruebas diferenciales portable-versus-acelerado cubren longitudes, alineaciones, colas, transiciones de estado, dispatch y comportamiento de fallback en objetivos nativos.
- El arnés de tiempo constante inventaría operaciones exactas en
ct.tomly combina inspección optimizada de binarios enlazados, pruebas BINSEC para kernels declarados de forma fija y pruebas de temporización DudeCT para casos declarados de extremo a extremo. - Los propietarios de secretos redactan
Debugy limpian el almacenamiento inicializado al liberar. Las reglas de duplicación varían según el tipo: el estado de BLAKE2/BLAKE3 con clave admiteClone. El inventario de propiedad enumera estos límites. Los fallos de verificación son opacos; las aperturas AEAD fallidas limpian el texto plano no autenticado.
Una afirmación de tiempo constante existe solo cuando la evidencia para el objetivo, característica, compilador, perfil y operación requeridos pasa. El código que parece sin ramas no se trata como prueba.
Inspeccione la evidencia de pruebas, el modelo de tiempo constante, el ciclo de vida de secretos y el modelo de amenazas.
La brecha restante de revisión independiente es una auditoría de seguridad de terceros.
El proyecto actualmente no puede financiar una.
La evidencia automatizada no reemplaza esa revisión, por lo que rscrypto no afirma estar auditado,
validado por FIPS 140-3, verificado formalmente ni ser de tiempo constante como crate completo.
Reporte vulnerabilidades sospechosas a través de GitHub Private Vulnerability Reporting bajo el
proceso de SECURITY.md, no como un issue público.
Instale solo lo que use
Compilación mínima de SHA-2 no_std:
[dependencies]
rscrypto = { version = "0.10", default-features = false, features = ["sha2"] }
Pila completa de primitivas con aleatoriedad del SO habilitada:
[dependencies]
rscrypto = { version = "0.10", features = ["full", "getrandom"] }
La característica predeterminada es std; default-features = false la elimina.
Habilite getrandom solo para APIs que obtienen salts, claves, nonces
o entropía de generación de claves RSA del sistema operativo.
La guía de características explica la selección de compilación; Cargo.toml posee el grafo exacto de características.
Inicio rápido
use rscrypto::Sha256;
let one_shot = Sha256::digest(b"hello world");
let mut hasher = Sha256::new();
hasher.update(b"hello ");
hasher.update(b"world");
assert_eq!(hasher.finalize(), one_shot);
Las APIs de hash admiten uso de una sola vez y en streaming.
Los flujos de trabajo ejecutables para AEAD, firmas, RSA, ECDH P-256 y P-384, X25519, ML-KEM, hashing de contraseñas
e introspección de backend están en examples/README.md.
Mapa de primitivas y características
| Familia | Incluido | Habilitar |
|---|---|---|
| Sumas de verificación | CRC-16, CRC-24, CRC-32, CRC-32C, CRC-64/XZ, CRC-64/NVMe | checksums o características hoja |
| Hashes criptográficos | SHA-2, SHA-3, SHAKE, cSHAKE, BLAKE2, BLAKE3, Ascon-Hash/XOF/CXOF | crypto-hashes o características hoja |
| Hashes rápidos | XXH3-64/128, RapidHash V3-64 | fast-hashes o características hoja |
| MACs y KDFs | HMAC-SHA-2/SHA-3, KMAC128/256, Poly1305, HKDF-SHA-2, PBKDF2-HMAC-SHA-2 | macs, kdfs o características hoja |
| Hashing de contraseñas | Argon2d/i/id, scrypt, registros de contraseñas PHC acotados | password-hashing o características hoja |
| Firmas y RSA | ECDSA P-256/P-384, Ed25519, ML-DSA-44/65/87, firma, verificación, cifrado y generación de claves RSA | signatures o características hoja |
| Intercambio de claves y KEMs | P-256 ECDH, P-384 ECDH, X25519, ML-KEM-512/768/1024 | key-exchange o características hoja |
| AEADs | AES-GCM, AES-GCM-SIV, AES-SIV-CMAC, ChaCha20-Poly1305, XChaCha20-Poly1305, AEGIS-256, Ascon-AEAD128 | aead o características hoja |
El digest de aceptación de WebSocket solo para compatibilidad requiere websocket-sha1,
que está excluido de full y de cualquier otra característica paraguas.
Use docs.rs para tipos y métodos exactos.
Plataformas y dispatch
La implementación portable de Rust es la autoridad byte a byte.
El soporte de objetivo en tiempo de compilación y, con std,
las capacidades de CPU detectadas en tiempo de ejecución seleccionan kernels SIMD o de ensamblador elegibles.
La aceleración no soportada recurre a Rust portable.
La guía de plataformas explica el catálogo de objetivos soportados, el dispatch, la cobertura de no_std
y los límites de portable-only.