Volver a actualizaciones
Nuevo releaseJul 28, 2026

rscrypto v0.7.8

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.

Compartir

rscrypto

Crates.io Docs.rs MSRV 1.100.0 License: MIT OR Apache-2.0

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.toml y 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 Debug y limpian el almacenamiento inicializado al liberar. Las reglas de duplicación varían según el tipo: el estado de BLAKE2/BLAKE3 con clave admite Clone. 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

FamiliaIncluidoHabilitar
Sumas de verificaciónCRC-16, CRC-24, CRC-32, CRC-32C, CRC-64/XZ, CRC-64/NVMechecksums o características hoja
Hashes criptográficosSHA-2, SHA-3, SHAKE, cSHAKE, BLAKE2, BLAKE3, Ascon-Hash/XOF/CXOFcrypto-hashes o características hoja
Hashes rápidosXXH3-64/128, RapidHash V3-64fast-hashes o características hoja
MACs y KDFsHMAC-SHA-2/SHA-3, KMAC128/256, Poly1305, HKDF-SHA-2, PBKDF2-HMAC-SHA-2macs, kdfs o características hoja
Hashing de contraseñasArgon2d/i/id, scrypt, registros de contraseñas PHC acotadospassword-hashing o características hoja
Firmas y RSAECDSA P-256/P-384, Ed25519, ML-DSA-44/65/87, firma, verificación, cifrado y generación de claves RSAsignatures o características hoja
Intercambio de claves y KEMsP-256 ECDH, P-384 ECDH, X25519, ML-KEM-512/768/1024key-exchange o características hoja
AEADsAES-GCM, AES-GCM-SIV, AES-SIV-CMAC, ChaCha20-Poly1305, XChaCha20-Poly1305, AEGIS-256, Ascon-AEAD128aead 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.

Proyecto

Categorías