
Проект 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), которые тестировали различные атаки непосредственно на реализациях. После перехода на поддержку сообществом эти обвязки были удалены (но всё ещё существуют в истории git для заинтересованных сторон по адресу cd27d64). Наш текущий фокус — на независимых от реализации тестовых векторах.
Тестирование сторонних криптографических библиотек напрямую означает, что недостатки выявляются только после того, как они были зафиксированы и, возможно, выпущены тестируемыми проектами. Вместо этого мы рекомендуем сторонним проектам регулярно тестировать свой код с использованием тестовых векторов Wycheproof в рамках процесса разработки. Такой подход помогает выявлять недостатки до того, как они могут стать CVE, означает, что новые функции тестируются немедленно, и помогает распределить бремя поддержки. Это позволяет мейнтейнерам Wycheproof сосредоточиться на тестовых векторах, а не на отслеживании разработки множества проектов и одновременном поддержании всё большего количества языковых и проектно-специфичных тестовых обвязок.
Заинтересованные в тестовых обвязках могут найти продолжение работы Даниэля Блейхенбахера в проекте Rooterberg.
Авторские права 2016-2026 принадлежат авторам Wycheproof, распространяется по лицензии Apache 2.0.
Проект Wycheproof был изначально создан и поддерживался: