
Лабораторная работа № 3 Аутентификация и открытое шифрование в криптосистеме RSA
Цель работы: Освоение принципов построения системы цифровой электронной подписи (ЭЦП) и ознакомление с процедурами вычисления подписи и открытого шифрования в криптосистеме RSA. Получение практических навыков формирования открытого и закрытого ключей в системе RSA.
1. Описание объекта исследования
При формировании электронной подписи под сообщением, отправляемым неким абонентом в той же единой информационной системе, отправитель подписывает послание своим секретным ключом. На самом деле пользователь вычисляет контрольную сумму сообщения, шифрует её секретным ключом и приклеивает шифрограмму к сообщению, однако глагол очень удачно вписался в новое значение и теперь неотделим от понятия ЭЦП.
При создании электронной подписи‚ под документом в нее закладывается достаточно информации, чтобы любой получатель мог удостовериться с помощью открытого ключа отправителя, что только он мог подписать, а, следовательно, и отправить это сообщение. Но при этом в подписи должно быть недостаточно информации, чтобы извлечь из нее сам ключ отправителя – иначе после первого подписания любой перехвативший письмо мог бы подписывать от имени отправителя свои послания, т.е. технология ЭЦП очень напоминает асимметричный шифр, только наоборот.
Инверсия асимметричного алгоритма RSA
для получения схемы цифровой подписи
является, пожалуй, самой простой из всех
алгоритмов ЭЦП. Для формирования
электронной подписи отправитель
выполняет над контрольной суммой
документа те же самые действия, что и
при шифровании, но использует не открытый
ключ получателя, а свой собственный
закрытый ключ, т.е. signi=(
mod
n). Открытый и закрытый
ключи просто меняются местами. На
приемной стороне получатель возводит
подпись в степень открытого ключа е
отправителя и получает (
mod
n) = (
mod
n)=hi.
Если получившееся после возведения в степень значение совпадает с вычисленной независимо на приемной стороне контрольной суммой документа, то проверка считается выполненной, а документ - подписанным. Никто, кроме отправителя, не зная d, не может вычислить такую подпись signi, чтобы возведение ее в степень открытого ключа е дало требуемую контрольную сумму - это та же самая трудноразрешимая задача, что и асимметричном шифровании RSA. Следовательно, снабдить документ такой подписью signi мог только истинный владелец закрытого ключа. Схема ЭЦП приведена на рисунке 1.
Использование секретного ключа для цифровой подписи, т.е. раскрытие некоторой информации о нем не приносит ему ущерба. Даже перехватив большое количество подписанных сообщений, злоумышленник не сможет с их помощью вычислить d за полиномиальное время, а применяемой на сегодняшний день длины ключа хватит на несколько десятков лет стойкости.
В
такой простой схеме ЭЦП есть на самом
деле другая потенциальная уязвимость
– если злоумышленник активно переписывается
с атакуемым абонентом, то умелым
сочетанием шифрования и подписей со
стороны абонента он сможет читать
сообщения, адресованные атакуемым
абонентам всем своим корреспондентам.
Например, добившись под каким-либо
предлогом подписания абонентом
нескольких байт абракадабры и, он сможет
прочесть одно послание этому абоненту.
Произойдет это, если злоумышленник
поместил в эту кажущуюся бессмысленной
последовательность байт перехваченный
ключ сеанса, зашифрованный открытым
ключом: u = (
mod
n). Тогда, будучи
подписанной, (ud
mod n)
представляет собой секретный ключ
блочного шифра перехваченного послания
в открытом виде: (ud
mod n)=
(
mod
n)=ki.
Свободный доступ
Рисунок – ЭЦП RSA
Частное решение этой проблемы – никогда не подписывать, то, чего не создавал сам. Общее – принять за правило подписывать только контрольную сумму интересующего сообщения, даже если все оно настолько мало, что поместиться в один блок преобразования RSA. При этом для подобных целей повсеместно используются только криптостойкие (необратимые) контрольные суммы – хэш-функции. Они не дают злоумышленнику возможности сформировать документ так, чтобы его контрольная сумма совпала с заранее желаемым значением (u), а, следовательно, абонент всегда будет подписывать уникальный битовый вектор, снимая возможность описанной атаки.