
Rust криптография с нулевыми зависимостями по умолчанию: BLAKE3, Ed25519/X25519, хэши, MAC, KDF, AEAD и контрольные суммы с полным ускорением SIMD/ASM
rscrypto объединяет криптографические примитивы, криптографические и быстрые хеши, хеширование паролей
и контрольные суммы в рамках одной модели функций.
SIMD и ассемблер, зависящие от целевой платформы, ускоряют переносимые Rust-бэкенды без зависимости от C/FFI, OpenSSL или системных библиотек в продакшене.
rscrypto — это крейт примитивов, а не TLS-стек, PKI-инструментарий, хранилище ключей или реализация протокола.
Утверждения о производительности ограничены точными сохранёнными кампаниями и эквивалентными рабочими нагрузками. Исправленная кампания сентября 2026 года содержит 19 614 завершённых случаев, включая исправленные сравнения ML-KEM и Argon2, но сводная итоговая таблица замены не была подготовлена. Более старые агрегаты, смешивавшие энтропию, подготовку ключей, представление вывода или длины солей, остаются историческими записями и не являются текущими утверждениями о производительности.
Обзор бенчмарков фиксирует кампании, результаты для конкретных целевых платформ и оставшиеся ограничения.
Контракты сравнения определяют эквивалентные рабочие нагрузки ML-KEM и Argon2.
Утверждения о безопасности отказывают закрыто: отсутствующие или устаревшие доказательства удаляют утверждение, а не ослабляют критерий.
ct.toml
и объединяет оптимизированную инспекцию связанного бинарного файла, доказательства BINSEC для объявленных
ядер фиксированной формы и тесты тайминга DudeCT для объявленных сквозных случаев.Debug и очищают инициализированное хранилище при удалении.
Правила дублирования зависят от типа: состояние BLAKE2/BLAKE3 с ключом поддерживает Clone.
Инвентаризация владения перечисляет эти границы.
Ошибки проверки непрозрачны; неудачные открытия AEAD очищают неаутентифицированный открытый текст.Утверждение о постоянном времени существует только тогда, когда доказательства для требуемой целевой платформы, функции, компилятора, профиля и операции проходят. Исходный код, который выглядит безветочным, не считается доказательством.
Изучите доказательства тестирования, модель постоянного времени, жизненный цикл секретов и модель угроз.
Оставшийся пробел в независимой проверке — это сторонний аудит безопасности.
Проект в настоящее время не может его финансировать.
Автоматизированные доказательства не заменяют эту проверку, поэтому rscrypto не заявляет, что прошёл аудит,
валидирован по FIPS 140-3, формально верифицирован или является крейтом с постоянным временем в целом.
Сообщайте о предполагаемых уязвимостях через GitHub Private Vulnerability Reporting в рамках
процесса SECURITY.md, а не через публичный issue.
Минимальная сборка SHA-2 для no_std:
[dependencies]
rscrypto = { version = "0.10", default-features = false, features = ["sha2"] }
Полный стек примитивов с включённой случайностью ОС:
[dependencies]
rscrypto = { version = "0.10", features = ["full", "getrandom"] }
Функция по умолчанию — std; default-features = false удаляет её.
Включайте getrandom только для API, которые получают соли, ключи, nonce
или энтропию для генерации ключей RSA из операционной системы.
Руководство по функциям объясняет выбор сборки; Cargo.toml владеет точным графом функций.
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);
API хеширования поддерживают одноразовое и потоковое использование.
Запускаемые рабочие процессы для AEAD, подписей, RSA, ECDH P-256 и P-384, X25519, ML-KEM, хеширования паролей
и интроспекции бэкендов находятся в examples/README.md.
| Семейство | Включено | Включить |
|---|---|---|
| Контрольные суммы | CRC-16, CRC-24, CRC-32, CRC-32C, CRC-64/XZ, CRC-64/NVMe | checksums или листовые функции |
| Криптографические хеши | SHA-2, SHA-3, SHAKE, cSHAKE, BLAKE2, BLAKE3, Ascon-Hash/XOF/CXOF | crypto-hashes или листовые функции |
| Быстрые хеши | XXH3-64/128, RapidHash V3-64 | fast-hashes или листовые функции |
| MAC и KDF | HMAC-SHA-2/SHA-3, KMAC128/256, Poly1305, HKDF-SHA-2, PBKDF2-HMAC-SHA-2 | macs, kdfs или листовые функции |
| Хеширование паролей | Argon2d/i/id, scrypt, ограниченные записи паролей PHC | password-hashing или листовые функции |
| Подписи и RSA | ECDSA P-256/P-384, Ed25519, ML-DSA-44/65/87, подпись, проверка, шифрование и генерация ключей RSA | signatures или листовые функции |
| Обмен ключами и KEM | P-256 ECDH, P-384 ECDH, X25519, ML-KEM-512/768/1024 | key-exchange или листовые функции |
| AEAD | AES-GCM, AES-GCM-SIV, AES-SIV-CMAC, ChaCha20-Poly1305, XChaCha20-Poly1305, AEGIS-256, Ascon-AEAD128 | aead или листовые функции |
Дайджест accept для WebSocket, предназначенный только для совместимости, требует websocket-sha1,
который исключён из full и любой другой зонтичной функции.
Используйте docs.rs для точных типов и методов.
Переносимая реализация на Rust является побайтовым эталоном.
Поддержка целевых платформ во время компиляции и, при наличии std,
обнаруженные возможности CPU во время выполнения выбирают подходящие ядра SIMD или ассемблера.
Неподдерживаемое ускорение откатывается к переносимому Rust.
Руководство по платформам объясняет поддерживаемый каталог целевых платформ, диспетчеризацию, покрытие no_std
и ограничения режима portable-only.
Руководства и примеры описывают сопутствующий исходный код. Используйте соответствующую версию документации API для опубликованной зависимости.