История появления и основы криптографии
В данной статье постараемся не вдаваться в глубину данной темы, так как она очень сложная. Попробуем пройтись по краю и обобщить.
Любой активный пользователь криптовалют сталкивался с такими терминами как “Private Key (Закрытый ключ)” и “Public Key (Открытый ключ)”. Из самых простых объяснений обычно можно услышать то, что открытый ключ является вашим адресом и по сути идентификатором в сети. Для его расшифровки существует закрытый ключ.
Криптография означает “скрытое письмо”.
Шифрование преобразует ваше обычное сообщение (открытый текст) в зашифрованное сообщение (зашифрованный текст), которое могут понять только ваши люди.
Дешифрование – процесс преобразования зашифрованного текста обратно в открытый текст.
Криптосистема – система для шифрования и дешифрования.
Как вообще появилась криптография?
Конечно же её появление связано с войной. Для того, чтобы войска успешно выполняли планы, которые очень часто в моменте меняются, необходимо иметь связь. Противник же со своей стороны может перехватить данное сообщение и предпринять контрмеры.
Автоматически появляется задача сделать так, чтобы сообщения были понятны для вас и ваших союзников, но полностью непонятны для противника.
Например, если вы Юлий Цезарь и хотите, чтобы ваши легионы пересекли Рубикон на рассвете, было бы очень полезно иметь возможность отправить это сообщение своим верным подчиненным, не рискуя, что сообщение будет понятно, если оно будет захвачено. Таково мифологическое происхождение первого известного нам метода шифрования - шифра Цезаря.
Функция шифрования – функция, которая принимает открытый текст и ключ шифрования в качестве входных данных и выводит зашифрованный текст.
Функция дешифрования – функция, которая принимает зашифрованный текст и ключ дешифрования в качестве входных данных и выводит исходный открытый текст.
Некоторые криптосистемы используют один и тот же ключ для шифрования и дешифрования. Такие системы называются симметричными.
Другие криптосистемы используют другой ключ дли шифрования и дешифрования. Такие системы называются асимметричными.
Шифр Цезаря - самая простая криптосистема, известная человечеству. Это работает следующим образом:
Цезарь хочет передать планы войскам через гонца, а его противник Помпей не сможет понять содержание сообщения, если он поймает гонца с посланием, поскольку подробности сообщения касаются того, в каких районах будет совершаться атака. Для этого он сдвигает все буквы в своем сообщении вниз на 3 буквы в алфавите - например, буква «а» становится «г», а «б» становится «д» и так далее. Цезарь говорит гонцу перед вылазкой, что ключ равен 3.
В послании Цезарь пишет: «Марк Антоний, атакуйте войска Помпея с запада. С востока вас поддержат отряды Суллы». Переставив все буквы на 3, зашифрованный текст станет:
ПГУН ГРХСРЛМ ГХГНЦМХЗ ЕСМФНГ ТСПТЗВ Ф КГТГЖГ Ф ЕСФХСНГ ЕГФ ТСЖЖЗУЙГХ СХУВЖЮ ФЦООЮ
Если хотите попробовать, есть автоматический конвертер.
Как-то не очень понятно, если нету шифра.
Конечно, на практике взломать этот метод шифрования чрезвычайно просто. Во-первых, он пропускает огромное количество информации об открытом тексте - обратите внимание, что длина каждого слова одинакова. Немного лучше, если вы удалите все пробелы при отправке, однако сообщение все равно будет легко расшифровать. Но даже в этом случае у вас будут проблемы, если вы на самом деле используете эту криптосистему в реальной жизни, поскольку есть только 25 возможных ключей.
А теперь сделайте поправку на давление и стресс человека, который будет это расшифровывать. Скоро битва, а на тебе такая ответственность.
Также необходимо понять, что такие гонцов отправляют несколько и часть из них может нести специальную дезинформацию.
Это сейчас просто, вставил буквы в конвертер и через секунду получил расшифровку, тогда это было очень сложно и долго.
Подумайте об этом: вы можете сдвинуть буквы вперед только на 25 пробелов, прежде чем просто зациклить их обратно к исходному открытому тексту, а сдвиг вперед на 27 аналогичен сдвигу вперед на 2. Из-за этого удаленно разумный противник может просто попробовать каждый из 25 возможных ключей и восстановить открытый текст. Нам нужно что-то получше.
Шифр Циммермана использовался в начале 20 века для отправки зашифрованных сообщений из Германии в Мексику. В отличие от шифра Цезаря, мы не меняем отдельные буквы на другие - вместо этого мы сопоставляем каждому слову случайное число. Например, «привет» может быть сопоставлено с «156», а «мир» может быть сопоставлено с «11518». Таким образом, «привет, мир» будет зашифровано как «156 11518». Таким образом, очень длинное сообщение вроде «Мы намерены начать неограниченную подводную войну первого февраля» становится «130 13042 13401 8501 115 3528 416 17214 8491 11310 18147 18222». Кажется, довольно сложно взломать, верно? Однако остаётся небольшая проблема, связанная с тем, что мы должны отправить сопоставление каждого слова в словаре с номером через безопасный канал, чтобы они могли прочитать любое из наших сообщений, отправленных позже.
К сожалению, шифры Циммермана также несложно взломать современными методами. Причина в том, что значительная часть информации об открытом тексте все еще присутствует в зашифрованном тексте, и, что наиболее важно, частота слов. Если кто-то перехватит наши зашифрованные тексты, он со временем заметит, что число «1847» является наиболее распространенным, и решит, что оно означает «тот самый», и так далее. Используя такой частотный анализ, взломать шифр Циммермана с течением времени относительно просто.
Современные методы шифрования используют некоторые замечательные свойства Вселенной. Во-первых, можно преобразовать любую информацию в двоичный код - например, мы можем преобразовать «привет» в «0101101» (на самом деле это не привет в двоичном формате, но вы поняли идею). Используя это свойство, мы можем затем использовать различные методы для преобразования результирующего двоичного открытого текста в строку из 0 и 1, где имеется равное количество 0 и 1 независимо от содержимого открытого текста. Это предотвращает утечку информации открытого текста, как это делает шифр Циммермана. В качестве примера простого, но непрактичного современного шифра можно привести шифры Вернама.
Для начала шифр Вернама преобразует текстовое сообщение в двоичное. Предположим, что результатом этого процесса является:
Затем мы выбираем случайный ключ той же двоичной длины, скажем
Затем мы выполняем операцию XOR над текстовым сообщением и ключом. Операция XOR проста: представьте, что открытый текст и ключ наложены е первую цифру в каждой строке: «1» и «0». Если числа разные, выведите «1». Если они совпадают, выведите «0». Повторяйте до тех пор, пока у вас не останется 0 или 1. В нашем случае:
Это все, что нам нужно сделать для шифрования! Обратите внимание, что длина ключа равна длине сообщения, которое мы хотели отправить.
Чтобы выполнить расшифровку, просто XOR зашифрованного текста с ключом следующим образом:
На самом деле мы вернули открытый текст, и кажется, что взломать его, не зная ключа, который мы использовали, практически невозможно. Однако есть огромная проблема: чтобы это работало, мы должны отправить секретный ключ такой же длины, как исходное сообщение, а поскольку длина ключа должна быть такой же, как и открытый текст, мы не можем повторно использовать один и тот же ключ снова и снова. Тогда бы мы передали злоумышленнику информацию о нашем ключе и открытых текстах. Следовательно, вы можете просто отправить исходное сообщение по тому же безопасному каналу, который вы использовали для отправки ключа.
Асимметричное (открытый и закрытый ключ) шифрование
Шифрование с открытым и закрытым ключом делает Интернет возможным. Без него вы не могли бы вести торговлю или обмениваться какой-либо ценной информацией, поскольку содержимое интернет-трафика является общедоступным, если оно не зашифровано. Однако это огромная проблема, так как людям, которые никогда не встречались, очень часто необходимо отправлять зашифрованную информацию туда и обратно, и у этих людей нет возможности отправить друг другу секретные ключи шифра Вернама через Интернет, не встретившись.
Эта проблема не была решена до 1970-х годов. Это стало возможным с изобретением RSA и подобных технологий, таких как обмен ключами Диффи-Хеллмана.
Принцип работы RSA заключается в том, что Боб предоставляет в Интернете открытый ключ, состоящий из двух чисел, e и n, и Боб также выбирает закрытый ключ d на основе двух случайных простых множителей n.
(Простое число - это число, которое можно разделить только на 1 и само на себя. Разложение n на простые множители - два простых числа, которые можно перемножить, чтобы получить n).
Люди, желающие общаться с Бобом, могут затем зашифровать свое сообщение с помощью этого открытого ключа и отправить его Бобу, а затем, только Боб может расшифровать его, так как только Боб знает d, а вычисление случайных простых множителей большого n требует больших вычислительных ресурсов.
Это совершенно удивительное новшество: теперь мы можем отправлять секретные сообщения через Интернет любому, у кого есть правильно выбранный открытый и закрытый ключ! Нет никакой необходимости посылать ключ по защищенному каналу, подобному шифру Вернама.
Эта технология сделала возможным современный интернет, а также играет важную роль в криптовалютах, таких как биткоин, поскольку только тот, у кого есть правильный закрытый ключ, может переместить биткоин на другой кошелек.