Открытое шифрование
Асимметричный криптоалгоритм - алгоритм, в котором для шифрования сообщения используется один ("открытый") ключ, известный всем желающим, а для расшифровки - другой ("закрытый"), существующий только у получателя. Оба ключа связаны между собой. Такой алгоритм реализует возможность построения протоколов, решающих задачи взаимодействия сторон, которые не доверяют друг другу. Это связано с тем, что в двухключевых шифрах секретный ключ, вырабатываемый пользователем, остаётся известным только ему. Подписать документ может только владелец секретного ключа, а проверить подписанный документ с помощью открытого ключа может любой желающий. Способ открытого шифрования Эль-Гамаля включает в себя составной частью систему открытого распределения ключей Диффи-Хеллмана. Каждый пользователь выбирает секретный ключ x, вычисляет свой открытый ключ и помещает его в заверенный справочник. Шифрование сообщения T осуществляется с помощью следующего алгоритма:
Расшифрование сообщения получателем происходит следующим образом:
Для асимметричного алгоритма RSA первый этап - создание пары ключей: открытого и закрытого, - и передача открытого ключа:
Шифрование производится следующим способом. Отправитель разбивает свое сообщение на блоки и вычисляет выражения . Множество блоков ci и есть зашифрованное сообщение. Для того, чтобы прочесть сообщение достаточно возвести его в степень d по модулю n: . Операции возведения в степень больших чисел трудоемки для современных процессоров, даже если они производятся по оптимизированным по времени алгоритмам. Поэтому обычно весь текст сообщения кодируется обычным блочным шифром (намного более быстрым), но с использованием сеансового ключа. А сам сеансовый ключ шифруется асимметричным алгоритмом с помощью открытого ключа получателя и помещается в начало файла.
|