Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ОЗІ / Лекц_ї / все / Методы и средства защиты информации, 2003.pdf
Скачиваний:
830
Добавлен:
05.06.2015
Размер:
8.14 Mб
Скачать

Криптографическая система RSA 393

Окончание листинга 18.2

n4[j] := Cardinal(RandSeed); end;

BN_a_mod_b(n4,a,n1); BN_a_exp_b_mod_c(n1,n2,a,n3); BN_a_sub_b(n3,none,n4); BN_a_mod_b(n4,a,n3);

while (i<=50) and (BN_a_cmp_b(n3,nzero)=0) do begin

Inc(i);

if (i>50) then Break;

for j := 0 to BIGNUM_DWORD do begin

n4[j] := Random(2);

n4[j] := Cardinal(RandSeed); end;

BN_a_mod_b(n4,a,n1); BN_a_exp_b_mod_c(n1,n2,a,n3); BN_a_sub_b(n3,none,n4); BN_a_mod_b(n4,a,n3);

end;

RandSeed := oldseed; if (i<=50) then Exit; Result := 1;

end;

end.

Цифровая (электронная) подпись на основе криптосистемы RSA

Асимметричная криптография позволяет принципиально решить задачу подтверждения истинности электронного документа. Эта возможность основана на том, что зашифровать данные, используя секретный ключ d вместо открытого ключа e может только тот, кому секретный ключ известен. При этом существует возможность проверки применения секретного ключа к данным без его раскрытия.

Действительно, пусть нам необходимо заверить блок m открытого текста. Сам открытый текст не является секретным. Зашифруем m используя d вместо e: с = md(mоd n). Отправим сообщение двойной длины вида m||c. Получатель имеет возможность проверить нашу подпись, поскольку после возведения c в степень e должно получаться значение s = m (при истинной подписи) и значение s m в противном случае. Для нашего примера m =(3, 1, 2), c = (27, 1, 8), m || с = (3, 1, 2, 27, 1, 8).

На практике удвоение длины сообщения, очевидно, является нежелательным. Это является одной из причин, по которым вместо c = md(mod n) используются данные вида