3. Криптография и основы блокчейна

3. Криптография и основы блокчейна

Основные темы обсуждения

1. Конструктивные особенности блокчейна:

  • Криптография
  • добавление блоков с временными отметками
  • распределенный алгоритм консенсуса
  • работа в сети

2. Два основных криптографических алгоритма или криптографические примитивы.

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

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

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

3. Проблема двойных трат.

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

К данному уроку была задана литература:

Повторение информации

  • Деньги как социальный конструкт или как экономический элемент консенсуса. Деньги всегда сами по себе. Это консенсус. У нас был вопрос — почему деньги являются пассивом или обязательством центрального банка? Ответ: потому, что кто-то эти деньги в итоге примет. Это социальный консенсус. Не потому что центральный банк что-то должен дать вам взамен на эти деньги, а это обязательство, которое заключается в том, что вам дадут банковский депозит. А им уже в свою очередь вы можете оплатить налоги, оплатить, если вам уже сварили, чашку кофе в Старбаксе. Это официальное платежное средство для уплаты долгов.
  • У фиатных денег есть трудности, и им свойственна нестабильность. Например, слабая денежно-кредитная политика, когда мы обесцениваем валюту из-за того, что её достаточно много печатают. И когда у нас есть нестабильность с фискальной политикой. Например, когда государство слишком много тратит. В 17 веке был основан Банк Англии для того, чтобы регулировать денежный поток в то время, когда король воевал. Так же и многие другие центральные банки были созданы тогда, когда суверен находился на чужих землях, чтобы контролировать расходы на войну.
  • Реестры. По сути они нужны, чтобы хранить в них записи. Они могут хранить либо историю транзакций, либо баланс. Реестровая система биткойна хранит в себе историю транзакций. Хранение транзакции в реестре — это именно то, как работают основы биткойна. Вообще вся банковская система построена на реестрах. И у всех коммерческих банков есть свой подреестр.
  • Другой вид реестров — электронные кошельки, которые имеют свой собственный реестр.
  • Мы давно живём в цифровую эпоху, но все электронные валюты до биткойна не могли решить загадку «как двигать деньги от человека к человеку без какого-либо централизатора». О чем написал Сатоши Накамото. «Я работал над новой системой денег, которая полностью одноранговая, без третьей доверенной стороны».

Технология блокчейн

3. Криптография и основы блокчейна

У нас есть журнал с отметкой во времени добавления тех или иных записей. Записи можно только добавлять их нельзя удалять. И это называется блокчейн. Упрощенное название «цепь блоков».

Кстати, в самой статье Сатоши Накамото не упоминается слово «Блокчейн», этот термин был придуман позже.

Накопление блоков приводит к формированию базы данных. Биткойн сейчас содержит в себе примерно 768 986 блоков (2022-12-26 02:43:20). При этом новый блок создается в среднем примерно раз в 10 минут. В Эфириуме, например, новый блок создается раз в 7 секунд.

Базы данных, или блокчейн, защищены двумя криптопримитивами: хэш-функциями и цифровыми подписями. Ещё есть консенсус для принятия соглашения. Основная проблема и тема для дебат заключается в том, кому принадлежит право изменения данных в базе. Обычно, базы централизованны, но Блокчейн стал децентрализованной базой. И, как следствие, возник вопрос: кто же может добавлять новые записи в базу данных? Механизм консенсуса как раз и создан, чтобы решить это.

