Torna agli aggiornamenti
New releaseSep 3, 2026

rscrypto v0.9.0

Cripto Rust con zero dipendenze predefinite: BLAKE3, Ed25519/X25519, hash, MAC, KDF, AEAD e checksum con piena accelerazione SIMD/ASM

Condividi

rscrypto

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

rscrypto mette primitive crittografiche, hash crittografici e veloci, hashing delle password e checksum dietro un unico modello di feature. SIMD e assembly vincolati al target accelerano i backend Rust portabili senza una dipendenza da C/FFI di produzione, OpenSSL o librerie di sistema.

rscrypto è una crate di primitive, non uno stack TLS, un toolkit PKI, un key store o un'implementazione di protocolli.

Prestazioni misurate

Lo snapshot del 2026-08-18 confronta il commit 7eb44e9 con l'implementazione esterna più veloce corrispondente per ogni piattaforma, primitiva, operazione e forma di input su otto runner Linux CI. La baseline esterna è selezionata caso per caso, non mediata tra i concorrenti. I rapporti sono esterno / rscrypto; più alto è meglio.

Su 6.144 confronti caso-esatto, rscrypto è stato più veloce del 5% in 3.780, entro il 5% in 1.695 e più lento in 669. Lo speedup medio geometrico è stato 1,62x complessivamente, inclusi 6,18x per i checksum, 1,65x per RSA, 1,61x per AEAD e 1,55x per ML-KEM.

Grafico benchmark rscrypto: geomean 1,62x Linux e 1,37x Apple Silicon dei più veloci corrispondenti, checksum a 6,18x contro crc-fast, crc, crc32fast, crc32c e crc64fast, più barre geomean delle primitive e note Apple Silicon M1 MBP.

Il risultato Apple Silicon nel grafico è uno snapshot locale separato del 2026-07-04; non è incluso nell'aggregato Linux.

Questo è un vantaggio complessivo della suite, non un'affermazione che ogni operazione vinca. Lo stesso snapshot pubblica la regressione ECDSA s390x e il percorso più lento rapidhash-stream/one-write insieme a ogni riga grezza. Leggi la panoramica dei benchmark per il scorecard completo e la guida al benchmarking prima di applicare un risultato a un carico di lavoro di produzione.

Garanzia

Le affermazioni di sicurezza falliscono in modo chiuso: prove mancanti o obsolete rimuovono l'affermazione anziché indebolire il gate.

  • Le prove di correttezza combinano vettori NIST, RFC, upstream e Wycheproof con implementazioni separate, proprietà, test negativi e Miri.
  • I target fuzz esercitano le implementazioni di produzione attraverso i confini di primitive, parser, macchine a stati e trait. I seed minimizzati vengono riprodotti come test, con una corsia separata per i sanitizer.
  • I test differenziali portabile-versus-accelerato coprono lunghezze, allineamenti, code, transizioni di stato, dispatch e comportamento di fallback sui target nativi.
  • L'harness a tempo costante inventaria le operazioni esatte in ct.toml e combina l'ispezione ottimizzata del binario collegato, le prove BINSEC per i kernel dichiarati a forma fissa e i test di timing DudeCT per i casi dichiarati end-to-end.
  • I proprietari di segreti a dimensione fissa mascherano Debug, omettono l'uguaglianza ordinaria e sovrascrivono i byte posseduti alla drop. I fallimenti di verifica sono opachi; le aperture AEAD fallite azzerano i buffer di output del chiamante.

Un'affermazione di tempo costante esiste solo quando la release firmata corrispondente include un bundle di prove attestato i cui gate richiesti di target, feature, compilatore, profilo e operazione passano. Il codice sorgente che sembra senza rami non è trattato come prova. Gli artefatti di release sono vincolati da tag firmati, pubblicati tramite Trusted Publishing di crates.io e coperti da attestazioni di build-provenance GitHub.

Ispeziona le prove di test, il modello a tempo costante, il ciclo di vita dei segreti, il modello di minaccia e il contratto di release.

Il divario rimanente di revisione indipendente è un audit di sicurezza di terze parti. Il progetto attualmente non può finanziarlo. Le prove automatizzate non sostituiscono quella revisione, quindi rscrypto non afferma di essere sottoposto ad audit, validato FIPS 140-3, verificato formalmente o a tempo costante come crate nel suo insieme.

Segnala vulnerabilità sospette tramite GitHub Private Vulnerability Reporting secondo il processo di SECURITY.md, non tramite un issue pubblico.

Installa solo ciò che usi

Build minima no_std SHA-2:

[dependencies]
rscrypto = { version = "0.9", default-features = false, features = ["sha2"] }

Stack completo di primitive con casualità di sistema abilitata:

[dependencies]
rscrypto = { version = "0.9", features = ["full", "getrandom"] }

La feature predefinita è std; default-features = false la rimuove. Abilita getrandom solo per le API che ottengono salt, chiavi, nonce o entropia per la generazione di chiavi RSA dal sistema operativo. La guida alle feature gestisce le dipendenze esatte e i controlli di distribuzione.

Avvio rapido

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);

Le API di hash supportano l'uso one-shot e streaming. Flussi di lavoro eseguibili per AEAD, firme, RSA, X25519, ML-KEM, hashing delle password e introspezione dei backend sono in examples/README.md.

Mappa di primitive e feature

FamigliaIncluseAbilita
ChecksumCRC-16, CRC-24, CRC-32, CRC-32C, CRC-64/XZ, CRC-64/NVMechecksums o feature foglia
Hash crittograficiSHA-2, SHA-3, SHAKE, cSHAKE, BLAKE2, BLAKE3, Ascon-Hash/XOF/CXOFcrypto-hashes o feature foglia
Hash velociXXH3-64/128, RapidHash V3-64fast-hashes o feature foglia
MAC e KDFHMAC-SHA-2/SHA-3, KMAC128/256, Poly1305, HKDF-SHA-2, PBKDF2-HMAC-SHA-2macs, kdfs o feature foglia
Hashing delle passwordArgon2d/i/id, scrypt, record PHC con limitepassword-hashing o feature foglia
Firma e RSAECDSA P-256/P-384, Ed25519, firma RSA, verifica, cifratura e generazione di chiavisignatures o feature foglia
Scambio di chiavi e KEMX25519, ML-KEM-512/768/1024key-exchange o feature foglia
AEADAES-GCM, AES-GCM-SIV, AES-SIV-CMAC, ChaCha20-Poly1305, XChaCha20-Poly1305, AEGIS-256, Ascon-AEAD128aead o feature foglia

Usa docs.rs per tipi e metodi esatti. Usa la guida alla migrazione quando sostituisci un'altra libreria.

Piattaforme e dispatch

L'implementazione Rust portabile è l'autorità byte-per-byte. Il supporto target a tempo di compilazione e, con std, le capacità CPU rilevate a runtime selezionano i kernel SIMD o assembly idonei. L'accelerazione non supportata ricade sul Rust portabile.

La guida alle piattaforme gestisce la matrice dei target, il modello di dispatch, la copertura no_std e i limiti di portable-only.

Progetto

Leggi CONTRIBUTING.md prima di modificare il codice. Le modifiche pubblicate sono in CHANGELOG.md.

Licenza

Doppia licenza sotto Apache-2.0 o MIT, a tua scelta.

Categorie