Retour aux mises à jour
New releaseSep 3, 2026

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.

Partager

rscrypto

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

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.

Graphique de benchmark rscrypto : moyennes géométriques des correspondances les plus rapides de 1,62x sur Linux et 1,37x sur Apple Silicon, sommes de contrôle à 6,18x contre crc-fast, crc, crc32fast, crc32c et crc64fast, plus barres de moyennes géométriques par primitive et notes Apple Silicon M1 MBP.

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.toml et 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

FamilleInclusActivation
Sommes de contrôleCRC-16, CRC-24, CRC-32, CRC-32C, CRC-64/XZ, CRC-64/NVMechecksums ou fonctionnalités feuilles
Hachages cryptographiquesSHA-2, SHA-3, SHAKE, cSHAKE, BLAKE2, BLAKE3, Ascon-Hash/XOF/CXOFcrypto-hashes ou fonctionnalités feuilles
Hachages rapidesXXH3-64/128, RapidHash V3-64fast-hashes ou fonctionnalités feuilles
MAC et KDFHMAC-SHA-2/SHA-3, KMAC128/256, Poly1305, HKDF-SHA-2, PBKDF2-HMAC-SHA-2macs, kdfs, ou fonctionnalités feuilles
Hachage de mots de passeArgon2d/i/id, scrypt, enregistrements PHC bornéspassword-hashing ou fonctionnalités feuilles
Signatures et RSAECDSA P-256/P-384, Ed25519, signature, vérification, chiffrement et génération de clés RSAsignatures ou fonctionnalités feuilles
Échange de clés et KEMX25519, ML-KEM-512/768/1024key-exchange ou fonctionnalités feuilles
AEADAES-GCM, AES-GCM-SIV, AES-SIV-CMAC, ChaCha20-Poly1305, XChaCha20-Poly1305, AEGIS-256, Ascon-AEAD128aead 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.

Catégories