Хеш — что это такое и как хэш-функция помогает решать вопросы безопасности в интернете

M.SecuRRity.Ru

Хеширование (иногда хэширование, англ. hashing) — преобразование входного массива данных произвольной длины в выходную битовую строку фиксированной длины. Такие преобразования также называются хеш-функциями или функциями свёртки, а их результаты называют хешем, хеш-кодом или дайджестом сообщения (англ. message digest).

Хеширование применяется для сравнения данных: если у двух массивов хеш-коды разные, массивы гарантированно различаются; если одинаковые — массивы, скорее всего, одинаковы. В общем случае однозначного соответствия между исходными данными и хеш-кодом нет в силу того, что количество значений хеш-функций меньше чем вариантов входного массива; существует множество массивов, дающих одинаковые хеш-коды — так называемые коллизии. Вероятность возникновения коллизий играет немаловажную роль в оценке качества хеш-функций.

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

Контрольные суммы

Несложные, крайне быстрые и легко реализуемые аппаратные алгоритмы, используемые для защиты от непреднамеренных искажений, в том числе ошибок аппаратуры.

По скорости вычисления в десятки и сотни раз быстрее, чем криптографические хеш-функции, и значительно проще в аппаратной реализации.

Платой за столь высокую скорость является отсутствие криптостойкости — лёгкая возможность подогнать сообщение под заранее известную сумму. Также обычно разрядность контрольных сумм (типичное число: 32 бита) ниже, чем криптографических хешей (типичные числа: 128, 160 и 256 бит), что означает возможность возникновения непреднамеренных коллизий. Простейшим случаем такого алгоритма является деление сообщения на 32- или 16- битные слова и их суммирование, что применяется, например, в TCP/IP.

Как правило, к такому алгоритму предъявляются требования отслеживания типичных аппаратных ошибок, таких, как несколько подряд идущих ошибочных бит до заданной длины. Семейство алгоритмов т. н. «циклических избыточных кодов» удовлетворяет этим требованиям. К ним относится, например, CRC32, применяемый в аппаратуре Ethernet и в формате упакованных файлов ZIP.

Криптографические хеш-функции

Среди множества существующих хеш-функций принято выделять криптографически стойкие, применяемые в криптографии. Для того, чтобы хеш-функция H считалась криптографически стойкой, она должна удовлетворять трем основным требованиям, на которых основано большинство применений хеш-функций в криптографии:

  • Необратимость: для заданного значения хеш-функции m должно быть вычислительно неосуществимо найти блок данных X, для которого H(X) = m.
  • Стойкость к коллизиям первого рода: для заданного сообщения M должно быть вычислительно неосуществимо подобрать другое сообщение N, для которого H(N) = H(M).
  • Стойкость к коллизиям второго рода: должно быть вычислительно неосуществимо подобрать пару сообщений (M, M’), имеющих одинаковый хеш.

Данные требования не являются независимыми:

  • Обратимая функция нестойка к коллизиям первого и второго рода.
  • Функция, нестойкая к коллизиям первого рода, нестойка к коллизиям второго рода; обратное неверно.

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

Атака «дней рождения» позволяет находить коллизии для хеш-функции с длиной значений n битов в среднем за примерно 2 n/2 вычислений хеш-функции. Поэтому n-битная хеш-функция считается криптостойкой, если вычислительная сложность нахождения коллизий для неё близка к 2 n/2 .

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

Применение хеш-функций

Хеш-функции также используются в некоторых структурах данных — хеш-таблицаx, фильтрах Блума и декартовых деревьях. Требования к хеш-функции в этом случае другие:

  • хорошая перемешиваемость данных
  • быстрый алгоритм вычисления

