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

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

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

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

Шифрование и дешифрование

Это две важнейшие функции криптографии.

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

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

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

Способы шифрования

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

Подстановка

Данный способ заключается в замене символов открытого текста на другие буквы, цифры или символы. Например, при сдвиге на +1, A будет заменено на B, B на C и так далее. Таким образом,

Открытый текст: BLOCKCHAIN IS THE FUTURE

Шифротекст: CMPDLDIBJO JT UIF GVUVSF

В этом случае ключ шифрования будет равен +1.

Транспонирование

В технике транспонирования позиции символов открытого текста изменяются для создания шифротекста. Например, на рисунке ниже «HCLBCOKHIIATNSETFERUU» — это шифрованный текст для открытого текста «BLOCKCHAIN IS THE FUTURE» с использованием ключа шифрования 7421635.

Техника транспонирования для преобразования открытого текста в шифротекст
Техника транспонирования для преобразования открытого текста в шифротекст

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

Виды криптографии

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

Симметричная криптография

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

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

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

Симметричная криптография использует один и тот же секретный ключ
Симметричная криптография использует один и тот же секретный ключ

Асимметричная криптография

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

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

Из двух используемых ключей один ключ хранится в тайне и называется «закрытым ключом» (private key). Другой ключ находится в открытом доступе и может быть использован кем угодно. Поэтому он известен как «открытый ключ» (public key).

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

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

Асимметричная криптография использует различные ключи
Асимметричная криптография использует различные ключи

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

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

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

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

Шифрование информации с помощью (a) открытого ключа получателя B и (b) закрытого ключа отправителя A
Шифрование информации с помощью (a) открытого ключа получателя B и (b) закрытого ключа отправителя A

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

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

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

Хеширование — это техника или процесс генерации выходного «хеша» фиксированной длины для любых входных данных, независимо от их размера и длины. Для этого используются такие хеш-функции/алгоритмы, как MD5, BLAKE2, SHA-1, SHA-256 и т.д.

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

Блокчейн использует два типа криптографии: асимметричную криптографию и криптографическое хеширование.

Важность хеширования в блокчейне

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

Небольшое изменение в данных может привести к значительному изменению выходных данных, т.е. хеша. Например, «Блокчейн — это будущее» и «Блокчейн — это будущее!» (только с одним дополнительным восклицательным знаком) будут иметь совершенно разные хеши. Это свойство хеширования делает данные в блокчейне надежными и безопасными, поскольку любые изменения в данных приведут к изменению хеш-значения блока, к которому они относятся, и впоследствии изменят хеши следующих блоков, что сделает блокчейн недействительным. Таким образом, хеширование необходимо для сохранения неизменяемой записи транзакций/данных в блокчейне.

Различные хеши для различных входных данных
Различные хеши для различных входных данных

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

Хеш используется для согласования между всеми сторонами, что ни одна транзакция/данные в истории не были подделаны, поскольку любое изменение в данных блока может привести к несогласованности и разрушить блокчейн, сделав его НЕДЕЙСТВИТЕЛЬНЫМ.

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

Цифровая подпись в блокчейне

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

Например, Стив покупает автомобиль за 15 000 долларов и выписывает чек в качестве оплаты. Подпись гарантирует, что чек мог подписать только Стив. Поэтому банк Стива должен оплатить чек.

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

Как работает цифровая подпись?

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

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

Пример 1

Предположим, Фил хочет отправить документ/сообщение Джейн по сети блокчейн.

  1. Для создания цифровой подписи Фил должен передать данные документа хеш-функции, которая генерирует односторонний хеш подписываемых электронных данных. Значение этого хеша уникально для документа.
  2. Закрытый ключ Фила используется для шифрования хеша. Для этого значение хеша и закрытый ключ подаются на алгоритм подписи (например, ECDSA), который создает цифровую подпись на заданном хеше.
  3. Затем Фил отправляет данные с цифровой подписью предполагаемому получателю Джейн. Кроме того, цифровой подписи и открытого ключа Фила достаточно для того, чтобы ноды могли проверить, что закрытый ключ, связанный с Филом, был использован для создания такой подписи. Таким образом, можно доказать, что транзакция аутентифицирована и документ был отправлен Филом.
  4. Получив данные и подпись на них, Джейн может проверить их. Для этого необходимо выполнить два шага: сгенерировать хеш отправленных данных и расшифровать зашифрованный хеш. Используя открытый ключ подписанта, можно расшифровать хеш. Если расшифрованный хеш совпадает со вторым пересчитанным хешем тех же данных, это доказывает, что данные не изменились с момента подписания. С другой стороны, если два хеша не совпадают, это указывает на то, что данные были подделаны.
(a) подписание данных закрытым ключом подписанта и (b) проверка данных открытым ключом подписанта.
(a) подписание данных закрытым ключом подписанта и (b) проверка данных открытым ключом подписанта.

Пример 2

Предположим, Фил хочет отправить 1 биткоин (BTC) Джейн. Для этого каждый владелец счета в сети должен иметь цифровой кошелек, который присваивает ему пару открытый/закрытый ключ. Открытый ключ — это адрес цифрового кошелька. Вы можете спокойно делиться им с другими людьми, когда хотите, чтобы они отправили вам биткоин/криптовалюту. С другой стороны, закрытый ключ используется для присвоения и авторизации криптовалюты для расходования или отправки куда-либо.

Для отправки 1 BTC Джейн

  1. Детали транзакции, включая сумму для отправки (1 BTC), адрес получателя (Джейн) и т.д., хешируются, а затем хешированная транзакция подписывается с помощью закрытого ключа Фила. Подписанная транзакция затем отправляется на узлы сети.
  2. Затем майнеры, знающие открытый ключ, проверят условия транзакции и подтверждают подлинность подписи.
  3. После подтверждения блока, содержащего эту транзакцию, он добавляется в блокчейн валидатором/майнером. Таким образом, получатель, то есть Джейн, получает 1 BTC от Фила на свой кошелек.

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

Транзакция биткоина с цифровой подписью на блокчейне
Транзакция биткоина с цифровой подписью на блокчейне

Преимущества цифровой подписи

  1. Аутентичность. Цифровая подпись позволяет получателю подтвердить подлинность данных путем проверки цифровой подписи с помощью открытого ключа отправителя. Кроме того, получатель может быть уверен, что он/она общается именно с тем человеком, с которым намеревается.
  2. Целостность данных. Цифровые подписи гарантируют, что данные не были незаконно получены и изменены каким-либо хакером. Например, если хакер получит доступ к документу и изменит его, хеш измененного документа и хеш, полученный при расшифровке цифровой подписи, не совпадут. Следовательно, получатель может спокойно отвергнуть документ, полагая, что целостность данных была нарушена.
  3. Неапеллируемость. Цифровые подписи также обеспечивают неапеллируемость данных. Неапеллируемость означает, что участники не могут опровергнуть транзакцию в блокчейне. Например, А отправил подписанный документ B, поэтому А не может отрицать, что он не отправлял документ B. И в то же время B не может утверждать, что он не получал этот документ. Это происходит потому, что человек, отправивший документ, должен был обладать закрытым ключом, чтобы подписать документ. Поэтому получатель может предъявить документ и цифровую подпись третьей стороне в качестве доказательства, если в будущем возникнет спор.
Понравилась статья? Поделитесь в соцсетях

Похожие записи

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *