Найти тему

Результат SecureRandom ставит под угрозу Bitcoin-кошельки

Информация о дилемме была размещена в Linux Foundation, также спец David Gerard вспомнил об этом на страницах личного блога.

Суть в том, что старые Bitcoin-адреса, сгенерированные в браузерах либо с помощью JavaScript приложений, могут быть подвержены противному криптографическому багу, позволяющие выяснить приватные ключи (с помощью брутфорса) и забрать контроль над кошельком, похитив средства.

Трудность заключается в работе SecureRandom(), использовавшейся для генерации непредвиденных адресов и приватных ключей. Как оказывается, показатели работы SecureRandom() были недостаточно случайны. Из-за ошибки в коде обращение к window.crypto API завершалось неудачей и заместо этого употреблялся ненадежный Math.random() API. В конечном итоге криптографические ключи, несмотря на их длину, владели наименее чем 48 битами энтропии, и приобретенный итог так же мог повытрепываться энтропией менее 48 бит, даже если seed подразумевает нечто большее. К тому же SecureRandom() употребляет устаревший метод RC4, показатели работы которого можно предсказать. В конечном итоге спецы сделали вывод, что ключи, которые были созданы при участии SecureRandom(), выходили прогнозируемыми и уязвимыми к обычному брутфорсу.

Специалисты говорят, что SecureRandom() была применена в интернет-приложениях и клиентах кошельков пару лет вспять, пока о бреши не заговорили на публике. Например, еще в 2013 году на форумах BitcoinTalk было обсуждение этой трудности, а в 2015 году о ней рассказывал на мероприятии один из разрабов Bitcoin Core. На данный момент спецы предполагают, что трудность появилась еще до 2013 года в криптографической библиотеке jsbn.

В итоге, Джерар сообщает, что Bitcoin-адреса, сгенерированные при участии SecureRandom() в 2013-2014 годах могут быть уязвимы, в том числе, дилемме были подвержены BitAddress (до 2013 года) и Bitcoinjs (до 2014 года).

Доктор института Лондона, Мустафа аль-Бассам (Mustafa Al-Bassam) сообщает, что почти все старые приложения Bitcoin-кошельков (будь то клиентская часть приложения либо интернет-приложение) длительное время употребляли jsbn.js для генерации адресов, а некоторые употребляют старые версии jsbn.js до настоящего времени. Как считают специалисты, на взлом приватных ключей от таковых кошельков уйдет приблизительно неделя. Спецы рекомендуют пользователям, полагающ??, что их Bitcoin-адреса могут быть уязвимы, как можно резвее сделать новые кошельки и перенести в них средства.