
rscrypto v0.9.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 pone primitivas criptográficas, hashes criptográficos y rápidos,
hash de contraseñas y sumas de verificación detrás de un único modelo de
características. SIMD y ensamblador limitados por objetivo aceleran los
backends portables de Rust sin una dependencia de C/FFI de producción, OpenSSL
o bibliotecas del sistema.
rscrypto es un crate de primitivas, no una pila TLS, un kit de PKI, un
almacén de claves ni una implementación de protocolo.
Rendimiento medido
La instantánea del 2026-08-18 compara el commit 7eb44e9 con la implementación
externa emparejada más rápida para cada plataforma, primitiva, operación y forma
de entrada en ocho runners de CI de Linux. La línea base externa se selecciona
caso por caso, no se promedia entre competidores. Las proporciones son
external / rscrypto; cuanto más alto, mejor.
En 6.144 comparaciones de casos exactos, rscrypto fue más de un 5% más rápido
en 3.780, dentro del 5% en 1.695 y más lento en 669. La aceleración media
geométrica fue de 1,62x en general, incluyendo 6,18x para sumas de verificación,
1,65x para RSA, 1,61x para AEAD y 1,55x para ML-KEM.
El resultado de Apple Silicon en el gráfico es una instantánea local separada del 2026-07-04; no está incluido en el agregado de Linux.
Esto es una ventaja general del conjunto, no una afirmación de que cada
operación gana. La misma instantánea publica la regresión de ECDSA en s390x y la
ruta más lenta rapidhash-stream/one-write junto con cada fila en bruto. Lea la
descripción general de benchmarks para ver la
tarjeta de puntuación completa y la guía de benchmarks
antes de aplicar un resultado a una carga de trabajo de despliegue.
Garantía
Las afirmaciones de seguridad fallan de forma cerrada: la evidencia faltante u obsoleta elimina la afirmación en lugar de debilitar la puerta.
- La evidencia de corrección combina vectores NIST, RFC, upstream y Wycheproof con implementaciones separadas, propiedades, pruebas negativas y Miri.
- Los objetivos de fuzzing ejercitan las implementaciones de producción a través de límites de primitivas, analizadores, 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, despacho y comportamiento de respaldo en objetivos nativos.
- El arnés de tiempo constante inventaría las operaciones exactas en
ct.tomly combina inspección optimizada de binarios enlazados, pruebas BINSEC para kernels declarados de forma fija y pruebas de tiempo DudeCT para casos declarados de extremo a extremo. - Los propietarios de secretos de tamaño fijo enmascaran
Debug, omiten la igualdad ordinaria y sobrescriben los bytes propios al soltar. Las fallas de verificación son opacas; las aperturas AEAD fallidas limpian los buffers de salida del llamador.
Una afirmación de tiempo constante existe solo cuando la versión firmada coincidente incluye un paquete de evidencia atestiguado cuyas puertas requeridas de objetivo, característica, compilador, perfil y operación pasan. El código fuente que parece sin ramas no se trata como prueba. Los artefactos de versión están limitados por etiquetas firmadas, se publican a través de Trusted Publishing de crates.io y están cubiertos por atestaciones de procedencia de compilación de GitHub.
Inspeccione la evidencia de pruebas, el
modelo de tiempo constante, el
ciclo de vida de secretos, el
modelo de amenazas y el contrato de versiones.
La brecha restante de revisión independiente es una auditoría de seguridad de
terceros. El proyecto actualmente no puede financiarla. La evidencia
automatizada no reemplaza esa revisión, por lo que rscrypto no afirma estar
auditado, validado según FIPS 140-3, verificado formalmente ni ser de tiempo
constante como crate completo.
Reporte vulnerabilidades sospechosas a través de
Informe Privado de Vulnerabilidades de GitHub
bajo el proceso de SECURITY.md, no mediante un issue público.
Instale solo lo que usa
Compilación mínima de SHA-2 con no_std:
[dependencies]
rscrypto = { version = "0.9", default-features = false, features = ["sha2"] }
Pila completa de primitivas con aleatoriedad del sistema operativo habilitada:
[dependencies]
rscrypto = { version = "0.9", features = ["full", "getrandom"] }
La característica predeterminada es std; default-features = false la
elimina. Habilite getrandom solo para APIs que obtienen sales, claves, nonces
o entropía de generación de claves RSA del sistema operativo. La
guía de características es la propietaria de las
dependencias exactas y los controles de despliegue.
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 pasada y de flujo. Los flujos de
trabajo ejecutables para AEAD, firmas, RSA, X25519, ML-KEM, hash 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 |
| MAC y KDF | HMAC-SHA-2/SHA-3, KMAC128/256, Poly1305, HKDF-SHA-2, PBKDF2-HMAC-SHA-2 | macs, kdfs o características hoja |
| Hash de contraseñas | Argon2d/i/id, scrypt, registros PHC acotados de contraseñas | password-hashing o características hoja |
| Firmas y RSA | ECDSA P-256/P-384, Ed25519, firma RSA, verificación, cifrado y generación de claves | signatures o características hoja |
| Intercambio de claves y KEM | X25519, ML-KEM-512/768/1024 | key-exchange o características hoja |
| AEAD | AES-GCM, AES-GCM-SIV, AES-SIV-CMAC, ChaCha20-Poly1305, XChaCha20-Poly1305, AEGIS-256, Ascon-AEAD128 | aead o características hoja |
Use docs.rs para tipos y métodos exactos. Use la
guía de migración al reemplazar otra biblioteca.
Plataformas y despacho
La implementación portable de Rust es la autoridad byte por byte. El soporte de
objetivos 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 admitida vuelve a Rust portable.
La guía de plataformas es la propietaria de la matriz de
objetivos, el modelo de despacho, la cobertura de no_std y los límites de
portable-only.
Proyecto
Lea CONTRIBUTING.md antes de cambiar código. Los cambios
publicados viven en CHANGELOG.md.
Licencia
Doble licencia bajo Apache-2.0 o MIT, a su elección.