Сверка данных
В общем случае это применение можно описать, как проверка некоторой информации на идентичность оригиналу, без использования оригинала. Для сверки используется хеш-значение проверяемой информации. Различают два основных направления этого применения:

  1. Проверка на наличие ошибок — Например, контрольная сумма может быть передана по каналу связи вместе с основным текстом. На приёмном конце, контрольная сумма может быть рассчитана заново и её можно сравнить с переданным значением. Если будет обнаружено расхождение, то это значит, что при передаче возникли искажения и можно запросить повтор.

    Бытовым аналогом хеширования в данном случае может служить приём, когда при переездах в памяти держат количество мест багажа. Тогда для проверки не нужно вспоминать про каждый чемодан, а достаточно их посчитать. Совпадение будет означать, что ни один чемодан не потерян. То есть, количество мест багажа является его хеш-кодом. Данный метод легко дополнить до защиты от фальсификации передаваемой информации (метод MAC). В этом случае хеширование производится криптостойкой функцией над сообщением, объединенным с секретным ключом, известным только отправителю и получателю сообщения. Таким образом, криптоаналитик не сможет восстановить код, по перехваченному сообщению и значению хеш-функции, то есть, не сможет подделать сообщение.

    Ускорение поиска данных — Например, при записи текстовых полей в базе данных может рассчитываться их хеш код и данные могут помещаться в раздел, соответствующий этому хеш-коду. Тогда при поиске данных надо будет сначала вычислить хеш-код текста и сразу станет известно, в каком разделе их надо искать, то есть, искать надо будет не по всей базе, а только по одному её разделу (это сильно ускоряет поиск).

    Бытовым аналогом хеширования в данном случае может служить помещение слов в словаре по алфавиту. Первая буква слова является его хеш-кодом, и при поиске мы просматриваем не весь словарь, а только нужную букву.

[ Administrator, 24 июня 2010, 12:53 | Просмотров: 13530 | Комментариев: 0 ]

Информация

Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.

Что такое Хэш?

В рамках данной статьи, я расскажу вам что такое Хэш, зачем он нужен, где и как применяется, а так же наиболее известные примеры.

Многие задачи в области информационных технологий весьма критичны к объемам данных. Например, если нужно сравнить между собой два файла размером по 1 Кб и два файла по 10 Гб, то это совершенно разное время. Поэтому алгоритмы, позволяющие оперировать более короткими и емкими значениями, считаются весьма востребованными.

Одной из таких технологий является Хэширование, которое нашло свое применение при решении массы задач. Но, думаю вам, как обычному пользователю, все еще непонятно, что же это за зверь такой и для чего он нужен. Поэтому далее я постараюсь объяснить все наиболее простыми словами.

Примечание: Материал рассчитан на обычных пользователей и не содержит многих технических аспектов, однако для базового ознакомления его более, чем достаточно.

Что такое Хэш или Хэширование?

Начну с терминов.

Хэш-функция, Функция свертки — это специального вида функция, которая позволяет преобразовывать произвольной длины тексты к коду фиксированной длины (обычно, короткая цифро-буквенная запись).

Хэширование — это сам процесс преобразования исходных текстов.

Хэш, Хеш-код, Значение Хэш, Хэш-сумма — это выходное значение Хэш-функции, то есть полученный блок фиксированный длины.

Как видите, у терминов несколько образное описание, из которого сложно понять для чего это все нужно. Поэтому сразу приведу небольшой пример (об остальных применениях расскажу чуть позже). Допустим, у вас есть 2 файла размером 10 Гб. Как можно быстро узнать какой из них нужный? Можно использовать имя файла, но его легко переименовать. Можно смотреть даты, но после копирования файлов даты могут быть одинаковыми или в иной последовательности. Размер, как сами понимаете, мало чем может помочь (особенно, если размеры совпадают или вы не смотрели точные значения байтов).

Вот тут-то и нужен этот самый Хэш, который представляет собой короткий блок, формирующийся из исходного текста файла. У этих двух файлов по 10 Гб будет два разных, но коротких Хэш-кода (что-то вроде «ACCAC43535» и «BBB3232A42»). Используя их, можно будет быстро узнать нужный файл, даже после копирования и смены имен.

Примечание: В связи с тем, что Хэш в компьютером мире и в интернете весьма известное понятие, то нередко все то, что имеет отношение к Хэшу, сокращают до этого самого слова. Например, фраза «у меня используется Хэш MD5» в переводе означает, что на сайте или где-то еще используется алгоритм хэширования стандарта MD5.

Свойства Хеш-функций

Теперь, расскажу о свойствах Хэш-функций, чтобы вам было легче понять где применяется и для чего нужно Хэширование. Но, сначала еще одно определение.

Коллизия — это ситуация, когда для двух разных текстов получается одна и та же Хэш-сумма. Как сами понимаете, раз блок фиксированной длины, то он имеет ограниченное число возможных значений, а следовательно возможны повторы.

А теперь к самим свойствам Хэш-функций:

1. На вход может подаваться текст любого размера, а на выходе получается блок данных фиксированной длины. Это следует из определения.

2. Хэш-сумма одних и тех же текстов должна быть одинаковой. В противном случае, такие функции просто бесполезны — это аналогично случайному числу.

