Google запустила Project Wycheproof


Project Wycheproof — набор тестов, предназначенных для проверки криптографических библиотек программного обеспечения на наличие известных уязвимостей. Всего было разработано чуть больше 80 тестов, которых хватит для идентификации более чем 40 уязвимостей.  Например, можно восстановить приватный ключ широко применяемых реализаций алгоритмов DSA и ECDHC. Компания также предоставляет готовые инструменты для проверки Bouncy Castle и других провайдеров (например, провайдеров в OpenJDK) фреймворка Java Cryptography Architecture.

 Провайдер (криптопровайдер) — это посредник между операционной системой и исполнителем криптографических операций (исполнителем может быть как программа, так и аппаратный комплекс).

Цель проекта — облегчить процесс исправления ошибок, связанных с безопасностью. Поэтому проект был назван в честь самой маленькой горы в мире. Ведь чем меньше гора, тем легче на нее взобраться!

Далее повествование ведется от лица компании.


В криптографии даже незначительные ошибки могут привести к катастрофическим последствиям. Ошибки в криптографических open source библиотеках повторяются очень часто, и нужно потратить уйму времени, чтобы их обнаружить. Тем не менее, хорошую документацию очень сложно найти, а для изучения вопроса безопасности крифтографии понадобится провести десятки лет, читая академическую литературу. Мы обнаружили, что очень много проблем, связанных с криптографией, можно исправить теми же способами, какими пользуются разработчики при юнит-тестировании.

Эти наблюдения и вдохновили нас на создание Project Wycheproof. Благодаря тому, что наши криптографы изучили море литературы и реализовали самые известные атаки, Project Wycheproof может предоставить тесты для большинства криптографических алгоритмов, включая RSA, эллиптическую криптографию и AEAD-режимы блочного шифрования.

Первые наборы тестов были написаны на Java, так как Java обладает простым криптографическим интерфейсом. Это позволило использовать одни и те же наборы тестов для тестирования разных провайдеров. Хотя этот интерфейс и является интерфейсом низкого уровня и им не следует пользоваться напрямую, мы все же следуем принципу комплексной защиты и ожидаем, что наши реализации будут максимально устойчивыми. Например, мы предполагаем, что если использовать в качестве аргумента изначально слабые значения, то это будет являться серьезным дефектом безопасности. Для простоты портирования тестов на другие языки мы стараемся объединить как можно больше тестов в наборы тестовых векторов.

Успешное прохождение тестов еще не означает, что библиотека защищена. Это значит, что она просто не уязвима к атакам, которые Project Wycheproof может обнаружить. Ведь криптографы постоянно находят все новые и новые уязвимости в криптографических протоколах. Тем не менее, благодаря Project Wycheproof как разработчики, так и обычные пользователи могут проверять свои библиотеки на наличие известных уязвимостей без прочтения академической литературы и необходимости самим становиться специалистами в криптографии.