4 курс / ЗащИнф / лаб-р-защ-3 / Лаб. раб
.3.doc
Лабораторная работа №3
Блочное шифрование
Цель работы: изучение методов блочного шифрования
. При блочном шифровании данные разбиваются на части равной длины - блоки, которые и являются входными данными для процедуры шифрования. Затем осуществляется преобразование этих блоков с использованием ключа.
Современные блочные шифры состоят из композиции простых преобразований. При использовании подстановок информация проходит через специальные блоки (S-блоки) , в которых значение группы битов заменяется на другую группу битов.
Блочные шифры могут работать в нескольких режимах.
В режиме электронной кодовой книги исходный текст разбивается на блоки, равные размеру блока шифра. Каждый блок шифруют независимо от других с использованием одного ключа шифрования. Недостаток этого режима заключается в том, что одинаковые блоки открытого текста преобразуются в одинаковые блоки шифротекста, что может дать определенную информацию о содержании сообщения. Основным достоинством этого режима является простота реализации.
В режиме сцепления блоков шифротекста ликвидируется недостатки предыдущего режима , так как каждый последующий блок зависит от всех предыдущих.
В этом режиме исходный текст также разбивается на блоки, которые обрабатываются следующим образом:
- первый блок складывается по модулю 2 с некоторым значением (начальным вектором ), который является ключом.
-
полученный блок подрергается шифрованию и служит начальным вектором для следующего блока исходного текста.
Наиболее известные примеры блочного шифрования это российский (ГОСТ 28147-89) и американский(DES) стандарты шифрования.
Одним из примеров блочного шифрования является шифр с автоключом. Шифр с автоключом - это шифр типа Виженера, в котором или само сообщение или результирующая криптограмма используются в качестве "ключа". Шифрование начинается с помощью "первичного ключа" (который является настоящим ключом) и продолжается с помощью сообщения или криптограммы, смещенной на длину первичного ключа. Размер блока может быть выбран кратным длине первичного ключа. Таким образом, первый блок шифруется с помощью первичного ключа, а последующие - с использованием в качестве ключа предыдущего блока.
Пример программы:
Представленная далее программа шифрования осуществляет шифрование файла с помощью автоключа , причем первый блок шифруется с помощью подстановки , а все последующие используют в качестве ключа предыдущий блок.
Листинг программы
program avto;
uses WinCrt,Windos;
var
i,j,k,m,nb:integer;
f1,f2:file;
numf1,numf2:string;
nr,nw:word; {county}
buf1,buf2,buf3:array[1..100]of shortint;
bf:char;
const
kluch:array[0..9] of integer=(5,8,12,54,3,9,77,44,32,88);
begin
{$I-}
writeln('программа шифрования по автоключу');
writeln('введите имя шифруемого файла');
readln(numf1);
assign(f1,numf1);
reset(f1,1);
writeln('файл открыт');
writeln('введите имя зашифрованного файла');
readln(numf2);
assign(f2,numf2);
rewrite(f2,1);
writeln('введите ключ – строку из десяти символов');
for i:=0 to 9 do kluch[i]:=ord(readkey);
writeln;writeln('ваш ключ ');
for i:=0 to 9 do write(chr(kluch[i]),' ');
writeln;
nb:=1;
repeat
blockread(f1,buf1,sizeof(buf1),nr);
{writeln('количество блоков в исходном файле',nr);}
for i:=1 to nr do
begin
if nb=1 then begin
buf2[i]:=buf1[i] xor kluch[i mod 10];
end;
if nb>1 then begin
buf2[i]:=buf1[i] xor buf3[i];
end;
buf3[i]:=buf1[i];
end;
blockwrite(f2,buf2,nr,nw);
{writeln('количество блоков в зашифрованном файле',nw);}
nb:=nb+1;
until (nr=0) or (nw<>nr);
close(f1);
close(f2);
writeln(' файл зашифрован ');
{$I+}
end.
Задание к лабораторной работе
1 Разобрать программу AVTOKEY.pas , которая осуществляет
шифрование файла с помощью автоключа
с помощью первичного ключа с d=10 .
2 С помощью программы AVTOKEY.pas зашифровать файл
D3.doc и получить файл D3_s.doc
3 На основе программы AVTOKEY.pas сделать программу
дешифрования AVTOKEY_DSH.pas
4 Расшифровать файл D3_S.doc и получить дешифрованный файл D3_DSH.doc . Сравнить файлы D3.doc и D3_DSH.doc .
5 Предложить собственный ключ и проверить ее
шифровкой и дешифровкой файлов.
Номер вариента |
Ключ |
1 |
3r8 tl34ri |
2 |
934423m35n |
3 |
U98o43vu45 |
4 |
kvmdkf4r5v |
5 |
mcgife0tr9 |
6 |
ale90243fd |
7 |
Dmveir5834 |
8 |
03tnfdvwt7 |
9 |
Mcxovi8w39 |
10 |
v90bzrtvnd |
7 Прочитать и разобрать описания устройств, содержащихся в файле D3.doc :
-
назначение устройства
-
принцип действия устройства
-
характеристики устройств (габариты, потребляемая мощность, способ установки, режимы работы и др.)
Выполнение лабораторной работы
1. Получить задание у преподавателя.
2. Написать и отладить на компьютере программу расшифрования
файла.
-
Получить и представить преподавателю результат выполнения пунктов 1-7.
Содержание отчета
Отчет включает:
1)краткое теоретическое введение
2) содержание задания;
3) листинги программ и. результаты выполнения пунктов 1-7
задания.
Контрольные вопросы
1. Для шифрования очередного блока (кроме первого) используется в качестве ключа предыдущий блок . Для шифрования этот блок может быть использован в уже зашифрованном или еще не зашифрованном виде . Как это производится в программе AUTO_KEY.PAS ?
-
Каковы принципы действия устройств , описанных в файле D3.doc.?