GitHub усиливает меры безопасности в связи с успешной коллизионной атакой на SHA-1

Около месяца назад мы писали о том, что криптоаналитикам Google совместно с исследователями из голландского НИИ удалось найти коллизию криптографической хеш-функции SHA-1. После этого в GitHub поспешили усилить меры безопасности для предупреждения коллизионных атак.

А при чем здесь GitHub?

Как известно, этот сервис основан на системе контроля версий Git. Данные в Git хранятся в виде объектов, каждому из которых присваивается свой хеш, и делается это именно с помощью алгоритма SHA-1. Напомним, что коллизией хеш-функции называется случай, когда у двух разных массивов данных (в данном случае — у объектов) хеш оказывается одним и тем же.

Git не может хранить два объекта с одинаковым идентификатором, но также не может автоматически определить, какой объект из пары — подлинный. Это в теории дает злоумышленникам возможность подменять оригинальные документы пользователей, а также подделывать их электронные подписи.

Какие меры приняли для предотвращения атак?

Поиск коллизий методом полного перебора еще долго будет оставаться непродуктивным из-за высокой вычислительной сложности хеш-функций SHA-1. В упомянутой выше исследовательской атаке находить коллизии удавалось гораздо быстрее благодаря применению специальных техник, основанных на уязвимости алгоритма SHA-1. Но их использование оставляет следы в двоичном коде, которые можно обнаружить в процессе вычисления хеша для любого из двух объектов коллизионной пары.

Теперь GitHub каждый раз при вычислении хеша с помощью SHA-1 проверяет код на наличие таких следов и прерывает операцию, если обнаруживается, что обрабатываемый объект является частью коллизионной пары. Такие меры предосторожности должны препятствовать активным действиям злоумышленников в отношении пользователей.

Код для выявления следов можно найти в открытом доступе.

Что дальше?

Блокировка коллизий в рамках GitHub — только начало: представители сервиса сообщают о планах создания специальной библиотеки для обнаружения вышеупомянутых следов и её запуска в Git. Который, в свою очередь, рассматривает возможность перехода на более надежные алгоритмы криптографического хеширования, такие как SHA-3 и SHA-256.

Источник: блог GitHub