Назад к обновлениям
New releaseSep 3, 2026

rscrypto v0.9.0

Rust криптография с нулевыми зависимостями по умолчанию: BLAKE3, Ed25519/X25519, хэши, MAC, KDF, AEAD и контрольные суммы с полным ускорением SIMD/ASM

Поделиться

rscrypto

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

rscrypto объединяет криптографические примитивы, криптографические и быстрые хеши, хеширование паролей и контрольные суммы за одной моделью возможностей (feature model). Целевые SIMD и ассемблерные оптимизации ускоряют переносимые Rust-бэкенды без зависимости от продакшн-кода на C/FFI, OpenSSL или системных библиотек.

rscrypto — это крейт примитивов, а не TLS-стек, PKI-инструментарий, хранилище ключей или реализация протоколов.

Измеренная производительность

Снимок от 2026-08-18 сравнивает коммит 7eb44e9 с самой быстрой сопоставимой внешней реализацией для каждой платформы, примитива, операции и формы входных данных на восьми Linux CI-раннерах. Внешний базовый уровень выбирается для каждого случая отдельно, а не усредняется по конкурентам. Коэффициенты вычисляются как external / rscrypto; чем выше, тем лучше.

По итогам 6 144 сравнений точных случаев rscrypto оказался более чем на 5% быстрее в 3 780 случаях, в пределах 5% — в 1 695 и медленнее — в 669. Среднее геометрическое ускорение составило 1.62x в целом, включая 6.18x для контрольных сумм, 1.65x для RSA, 1.61x для AEAD и 1.55x для ML-KEM.

Диаграмма бенчмарков rscrypto: 1.62x Linux и 1.37x Apple Silicon средние геометрические для самых быстрых сопоставимых реализаций, контрольные суммы 6.18x против crc-fast, crc, crc32fast, crc32c и crc64fast, а также столбцы средних геометрических по примитивам и примечания для M1 MBP Apple Silicon.

Результат Apple Silicon на диаграмме — это отдельный локальный снимок от 2026-07-04; он не включён в агрегированные данные по Linux.

Это общее лидерство по набору тестов, а не утверждение, что каждая операция выигрывает. Тот же снимок публикует регрессию ECDSA на s390x и более медленный путь rapidhash-stream/one-write вместе со всеми сырыми строками. Прочитайте обзор бенчмарков для полной таблицы результатов и руководство по бенчмаркингу, прежде чем применять результат к рабочей нагрузке развёртывания.

Гарантии

Заявления о безопасности закрываются по принципу fail-closed: отсутствие или устаревшие доказательства снимает заявление, а не ослабляет порог.

  • Доказательства корректности сочетают векторы NIST, RFC, вышестоящих проектов и Wycheproof с отдельными реализациями, свойствами, негативными тестами и Miri.
  • Фаззинг-цели проверяют продакшн-реализации на границах примитивов, парсеров, конечных автоматов и трейтов. Минимизированные сиды воспроизводятся как тесты, с отдельной полосой санитайзеров.
  • Дифференциальные тесты «переносимая версия против ускоренной» покрывают длины, выравнивания, хвосты, переходы состояний, диспетчеризацию и поведение отката на нативных целевых платформах.
  • Харнесс константного времени инвентаризирует точные операции в ct.toml и сочетает оптимизированную проверку связанных бинарников, доказательства BINSEC для объявленных ядер фиксированной формы и тайминговые тесты DudeCT для объявленных сквозных случаев.
  • Владельцы секретов фиксированного размера маскируют Debug, не реализуют обычное сравнение на равенство и перезаписывают принадлежащие байты при удалении. Сбои верификации непрозрачны; неудачные открытия AEAD очищают выходные буферы вызывающего кода.

Заявление о константном времени существует только тогда, когда соответствующий подписанный релиз включает заверенный пакет доказательств, чьи обязательные пороги по целевой платформе, возможностям, компилятору, профилю и операциям пройдены. Исходный код, который выглядит безусловным, не считается доказательством. Артефакты релизов ограничены подписанными тегами, публикуются через crates.io Trusted Publishing и покрыты аттестациями происхождения сборки GitHub.

Изучите доказательства тестов, модель константного времени, жизненный цикл секретов, модель угроз и контракт релизов.

Оставшийся пробел независимого ревью — это сторонний аудит безопасности. Проект в настоящее время не может его финансировать. Автоматизированные доказательства не заменяют такой аудит, поэтому rscrypto не заявляет, что он прошедший аудит, валидированный по FIPS 140-3, формально верифицированный или константный по времени как крейт в целом.

Сообщайте о предполагаемых уязвимостях через GitHub Private Vulnerability Reporting в соответствии с процессом SECURITY.md, а не через публичный issue.

Устанавливайте только то, что используете

Минимальная сборка SHA-2 без std:

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

Полный стек примитивов с включённой системной случайностью:

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

Возможность по умолчанию — std; default-features = false её отключает. Включайте getrandom только для API, которые получают соли, ключи, nonce или энтропию для генерации RSA-ключей из операционной системы. Руководство по возможностям описывает точные зависимости и средства контроля развёртывания.

Быстрый старт

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, X25519, ML-KEM, хеширования паролей и интроспекции бэкендов находятся в examples/README.md.

Карта примитивов и возможностей

СемействоВключеноВключение
Контрольные суммыCRC-16, CRC-24, CRC-32, CRC-32C, CRC-64/XZ, CRC-64/NVMechecksums или отдельные возможности
Криптографические хешиSHA-2, SHA-3, SHAKE, cSHAKE, BLAKE2, BLAKE3, Ascon-Hash/XOF/CXOFcrypto-hashes или отдельные возможности
Быстрые хешиXXH3-64/128, RapidHash V3-64fast-hashes или отдельные возможности
MAC и KDFHMAC-SHA-2/SHA-3, KMAC128/256, Poly1305, HKDF-SHA-2, PBKDF2-HMAC-SHA-2macs, kdfs или отдельные возможности
Хеширование паролейArgon2d/i/id, scrypt, ограниченные PHC-записи паролейpassword-hashing или отдельные возможности
Подписи и RSAECDSA P-256/P-384, Ed25519, подпись RSA, верификация, шифрование и генерация ключейsignatures или отдельные возможности
Обмен ключами и KEMX25519, ML-KEM-512/768/1024key-exchange или отдельные возможности
AEADAES-GCM, AES-GCM-SIV, AES-SIV-CMAC, ChaCha20-Poly1305, XChaCha20-Poly1305, AEGIS-256, Ascon-AEAD128aead или отдельные возможности

Используйте docs.rs для точных типов и методов. Используйте руководство по миграции при замене другой библиотеки.

Платформы и диспетчеризация

Переносимая реализация на Rust является авторитетом байт-в-байт. Поддержка целевых платформ на этапе компиляции и, с std, обнаруженные возможности CPU во время выполнения выбирают подходящие SIMD или ассемблерные ядра. Неподдерживаемое ускорение откатывается к переносимому Rust.

Руководство по платформам описывает матрицу целевых платформ, модель диспетчеризации, покрытие no_std и ограничения portable-only.

Проект

Прочитайте CONTRIBUTING.md перед изменением кода. Опубликованные изменения находятся в CHANGELOG.md.

Лицензия

Двойное лицензирование по Apache-2.0 или MIT, на ваш выбор.

Категории