Криптография, которая лежит в основе криптовалют

3468
Просмотры
криптография

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

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

Цифровые подписи

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

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

  • Подпись должна доказывать, что именно вы подписали документ.
  • Никто другой не сможет подделать и скопировать вашу подпись.
  • Если вы подписали что-то, вы не сможете повернуть время вспять, отказаться или заявить, что это подстава.

Однако в реальном мире, даже сложная подпись может быть подделана, а 100% проверить подписи с на глаз — ненадежно.

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

Но прежде придется углубиться в основы криптографии.

Что такое криптография в валютах?

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

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

В современных технологиях широко используются три формы шифрования:

  • симметричная криптография,
  • асимметричная криптография,
  • хеширование.

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

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

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

Визуально получается так:

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

Существует два типа симметричной криптографии:

  • Потоковые шифры.
  • Блочные шифры.

Что такое потоковые шифры?

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

Используются разные принципы потокового шифрования, AND, OR или XOR (исключающее ИЛИ).

Рассмотрим, например, одноразовый блокнот по алфавиту.

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

Предположим, что мы отправим сообщение Бобу «СКОРО УВИДИМСЯ». Но мы не хотим, чтобы кто-то перехватывал наше сообщение. Так что мы с Бобом решили использовать одноразовый блокнот, который выглядит следующим образом:

«Г Н П В К У О Х З Ю Т Э М»

Как видно, запись имеет столько символов, что и сообщение, т. е. 13.

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

Появляется еще одна вещь: каждая буква из алфавита заменяется числовым эквивалентом.

А0К11Х22
Б1Л12Ц23
В2М13Ч24
Г3Н14Ш25
Д4О15Щ26
Е5П16Ъ27
Ё6Р17Ы28
Ж7С18Ь29
З8Т19Э30
И9У20Ю31
Й10Ф21Я32

В ходе процесса шифрования будет 6 единиц данных:

  • OM исходное сообщение: оригинал, который мы написали “СКОРО УВИДИМСЯ”;
  • NOM числовое исходное сообщение (его цифровой эквивалент);
  • OTP одноразовый блокнот;
  • NOTP числовой одноразовый блокнот;
  • NCT числовой шифрованный текст, который является суммой числового исходного сообщения и одноразового блокнота. Если сумма больше, вычитается 33 в нашем случае, по количеству букв в алфавите с 0.
  • CT шифрованный текст, который является алфавитным эквивалентом пункта выше.

Давайте начнем по порядку.

OMNOMOTPNOTPNCTCT
С18Г321Ф
К11Н1425Ш
О15П1631Ю
Р17В219Т
О15К1126Щ
У20У207Ж
В2О1517Р
И9Х2231Ю
Д4З812Л
И9Ю317Ж
М13Т1932Я
С18Э3015О
Я32М1312Л

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

Расшифровка

Процесс дешифрования происходит по тому же самому ключу. Тот, кто получил сообщение ФШЮТЩЖРЮЛЖЯОЛ, имеет:

  • зашифрованную фразу,
  • общий ключ,
  • таблица с числовыми эквивалентами.

Итак, как Боб расшифрует сообщение, используя эти данные?

  • Он отобразит числовые значения как ключа, так и зашифрованного сообщения, чтобы получить NCT и NOTP.
  • Затем он вычислит NOM (числовое значение исходного сообщения), выполнив этот расчет: NOM = NCT — NOTP mod 33.
  • Он будет использовать таблицу сопоставления для получения соответствующих букв.

Что такое блочное шифрование?

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

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

Самый простой — метод подстановки Атбаш, когда алфавит просто переворачивается: А->Я и наоборот. Также известен Шифр Цезаря, когда буква принимает значение стоящей за ней (или удаленной на Х).

Например, слово БАК -> ВБЛ, сдвинуто на 1:

  • А Б В Г Д Е Ё Ж З И Й К Л
  • Б В Г Д Е Ё Ж З И Й К Л А

Но это очень простые примеры, обычно шифрование происходит с огромными фрагментами данных.

На картинке можно представить так:

Криптография, которая лежит в основе криптовалют

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

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

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

Но проблем несколько:

  • Шифрование и дешифрование выполняется с помощью одного ключа — главная проблема. Если кто-то перехватит ключ, все данные будут скомпрометированы.
  • Нет масштабируемости. Предположим, что информационный центр отправляет данные с помощью симметричной криптографии.Все нормально, пока клиентов всего 3-4. Но чем больше их, тем более неудобно обрабатывать все ключи.

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

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

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

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

