Один из самых известных хакеров в мире, Дэн Камински, признался, что два года назад пытался взломать Bitcoin, но не смог найти уязвимостей в системе. Несмотря на неудачу, Камински считает опыт весьма полезным, так что он с удовольствием провёл время.
Дэн Камински в 2008 году описал уязвимость в глобальной системе DNS, которая делает возможной подмену данных на DNS-сервере путём заполнения кэша с постороннего источника. Эта атака получила название атака Каминского. Сам хакер стал знаменитым и с тех пор консультирует корпорации из списка Fortune 500 по вопросам безопасности. Любую систему можно взломать.
Если такой маститый хакер как Дэн Камински ищет уязвимости, он найдёт десятки потенциальных брешей практически в любой системе. Что же произошло в случае с Bitcoin?
Как инженера и как хакера (поверьте, это две очень разные вещи), меня очень удивила система Bitcoin, — пишет Дэн Камински.
— Это система со следующими свойствами: Глобальное облако неограниченного размера, составленное из постоянно находящихся в онлайне машин, готовых к работе. Коммуникации на собственном корявом маленьком сетевом протоколе. Написана на C++, который обычно не самый безопасный язык при столкновении с обычным интернет-мусором.
Напрямую реализует функцию сказочного обогащения для любого хакера, который взломает систему.
По всем признакам, подобная технология должна бы обрушиться мгновенно, на каждом из уровней. Но ядро технологии реально работает, и продолжает работать в таком масштабе, который никто даже не предполагал. Что за чертовщина тут происходит?
По мнению Дэна Камински, необычная устойчивость к взлому систему Bitcoin заключается в том, что эта система разрабатывалась совершенно не в том контексте, в каком обычно создаётся программное обеспечение. Если обычные программисты реализуют функциональность, не задумываясь о безопасности, то система Bitcoin изначально проектировалась с учётом всех вероятных атак. Даже выбор языка C++ в этом контексте выглядит правильно, потому что позволил создать логичную и безопасную архитектуру.
Дэн Камински с оптимизмом смотрит на этот эксперимент и пока не видит конкретных причин и сроков, когда инфраструктура Bitcoin даст сбой. Впрочем, «эксперимент ещё не закончен, нужно сделать ещё много интересных вещей, и пока не ясно, какое будущее у этой технологии», — говорит Камински.
Интересно, как в презентации двухлетней давности Камински сравнивает код Bitcoin с нормальным кодом:
Нормальный код — выглядит нормально на первый взгляд; — чуть копнуть, и всё становится плохо.
Код Bitcoin — выглядит очень плохо на первый взгляд; — чуть копнуть, и всё становится на удивление хорошо; — мы не привыкли работать с системами с такими характеристиками; — в коде есть признаки, что аудит проводили хакеры вроде нас.