· дату подписи;
· срок окончания действия ключа данной подписи;
· информацию о лице, подписавшем файл (Ф.И.О., должность, краткое наименование фирмы идентификатор подписавшего (имя открытого ключа);
· собственно цифровую подпись.
Важно отметить, что, с точки зрения конечного пользователя, процесс формирования и проверки цифровой подписи отличается от процесса криптографического закрытия передаваемых данных следующими особенностями.
При формировании цифровой подписи используется закрытый ключ отправителя, тогда как при зашифровывании применяется открытый ключ получателя. При проверке цифровой подписи используется открытый ключ отправителя, а при расшифровывании - закрытый ключ получателя. Проверить сформированную подпись может любое лицо, так как ключ проверки подписи является открытым.
Аналогично асимметричному шифрованию, необходимо обеспечить невозможность подмены открытого ключа, используемого для проверки ЭЦП. Если предположить, что злоумышленник п имеет доступ к открытым ключам, которые хранит на своем компьютере абонент В, в том числе к открытому ключу КА абонента А, то он может выполнить следующие действия:
· прочитать из файла, в котором содержится открытый ключ КА, идентификационную информацию об абоненте А;
· сгенерировать собственную пару ключей kn и Кп, записав в них идентификационную информацию абонента А;
· подменить хранящийся у абонента В открытый ключ КA своим открытым ключом Кn, но содержащим идентификационную информацию абонента А.
После этого злоумышленник п может посылать документы абоненту В, подписанные своим секретным ключом k. При проверке подписи этих документов абонент В будет считать, что документы подписаны абонентом А и их ЭЦП верна, то есть они не были модифицированы кем-либо. До выяснения отношений непосредственно с абонентом А у абонента В может не появиться сомнений в полученных документах.
Алгоритм цифровой подписи DSA. Алгоритм цифровой подписи DSA (Digital Signature Algorithm) был предложен в 1991 году Национальным институтом стандартов и технологии США (National Institute of Standards and Technology - NIST) и стал стандартом США в 1993 году. Алгоритм DSA является развитием алгоритмов цифровой подписи Эль Гамаля и К. Шнорра [13, 11]. Ниже приводятся процедуры генерации ключей, генерации подписи и проверки подписи в алгоритме DSA
Генерация ключей DSA. Отправитель и получатель электронного документа
используют при вычислениях большие целые числами р - простые числа, длиной L
битов каждое (512
L
1024); q - простое число длиной 160 бит (делитель числа (р -
1).
Числа g,p, q являются открытыми и могут быть общими для всех пользователей сети.
Отправитель выбирает случайное целое число х, 1 < х < q. Число х является секретным ключом отправителя для формирования электронной цифровой подписи.
Затем отправитель вычисляет значение:
у = gx mod p.
Число y является открытым ключом для проверки подписи отправителя. Число у передается всем получателям документов.
Генерация подписи DSA. Этот алгоритм предусматривает использование односторонней функции хэширования h(). В стандарте определен алгоритм безопасного хэширования SHA-1. Для того чтобы подписать сообщение М, участник А выполняет следующие шаги:
· Выбирает случайное целое k в интервале [1, q - 1].
· Вычисляет r = (gk mod р) mod q.
· Вычисляет k 1 mod q.
· Вычисляет s = k 1 h{M) + xr} mod q, где h есть алгоритм хэширования SHA-1.
· Если s = 0 тогда перейти к шагу 1. (Если s = 0, тогда s'mod=q не су шествует; s требуется на шаге 2 процедуры проверки подписи.)
· Подпись для сообщения М есть пара целых чисел (r, s).
Проверка подписи DSA. Для того чтобы проверить подпись (r, s) сообщения М от участника А, участник В делает следующие шаги:
· Получает подлинную копию открытого ключа у участника А.
· Вычисляет
= s 1 mod q и хэш-значение h{M).
· Вычисляет значения u1 = h(M)
mod q и и2 = (r
) mod q.
· Используя открытый ключ у, вычисляет значениеv = (guiyu modр)modq.
· Признает подпись (r, s) под документом М подлинной, если v = r.
Поскольку r и s являются целыми числами, причем каждое меньше q, подписи DSA имеют длину 320 бит. Безопасность алгоритма цифровой подписи DSА базируется на трудностях задачи дискретного логарифмирования.
Стандарт цифровой подписи ГОСТ Р 34.10-94. Первый Российский стандарт цифровой подписи обозначается как ГОСТ Р 34.10-94 [18]. Алгоритм цифровой подписи, определяемый этим стандартом, концептуально близок к алгоритму DSA. В нем используются следующие параметры:
· р - большое простое число длиной от 509 до 512 бит либо от 1020 до 1024 бит;
· q - простой сомножитель числа (р - 1), имеющий длину 254-256 бит
· a - любое число, меньшее (р - 1), причем такое, что aq mod р = 1;
· х - некоторое число, меньшее q\
· у = ax mod р.
Кроме того, этот алгоритм использует однонаправленную хэш-функцию Н(х). Стандарт ГОСТ Р 34.11-94 определяет хэш-функцию, основанную на использовании стандартного симметричного алгоритма ГОСТ 28147-89.
Первые три параметра - р, q и а - являются открытыми и могут быть общими для всех пользователей сети. Число х является секретным ключом. Число у является открытым ключом.
Чтобы подписать некоторое сообщение т, а затем проверить подпись, выполняются следующие шаги:
· Пользователь А генерирует случайное число k, причем k<q.
· Пользователь А вычисляет значения r = (ак mod р) mod q, s =
(x
+ k(H(m))) mod q.
Если H(m) mod q = 0, то значение H(m) mod q принимают равным единице. Если r = 0, то выбирают другое значение k и начинают снова.
Цифровая подпись представляет собой два числа: r mod 2256 и s mod 2256.
Пользователь А отправляет эти числа пользователю В.
Пользователь В проверяет полученную подпись, вычисляя:
v = Н(т)n mod q, z = (s
) mod q, z = (q - r)
)modq,= ((az1
yz2) mod p) mod q.
Если u = r, то подпись считается верной.
Различие между этим алгоритмом и алгоритмом DSA заключается в том, что в
DSA:
s = (k (х
r + (H(m)))) mod q,
что приводит к другому уравнению верификации.
Следует также отметить, что в отечественном стандарте ЭЦП параметр q имеет длину 256 бит. Западных криптографов вполне устраивает q длиной примерно 160 бит. Различие в значениях параметра q является отражением стремления разработчиков отечественного стандарта к получению более безопасной подписи. Этот стандарт вступил в действие с начала 1995 года.
Стандарт цифровой подписи ГОСТ Р 34.10-2001 был принят в 2001 году [19]. Этот стандарт разработан взамен первого стандарта цифровой подписи ГОСТ Р 34.10-94. Необходимость разработки стандарта ГОСТ Р 34.102001 вызвана потребностью в повышении стойкости электронной цифровой подписи к несанкционированным изменениям. Стойкость ЭЦП основывается на сложности вычисления дискретного логарифма в группе точек эллиптической кривой, а также на стойкости используемой хэш-функции по ГОСТ Р 34.11.
Принципиальное отличие нового стандарта от предыдущего ГОСТ Р 34.10-94 состоит в том, что все вычисления при генерации и проверке ЭЦП в новом алгоритме производятся в группе точек эллиптической кривой, определенной над конечным полем Fp.
Принадлежность точки (пары чисел х и у) к данной группе определяется
следующим соотношением;
у
х + ах + b(mod р),
где модуль системы р является простым числом, большим 3, а а и b -
константы, удовлетворяющие следующим соотношениям; a, b
Fp и 4а+27b не сравнимо с нулем по
модулю р.
При этом следует отметить, что принципы вычислений по данному алгоритму схожи с предшествующим Российским стандартом ЭЦП: генерируется случайное число х, с его помощью вычисляется r-часть ЭЦП, затем вычисляется s-часть ЭЦП из r-части, х, значения секретного ключа и хэш-значения подписываемых данных. При проверке же подписи аналогичным вышеописанному образом проверяется соответствие определенным соотношениям r, s, открытого ключа и хэш-значения информации, подпись которой проверяется. Подпись считается неверной, если соотношения не соблюдаются.
Внедрение цифровой подписи на базе стандарта ГОСТ Р 34.10-2001 повышает, по сравнению с предшествующей схемой цифровой подписи, уровень защищенности передаваемых сообщений от подделок и искажений. Этот стандарт рекомендуется использовать в новых системах обработки информации различного назначения, а также при модернизации действующих систем.
Алгоритм цифровой подписи ECDSA. В алгоритме ЭЦП ECDSA (Elliptic Curve Digital Signature Algorithm) определение параметров системы и генерация ключей аналогичны алгоритму асимметричного шифрования ECES.
Генерация ЭЦП (пользователь А подписывает сообщение М):
· вычисляется хэш собщения Н(М);
· выбирается случайное целое число k, взаимно простое с п (то есть не имеющее других общих с п делителей, кроме 1; поскольку п является простым числом по определению, данное условие выполняется автоматически), 1 < k < п - 1;
· вычисляется точка (х ,у ) = kP и r = х mod п. В случае если r = 0, повторяется выбор k;
· вычисляется s = k (Н(М) + rd) mod n;
· цифровой подписью сообщения М является пара чисел (r, s).
Проверка ЭЦП( пользователь В проверяет ЭЦП пользователя А под сообщением М):
· если r = 0, то полученная ЭЦП неверна;
· вычисляется хэш собщения H(М);
· вычисляются и = s H(М) mod n и v = s r mod п;
· вычисляется точка (х ,у) = иР+ vQ,
· вычисляется r' = х mod n;
· ЭЦП считается верной, если r' = r.
Выбор криптографического алгоритма и режима его использования зависит от особенностей передаваемой информации (ее ценности, объема, способа представления, необходимой скорости передачи и т.д.), а так же возможностей владельцев по защите своей информации. Все это существенным образом влияет на выбор криптографического алгоритма и организацию защиты данных. Анализ литературных источников показывает, что каждый из наиболее распространенных типов симметричных и ассиметричных алгоритмов шифрования имеет свои преимущества и недостатки. Поэтому при выборе того или иного алгоритма шифрования или их сочетания, необходимо учитывать в какой ситуации, какой из алгоритмов работает лучше. При этом при выборе того или иного алгоритма шифрования могут учитываться такие показатели как:
· длина ключа;
· затраты на подбор;
· производительность;
· совместимость.
Результаты проведенной оценки наиболее распространенных симметричных алгоритмов шифрования приведены в таблице 1.
В соответствии с таблицей 2.4 можно сделать вывод о том, что наиболее
стойкими являются такие алгоритмы как: AES, IDEA, Triple DES. Так же данные алгоритмы
позволяют использовать ключи различной длины, в частности наиболее
распространенной длиной является 128 бит, наименьшей 56 обладает DES, а
наибольшей Blowfish - до 448, 256 - AES и ГОСТ 28147-89. При этом, чем длиннее
ключ, тем надежнее защита и тем медленнее будет работать алгоритм. А это
означает, что в том случае если симметричный алгоритм будет использоваться
совместно с ассиметричным, то на первое место выходит именно
производительность, и длина ключа не будет столь критичной. Наибольшее распространение,
а следовательно, и совместимость с другими криптосистемами и алгоритмами
получили: DES, TripleDES или AES. Использование данных алгоритмов позволяет
гарантировать то, что все стороны, имеющие криптографические средства, смогут
использовать эти алгоритмы и расшифровать шифротекст.
Таблица 2.4
Сравнительная характеристика симметричных алгоритмов шифрования
|
Алгоритм |
Длина ключа, бит |
Размер блока, бит |
Затраты на подбор ключа, MIPS |
|
DES |
56 |
64 |
5 102 |
|
Triple DES |
128 (112) |
64 |
1018 |
|
IDEA |
128 |
64 |
1021 |
|
ГОСТ 28147-89 |
256 |
64 |
нет данных |
|
RC5 |
40 и выше |
32 и выше |
103 и выше |
|
Blowfish |
до 448 |
64 |
нет данных |
|
AES |
Наиболее распространенными среди ассиметричных алгоритмов шифрования являются: RSA, алгоритм Диффи-Хеллмана, Эль-Гамаля, на базе эллиптических кривых, сравнительная характеристика которых приведена в таблице 2.5.
Анализ представленных в таблице ассиметричных алгоритмов шифрования
показывает, что данные алгоритмы позволяют использовать для шифрования ключи
различной длины, что позволяет данным алгоритмам обеспечивать примерно
одинаковую стойкость.
Таблица 2.5
Сравнительная характеристика ассиметричных алгоритмов шифрования
|
Алгоритм |
Длина ключа |
Метод взлома (мат. проблема) |
Криптостойкость, MIPS |
|
RSA |
430 760 1024 1620 |
факторизация больших простых чисел |
2,7•1028 для ключа 1300 бит |
|
DH |
|
Основан на предполагаемой сложности проблемы дискретного логарифмирования. Сложность вычисления K=gabmod p по известным p, g, A=ga mod p и B=gb mod p |
время, затрачиваемое на решение этой задачи, сравнимо со временем, затрачиваемым на разложение числа на множители. Для обеспечения безопасности надо брать число p длиной 1024 бита. |
|
El-Gamal |
|
нахождение дискретного логарифма в конечном поле |
при одинаковой длине ключа криптостойкость равная RSA |
|
Эллиптические уравнения ECC |
112 160 192 256 |
решение эллиптических уравнений |
криптостойкость и скорость работы выше, чем у RSA |
Кроме того, большое значение имеет производительность алгоритма, сравнение алгоритмов с открытым ключом показывает, что RSA значительно быстрее, чем ECC который в свою очередь быстрее чем DH. Так же немаловажным значением при использовании алгоритма шифрования является его совместимость, т.е. наличие средств, которые позволяют расшифровывать данные, зашифрованные этим алгоритмом.небезопасен, так как позволяет имитировать подмену подписи, позволяя рядовому пользователю выбрать свои секретный и открытый ключи так, что подписи для двух известных заранее сообщений совпадут. А это открывает простор для различных махинаций с использованием ЭЦП. Но следует отметить, что электронная подпись по стандарту ГОСТ Р34.10-2001 обеспечивает ту же, самую криптостойкость уже при размере модуля в 160 бит, что так же обеспечивает более простую как программную, так и аппаратную реализацию.