3. Хорошая функция свертки должна иметь хорошее распределение. Согласитесь, что если размер выходного Хэша, к примеру, 16 байт, то если функция возвращает всего 3 разных значения для любых текстов, то толку от такой функции и этих 16 байт никакого (16 байт это 2^128 вариантов, что примерно равно 3,4 * 10^38 степени).

4. Как хорошо функция реагирует на малейшие изменения в исходном тексте. Простой пример. Поменяли 1 букву в файле размером 10 Гб, значение функции должно стать другим. Если же это не так, то применять такую функцию весьма проблематично.

5. Вероятность возникновения коллизии. Весьма сложный параметр, рассчитываемый при определенных условиях. Но, суть его в том, что какой смысл от Хэш-функции, если полученная Хэш-сумма будет часто совпадать.

6. Скорость вычисления Хэша. Какой толк от функции свертки, если она будет долго вычисляться? Никакой, ведь тогда проще данные файлов сравнивать или использовать иной подход.

7. Сложность восстановления исходных данных из значения Хэша. Эта характеристика больше специфическая, нежели общая, так как не везде требуется подобное. Однако, для наиболее известных алгоритмов эта характеристика оценивается. Например, исходный файл вы вряд ли сможете получить из этой функции. Однако, если имеет место проблема коллизий (к примеру, нужно найти любой текст, который соответствует такому Хэшу), то такая характеристика может быть важной. Например, пароли, но о них чуть позже.

8. Открыт или закрыт исходный код такой функции. Если код не является открытым, то сложность восстановления данных, а именно криптостойкость, остается под вопросом. Отчасти, это проблема как с шифрованием.

Вот теперь можно переходить к вопросу «а для чего это все?».

Зачем нужен Хэш?

Основные цели у Хэш-функций всего три (вернее их предназначения).

1. Проверка целостности данных. В данном случае все просто, такая функция должна вычисляться быстро и позволять так же быстро проверить, что, к примеру, скачанный из интернета файл не был поврежден во время передачи.

2. Рост скорости поиска данных. Фиксированный размер блока позволяет получить немало преимуществ в решении задач поиска. В данном случае, речь идет о том, что, чисто технически, использование Хэш-функций может положительно сказываться на производительности. Для таких функций весьма важное значение представляют вероятность возникновения коллизий и хорошее распределение.

3. Для криптографических нужд. Данный вид функций свертки применяется в тех областях безопасности, где важно чтобы результаты сложно было подменить или где необходимо максимально усложнить задачу получения полезной информации из Хэша.

Где и как применяется Хэш?

Как вы, вероятно, уже догадались Хэш применяется при решении очень многих задач. Вот несколько из них:

1. Пароли обычно хранятся не в открытом виде, а в виде Хэш-сумм, что позволяет обеспечить более высокую степень безопасности. Ведь даже если злоумышленник получит доступ к такой БД, ему еще придется немало времени потратить, чтобы подобрать к этим Хэш-кодам соответствующие тексты. Вот тут и важна характеристика «сложность восстановления исходных данных из значений Хэша».

2. В программировании, включая базы данных. Конечно же, чаще всего речь идет о структурах данных, позволяющих осуществлять быстрый поиск. Чисто технический аспект.

3. При передачи данных по сети (включая Интернет). Многие протоколы, такие как TCP/IP, включают в себя специальные проверочные поля, содержащие Хэш-сумму исходного сообщения, чтобы если где-то произошел сбой, то это не повлияло на передачу данных.

4. Для различных алгоритмов, связанных с безопасностью. Например, Хэш применяется в электронных цифровых подписях.

5. Для проверки целостности файлов. Если обращали внимание, то нередко в интернете можно встретить у файлов (к примеру, архивы) дополнительные описания с Хэш-кодом. Эта мера применяется не только для того, чтобы вы случайно не запустили файл, который повредился при скачивании из Интернета, но и бывают просто сбои на хостингах. В таких случаях, можно быстро проверить Хэш и если требуется, то перезалить файл.

6. Иногда, Хэш-функции применяются для создания уникальных идентификаторов (как часть). Например, при сохранении картинок или просто файлов, обычно используют Хэш в именах совместно с датой и временем. Это позволяет не перезаписывать файлы с одинаковыми именами.

