Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Министерство образования и науки Украины
Севастопольский национальный технический университет
Кафедра КИБЕРЕНЕТИКИ И ВЫЧИСЛИТЕЛЬНОЙ ТЕХНИКИ |
ОТЧЕТ
по Лабораторной работе № 3
На тему :
«Изучение алгоритмов RSA - генерации секретного и открытого ключа»
По дисциплине: “ Основы защиты информации ”
Выполнил: студент группы М-52д Мирошниченко С.В. Принял: |
Севастополь
5
Цель работы:
Освоить механизм шифрования и дешифрования данных в криптографической системе с открытыми ключами RSA.
Теоретические сведения.
RSA-система с открытым ключом.
Криптографические системы с открытым ключом позволят создать в 90-х годах новую защищенную систему телефонной связи с числом абонентов до 3 миллионов. Компании АТ&Т, Motorola, RCA производят аппараты, допускающие совместную работу; компания GTE разрабатывает систему управления ключами. Поставки первых 75000 телефонов начались в 1987 году. Разработана специализированная интегральная схема IDS-P2 (МВ8763), реализующая алгоритм DH и вычисляющая секретный ключ за 0,9 с. Программная реализация алгоритма RSA осуществлена компанией RSA Data Security, аппаратная реализация того же алгоритма и специализированная интегральная схема выполнены фирмой Sandia. Фирма Cylink выпустила специализированную интегральную схему CY1024, реализующую алгоритм RSA и обеспечивающую скорость шифрования 1000 бит/с.
Алгоритм шифрования и дешифрования RSA.
Выберем два очень больших простых p и q.
Определим n=p*q.
Выберем большое случайное число, которое назовем d. Это число должно быть взаимно простым с результатом (p-1)*(q-1).
Определим такое число е, для которого является истинным соотношение (e*d) mod((p-1)*(q-1))=1.
Назовем открытым ключом числа e и n, а секретным ключом -числа d и n.
После произведенного выбора открытого и секретного ключей по вышеизложенному алгоритму для шифрования данных необходимо выполнить следующие действия:
разбить шифруемый текст на блоки, каждый из которых может быть представлен в виде числа М(i)= 0,1,...,n-1;
зашифровать текст, рассматриваемый как последовательность чисел M(i) по формуле:
C(i) = (M(i)e)*mod n;
Чтобы расшифровать эти данные, используется секретный ключ {d,n} и выполняются следующие вычисления:
M(i) = (C(i)d) *mod n.
В результате получают исходный текст M(i).
Вывод:
В ходе выполнения лабораторной работы ознакомился с механизмом шифрования и дешифрования данных в криптографической системе с открытыми ключами RSA. Написана программа шифрующая/дешифрующая данные по алгоритму RSA.
ТЕКСТ ПРОГРАММЫ.
var
Form1: TForm1;
flof:boolean;
alf1:string;
p,q,n,m,d,e:longword;
f1,f3,f2:TextFile;
s:real;
mi:char;
mc:byte;
implementation
{$R *.dfm}
procedure TForm1.N1Click(Sender: TObject);
begin
alf1:=('.,абвгдежзийклмнопрстуфхцчшщьъыэюя АБВГДЕЖЗИКЛМНОПРСТУФХЦЧШЩЬЪЫЭЮЯ');
flof:=false;
if OpenDialog1.Execute then
begin
flof:=true;
end; end;
procedure TForm1.N3Click(Sender: TObject);
begin
if (P_par.Text>'0')and(Q_par.Text>'0')then
begin
if flof then
begin
GetKey;
Code;
end
else ShowMessage('Файл не выбран');
end
else ShowMessage('Заданы не все параметры');
end;
procedure TForm1.GetKey;
label l;
var i:integer;
begin
p:=StrToInt(P_par.Text);
q:=StrToInt(Q_par.Text);
n:=p*q;
m:=(p-1)*(q-1);
randomize();
l: d:=random(50)+1;
for i:=2 to d do if(d mod i = 0)and(M mod i=0) then goto l;
e:=1;
while (((e*d)mod(m)<>1)) or(e=d)do inc(e);
D_par.Text:=IntToStr(d);
N_par.Text:=IntToStr(n);
N1_par.Text:=IntToStr(n);
E_par.Text:=IntToStr(e);
end;
procedure TForm1.Code;
var j,k:integer;
mj,s:Int64;
begin
assignFile(f1,OpenDialog1.FileName);
assignFile(f2,'c:\code.cod');
rewrite(f2);
reset(f1);
while not eof(f1) do
begin
read(f1,mi);
k:=1;
while mi<>alf1[k] do inc(k);
mj:=k;s:=k;
for j:=1 to e-1 do begin s:=s*mj;s:=s mod(n);end;
mc:=s;
write(f2,alf1[mc]);
end;
Closefile(f2);
CloseFile(f1);
end;
procedure TForm1.N5Click(Sender: TObject);
begin
if (D_par.Text>'0')and(N_par.Text>'0')then
begin
if flof then
begin
d:=StrToInt(D_par.Text);
n:=StrToInt(N_par.Text);
Decode;
end
else ShowMessage('Error read file !');
end
else ShowMessage('Параметры заданы неверно !');
end;
procedure TForm1.Decode;
var j,k,mr:integer;
s:Int64;
c,mj:char;
begin
assignFile(f2,OpenDialog1.FileName);
assignFile(f3,'c:\decode.txt');
rewrite(f3);
reset(f2);
while not eof(f2) do
begin
read(f2,mj);
k:=1;
while mj<>alf1[k] do inc(k);
s:=k;mr:=k;
for j:=1 to d-1 do begin s:=s*mr;s:=s mod(n);end;
c:=alf1[s];
write(f3,c);
end;
Closefile(f3);
Closefile(f2);
end;
end.