В период с 2009 по 2013 годы в сети Биткоина было несколько уязвимостей, которые могли поставить под угрозу приватные ключи или функциональность сети. Вот ключевые моменты:
1.
- Описание: Некоторые кошельки, особенно на Android и в библиотеке Java, использовали слабые или неправильные генераторы случайных чисел (например, java.util.Random). Это делало приватные ключи предсказуемыми.
- Последствия: Хакеры могли вычислить приватный ключ, зная публичный ключ, особенно если использовались одинаковые случайные числа (nonce) при подписи транзакций.
- Пример: В 2013 году были зафиксированы случаи взлома Android-кошельков из-за уязвимости в реализации генерации случайных чисел.
2.
- Описание: Ошибка в коде позволяла создать транзакции с некорректным количеством монет. В результате, в блоке 74,638 (15 августа 2010 года) была создана транзакция на 184 миллиарда BTC.
- Решение: Блок был отвергнут сетью после быстрого обновления кода, а ошибка исправлена в версии Bitcoin Core.
3.
- Описание: Проблема связана с повторным использованием одного и того же случайного числа (nonce) при создании цифровой подписи (ECDSA). Если два разных сообщения подписаны одним и тем же k (nonce), приватный ключ легко вычислить.
- Последствия: Хакеры могли атаковать кошельки и узнавать приватные ключи.
- Пример: Несколько онлайн-кошельков страдали от этой проблемы.
4.
- Описание: В 2012 году начались обсуждения об уязвимости алгоритма SHA-1. Хотя Биткоин использовал SHA-256 для майнинга, в некоторых частях кода и библиотеках могли использоваться SHA-1 для других функций.
- Риск: Возможные атаки на старые реализации криптографии, использующие SHA-1.
5.
- Описание: Уязвимость позволяла двойную трату (double spend) из-за некорректной проверки очередности транзакций.
- Решение: Код был обновлен в версии Bitcoin Core 0.8.
6.
- Описание: Многие ранние кошельки (до версии Bitcoin Core 0.4) хранили приватные ключи без шифрования или использовали слабую защиту паролем.
- Риск: Любой доступ к устройству мог привести к краже приватных ключей.
7.
- Описание: Некоторые майнинговые пулы, например, GHash.io, достигали 51% мощности сети. Это создавало угрозу атак "51%", при которых можно было переписывать блокчейн, отменять транзакции и проводить двойные траты.
- Решение: Распределение майнинговой мощности было улучшено за счет появления новых пулов и самостоятельных майнеров.