Конструктивные особенности

  • Криптографические хэш-функции.
  • Неудаляемые записи, помеченные временем.
  • Заголовки блока и древо Меркла. Что попадает в заголовок блока, а что в тело блока.
  • Ассиметричная криптография (приватный, публичный ключ) и цифровая подпись.
  • Сами по себе адреса биткойна, которые отличаются от публичного ключа.
  • Консенсусы.
  • Нонсы. Очень важный протокол в биткойне отвечает за то, как информация распространяется по интернету. Здесь возникает вопрос сетевого общения. Это очень важная часть биткойна, как данные с одного устройства попадают на другое. На данный момент в сети биткойна есть где-то 10 000 нод или узлов. И мы не знаем где они все находятся.
  • Нативная валюта — это технологическая особенность блокчейна. Дело не только в том, что кто-то создал эту валюту, а в том, что она является частью экономической системы стимула. Как сказал Сатоши Накамото: «Если вы майните и создаете пруф оф ворк, то вы получаете монеты биткойна». То есть он создал экономическую систему вознаграждения. Причем майнеры будут вознаграждаться не только новыми биткойнами, но и когда максимальное количество биткойнов будет выпущено (а биткойн-монет будет всего 21 млн), они всеравно будут получать вознаграждение с платы за транзакции. Таким образом биткойн превращается в нативную валюту.

    Сейчас уже добыто 19,21 млн монет в 2022 г. Все эти монеты были добыты в процессе майнинга майнерами через пруф оф ворк. Изначально они добывали 50 биткойнов раз в 10 минут. Потом стали по 25 биткойнов и, затем, по 12,5 биткойнов. Цена биткойна на момент ноября 2022 года — $16,5 тыс.

    Ещё важный вопрос себестоимости биткойна. Сколько нужно потратить электроэнергии, чтобы намайненное количество биткойнов как минимум покрыло затраты? На момент видео выгодный курс составлял 3 цента за кВт/час. В большинстве стран стоимость электроэнергии выше. Поэтому актуально использовать нелегальные методы использования электроэнергии. Два самых крупных майнинговых пула находятся в Китае, а третий по величине в России.

  • Вводные и выходные транзакции. Это как чек, где нужно записать кто это отправляет и кто получает.
  • Реестр неизрасходованных транзакций.
  • Языки скриптования.

Криптография

3. Криптография и основы блокчейна

Криптография — это не только коммуникация в присутствии врагов, но и вычисления в присутствии врагов. Криптография известна ещё с давних времен, когда занимались шифрованием посланий. Так же очень известное событие — взлом немецкой шифровальной машины Энигмы. Что было показано в фильме “Игра в имитацию”.

Далее мы рассмотрим ассиметричную криптографию.

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

По сути это отпечаток пальца данных, у которого есть некоторые особенности

  • Хэш-функция может взять данные любого размера и сжать их в нужный размер. На примере США — это почтовые индексы, они всегда пятизначные.
  • Хэш-функции всегда детерминированы и однозначны. То есть если вы возьмете один и тот же набор данных, то вы получите один и тот же хэш.
  • Хэш-функция очень эффективно высчитывается. В случае с биткойном хэш-функция высчитывается за нано секунды. Хэширование зародилось ещё в 50-60-х годах, но применение, о котором мы говорим, появилось гораздо позже.

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

  • Устойчивость к прообразу (односторонность). То есть можно двигаться только в одну сторону, и невозможно определить входные данные, имея только выводные. Таким образом невыполнимая задача определить Х от Hash(Х). Эта задача является невыполнимой, но не невозможной. Данные можно получить грубой силой, а именно подборкой различных вариантов. Суть криптографии, как понимает Гари Гэнслер, не в том, чтоб сделать расшифровку невозможной в принципе, а в том, чтоб сделать шифр настолько сложным, чтобы враг не смог его расшифровать. Поэтому биткойн невозможно сломать до того момента, пока невозможно сломать хэш-функцию, которая находится внутри биткойна. Сатоши Накамото в 2010 году получил вопрос о том, что будет, если взломать SHA256 (что является хэш-функцией, на которой держится биткойн). Его ответ заключался в том, что к тому моменту уже будет более успешная хэш-функция, какой бы она ни была. В этом случае можно захэшировать всю сеть биткойна, так как захэшировать можно любой объем данных. Получили бы из неё хэш и просто двигались бы дальше.
    Атака 51% — это ситуация, когда благодаря высокой компьютерной мощи вы в теории можете захватить больше половины нод. И тогда вы бы могли управлять биткойном.
  • Концепция устойчивости к столкновениям. Невыполнимо, что два набора данных дадут одинаковый результат. Что Х и Y захэшируются в одинаковый результат. И опять же — «невыполнимо», а не «невозможно». На текущий момент это сделать нельзя. Однако, в будущем с появлением, например, квантовых компьютеров или других более продвинутых технологий, вполне вероятно, что появится возможность разорвать концепцию устойчивости.
  • Эффект лавины. Хэш-функции выглядят ужасно рандомными. Если изменить хотябы какую-то мелочь, то всё значение хэш-функции поменяется. Это важно, так как хэш-функция получается более безопасной.

Для чего используются хэш-функции

  • Для названий
  • Для ссылок
  • Для указателей (когда один блок указывает на другой блок)
  • Для обязательств (когда один блок указывает на другой блок)

Биткойн хэш-функции используют:

  • В заголовках и древе Меркла, которые используют стандарт SHA256. Он буквально имеет длину в 256 битов. Это значит, что он состоит из числа единиц и нулей длиной в 256 символов.
  • Для биткойн-адреса Сатоши использовал две хэш-функции. Он писал о том, что если одну из этих функций взломают, то есть вероятность, что вторую уже взломать не смогут. Хотя вероятность взлома итак очень мала. Она составляет 0,1 в 40 степени.

