Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторные ИБ.docx
Скачиваний:
50
Добавлен:
21.03.2016
Размер:
355.52 Кб
Скачать

Задание на лабораторную работу

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

Лабораторная работа №3

Шифрование с использованием методов одноразовых блокнотов

Цель работы: изучить методы шифрования данных заменой и освоить их практическое применение.

Теоретическое введение

Шифрование методом Вернама (метод одноразовых блокнотов).

Конкретная версия этого шифра, предложена в 1926г. Гильбертом Вернамом. Старинный телетайп фирмы AT&T со считывающим устройством Вернама и оборудованием для шифрования использовался корпусом связи армии США. Каждая буква исходного текста в алфавите, расширенном некоторыми дополнительными знаками, сначала переводилась с использованием телеграфного кода Бодо в пяти-битовый блок(b­­0, b­­1 ..b­­4). К исходному тексту Бодо добавлялся (по модулю 2) ключ k=(k0 ,k1 ,...,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- остаток от деления;