Private key — Природа приватных ключей
Вы когда-нибудь задумывались о том, сколько всего может быть сгенерировано Биткоин Адресов и приватных ключей к ним? В этой статье мы поговорим об удивительной математике приватных ключей биткоина и о том, почему биткоин адреса невозможно взломать.
Далее будут оперировать огромные числа, но это простая математика и я уверен, что вы поймете абсолютно все, что будет сказано в этой статье.
Давайте начинать.
Существует такой сайт, bitaddress.org, который генерирует новые биткоин адреса и приватные ключи. Вы можете генерировать новые биткоин адреса и приватные ключи, нажимая кнопку «Generate New Address».
Но самое интересное то, что, когда вы генерируете этот Адрес – появляется набор символов, который прежде никто и никогда не видел. Вы можете взять этот Биткоин Адрес или же приватный ключ, вставить в поисковую строку в гугле и поиск не даст результатов. Каждый раз, когда вы генерируете новый адрес, вы генерируете то, что мир ни разу не видел до этого момента. Если я сгенерирую новый адрес, то прошлый адрес и прошлый приватный ключ больше никто и никогда не увидит, и не сгенерирует.
В этом и есть сила больших чисел.
Приблизительное число публичных адресов Биткоина, которые могут быть сгенерированы — 2 в степени 160 или 1.4615e+48, т.е. это число имеет 48 нулей.
Адрес биткоина состоит из 160 бит, а приватный ключ из 256 бит, поэтому приватных ключей может быть создано больше, чем биткоин адресов.
Песчинок на планете земля меньше!
Генерация private key через подбрасывание монетки
Поскольку приватный ключ также может быть представлен в виде бинарного кода,
достаточно много людей пользуются методом генерации приватного ключа через подбрасывание монеты. Все, что вам необходимо сделать, это подбросить монету 256 раз и записывать нули и единицы, т.к. по сути каждый приватный ключ это совокупность 256 нулей и единиц в 16-тиричной системе счисления.
Например, решка — это единица, орел — это ноль.
Таким образом, подбросив монету 256 раз и записав нули и единицы на листок – вы сгенерируете ряд чисел, который никто и никогда не сможет повторить. (2 в 256 степени)
Для того, чтобы этот бинарный код преобразовать в привычный вид приватного ключа, необходимо его конвертировать в формат B58Check. Для того, чтобы конвертировать бинарный код в формат B58Check можно воспользоваться конвертером с открытым исходным кодом – brainwallet.
Опять же, если у вас паранойя, то вы можете скачать файлы сайта github и запустить на виртуальной машине без подключения к интернету.
Заходим в раздел конвертер.
В разделе «Source Encoding» выбираем Bin, в разделе «Convert to» выбираем B58Check.
Получаем наш приватный ключ, который можно импортировать, например, в Electrum или любой другой биткоин кошелек.
Шанс повторной генерации одинакового приватного ключа и адреса. Брутфорс.
Теперь, давайте поговорим о шансе того, что кто-то случайно сгенерирует приватный ключ и адрес, который уже кем-то используется.
Существует способ проверять примерно 100 000 приватных ключей на ядро процессора в секунду. Это 100 млрд ключей в день для 8 ядерного процессора.
Теперь представим, что каждый компьютер на земле будет проверять по 100 миллиардов приватных ключей каждый день в течение 10 лет. Это будет число с 25 нулями, 10^25
Допустим, закон Мура работает (что уже не так), и каждые 2 года производительность процессоров увеличивается в 2 раза. Для 26 лет это 2^13≈10^4. Учтем и это, получится 10^29 приватных ключей, которые подверглись вооброжаемому брутфорсу.
Но числа, которые здесь оперируют действительно маленькие, по сравнению с теми, сколько адресов использует Биткоин.
Приблизительное количество публичных адресов, которые могут быть сгенерированы равняется 10^48.
Теперь, давайте представим, что Биткоином пользуется все население планеты, 7 миллиардов человек.
И у каждого человека, есть не 1 адрес, а 1000 адресов. Таким образом, адресов с положительным балансом получается 700 миллиардов, округлим наверх до триллиона = 10^13
10^48/(10^29*10^13)=10^6
То есть даже если все компьютеры мира будут брутфорсить адреса биткоина — за 25 лет они сбрутят хотя бы 1 адрес с вероятностью 1 к миллиону.
Следующая проблема — сбрученные (по сути сгенерированные) пары приватный ключ:адрес где-то нужно хранить.
Допустим, все компьютеры земли объединяться и создадут базу данных, которая будет хранить эти пары у себя на серверах. На данный момент, вся информация, существующая на Земле, все сервера Амазона, Гугла, Китая, вся существующая информация весит 1 зеттабайт.
1 Йотабайт это 1000 зеттабайтов.
Чтобы хранить все возможные адреса Биткоина потребуется 25 йотабайтов.
Это в 25000 раз больше, чем текущий вес всей информации мира!
Да да, многие напишут про квантовый компьютер, и то, что он сломает Биткоин и шифрование в целом.
Это утверждение было опровержено в другой статье на нашем сайте криптономика — квантовый компьютер vs биткоин
Можно ли использовать математику, хеш функцию sha256, которую использует Биткоин для обеспечения безопаности? Биткоину всего 10 лет, и с помощью него уже хранятся большие суммы денег. Прямо сейчас, на адресах Биткоина хранятся сотни миллионов долларов.
Эти адреса не защищены ни паролем, ни отпечаткам пальца.
Все что вам нужно — это определенный приватный ключ, и вы можете снять миллиард долларов, например, с этого кошелька.
Вы можете генерировать миллионы приватных ключей, в надежде на то, что вам попадется нужный и вы снимете этот миллиард долларов. Миллиарды долларов ждут, когда кто-то сможет взломать Биткоин и забрать эти деньги. Но взломать его не получается!
Всё это доказывает, что Биткоин невозможно взломать.
На протяжение 8 лет, люди хранят в Биткоинах миллионы и миллиарды долларов, и все, что вам нужно, чтобы их забрать – сгенерировать приватный ключ от определенного адреса.
Вы можете нажимать кнопку «Generate New Address» сколько угодно раз на протяжении всей своей жизни.
Но никогда не будет сгенерирован приватный ключ и публичный адрес, который уже кем-то использовался.
Шанс того, что вы отыщите определенную крупицу песка на земле в квадриллион раз выше того, что кто-то сможет сгенерировать приватный ключ, который уже кто-то видел.