На самом деле, чем дальше, тем чаще Хэш-функции применяются в информационных технологиях. В основном из-за того, что объемы данных и мощности самых простых компьютеров сильно возрасли. В первом случае, речь больше о поиске, а во втором речь больше о вопросах безопасности.

Известные Хэш-функции

Самыми известными считаются следующие три Хэш-функции:

1. CRC16, CRC32, CRC64 — эти Хэш-функции очень просты и применяются только для проверки целостности данных. Например, при передачи данных по сети. При этом цифра после CRC — это не более, чем количество бит в выходном блоке. Самым известным из них является CRC32, размер Хэш-кода которого составляет всего 4 байта.

Примечание: Данная функция свертки состоит всего из одной операции XOR, которая последовательно выполняется ко всем входным блокам исходного текста. Поэтому ее обычно применяют только для проверки целостности данных.

2. MD5 — в свое время эта Хэш-функция была очень популярна для хранения паролей и прочих целей безопасности. Размер выходного блока составляет 128 бит. В принципе, применяется и до сих пор, однако стоит знать, что стойкость этого алгоритма уже не столько хороша (банально мощности компьютеров выросли — смотрите пример в статье, которую указал в предыдущем подразделе).

3. SHA-1, SHA-2 — самым известным и поддерживаемым многими системами является стандарт SHA-1 (160 бит). Однако, постепенно идет переход на SHA-2 (от 224 бит до 512), так как стойкость первого алгоритма постепенно снижается, как и у MD5.

На самом деле, в РФ существует и применяется собственный криптостойкий алгоритм ГОСТ Р 34.11-2012 (ранее использовался ГОСТ Р 34.11-94), однако распространенность его в интернете очень мала (в плане известности).

Теперь, вы знаете что такое Хэш, для чего он применяется и ряд других аспектов.

Чтобы понять блокчейн, нужно понять, что такое хеш

Для меня ключ к познанию блокчейна – это понимание криптографических хешей. Мне кажется, многие из нас, обычных людей, делают ошибку, представляя себе блокчейн как, в первую очередь, списки анонимных транзакций, распределённых по децентрализованным сетям. Хотя отдельный блокчейн действительно таков, иногда упускается из виду, что основой блокчейновой технологии является не децентрализация, анонимность или даже распредёленные реестры, а собственно криптография. Хотя это, наверное, очевидно для человека с базовым пониманием компьютерных наук, для большинства из нас это нечто совершенно новое.

Очень краткая история цифровых денег

Биткойн – новый подход к предыдущим экспериментам с цифровыми деньгами. В 1990-х это была горячая, но спекулятивная тема. Даже Алан Гринспен в своей речи в 1996 г. сказал:

Мы предвидим в близком будущем предложения эмитентам электронных платёжных обязательств, таких как карты с хранимой стоимостью или «цифровые деньги», создать специализированные эмиссионные корпорации с сильными балансовыми отчетами и публичными кредитными рейтингами

Таким образом, использование цифровой валюты истеблишментом было на повестке дня задолго до Биткойна. Для того чтобы освободить цифровую валюту от истеблишмента, требовалось ещё одно новшество. Этим новшеством стала криптография.

Когда Гринспен произносил свою речь, шифропанки уже экспериментировали с цифровыми валютами с явным намерением дестабилизировать банки. В числе их экспериментов, существовавших до Биткойна, были Hashcash Адама Бэка, BitGold Ника Сабо, B-Money Вэй Дая и RPOW Хэла Финни. Все они использовали возможности криптографических хеш-функций, и вместе они образуют гигантские плечи, на которых сегодня стоит Биткойн.

Что такое криптографические хеш-функции?

Криптографическая хеш-функция берёт данные и, по сути, переводит их в строку букв и цифр. Вы когда-нибудь пользовались URL-сокращалками типа Bitly или TinyURL? Это нечто похожее. Вы вводите что-то длинное, а на выходе получается что-то короткое, олицетворяющее то длинное. Только в случае криптографических хеш-функций ввод не обязательно должен быть длинным. Это может быть что-то очень короткое (например, слово «пёс») или почти бесконечно длинное (например, весь текст «Повести о двух городах»), и на выходе вы получите уникальную строку установленной длины. Кроме того, в отличие от сокращателей ссылок, хеш-функции, применяемые в Биткойне, действуют только в одном направлении. Хотя одни и те же данные всегда дадут один и тот же хеш, воспроизвести изначальные данные по полученному из них хешу невозможно.

