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