Добавление неудаляемой записи с временной меткой в блокчейне

3. Криптография и основы блокчейна

Самый долгий хэш с временной отметкой был создан в 1991 году Стюартом Харбором и Суретти.

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

Шапка блока

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

Добавление блоков с временными отметками
Добавление блоков с временными отметками

Желтый прямоугольник — это список всех транзакций, в который может входить 1 000 — 2 000 транзакций в каждый блок. То есть блокчейн состоит из этих блоков с транзакциями.

Сатоши Накамото описал как можно сжимать большие объемы информации. А именно с помощью корня Меркла. Зеленая часть, которая называется заголовком блока, не включает в себя список транзакций. То есть разница между полной нодой и облегченной нодой в том, что если скачать облегченную ноду (обычный кошелек) на свой телефон, то она не содержит всего списка транзакций. Но вы спокойно можете скачать все заголовки предыдущих блоков. Вся информация, которая содержится в биткойне занимает около 200 Гб, а то время как заголовки около 60 Мб.

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

Например, Если захэшировать какий-то фильм, то вы все-равно получите 256 бит.

В общем, корень Меркла — это механизм, который позволяет выдернуть из системы и рассмотреть сразу 2 000 транзакций.
Продолжаем список того, что есть в шапке блока:

  • Временная отметка
  • Цель трудности (сложности). Этот параметр определяет насколько сложным будет майнинг. Сложность добычи постоянно растет в биткойне пропорционально нагрузке на сеть, то есть с увеличением количества майнеров.
  • Нонс. Это просто рандомное число, которое может использоваться 1 раз.

Что будет, если с течением времени выходные данные хэш-функции станут повторятся, так как количество символов ограничено? И если к разным кускам информации будет привязан один и тот же хэш, то как система поймет, к какому именно куску информации будет привязан хэш?

У Сатоши Накамото описана такая ситуация, когда два хэша Х равны одному хэшу Y. Но все майнеры работают не в одно и то же время, поэтому если такая ситуация возникнет не в единый промежуток времени, то это не будет проблемой для системы. Это касается только майнинга. А хорошая хэш-функция устойчива к столкновениям. И вероятность совпадения данных 0,1^40.

Распространяются ли временные отметки на всю систему?

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

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

И тут мы переходим к корням Меркла

Дерево Меркла на примере четырёх блоков
Дерево Меркла на примере четырёх блоков

Корни Меркла, которые являются бинарным древом данных

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

Если поменять, например, шапку в одном из корневых блоков, то древо Меркла не изменится. Оно может поменяться, если, например, мы добавим новые транзакции, которых раньше не было. И важный момент в плане стимула. Одна из транзакций в корне древа — это coin base транзакция, то есть это те 12,5 биткойнов, которые получает майнер. И древо Меркла будет всегда разным, в зависимости от того, кто получит блок, кто его добудет.

Древо Меркла — очень эффективный метод, чтобы взять тысячи транзакций и объединить их все в один кусочек информации.

Подярок всех транзакций должен быть одинаковый для всех, кто хэширует информацию?

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

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

Виртуальные подписи

3. Криптография и основы блокчейна

Предположим, Алиса хочет написать сообщение Бобу: “Привет, Боб”.

Она шифрует сообщение с помощью публичного ключа Боба. И Боб расшифровывает послание с помощью своего приватного ключа.

Криптография — это метод шифра информации. Шифр Цезаря или шифр фашистов с помощью Энигмы — это все являлось симметричной криптографией. У получателя и отправителя был одинаковый ключ к разгадке шифра. В 70-х годах некоторые инженеры подумали, а что если ключ будет у всех разный. То есть сделать публичный и приватный ключ. И они будут математически взаимосвязаны.

Критический момент для цифровых подписей:

  • Необходимо сгенерировать пару ключей. Приватный и публичный ключ создаются в одно и то же время. Эти ключи должны создаваться на основе рандомного числа. Одна из причин, почему биткойн кошельки могут быть не очень безопасными — это потому, что у них очень плохо с генерацией рандомных чисел. То есть очень хорошие приватные ключи зависят от очень надежного метода генерации рандомных чисел.
  • Цифровая подпись. Цифровую подпись можно создать используя приватный ключ и само сообщение, которое отправляется.
  • Функция верификации — это просто функция «да»/«нет». Эта функция берёт цифровую подпись и верифицирует ее как действительную для какого-то сообщения, так как у нее есть публичный ключ. Сообщение отправителя проходит через хэш-функцию, которая генерирует некий хэш. Далее сообщение ещё раз шифруется ее приватным ключом. Затем зашифрованное сообщение и цифровая подпись отправляется получателю. Он использует ту же хэш-функцию, чтобы ее запустить и как бы воссоздать уже у себя. Далее получатель использует публичный ключ отправителя, чтобы расшифровать цифровую подпись отправителя. Если два хэша совпадут друг с другом, значит все правильно, и сообщение принадлежит отправителю.

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

