
rscrypto v0.9.0
Chiffrement en Rust avec zéro dépendance par défaut : BLAKE3, Ed25519/X25519, hachages, MAC, KDF, AEAD, et sommes de contrôle avec accélération SIMD/ASM complète.
rscrypto
rscrypto regroupe les primitives cryptographiques, les hachages cryptographiques et rapides,
le hachage de mots de passe et les sommes de contrôle derrière un modèle de fonctionnalités unique. Les SIMD et l'assemblage
ciblés par plateforme accélèrent les backends Rust portables sans dépendance à un C/FFI de production,
à OpenSSL ou à une bibliothèque système.
rscrypto est une crate de primitives, pas une pile TLS, une boîte à outils PKI, un magasin de clés ou une
implémentation de protocole.
Performances mesurées
L'instantané du 2026-08-18 compare le commit 7eb44e9 avec l'implémentation externe correspondante la plus rapide
pour chaque plateforme, primitive, opération et forme d'entrée sur huit exécuteurs CI Linux. La référence externe est
sélectionnée au cas par cas, sans moyenne entre concurrents. Les ratios sont externe / rscrypto ; plus c'est élevé,
mieux c'est.
Sur 6 144 comparaisons de cas exacts, rscrypto était plus de 5 % plus rapide dans
3 780 cas, à moins de 5 % dans 1 695 cas, et plus lent dans 669 cas. L'accélération moyenne géométrique était de
1,62x au total, dont 6,18x pour les sommes de contrôle, 1,65x pour RSA, 1,61x pour AEAD,
et 1,55x pour ML-KEM.
Le résultat Apple Silicon du graphique est un instantané local distinct du 2026-07-04 ; il n'est pas inclus dans l'agrégat Linux.
Il s'agit d'une avance globale de la suite, pas d'une affirmation que chaque opération gagne. Le même
instantané publie la régression ECDSA s390x et le chemin plus lent
rapidhash-stream/one-write aux côtés de chaque ligne brute. Lisez la
vue d'ensemble des benchmarks pour le tableau de bord complet
et le guide de benchmarking avant d'appliquer un résultat à une
charge de travail de déploiement.
Assurance
Les revendications de sécurité échouent en mode fermé : des preuves manquantes ou obsolètes suppriment la revendication plutôt que d'affaiblir la barrière.
- Les preuves de correction combinent les vecteurs NIST, RFC, amont et Wycheproof avec des implémentations séparées, des propriétés, des tests négatifs et Miri.
- Les cibles de fuzzing exercent les implémentations de production à travers les frontières des primitives, des analyseurs, des machines à états et des traits. Les graines minimisées sont rejouées comme tests, avec une voie de sanitizer séparée.
- Les tests différentiels portable-accéléré couvrent les longueurs, les alignements, les fins, les transitions d'état, la répartition et le comportement de repli sur les cibles natives.
- Le harnais de temps constant inventorie les opérations exactes dans
ct.tomlet combine l'inspection optimisée des binaires liés, les preuves BINSEC pour les noyaux à forme fixe déclarés, et les tests de synchronisation DudeCT pour les cas de bout en bout déclarés. - Les propriétaires de secrets à taille fixe masquent
Debug, omettent l'égalité ordinaire et écrasent les octets possédés à la suppression. Les échecs de vérification sont opaques ; les ouvertures AEAD échouées effacent les tampons de sortie de l'appelant.
Une revendication de temps constant n'existe que lorsque la version signée correspondante inclut un ensemble de preuves attesté dont les portes requises de cible, fonctionnalité, compilateur, profil et opération passent. Un code source qui semble sans branche n'est pas traité comme une preuve. Les artefacts de version sont limités par balise signée, publiés via crates.io Trusted Publishing, et couverts par les attestations de provenance de build GitHub.
Inspectez les preuves de test,
le modèle de temps constant,
le cycle de vie des secrets,
le modèle de menace et le contrat de version.
L'écart restant de revue indépendante est un audit de sécurité tiers. Le
projet ne peut actuellement pas le financer. Les preuves automatisées ne remplacent pas cette
revue, donc rscrypto ne prétend pas être audité, validé FIPS 140-3,
formellement vérifié, ou à temps constant en tant que crate entière.
Signalez les vulnérabilités suspectées via
GitHub Private Vulnerability Reporting
selon le processus SECURITY.md, pas via un problème public.
Installez uniquement ce que vous utilisez
Build minimal SHA-2 no_std :
[dependencies]
rscrypto = { version = "0.9", default-features = false, features = ["sha2"] }
Pile complète de primitives avec aléa OS activé :
[dependencies]
rscrypto = { version = "0.9", features = ["full", "getrandom"] }
La fonctionnalité par défaut est std ; default-features = false la supprime. Activez
getrandom uniquement pour les API qui obtiennent des sels, des clés, des nonces ou de l'entropie de génération
de clés RSA depuis le système d'exploitation. Le guide des fonctionnalités
détaille les dépendances exactes et les contrôles de déploiement.
Démarrage rapide
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);
Les API de hachage prennent en charge l'utilisation en une seule fois et en flux. Des workflows exécutables pour AEAD,
les signatures, RSA, X25519, ML-KEM, le hachage de mots de passe et l'introspection de backend sont
dans examples/README.md.
Carte des primitives et des fonctionnalités
| Famille | Inclus | Activation |
|---|---|---|
| Sommes de contrôle | CRC-16, CRC-24, CRC-32, CRC-32C, CRC-64/XZ, CRC-64/NVMe | checksums ou fonctionnalités feuilles |
| Hachages cryptographiques | SHA-2, SHA-3, SHAKE, cSHAKE, BLAKE2, BLAKE3, Ascon-Hash/XOF/CXOF | crypto-hashes ou fonctionnalités feuilles |
| Hachages rapides | XXH3-64/128, RapidHash V3-64 | fast-hashes ou fonctionnalités feuilles |
| MAC et KDF | HMAC-SHA-2/SHA-3, KMAC128/256, Poly1305, HKDF-SHA-2, PBKDF2-HMAC-SHA-2 | macs, kdfs, ou fonctionnalités feuilles |
| Hachage de mots de passe | Argon2d/i/id, scrypt, enregistrements PHC bornés | password-hashing ou fonctionnalités feuilles |
| Signatures et RSA | ECDSA P-256/P-384, Ed25519, signature, vérification, chiffrement et génération de clés RSA | signatures ou fonctionnalités feuilles |
| Échange de clés et KEM | X25519, ML-KEM-512/768/1024 | key-exchange ou fonctionnalités feuilles |
| AEAD | AES-GCM, AES-GCM-SIV, AES-SIV-CMAC, ChaCha20-Poly1305, XChaCha20-Poly1305, AEGIS-256, Ascon-AEAD128 | aead ou fonctionnalités feuilles |
Utilisez docs.rs pour les types et méthodes exacts. Utilisez le
guide de migration lors du remplacement d'une autre bibliothèque.
Plateformes et répartition
L'implémentation Rust portable est l'autorité octet pour octet. Le support de cible à la compilation
et, avec std, les capacités CPU d'exécution détectées sélectionnent les
noyaux SIMD ou d'assemblage éligibles. L'accélération non prise en charge retombe sur le
Rust portable.
Le guide des plateformes détaille la matrice de cibles, le modèle
de répartition, la couverture no_std et les limites de portable-only.
Projet
Lisez CONTRIBUTING.md avant de modifier le code. Les changements publiés
figurent dans CHANGELOG.md.
Licence
Double licence sous Apache-2.0 ou MIT, à votre choix.