Теоретическое введение. Шифрование методом Вернама (метод одноразовых блокнотов).
Шифрование методом Вернама (метод одноразовых блокнотов). Конкретная версия этого шифра, предложена в 1926 г. Гильбертом Вернамом. Старинный телетайп фирмы AT&T со считывающим устройством Вернама и оборудованием для шифрования использовался корпусом связи армии США. Каждая буква исходного текста в алфавите, расширенном некоторыми дополнительными знаками, сначала переводилась с использованием телеграфного кода Бодо в пяти-битовый блок(b0, b1..b4). К исходному тексту Бодо добавлялся (по модулю 2) ключ k =(k 0, k 1,..., k к-1) записанный на бумажной ленте. В качестве информации, подлежащей шифрованию и дешифрованию, будут рассматриваться тексты, построенные на некотором алфавите. Алфавит - конечное множество используемых для кодирования информации знаков. Текст - упорядоченный набор из элементов алфавита. В качестве примеров алфавитов, используемых в современных ИС можно привести следующие: алфавит Z33 – 32 буквы русского алфавита и пробел; алфавит Z256 – символы, входящие в стандартные коды ASCII и КОИ–8; бинарный алфавит – Z2 = {0,1}; восьмеричный алфавит или шестнадцатеричный алфавит; Шифрование – преобразовательный процесс: исходный текст, который носит также название открытого текста, заменяется шифрованным текстом. Дешифрование – обратный шифрованию процесс. На основе ключа шифрованный текст преобразуется в исходный. Ключ – информация, необходимая для беспрепятственного шифрования и де шифрования текстов.
Порядок выполнения работы Шифрование исходного текста, предварительно преобразованного в последовательность двоичных символов х, осуществляется путем сложения по модулю 2 символов х с последовательностью двоичных ключей k. Получим символы шифртекста: y = x Å k Расшифровка состоит в сложении по модулю 2 символов y шифр текста с той же последовательностью ключей k:
y Å k = x Å k Å k = x
При этом последовательности ключей, использованные при шифровании и расшифровании, компенсируют друг друга (при сложении по модулю 2), и в результате восстанавливаются символы х исходного текста. При моделировании, преобразование исходного текста в последовательность двоичных символов можно осуществить следующим образом: C:= SizeOf(char)*8; for i:= 1 to n*C do begin {Вычисление 2^(i mod C)} A:= integer(exp((i mod C)*ln (2))); m[i]:= (str[i div A] and A) shr (i-1); end; где n – количество элементов в тексте, m – массив двоичных символов, 8–количество бит в байте, str – строка содержащая текст, A, C – вспомогательные переменные. Кодер может иметь следующий вид: i:=1; j:=1; while i<>length(m)+1 do begin m[i]:= m[i] xor k[j]; if j <=M then inc(j) else j:= 0; inc(i); end; где k – последовательность ключей, M – длина последовательности ключей Декодер полностью совпадает с кодером. При разработке системы Вернам проверял с помощью закольцованных лент, установленных на передатчике и приемнике для того, чтобы использовалась одна и та же последовательность ключей. Метод Вернама не зависит от длины последовательности ключей и позволяет использовать случайную последовательность ключей. Однако при реализации метода Вернама возникают серьезные проблемы, связанные с необходимостью доставки получателю такой же последовательности ключей, как и у отправителя, либо с необходимостью безопасного хранения идентичных последовательностей ключей у отправителя и получателя. Последовательность ключей можно реализовать как последовательность псевдослучайных чисел. В этом случае необходимо синхронизировать только параметры псевдослучайного генератора. Примером такого датчика может быть аддитивный: yn+1 = (yn + yn-1) mod m, где mod- остаток от деления; Задание на лабораторную работу 1. Используя алгоритм шифрования данных в методом Вернама, написать программу шифрования и дешифрования произвольного набора символов на любом языке программирования. Лабораторная работа №4 Шифрование данных в асимметричной криптосистеме RSA Цель работы: изучить методы шифрования данных в криптосистеме RSA и освоить их практическое применение.
|