Асимметричные алгоритмы
Асимметричные алгоритмы
Асимметричная криптография, также известная как криптография с открытыми ключами, использует класс алгоритмов, в которых применяется пара ключей: открытый ключ и секретный (личный) ключ, известный только его владельцу. В отличие от секретного ключа, который должен сохраняться в тайне, открытый ключ может быть общедоступным, не подвергая опасности систему защиты. Открытый и секретный ключи генерируются одновременно, и данные, зашифрованные одним ключом, могут быть расшифрованы при помощи другого ключа. То есть отправитель может зашифровать сообщение, используя открытый ключ получателя, и только получатель - владелец соответствующего секретного ключа - может расшифровать это сообщение.
Асимметричные системы имеют ряд преимуществ перед симметричными системами. В асимметричных системах решена сложная проблема распределения ключей между пользователями, так как каждый пользователь может сгенерировать свою пару ключей, а открытые ключи свободно публикуются и распространяются. Благодаря тому, что в асимметричных системах секретный ключ известен только его владельцу, возможно взаимодействие сторон, не знающих друг друга. Среди асимметричных алгоритмов наиболее известными являются RSA и алгоритм Эль-Гамаля [215].
Криптография с открытыми ключами в чистом виде обычно не применяется, так как реализация асимметричных алгоритмов требует больших затрат процессорного времени. Тем не менее преимуществами криптографии с открытыми ключами пользуются при формировании и проверке цифровой подписи, а также для решения проблемы распределения ключей. Секретный ключ применяется для подписания данных, а открытый ключ - для их проверки. Единственно известный способ получить корректную подпись - использовать секретный ключ. Кроме того, для каждого сообщения формируется уникальная подпись. В целях повышения производительности подписывается не все сообщение, а его хэш-код [2]. Вообще, собственно цифровая подпись сообщения - это хэш-код сообщения, зашифрованный секретным ключом, он пересылается вместе с цифровым объектом и удостоверяет целостность самого объекта и подлинность его отправителя.
Для выработки цифровой подписи пользователь генерирует открытый и секретный ключи. Затем секретный ключ и цифровой объект (документ) используются как входная информация для функции генерации цифровой подписи. После того как другой пользователь получает цифровой объект, он использует сам объект, связанную с ним цифровую подпись и открытый ключ для верификации (проверки) подписи. Верификация цифровой подписи сообщения заключается в вычислении значения хэш-кода полученного сообщения и его сравнении со значением хэш-кода в подписи, расшифрованной открытым ключом отправителя. Если значения вычисленного получателем и сохраненного в подписи хэш-кода совпадают, то считается, что подпись под документом верна, а сам документ - подлинный [37]. Цифровая подпись обеспечивает надежную защиту документа от подлога и случайных модификаций и позволяет придавать юридическую силу электронным документам и сообщениям.
В схемах цифровой подписи применяются три основных алгоритма: RSA, алгоритм цифровой подписи DSA (Digital Signature Algorithm) и его вариант с использованием эллиптических кривых - EСDSA (Elliptic Curve Digital Signature Algorithm).