Cимметричное и ассиметричное шифрование
Давайте не будем укрепляться в мысли, что ночь оказалась долгой
Шифрование - это способ передать информацию, тому кому надо, минуя того кому не надо.
Чтобы что то зашифровать нужно две вещи:
- Метод шифрования. Это механизм, алгоритм или принцип по которому будет проводится шифрование.
- Ключ шифрования. Это значение, изменяя которое - меняется итоговый результат шифрования, не меняется при этом метода шифрования.
Аналогию можно привести с радио приемником. Чтобы найти волну, не нужно покупать новое радио(метод шифрования), достаточно покрутить/изменить положение крутилки(ключ шифрования).
Один из самых известных методов шифрования, который часто приводят как пример - это Шифр Цезаря. Метод его очень прост, необходимо сместить буквы алфавита на определенный шаг(ключ шифрования), получив таким образом новый алфавит. Т.е. если мы смещаем алфавит на 2 буквы, Вместо А,Б,В,Г,Д... - получаем В,Г,Д,Е,Ё...
Шаг сдвига(ключ шифрования):
Введите текст для шифрования:
Зашифрованный текст:
Метод шифрования можно разделить на два вида:
- Симметричное шифрование. Когда один ключ шифрования используется и для зашифрования и для расшифрования, как в шифре Цезаря.
- Ассиметричное шифрование. Когда используется два ключа шифрования, один ключ используется для зашифровывания (который также называется открытым), а другой для расшифровывания (называется закрытым).
С симметричным шифрованием вроде все понятно, один ключ, один метод...Берем и шифруем. А вот с ассиметричным все несколько интересней, поробуем разобрать на примере.
Предстваим, мы на месте графа Монте Кристо и томимся в темнице сырой. В соседней камере сидит человек, который очень хочет нам назвать остров и передать координаты, где он зарыл клад.
Мы можем писать, что то на клочках ветоши и передавать их друг другу через разнощика еды. Но вот проблема, наш разнозчик жуткий стукач и подхалим, поэтому он докладывает обо всем, что пишут - охранику.
Соответсвенно все, что мы напишем и передадим таким образом, будут знать и разнощик еды и охраник... и как следствие могут выкопать клад сами.
Поэтому Задачу можно описать так, как нам не видя нашего доброжелателя из соседней камеры, наладить такое общение, которым сможем пользоваться только мы сами, исключая третьих лиц?
Ведь если мы будем использовать симметричное шифрование, например тот же шифр Цезаря, нам нужно будет передать помимо шифра, метод и ключ, по открытым каналам связи. Иначе наш визави никак не сможет расшифровать наше сообщение.
Впринципе ничего страшного не произойдет, если в открытую напишем, что шифровали методом Цезаря. Но нам обязательно, каким то образом, нужно скрыть ключ(число на которое будет смещаться алфавит).
Вот тут и приходит на помощь ассиметричное шифрование, зашифруем наш ключ так, чтобы его знали только мы и наш собеседник, а охраник и разнощик остались с бугелем.
- Для начала, мы и наш собеседник должны придумать любое число, и это число будет знать только тот, кто его придумал. Нарпример, мы загадали 3 , а собеседник 5.
- Затем придумаем еще два числа, например 23(p) и 4(g).
- Дальше немного математики, число 4, возведем в степень нашего загаданого личного числа 3 и из всего этого возьмем модуль по числу 23, у нас получится 18:
43 mod 23 = 18
для справки mod это остаток от деления, буквально это можно представить так:
43 = 64
64 = 23 + 23 + 18
18 = 64 mod 23
- Отправим нашему собеседнику три цифры(23, 4 и 18) а так же инструкции, что с ними делать(с надеждой что у него с математикой неплохо)
- Собеседник проводит аналогичный расчет, но уже со своим придуманным числом(5) и у него получается 12:
45 mod 23 = 12Отправляет результат 12.
- А дальше начинается магия! Мы можем провести взаимные расчеты и получить общий результат 3:
Мы:
123 mod 23 = 3
Собеседник:
18 5 mod 23 = 3
Общий результат число 3, мы можем использовать уже как ключ шифрования для шифра Цезаря. При чем охранник может знать как мы считали, знать цифры которые мы передавали: 23, 4, 18, 12 (открытые ключи), но не зная тех цифр которые мы загадали: 3 и 5 (закрытые ключи), он не сможет узнать общий ключ число 3, для шифра Цезаря.
Строго говоря у нас получилос гибридное шифрование, когда для вычисления общего ключа используется ассиметричное шифрование, а для шифрования уже непосредственно данных симметричное шифрование.
Этот пример конечно чисто для понимания, с множеством допущений, например охранник не должен менять содержание того, что мы пишем, да и числа которые мы загадываем должны быть гораздо больше, чтобы нельзя было провести обратный расчет, а современные алгоритмы шифрования гораздо сложнее, чем шифр Цезаря.
Кстати к наиболее известным алгоритмам симметричного шифрования относятся: AES, DES, 3DES, RC5 ассиметричного: RSA, DSA, Диффи — Хеллмана
Задачи шифрования, шли нога в ногу с задачами де-шифрования. Де-шифровать можно, что угодно, весь вопрос только в вычислительных мощностях и времени, которое прийдется на это потратить.
Один из самых показательных примеров этого противостояния можно привести взлом Энигмы, шифровальной машины, которую использовала Фашисткая Германия, для обмена секретной информацией(приказами, сводками, перемещением войск и т.д.).