
rscrypto v0.9.0
Rust-Krypto mit null Standardabhängigkeiten: BLAKE3, Ed25519/X25519, Hashes, MACs, KDFs, AEADs und Prüfsummen mit vollständiger SIMD/ASM-Beschleunigung
rscrypto
rscrypto stellt kryptografische Primitive, kryptografische und schnelle Hashes,
Passwort-Hashing und Prüfsummen hinter einem einzigen Feature-Modell bereit. Zielgesteuerte SIMD- und
Assembly-Implementierungen beschleunigen portable Rust-Backends ohne eine produktive C/FFI-,
OpenSSL- oder Systembibliotheks-Abhängigkeit.
rscrypto ist eine Primitiven-Crate, kein TLS-Stack, PKI-Werkzeugkasten, Schlüsselspeicher oder
Protokollimplementierung.
Gemessene Leistung
Der Snapshot vom 18.08.2026 vergleicht Commit 7eb44e9 mit der schnellsten passenden
externen Implementierung für jede Plattform, jedes Primitiv, jede Operation und jede
Eingabeform auf acht Linux-CI-Runnern. Die externe Baseline wird fallweise ausgewählt,
nicht über Wettbewerber gemittelt. Verhältnisse sind extern / rscrypto; höher ist besser.
Über 6.144 exakte Fallvergleiche war rscrypto in 3.780 Fällen mehr als 5 % schneller,
in 1.695 Fällen innerhalb von 5 % und in 669 Fällen langsamer. Der geometrische Mittelwert der
Beschleunigung betrug insgesamt 1,62x, einschließlich 6,18x für Prüfsummen, 1,65x für RSA, 1,61x für
AEAD und 1,55x für ML-KEM.
Das Apple-Silicon-Ergebnis im Diagramm ist ein separater lokaler Snapshot vom 04.07.2026; es ist nicht im Linux-Aggregat enthalten.
Dies ist eine Gesamtsuite-Führung, keine Behauptung, dass jede Operation gewinnt. Derselbe
Snapshot veröffentlicht die s390x-ECDSA-Regression und den langsameren
rapidhash-stream/one-write-Pfad neben jeder Rohzeile. Lesen Sie die
Benchmark-Übersicht für die vollständige Ergebnisliste
und den Benchmarking-Leitfaden, bevor Sie ein Ergebnis auf eine
Bereitstellungsworkload anwenden.
Zusicherung
Sicherheitsansprüche schlagen fehlgeschlossen fehl: fehlende oder veraltete Nachweise entfernen den Anspruch, anstatt das Tor zu schwächen.
- Korrektheitsnachweise kombinieren NIST-, RFC-, Upstream- und Wycheproof-Vektoren mit separaten Implementierungen, Eigenschaften, Negativtests und Miri.
- Fuzz-Ziele üben Produktionsimplementierungen über Primitiv-, Parser-, Zustandsmaschinen- und Trait-Grenzen hinweg. Minimierte Seeds werden als Tests wiedergegeben, mit einer separaten Sanitizer-Spur.
- Differenzielle Tests portabler versus beschleunigter Implementierungen decken Längen, Ausrichtungen, Enden, Zustandsübergänge, Dispatch und Fallback-Verhalten auf nativen Zielen ab.
- Die Konstantzeit-Harness inventarisiert exakte Operationen in
ct.tomlund kombiniert optimierte Linked-Binary-Inspektion, BINSEC-Beweise für deklarierte Festform-Kernel und DudeCT-Timing-Tests für deklarierte End-to-End-Fälle. - Besitzer fester Geheimnisgrößen maskieren
Debug, unterlassen gewöhnliche Gleichheit und überschreiben eigene Bytes beim Drop. Verifikationsfehler sind undurchsichtig; fehlgeschlagene AEAD-Öffnungen löschen Ausgabepuffer des Aufrufers.
Ein Konstantzeit-Anspruch existiert nur, wenn die passende signierte Veröffentlichung ein attestiertes Nachweisbündel enthält, dessen erforderliche Ziel-, Feature-, Compiler-, Profil- und Operations-Gates bestehen. Quellcode, der verzweigungslos aussieht, wird nicht als Beweis behandelt. Veröffentlichungsartefakte sind signiert-Tag-gesteuert, werden über crates.io Trusted Publishing veröffentlicht und sind durch GitHub-Build-Provenance-Attestierungen abgedeckt.
Prüfen Sie die Testnachweise,
das Konstantzeit-Modell,
den Geheimnis-Lebenszyklus,
das Bedrohungsmodell und den Veröffentlichungsvertrag.
Die verbleibende Lücke unabhängiger Prüfung ist ein Sicherheitsaudit durch Dritte. Das
Projekt kann derzeit keines finanzieren. Automatisierte Nachweise ersetzen diese
Prüfung nicht, daher behauptet rscrypto nicht, auditiert, FIPS-140-3-validiert,
formal verifiziert oder als gesamte Crate konstantzeit zu sein.
Melden Sie vermutete Schwachstellen über
GitHub Private Vulnerability Reporting
gemäß dem SECURITY.md-Prozess, nicht über ein öffentliches Issue.
Nur installieren, was Sie nutzen
Minimaler no_std-SHA-2-Build:
[dependencies]
rscrypto = { version = "0.9", default-features = false, features = ["sha2"] }
Voller Primitiv-Stack mit aktiviertem OS-Zufall:
[dependencies]
rscrypto = { version = "0.9", features = ["full", "getrandom"] }
Das Standard-Feature ist std; default-features = false entfernt es. Aktivieren Sie
getrandom nur für APIs, die Salze, Schlüssel, Nonces oder RSA-Schlüsselerzeugungs-
Entropie vom Betriebssystem beziehen. Der Feature-Leitfaden
verwaltet exakte Abhängigkeiten und Bereitstellungssteuerungen.
Schnellstart
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);
Hash-APIs unterstützen Einmal- und Streaming-Nutzung. Ausführbare Workflows für AEAD,
Signaturen, RSA, X25519, ML-KEM, Passwort-Hashing und Backend-Introspection finden Sie
in examples/README.md.
Primitiv- und Feature-Karte
| Familie | Enthalten | Aktivieren |
|---|---|---|
| Prüfsummen | CRC-16, CRC-24, CRC-32, CRC-32C, CRC-64/XZ, CRC-64/NVMe | checksums oder Blatt-Features |
| Kryptografische Hashes | SHA-2, SHA-3, SHAKE, cSHAKE, BLAKE2, BLAKE3, Ascon-Hash/XOF/CXOF | crypto-hashes oder Blatt-Features |
| Schnelle Hashes | XXH3-64/128, RapidHash V3-64 | fast-hashes oder Blatt-Features |
| MACs und KDFs | HMAC-SHA-2/SHA-3, KMAC128/256, Poly1305, HKDF-SHA-2, PBKDF2-HMAC-SHA-2 | macs, kdfs oder Blatt-Features |
| Passwort-Hashing | Argon2d/i/id, scrypt, begrenzte PHC-Passwortdatensätze | password-hashing oder Blatt-Features |
| Signaturen und RSA | ECDSA P-256/P-384, Ed25519, RSA-Signierung, -Verifikation, -Verschlüsselung und -Schlüsselerzeugung | signatures oder Blatt-Features |
| Schlüsselaustausch und KEMs | X25519, ML-KEM-512/768/1024 | key-exchange oder Blatt-Features |
| AEADs | AES-GCM, AES-GCM-SIV, AES-SIV-CMAC, ChaCha20-Poly1305, XChaCha20-Poly1305, AEGIS-256, Ascon-AEAD128 | aead oder Blatt-Features |
Nutzen Sie docs.rs für exakte Typen und Methoden. Nutzen Sie den
Migrationsleitfaden, wenn Sie eine andere Bibliothek ersetzen.
Plattformen und Dispatch
Die portable Rust-Implementierung ist die byte-für-byte-Autorität. Kompilierzeit-
Zielunterstützung und, mit std, erkannte Laufzeit-CPU-Fähigkeiten wählen
geeignete SIMD- oder Assembly-Kernel aus. Nicht unterstützte Beschleunigung fällt auf
portables Rust zurück.
Der Plattform-Leitfaden verwaltet die Zielmatrix, das Dispatch-
Modell, die no_std-Abdeckung und die Grenzen von portable-only.
Projekt
Lesen Sie CONTRIBUTING.md, bevor Sie Code ändern. Veröffentlichte Änderungen
befinden sich in CHANGELOG.md.
Lizenz
Dual-lizenziert unter Apache-2.0 oder MIT, nach Ihrer Wahl.