4 курс / ЗащИнф / лаб-р-защ-1 / Лаб.раб
.1.docЛабораторная работа №1
Шифрование с помощью перестановок
Цель работы: изучение метода шифрования информации с помощью системы перестановок.
Введение
В общем случае пеpестановкой набоpа целых чисел (0,1,...,N-1) называется его пеpеупоpядочение, то есть транспозиция с фиксированным периодом d. Для шифрования сообщение делится на группы символов длины d и к каждой группе применяется одна и та же перестановка. Эта перестановка является ключом. Перестановка может быть задана некоторой последовательностью d целых чисел, где очередное число определяет порядковый номер символа, который должен быть переставлен на место данного символа. Например, для d = 5 в качестве перестановки можно взять 31542. Это означает, что сообщение
s1s2s3s4s5 s6s7s8s9s10...
переходит в
s3s1s5s4s2 s8s6s10s9s7...
Последовательное применение двух или более транспозиций называется составной транспозицией. Если периоды этих транспозиций равны d1,...,ds, то, очевидно, в результате получится транспозиция периода d, где d - наименьшее общее кратное d1,...,ds. Для того чтобы показать, что целое i пеpемещено из позиции i в позицию (i), используется запись
((0), (N-1(1),...,)).
Для оценки криптостойкости этого метода необходимо учитывать , что общее число пеpестановок из (0,1,...,N-1) pавно N!=1*2*...*(N-1)*N , то есть быстро возрастает с увеличением длины ключа
Пример программы:
Представленная далее программа шифрования использует последовательное чтение блоков исходного файла, их шифрование и запись зашифрованных блоков в выходной файл.
Листинг программы
program TRANS; { программа шифрования с помощью перестановки }
uses WinCrt,Windos;
var
i,j,k,m:integer;
f1,f2:file;
numf1,numf2:string;
nr,nw:word;
buf1,buf2:array[1..2048]of char;
const
kluch:array[1..9] of integer=(4,6,3,7,1,8,5,2,9);
{ ключ - набор неповторяющихся чисел от 1 до 9 }
begin
{$I-}
writeln(' программа шифрования файла с помощью перестановок ');
writeln('введите имя шифруемого файла (полный путь)');
readln(numf1);
assign(f1,numf1);
reset(f1,1);
writeln('файл открыт');
writeln('введите имя зашифрованного файла');
readln(numf2);
assign(f2,numf2);
rewrite(f2,1);
writeln('введите ключ – строку из девяти неповторяющихся цифр от 1 до 9');
for i:=1 to 9 do kluch[i]:=(ord(readkey)-48)mod 10;
writeln;writeln('ваш ключ ');
for i:=1 to 9 do write(kluch[i],' ');
writeln;
repeat
blockread(f1,buf1,sizeof(buf1),nr);
for i:=1 to nr div 9 do
begin
for j:=1 to 9 do
begin
k:=9*(i-1)+j;
m:=9*(i-1)+kluch[j];
buf2[k]:=buf1[m];
end;
end;
blockwrite(f2,buf2,nr,nw);
until (nr=0) or (nw<>nr);
close(f1);
close(f2);
writeln('файл зашифрован ') ;
{$I+}
end.
Задание к лабораторной работе
1 Разобрать программу TRANS.PAS которая осуществляет:
- поблочное чтение шифруемого файла
- шифрования блока с помощью перестановки,
задаваемой ключом c d=9;
- поблочную запись шифрованного файла.
2 Зашифровать файл D1.doc c помощью программы
TRANS.PAS и получить зашифрованный файл
D1_S.doc .
Варианты ключей приведены в таблице 1:
Таблица 1
Номер вариента |
Ключ |
1 |
1,5,4,2,7,6,9,3,8 |
2 |
9,5,6,7,4,1,8,3,2 |
3 |
2,6,4,3,7,1,9,5,8 |
4 |
8,4,7,6,2,5,1,3,9 |
5 |
3,7,4,5,2,9,6,7,8 |
6 |
7,3,4,5,6,9,1,2,5 |
7 |
4,8,6,5,9,3,2,1,7 |
8 |
6,2,5,4,8,1,3,9,7 |
9 |
5,9,8,6,4,9,1,7,3 |
10 |
1,5,4,3,9,8,7,2,6 |
3. На основе программы TRANS.PAS сделать программу
дешифрования файла TRANS_DSH.PAS .
4. Расшифровать файл D1_S.doc и получить
расшифрованный файл D1_DSH.doc . Просмотреть
файлы D1.doc и D1_DSH.doc и сравнить их.
5. Предложить собственный ключ шифрования с d=9 и с его
помощью зашифровать и расшифровать самостоятельно
подготовленные файлы
7. Прочитать и разобрать описания устройств, содержащихся в файле
D1.doc :
- назначение устройства
- принцип действия устройства
- характеристики устройств (габариты, потребляемая мощность, способ установки, режимы работы и др.)
Выполнение лабораторной работы
1. Получить задание у преподавателя.
2. Написать и отладить на компьютере программу расшифрования
файла.
-
Получить и представить преподавателю результат выполнения пунктов 1-7.
Содержание отчета
Отчет включает:
1. краткое теоретическое введение
2. содержание задания;
3. листинги программ и. результаты выполнения пунктов 1-7
задания.
Контрольные вопросы
-
Заданы две перестановки с периодами d1 и d2 , применяемые последовательно, причем d1=99. Каково должно быть значение d2 <100 для того, чтобы общий период был наибольшим ?
-
От каких угроз защищают устройства, описанные в файле
D1.doc .?
PAGE 1