Читать «Цифровой журнал «Компьютерра» № 187» онлайн - страница 43
Коллектив авторов
Тут-то и кроется проблема. Генераторы случайных чисел (ГСЧ), реализованные программно, на самом деле, конечно, выдают псевдослучайные последовательности: числа в таком ряду друг от друга не зависят, но сам ряд всегда одинаков. Чтобы каждый раз после включения компьютера не начинать с одного и того же места, приступая к работе, следует «крутануть рулетку» (инициализировать начальное состояние генератора, передав ему полученное каким-либо образом одно истинно случайное число). Так вот: оказалось, что ГСЧ в Android (конкретно — соответствующий компонент Java-машины) «рулетку» не крутил. И — хоть и не всегда — мог выдать одинаковые числа.
Так что злоумышленнику достаточно просмотреть все транзакции, сделанные владельцем конкретного кошелька, и, обнаружив хотя бы две с одинаковыми «случайными» подписями, вычислить секретный ключ. Если вас интересует математика, весь процесс (с опорой на open source-пакет Sage) подробно, ещё зимой, некто Нильс Шнайдер. Остаётся загадкой, почему Bitcoin-сообществу потребовалось полгода, чтобы оценить важность его открытия.
Ответ, впрочем, очевиден. Публика в массе своей имеет весьма смутные представления о стойкой криптографии и брезгует или боится заглядывать глубже пользовательского интерфейса. Вот и сейчас от внимания многих популярных ресурсов, написавших о происшествии, ускользнул важный нюанс: под угрозой опустошения находятся не только кошельки, сгенерированные Android-приложениями, но
Что касается таинственного вора, воспользовавшегося находкой Шнайдера (а может быть, обнаружившего проблему самостоятельно), он продолжает красть: последняя операция по его кошельку датирована вчерашним днём. И вообще говоря, пока в кошельках, скомпрометированных Android-транзакциями, остаются какие-то средства, кражи будут продолжаться, ведь в системе Bitcoin абсолютно все транзакции открыты. А вернуть деньги законным владельцам, естественно, не удастся, потому что откат транзакций в Bitcoin невозможен принципиально.
Но и для Android история не завершена. Google и уже разослала производителям устройств соответствующий патч для операционной системы. Так что в ближайшие недели и месяцы владельцы поддерживаемых Android-устройств, вероятно, его получат. Однако сотни миллионов пользователей сидят на мобильных устройствах, которые уже не поддерживаются и прошивки которых никогда не будут обновлены. Для них уязвимость ГСЧ останется навсегда. И хорошо, если разработчики прикладных программ, использующих ГСЧ, знают об уязвимости и самостоятельно позаботились о том, чтобы её обойти (как сделали авторы всех популярных мобильных Bitcoin-приложений). Но ведь останутся тысячи программ, создатели которых о проблеме и не подозревают.