Итак, данные вводятся в хеш-функцию, функция выполняется и получается строка букв и цифр (можете попробовать самостоятельно здесь). Эта строка называется хешем. В блокчейне Биткойна хеши состоят из 256 бит или 64 символов.

Может показаться невозможным, чтобы почти бесконечное количество данных могло последовательно переводиться в уникальную строку всего из 64 символов, но именно таким чудесным образом действуют криптографические функции. С помощью этой невероятной технологии целые книги, заполненные текстом, могут быть переведены в одну строку из 64 цифр и букв. И каждый раз, когда вы вводите одни и те же данные, вы получите не только один и тот же хеш, но уникальный и отличный от любого другого хеша.

Это было самое прекрасное время, это было самое злосчастное время, – век мудрости, век безумия, дни веры, дни безверия, пора света, пора тьмы, весна надежд, стужа отчаяния, у нас было всё впереди, у нас впереди ничего не было, мы то витали в небесах, то вдруг обрушивались в преисподнюю, – словом, время это было очень похоже на нынешнее, и самые горластые его представители уже и тогда требовали, чтобы о нём – будь то в хорошем или в дурном смысле – говорили не иначе, как в превосходной степени:

Тогда как хеш слова «пёс»:

Как работают криптографические хеш-функции

Существуют разные виды криптографических хеш-функций, и каждая из них работает по-разному. Использовавшаяся выше хеш-функция – SHA-256, хеш-функция, применяемая в Биткойне, – работает на основе безумно сложной формулы, связанной с отражением света от эллипсов. Вам не стоит слишком из-за этого переживать. Суть в том, что криптографические хеш-функции – это чертова магия, и вы никогда их до конца не поймете, если только вы не математик.

Как хеш-функции применяются в блокчейне

Чтобы блокчейн работал, он должен обновляться. Подобно банку, он должен вести актуальные записи всех транзакций и активов (например, биткойнов), имеющихся у каждого участника сети. Именно при обновлении транзакционной информации любая аутентифицирующая система уязвима для атаки. Банк сглаживает этот риск благодаря наличию строгой централизованной иерархии, гарантирующей подлинность на свой собственный риск. Так как блокчейну удаётся обновляться, оставаясь децентрализованным? Он использует криптографическую вероятностную хеш-игру, называемую «доказательство выполнения работы» (Proof of Work).

Криптография обеспечивает консенсус

Чтобы продолжать функционировать, блокчейн должен создавать новые блоки. Так как блокчейны – это децентрализованные системы, новые блоки должны создаваться не единственным аутентифицирующим субъектом, а сетью в целом. Чтобы решить, каким будет новый блок, сеть должна достичь консенсуса. Чтобы достичь консенсуса, майнеры предлагают определённые блоки, блоки верифицируются, и, наконец, сеть выбирает единственный блок, который будет следующей частью реестра. Однако очень много майнеров предлагают идентичные блоки, проходящие верификацию. Так каким образом конкретный блок выбирается, чтобы стать следующим в цепи?

Компьютеры соревнуются в хеш-игре. Всё очень просто. По сути, чтобы выиграть игру, майнящий компьютер должен угадать число, называемое «нонс» (nonce), которое в комбинации со всеми предыдущими данными блокчейна даёт при вводе в хеш-функцию SHA-256 определённый хеш.

Помните хакеров из фильмов, использующих программу, угадывающую миллион паролей в минуту, чтобы взломать компьютер? Это что-то вроде этого. Все майнеры мира одновременно используют похожую программу-угадайку, ищущую правильный нонс, который при добавлении к данным блокчейна и вводе в хеш-функцию SHA-256 даст рандомный хеш, который сам блокчейн «определил» как «решение» задачи. Компьютеры, в каком-то смысле, работают совместно, так как каждый предложенный хеш не может быть предложен снова. Компьютер, первым отгадавший правильное число, выигрывает право на создание следующего блока и получает 12,5 биткойна, что сейчас равно примерно $50 000.

Так обеспечивается консенсус, а также предотвращаются атаки, нацеленные на манипулирование системой. Так как результатом каждого ввода является совершенно уникальный хеш, только определенный нонс в комбинации с верными ранее верифицированными блокчейновыми данными даст хеш, решающий уравнение. При вводе неточных или мошеннических предшествующих записей не может быть угадан верный хеш. Таким образом, криптография делает блокчейны более безопасными, чем любой банк с человеческой верификацией.

