Криптография — фундамент безопасности Web3-инфраструктуры. Но, вопреки ожиданиям, атак непосредственно на криптографические алгоритмы не так много.
Как говорят криптографы, самое главное — не изобретать собственную криптографию. Если вы это делаете, скорее всего, она будет взломана.
Один из примеров — взлом протокола THORChain. Атака была построена на не совсем корректной реализации MPC-протокола. Это позволило злоумышленникам собрать по сайд-каналам приватные ключи нод, которые подписывали те или иные мостовые транзакции, и в результате вывести оттуда деньги.
Однако намного чаще, если мы говорим про атаки на криптографическую инфраструктуру, мы сталкиваемся именно с атаками на систему хранения.
Взломать алгоритм электронной подписи вроде ECDSA мы считаем практически невозможным. Алгоритм широко известен, исследован, и реалистичных угроз, кроме квантовой, пока нет. А вот при хранении ключей очень многие совершают ошибки. Начнем с того, что никак их не защищают.
Сколько раз я сталкивался с тем, что закрытый ключ или сид-фраза просто лежит в переменных окружения, в базе данных, где-нибудь в секретах Kubernetes. Все это очень плохие способы защиты, которые, может быть, применимы где-то в Web2-мире для хранения логина и пароля от БД или ключа от внешнего сервиса. Но для защиты криптографических ключей это совсем не подходит.
Механики, которые не прошли тест временем и были описаны буквально в течение последнего года, — это все еще исследовательская вещь, и на 100% на нее полагаться нельзя. В то время как на алгоритм электронной подписи, используемый в обычном блокчейне, вполне можно рассчитывать.
В случае если не создается своя криптография и не используются какие-то совсем передовые способы — доказательства с нулевым разглашением или полностью гомоморфное шифрование, — риски значительно ниже. Поэтому отказ от изобретения своей криптографии и надежное хранение ключей защищают достаточно надежно от криптографического вектора атак.



