Найти тему
Bit Bro

3.3 Блокчейн и деньги: Особенности криптографической Hash-функции 💰

Перевод лекций о блокчейне и криптовалютах пост председателя Комиссии по ценным бумагам и биржам США (SEC) Гари Генслера в университете MIT осенью 2018 г.
Перевод лекций о блокчейне и криптовалютах пост председателя Комиссии по ценным бумагам и биржам США (SEC) Гари Генслера в университете MIT осенью 2018 г.

Криптографическая Hash-функция 🐾

Hash-функция - это как отпечаток пальца, но только в отношении данных.

У hash-функции есть несколько особенностей:

  • Hash-функции могут взять данные "X" любого размера и сжать их в определённый фиксированный размер.
Данные "X" любого размера  сжимаются в определённый фиксированный размер.
Данные "X" любого размера сжимаются в определённый фиксированный размер.

Одна из hash-функций, которые мы используем повседневно, это почтовые индексы. В России они шестизначные, то есть они имеют фиксированную длину. У нас может быть сколько угодно человек (к примеру, 50 000 или 500 000) внутри одной области, они могут по-разному весить, но мы можем их всех скомпоновать в одно значение с фиксированной длиной символов.

Однако, почтовые индексы - это не защищённая hash-функция.

  • Hash-функции всегда детерминированы и однозначны.

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

  • Hash-функции очень эффективно высчитываются.

В случае с биткоином hash-функции высчитываются за наносекунды. Современные компьютеры выполняют около 5-500 миллиардов вычислений в секунду с помощью процессора. Это примерно 0,1-0,5 MH/s - MegaHashes per second - Мегахеш в секунду. Если вы включите видеокарту, то получите около 1-150 миллионов вычислений в секунду. Это уже 1-150 MH/s.

Следовательно, hash-функции — удивительно эффективный алгоритм!

Эффективность
Эффективность

Что бы понять как получаются мегахеши можно воспользоваться картинкой ниже:

Эффективность оборудования для майнинга измеряется параметром “хеш в секунду” или "Хешрейт".
Эффективность оборудования для майнинга измеряется параметром “хеш в секунду” или "Хешрейт".

Криптографические особенности:

  • Информатики используют термин "Устойчивость к прообразу". Если выразится проще, то можно сказать "Односторонность".

То есть невыполнимо определить данные "X" по hash-функции вычисленной для этих данных "X". Можно двигаться только в одну сторону: невозможно определить входные данные, имея только выходные данные.

Можно двигаться только в одну сторону
Можно двигаться только в одну сторону

Почему мы использовали термин неопределимо, а не, например, невозможно? Потому что эти данные можно получить "грубой силой", то есть подборкой различных вариантов, что практически неосуществимо, но в теории возможно.

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

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

Даже Сатоши Накамото писал об этом в 2010 году в своём письме (он получал письма с вопросами о биткоине). Его спросили: "Что будет если SHA-256 (hash-функция на которой держится биткоин) будет взломана?" Его ответ был таков, что к тому времени уже будет изобретена более новая и продвинутая hash-функция. В таком случае мы бы взяли всю сеть биткоина, захешировали её (Вы же помните что мы можем взять и захешировать любой объём данных?) и двигались бы дальше. То есть, в теории, биткойн в будущем мог бы перейти на более новую hash-функцию, когда её изобретут, и если для этого будет необходимое количество времени, и старую hash-функцию к тому времени не взломают.

  • Концепция устойчивости к столкновению.

То есть невыполнимо, что 2 набора данных (данные "X" и данные"Y"), захешируются в одно и тоже значение.

Невыполнимо, что Hash (данных "X") = Hash (данных "Y")
Устойчивость к столкновению отсутствует.
Устойчивость к столкновению отсутствует.

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

  • Эффект лавины.

Hash-функции выглядят очень хаотично и рандомно. Это называется "эффектом лавины", и значит то, что если вы поменяете хоть одно маленькое значение в исходных данных, то значение hash-функции от этих исходных данных будет выглядеть совершенно по-другому. Таким образом hash-функция получается более безопасной.

Лавина
Лавина
  • Дружелюбие к головоломкам.

Это значит, что даже если вы знаете часть вводных данных, вы не сможете найти выходные данные.

Знание Hash (данных "X") и какой-то части данных "Х" не позволит вам найти оставшуюся часть данных "X"
Головоломка напоследок
Головоломка напоследок

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

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

Подписывайтесь и оставляйте комментарии!)

Теги: #технологии #криптовалюта #блокчейн #финансы #деньги