Зависимость приватного и публичного ключа. Биткойн использует эллиптическую криптографию. Вы выбираете рандомное число от 0 до 256 — это будет приватный ключ. А публичный ключ создается из вашего приватного ключа. Берётся другое рандомное число и ставится в степень первого числа. То есть о публичном ключе можно подумать как об односторонней функции приватного ключа. Если у вас есть публичный ключ, вы не можете воссоздать с его помощью приватный ключ.

Свойства:

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

Функция цифровой подписи биткойн:

  • Алгоритм цифровой подписи на эллиптической кривой. Это тот алгоритм, который использует биткойн для создания приватных ключей. У всех кошельков, находящихся в свободном доступе, есть программное обеспечение для генерации случайных чисел. И скорее всего они все друг от друга отличаются. Какие-то будут чуть лучше, какие-то хуже. Чем реже рандомные числа повторяются, тем лучше рандомизатор. Это называется максимальная энтропия.

Биткойн-адреса

3. Криптография и основы блокчейна

Ключевой момент заключается в том, что когда мы слышим о публичных ключах и адресах биткойна, мы думаем, что это одно и то же. Но это не так. Технология, которую использовал Сатоши Накамото, хэширует публичный ключ два раза. Первый раз хэширует его с использованием функции SHA256. Потом с использованием другой хэш-функции. Затем, эти функции объединяются и в конце ещё добавляются дополнительные символы, чтобы всё усложнить. Затем используется Base-58, чтобы результат сократить.

Использование двух разных хэширований усиливает безопасность. Так же публичный ключ довольно длинный. Он занимает где-то 512 бит. А после хэширований будет весить всего лишь 256 бит. После применения Base 58, результат ещё будет сокращён.

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

3. Криптография и основы блокчейна

Если проводить аналогии с чеками, то цифровая подпись несколько аналогична подписи на чеке. А аналогия биткойн адресу — это тот, кто платит.

3. Криптография и основы блокчейна

В транзакциях у нас есть входные данные и выходные данные. Ещё есть время блокировки. Входные данные — это всегда предыдущие транзакции. Таким образом, идентифицируется сама суть денег на этом блокчейне. Ценность переводится в Сатоши (базовые единицы исчисления). В каждом биткойне 10^8 Сатош. То есть когда вы вводите сумму транзакции — вы пишите ее в Сатошах. Транзакция отправляется с публичным ключом.

Ключевые заключительные моменты

  • Записи с временными отметками, которые невозможно удалить. Это записи, которые благодаря криптографии, остаются неизменными. Стьюи Хэрбер создал неудаляемые записи с временными отметками и разместил их в Нью-Йорк Таймс. Это просто последовательность блоков с данными.
  • Древо Меркла — это технология, которая позволяет сжимать огромное количество данных и так же упорядочить их. То есть все эти тысячи транзакций нужно подтвердить. После верификации нужен индексный номер, чтобы найти нужную транзакцию.
  • Блокчейн получает свою безопасность благодаря хэш-функциям. Хэш-функция — это не просто способ сжатия данных, но они ещё и возможность объединения блоков друг с другом, потому что хэш-функции указывают на предыдущую информацию. Если мы меняем предыдущую информацию, то меняется и последующий хэш. Это как способ защиты данных от изменений.

Что будет, если появится более передовая хэш-функция, чем SHA-256? Как тогда обновить систему биткойна?

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

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

Заключение

Спасибо за внимание! Этот разбор третьей лекции из цикла более чем 20 лекций, информация в которых будет постепенно наслаивается, что в результате поможет сформировать понимание относительно темы Биткойна в контексте финансов. Очевидно, что на этапе погружения, возникает ряд вопросов и будет здорово, если вы присоединитесь к нашей группе, где всегда можно коллективно обсудить детали https://t.me/blockchain24money

Список всех лекций курса «Блокчейн и деньги»:

1010
1 комментарий

Комментарий недоступен