Шифрование в блокчейне

Материал из Decimal Wiki
Перейти к навигации Перейти к поиску

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

Зачем шифровать данные в блокчейне

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

В традиционных и понятных нам системах «клиент-сервер» за безопасность отвечает сервер компании, которая обеспечивает безопасность хранения денежных средств (например, сервер банка). Он выполняет следующие функции:

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

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

3. Контролирует изменение данных.
Любое изменение, прежде чем вступить в силу, согласуется с сервером. Таким образом поддерживается целостность данных.

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

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

Алгоритм с хеш-функциями

Основная статья: Хеш-функция

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

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

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

Такой набор символов (хеш) может состоять как из букв, так и из цифр. Какие цифры и буквы будут в хеше, а также сколько их будет, зависит от выбранной хеш-функции.

Рассмотрим подробнее наиболее известную — SHA-256, которая также используется в блокчейне DecimalChain.

Как работает хеш-функция SHA-256

Хэш-функция SHA-256 используется и в блокчейне биткоина. SHA означает «безопасный алгоритм хеширования»‎, а число 256 — объём кеша в битах.

Работа хеш-функции SHA-256 концептуально напоминает создание отпечатков пальцев. Чтобы идентифицировать человека, не надо знать всю информацию о нём: достаточно знать отпечаток его пальца. SHA-256 вычисляет такой «отпечаток» у текстов, видео, изображений, музыки и других видов информации.

Алгоритм работы можно описать следующим образом:

  1. На вход поступает сообщение — файл размером до 2 млн терабайт.
  2. Выполняются математические преобразования.
  3. На выходе получается хеш — 64-значное число.

Закодировать текст и посмотреть, как работает хеш-функция, можно онлайн тут.

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

Набор из букв и цифр в хеше — это одно 64-значное число, записанное в 16-ричной системе счисления. Чтобы найти два разных сообщения с одинаковым хешем, придётся перебирать их тысячелетиями, поэтому если два сообщения имеют одинаковый хеш, то будьте уверены: сообщения одинаковые.

Транзакции в блокчейне

Без хеш-функций существование блокчейна было бы невозможно.

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

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

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

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

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