Содержание
Нередко люди воспринимают блокчейн как что-то сложное для понимания. На самом деле основная идея технологии проста. Чтобы разобраться с принципом работы блокчейна, следует начать с криптографии.
В материале мы на примерах покажем как с помощью криптографических алгоритмов шифруются данные. После прочтения вы станете лучше понимать как устроен блокчейн, в чем его уникальность и почему он считается анонимным.
- P2P: где используются одноранговые сети
- Шифрование в блокчейне: на пальцах
- Блокчейн — цепочка блоков транзакций. Разбираем определение по словам
- Шифрование в блокчейне: зачем нужна цифровая подпись
- Принцип работы блокчейна: кто создает блоки
- Для каких целей и задач подходит блокчейн
Зачем шифровать данные в блокчейне
Благодаря алгоритмам шифрования, технология блокчейн считается наиболее безопасной разновидностью одноранговых сетей. Для начала разберемся, зачем в блокчейне что-то шифровать.
В традиционной архитектуре «клиент-сервер» за безопасность отвечает сервер. Он выполняет следующие функции:
- Обеспечивает доступ пользователей к данным. Сервер хранит логины и пароли своих клиентов. Он должен проверить пользователя, прежде чем дать ему доступ к сети. Данный процесс называется аутентификация.
- Следит за сохранностью данных. Сервер не дает злоумышленникам получить доступ к личным данным пользователей. Другими словами, сервер гарантирует конфиденциальность.
- Контролирует изменение данных. Сервер не дает пользователям удалять данные друг друга. Прежде чем вступить в силу, любое изменение согласуется с сервером. Таким образом поддерживается целостность данных.
Так как в блокчейне сервера отсутствуют, то для этих целей применяют криптографию. Криптографические алгоритмы шифрования позволяют выполнять описанные функции без постороннего вмешательства.
Криптография — совокупность алгоритмов шифрования информации для обеспечения аутентификации, конфиденциальности и целостности данных.
Криптография была известна задолго до появления блокчейна. Чтобы понять, как алгоритмы шифрования выполняют функции сервера, рассмотрим реальный исторический пример.
В середине 1650-х голландский ученый Христиан Гюйгенс обнаружил кольца Сатурна. Он не был уверен в правильности своих наблюдений, поэтому решил все перепроверить. Пока он занимался проверкой, его могли опередить другие ученые. Поэтому в одной из своих работ ученый написал сообщение:
aaaaaaacccccdeeeeeghiiiiiiillllmmnnnnnnnnnooooppqrrstttttuuuuu
Позже Христиан Гюйгенс перепроверил все данные и был готов рассказать об открытии. Он раскрыл, что в шифре содержались буквы исходной фразы, расставленные по алфавиту. Сама фраза была следующей:
Annulo cingitur, tenui plano, nusquam cohaerente, ad eclipticam inclinato
«Окружен кольцом тонким, плоским, нигде не подвешенным, наклоненным к эклиптике»
Расстановка букв по алфавиту — один из алгоритмов шифрования. Гюйгенсу удалось зафиксировать свое открытие и не выдавать его конкурентам. Другими словами, алгоритм заменил сервер: сохранил данные в конфиденциальности без сторонней помощи.
В приведенном примере важно выбрать правильный алгоритм шифрования. Криптография отвечает на вопрос, какой использовать алгоритм шифрования для той или иной цели.
Почему выбрали алгоритм с хеш-функциями
Давайте представим себя на месте разработчиков блокчейна. Нам нужно найти идеальный алгоритм шифрования для того, чтобы осуществлять функции сервера в блокчейне. Сформулируем критерии:
- Нужен такой тип математических функций, который легко шифрует информацию без возможности расшифровки.
Это односторонние функции. Самый простой пример такой функции — умножение. Если мы знаем только ответ, то не можем однозначно сказать какие два числа были умножены. Например, число 6 может быть произведением разных чисел: 6 и 1, 2 и 3, 12 и 0,5 или даже 47,2440945 и 0,127.
- Нужен такой тип односторонних функций, который превращает информацию произвольного размера в шифр определенной длины.
Это хеш-функции. Они преобразуют сообщения в хеши. Информацию в таком виде можно удобно и безопасно использовать в программировании.
Сообщение может быть любого типа: текст, изображение, видео или звук. Чтобы с сообщением можно было проводить математические операции, его записывают в виде двоичного кода.
Хеш может состоять как из букв, так и из цифр. Какие цифры и буквы будут в хеше, а также сколько их будет, зависит от конкретной хеш-функции. Рассмотрим подробнее наиболее известную — SHA-256.
Как работает хеш-функция SHA-256
Она известна тем, что используется в блокчейне биткоина. SHA означает «безопасный алгоритм хеширования», а число 256 — объем кэша в битах.
Работа хеш-функции SHA-256 напоминает создание отпечатков пальцев. Чтобы идентифицировать человека, не надо знать всю информацию о нем. Достаточно знать отпечаток его пальца. SHA-256 вычисляет такой «отпечаток» у текстов, видео, картинок, музыки и любого вида информации.
Если не углубляться в технические детали, алгоритм работы можно описать следующим образом:
- На вход поступает сообщение — файл размером до 2 млн терабайт.
- Выполняются математические преобразования.
- На выходе получается хеш — 64-значное число.
Попробовать закодировать текст и посмотреть как работает хеш-функция можно онлайн. Для примера закодируем два сообщения: «Maff.io» и «maff.io». SHA-256 популярна, в том числе потому, что кодирует сообщения моментально.
Первое, что бросается в глаза, то как сильно отличаются хеши. Даже небольшое изменение в сообщении меняет хеш настолько сильно, что невозможно заметить сходства между новым и старым значением. Хеш-функция SHA-256 гарантирует, что невозможно изменить сообщение, не меняя хеша.
Второе, на что следует обратить внимание — набор из букв и цифр в хеше. На самом деле это одно 64-значное число, просто записанное в шестнадцатеричной системе счисления. Чтобы найти два разных сообщения с одинаковым хешем, придется перебирать их миллионы лет.
Таким образом, если два сообщения имеют одинаковый хеш, то можно быть уверенным, что они одинаковые. Вот почему алгоритмы с хеш-функциями считаются таким надежным.
Пример работы: транзакции в блокчейне
Без хеш-функций существование блокчейна было бы невозможно. Блокчейн уникален тем, что гарантирует неизменность и анонимность хранимых данных. Это означает, что любые данные проверяются на подлинность, но при этом их никто не может увидеть. То есть, это если ломбард проверял золото, которое лежит в закрытом сейфе. Теперь покажем как в этом помогают хеш-функции.
Блокчейн регулярно обновляет данные, добавляя записи об изменениях — «транзакции». Именно при обновлении транзакционной информации любая система уязвима для атаки. Банки сглаживают этот риск с помощью строгого контроля за правами доступа пользователей. У блокчейна нет централизованного органа контроля, поэтому в работу вступают криптографические хеш-функции.
Транзакции и их хеши помещаются в блоки. Хеш в каждом новом блоке зависит от хеша в предыдущем. Таким образом, все когда-либо выполненные транзакции можно выразить одним числом — хешем последнего блока. Изменив даже одну транзакцию, изменятся все последующие хеши по цепочке и такая версия блокчейна будет считаться недействительной.
На использовании хеш-функций базируется весь принцип работы блокчейна. Хеши делают каждый блок похожим на деталь пазла. Изменить деталь незаметно не получится — целостность всего пазла нарушится. Аналогично и в блокчейне. Если изменится один блок, то придется методом перебора восстанавливать все последующие блоки. Чтобы осуществить такой перебор, не хватит никаких вычислительных мощностей.
Заключение
В статье мы рассказали о том, что криптографические алгоритмы шифрования применяются для обеспечения безопасности в блокчейне. Подробно рассмотрели использование хеш-функций и показали, что они являются основой технологии блокчейн.