
Проект Wycheproof проверяет криптографические библиотеки на известные атаки.
Проект Wycheproof — это репозиторий, управляемый сообществом, содержащий тестовые векторы, которые могут использоваться разработчиками криптографических библиотек для проверки на известные атаки, несоответствия спецификациям и другие различные ошибки реализации.
Тестовые векторы хранятся в виде данных JSON, с сопутствующими файлами JSON-схем, которые документируют структуру этих данных.
Возможно, вам будет полезно изучить, как другие проекты, такие как pyca/cryptography, интегрировали тестовые векторы Wycheproof.
Проект Wycheproof содержит тестовые векторы для наиболее популярных криптоалгоритмов, включая
Тестовые векторы определяют, уязвима ли библиотека ко многим атакам, включая
Мы приветствуем вклад новых тестовых векторов и алгоритмов.
Если вы хотите внести свой вклад, пожалуйста, прочитайте CONTRIBUTING и присылайте нам pull request'ы. Вы также можете сообщать об ошибках или запрашивать новые тесты через GitHub issues.
Мы находимся в процессе возобновления разработки и поддержки проекта Wycheproof как проекта C2SP с обновленным фокусом на данных тестовых векторов. Наши непосредственные приоритеты:
Проект Wycheproof назван в честь горы Wycheproof, самой маленькой горы в мире. Основная мотивация проекта на момент его создания заключалась в том, чтобы поставить достижимую цель. Чем меньше гора, тем вероятнее, что на нее можно взобраться.
Тестовые векторы Wycheproof в той или иной форме используются рядом важных криптографических проектов и библиотек. В произвольном порядке к ним относятся:
Если ваш проект использует тестовые векторы из Wycheproof, не стесняйтесь открыть PR, чтобы добавить его в список выше!
Смотрите doc/bugs.md для некоторых известных исторических ошибок, найденных с использованием тестовых обвязок Wycheproof или данных тестовых векторов.
testvectors/?Недавно мы объединили каталоги testvectors/ и testvectors_v1/ в единый каталог с единым подходом к схемам.
Пользователям, которым требуются исходные тестовые векторы ("v0"), можно клонировать этот репозиторий по тегу wycheproof-v0-vectors, но рекомендуется обновиться до использования testvectors_v1/, чтобы получать будущие обновления. Если какие-то функции/покрытие тестов из testvectors/ отсутствуют в testvectors_v1/, или есть другая проблема, препятствующая обновлению, пожалуйста, откройте issue с описанием ваших потребностей.
На момент написания следующие файлы testvectors_v1 не имеют схем:
testvectors_v1/aes_ff1_base*_test.jsontestvectors_v1/aes_ff1_radix*_test.jsontestvectors_v1/ecdsa_secp256k1_sha256_bitcoin_test.jsontestvectors_v1/pbes2_hmacsha*_aes_*_test.jsontestvectors_v1/pbkdf2_hmacsha*_test.jsontestvectors_v1/rsa_pss_*_sha*_mgf*_params_test.jsontestvectors_v1/rsa_pss_misc_params_test.jsonВклад схем для вышеуказанных векторов будет весьма приветствоваться.
Доступна некоторая устаревшая документация по файлам, форматам и типам, но она не обязательно синхронизирована с текущим состоянием тестовых векторов.
В целом предпочтительнее ссылаться на файлы схем, поскольку они тестируются в CI для обеспечения соответствия содержимого файлов векторов заявленным схемам.
Исторически Wycheproof также включал тестовые обвязки (например, для реализаций криптографии на Java и Javascript), которые тестировали различные атаки непосредственно на реализациях. После перехода на поддержку сообществом эти обвязки были [удалены][harness-rm] (но всё ещё существуют в истории git для заинтересованных сторон по адресу [cd27d64]). Наш текущий фокус — на независимых от реализации тестовых векторах.