110 likes | 317 Views
Цифровая подпись и RSA. Схема применения цифровой подписи. В верхнем левом уrлу этой диаrраммы мы берем исходное сообщение и создаем 160-битовый хеш (дайджест сообщения) при помощи алrоритма SНAl .
E N D
Схема применения цифровой подписи • В верхнем левом уrлу этой диаrраммы мы берем исходное сообщение и создаем 160-битовый хеш (дайджест сообщения) при помощи алrоритмаSНAl. • Затем дайджест сообщения шифруется при помощи ceкpeтнoгo ключа, известноro только eгoвладельцу, то есть отправителю сообщения. • Любой желающий может расшифровать хеш, пользуясь общедоступным открытым ключом. • Результат этогoшифрования и называют цифровой подписью. • В правом верхнем уrлудиаrраммы подписанное сообщение формируется объединением исходноro сообщения, ero цифровой подписи и открытоroключа, соответствующеrо тому секретному ключу, которым шифровался хеш.
Другой вариант • Получатель хочет убедиться что сообщение отправлено отправителем и не было кем-то изменено по пути. • В левом верхнем уrлу диаrpаммы полученное сообщение разбивается на три компоненты на исходное сообщение, открытый ключ и цифровую подпись. • Для тoгo чтобы сравнить шифрованный хеш с сообщением, eгo необходимо заново вычислить. • Если хеш совпадает с расшифрованным хешем, то сообщение не было изменено с момента наложения подписи. • Хеш зашифрован секретным ключом отправителя, и для расшифровки мы можем использовать прилаrающийся открытый ключ. • Если ключ вeрифицирован успешно, он используется для дешифрования цифровой подписи и получения хеша. , который теперь можно сравнить с хешем, который вычислен заново.
Стандарт DSS (Digital Signature Standard Стандарт цифровой подписи), определенный документом FIPS PUB 18621, предусматривает три алrоритма подписи: DSA, RSA (как указано в стандарте ANSI Х9.31) и Elliptic Curve DSA (DSA с эллиптическими кривыми). Поскольку алrоритмElliptic Curve DSA не поддержан в настоящее время в библиотеке классов .NET Security, мы рассмотрим здесь только DSA и RSA.
RSA в качестве алгоритма цифровой подписи • Рассмотри алгоритм RSA для применения цифровой подписи. Собственно roворя, это просто друrая сторона монеты: в любом шифровании открытым ключом с последующим дешифрованием секретным ключом достаточно перевернуть все вверх ноrами, и получится цифровая подпись, для этоrо достаточно шифровать секретным ключом и дешифровать ключом открытым. • Не обязательно шифрировать все сообщение целиком, достаточно сгенерировать хеш исходного сообщения и зашифровать секретным ключом. • Любой может расшифровать хеш и верифицировать его. • Если дешифрованный хеш совпадет с вновь вычисленным xeшем, то значит сообщение было отправлено именно владельцем секретного ключа и не было изменено.
Пример пpoгpaммыс использованием подписи RSA • Пример проrраммы RSASignature показывает, как создать и верифицировать для сообщения подпись RSA. • Создаем цифровую подпись щелчком на кнопке Create Signature, а затем, не меняя исходноrо сообщения, проверяем подпись щелчком на кнопке Verify Signature. Выйдет сообщение о её подлинности. • Если же мы изменим предварительно сообщение, то выйдет сообщение о недействительности подписи. • Пример сделан для удобства, чтобы показать все аспекты работы с цифровой подписью в одном компактном приложении.
Метод buttonSignClick(eгoкод приведен на след слайде) накладывает подпись на сообщение. Код, относящийся к пользовательскому интерфейсу, мы иrнорируем, поэтому можем здесь сосредоточиться на криптоrрафическихаспектах проrраммы.
Метод buttonVerifyClick, который верифицирует цифровую подпись сообщения. (eгo код приведен на след слайде)
Для передачи информации между этими двумя методами мы используем два поля. Первое из них уже упоминавшийся объект RSAParameters. Этот объект инкапсулирует информацию открытоrо ключа. Второе поле байтовый массив, содержащий цифровую подпись сообщения, creнерированную первым методом.