Тем не менее, поскольку постепенно всё больше людей выделяли всё больше компьютерной мощности на майнинг биткойнов, возникла новая проблема. Новаторы разработали мощные компьютеры, предназначенные исключительно для майнинга биткойнов. Эти компьютеры способны предлагать хеши намного чаще, чем средний компьютер, что позволяет им прийти к верной догадке намного быстрее и, как следствие, намайнить больше биткойнов.

Проблема заключается в том, что когда всё меньше людей могут позволить себе майнинговые технологии, риск централизации возрастает. Блоки создаются и биткойны майнятся, как только находится решение следующего блока. Таким образом, имеющий ресурсы может просто собрать более мощную майнинговую машину, чем у всех других, и майнить огромный процент остающихся биткойнов быстрее всех других, просто предлагая больше догадок в более короткий срок.

10-минутное решение

Сатоши предусмотрел механизм, сглаживающий эту проблему, и он также полагается на возможности хеш-функций. Вот как я предпочитаю смотреть на его решение:

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

Но теперь представьте, что вы задаёте определённые критерии того, в какое животное должна перевести ваши данные хеш-функция, чтобы работать. Это влияет на вероятность хеширования тех или иных данных в животное, удовлетворяющее вашим критериям. Например, данные «abc123» с большей вероятностью выдадут любое животное (на самом деле в данном примере вероятность 100%), чем любое двуногое, потому что существует намного больше потенциальных догадок, подходящих под любое животное, чем под любое двуногое. Ещё меньше вероятность получить любую обезьяну.

Блокчейн Биткойна работает так, что игра на отгадывание самокорректируется, чтобы всегда быть достаточно сложной, чтобы все компьютеры сети могли угадывать только каждые 10 минут, независимо от мощности отгадывающих компьютеров. Это значит, что угадывание хеша и майнинг блока сегодня теоретически намного сложнее, чем при запуске Биткойна в 2009 г., потому что в сети очень много сверхмощных компьютеров. И в самом деле, сегодня невозможно майнить биткойны с помощью обычного ноутбука, тогда как в ранние дни Биткойна все участники сети использовали стандартные компьютеры.

Так как же протокол Биткойна гарантирует, что игра на отгадывание будет становиться достаточно сложной, чтобы даже чрезвычайно мощным майнинговым компьютерам на отгадывание требовалось примерно 10 минут? Вспомните пример с обезьяной. Чем более конкретные критерии заданы для выхода хеш-функции, тем больше догадок нужно сделать, чтобы получить этот более конкретный выход. Вместо того чтобы «правильным» ответом было животное (легко), двуногое (сложно) или обезьяна (сложнее), для «правильной» строки хеша, выигрывающей игру, задаются всё более конкретные критерии. В частности, игра усложняется посредством требования наличия у правильного хеша в начале определённого количества нулей.

Представьте себе это следующим образом. Если я попрошу вас отгадать рандомное трёхзначное число, чтобы получить шоколадку, у вас больше шансов угадать, если правильное число – любое трёхзначное число, чем если это любое трёхзначное число, начинающееся с 0. Это сложно понять, но в основе лежит математический закон, говорящий, что достаточно квадратного корня N рандомных событий, чтобы вероятность их совпадения составляла 50%. Та же самая математика поддерживает парадокс дней рождения – если в комнате всего 23 человека, существует 50% вероятность, что у двух из них день рождения в один и тот же день.

К сожалению, делая угадывание числа всё сложнее и сложнее, блокчейн Биткойна неизбежно пришел к исключению из майнинга обычных людей. Но это справедливая цена децентрализации. Без этого одна богатая компания могла бы теоретически создать чрезвычайно мощный компьютер, способный мгновенно добыть все оставшиеся биткойны.

Должен заметить, что я лишь (с трудом) понимаю, как работает блокчейн Биткойна.

Другие блокчейны могут использовать криптографию совершенно иначе, чем я здесь описал. Например, я не знаю, использует ли ту же систему доказательство доли владения (proof of stake) – как утверждается, более эффективное усовершенствование доказательства выполнения работы.

Но так как блокчейн Биткойна является моделью для всех других блокчейнов, его понимание – это важнейший шаг к постижению мира криптовалют. Хотя существенно также понимание многих других аспектов блокчейна, осмысление того, как он использует криптографию, – наверное, важнейшая часть пазла.

Читать еще:  10 идей и схем онлайн заработка в интернете без вложения денег
Ссылка на основную публикацию
Adblock
detector