Была теория, а практическое применение этой теории из-за двух блестящих принципов:

  • Односторонняя функция с потайным входом: легко перейти от одного состояния к другому, но вернуться в исходную позицию без ключа невозможно; К — открытый ключ, к — приватный. Ключи математически связаны друг с другом через функцию, K = f (k). Простой пример — умножение больших чисел. Например, у вас есть числа 1847 и 19837. Их произведение 36638939. Однако, если вы просто знаете это число, вы не найдете ни один множитель. Нужно знать хотя бы один, чтобы узнать второй.
  • Обмен ключами Диффи–Хеллмана, Протокол Диффи–Хеллмана. Это обмен ключами по незащищенным каналам связи. Похожая ситуация для наглядности: Алиса и Боб живут в стране, где нет тайны переписки. Но ребята очень хотят сохранить свою тайну. Тогда Алиса отправляет запертый замком ящик с письмом Бобу. Боб его получает, вешает свой замок, отправляет Алисе посылку с двумя замками: старым и новым. Алиса получает, снимает свой замок, отправляет Бобу. Он получает, открывает замок своим ключом, открывает ящик и читает письмо. Так ни к Алисе, ни к Бобу не попадали чужие ключи, никто не украл бы их по пути.

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

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

Биткоин, Эфириум и другие используют криптографию на эллиптических кривых.

Любая эллиптическая кривая удовлетворяет уравнению Y^2 = x^3 + ax + b, где (x, y) — точка на кривой, a и b — постоянные.

эллиптическая кривая

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

Как происходит проверка цифровой подписи в криптовалютах?

На эллиптических кривых конкретно биткоин работает следующим образом.

Прежде чем посмотреть процесс, приведем некоторые переменные и их толкование:

  • Приватный ключ = d.
  • Сообщение = z.
  • Публичный ключ = Q.
  • G — постоянная точка на графике.
  • «k» — это случайное число, которое будет генерироваться автоматически для каждой уникальной подписи.
  • «n» — еще одна константа.

Математическая проверка (не сильно углубляясь):

Подписание сообщения

Открытый ключ Q = dG. (невозможно получить секретный ключ от Q и G, потому что деление на недопустимо).

Теперь мы умножим G на случайное число «k» и построим эту точку на графике. Координатами этой точки являются (x, y). т. е. (х, у) = kG

Затем мы определяем два значения r и s такие, что:

r = x mod n.

s = (z + rd) k ^ -1 mod n

Мы генерируем r и s, чтобы задать координаты нашей подписи.

Итак, мы отправляем точку (r, s) для проверки.

Проверка сообщения

Верификаторы проведут простое уравнение:

z * s ^ -1 * G + r * s ^ -1 * Q

Значение этого уравнения даст точку (x, y).

Теперь верификаторы могут просто сравнить координаты x. Они не имеют координаты x, заданной непосредственно от отправителя, но они имеют значения r и n.

И поскольку мы уже знаем, что r = x mod n, они могут просто решить уравнение для x.

Если значения x совпало, подпись проверена.

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

Как ключи работают в блокчейне?

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

приватный и публичный ключ биткоина

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

Кроме того, как вы можете видеть, закрытый ключ длиннее общего адреса.

Итак, как открытый ключ выводится из закрытого ключа? Давайте рассмотрим пример биткоина.

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

  • Во-первых, она будет генерировать 256-битный закрытый ключ. Она может либо сделать это вручную, либо использовать автогенератор.
  • Затем ей нужно сгенерировать публичный адрес: алгоритм внутри кошелька сделает это автоматически (шаги ниже).
  • Приватный ключ будет анализироваться с помощью алгоритма хэширования SHA 256, чтобы получить хэш.
  • Затем хэш будет разбираться через функцию RIPE MD 160, и будет создан новый хэш, и его копия будет сохранена (ЧАСТЬ А).
  • Затем хэш будет хэширован через SHA 256 для генерации другого хэша.
  • Затем новый хэш снова будет хэширован через SHA 256 для генерации другого хэша. Первые 7 бит этого хэша будут сохранены (ЧАСТЬ B).
  • ЧАСТЬ А и ЧАСТЬ B будут сведены вместе, и результатом будет публичный адрес.

Как работает процесс подписи (упрощенно)?

Предположим, Алиса хочет отправить 500 BTC Бобу. Она выполнит следующие шаги:

  • Она создаст транзакцию и подпишет ее своим личным ключом.
  • Она отправит транзакцию на публичный адрес Боба.
  • Затем Боб может расшифровать сообщение, используя открытый ключ Алисы, чтобы убедиться, что на самом деле Алиса послала ему биткоины,
  • Cделка считается завершенной.

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