Цифровая подпись (сообщения или электронного документа) --- представляет собой конечную цифровую последовательность, зависящую от самого сообщения или документа и от секретного ключа, известного только подписывающему субъекту, предназначенная для установления авторства. Предполагается, что цифровая подпись должна быть легко проверяемой без получения доступа к секретному ключу. При возникновении спорной ситуации, связанной с отказом подписывающего от факта подписи некоторого сообщения либо с попыткой подделки подписи, третья сторона должна иметь возможность разрешить спор. Цифровая подпись позволяет решить следующие три задачи: осуществить аутентификацию источника данных, установить целостность сообщения или электронного документа, обеспечить невозможность отказа от факта подписи конкретного сообщения.
1) электронная цифровая подпись — набор электронных цифровых символов, созданный средствами электронной цифровой подписи и подтверждающий достоверность электронного документа, его принадлежность и неизменность содержания;
2) электронный документ — документ, в котором информация представлена в электронно-цифровой форме и удостоверена посредством электронной цифровой подписи;
3) владелец регистрационного свидетельства — физическое или юридическое лицо, на имя которого выдано регистрационное свидетельство, правомерно владеющее закрытым ключом, соответствующим открытому ключу, указанному в регистрационном свидетельстве;
4) закрытый ключ электронной цифровой подписи — последовательность электронных цифровых символов, известная владельцу регистрационного свидетельства и предназначенная для создания электронной цифровой подписи с использованием средств электронной цифровой подписи;
5) открытый ключ электронной цифровой подписи — последовательность электронных цифровых символов, доступная любому лицу и предназначенная для подтверждения подлинности электронной цифровой подписи в электронном документе;
6) подписывающее лицо — физическое или юридическое лицо, правомерно владеющее закрытым ключом электронной цифровой подписи и обладающее правом на ее использование на электронном документе;
7) регистрационное свидетельство — документ на бумажном носителе или электронный документ, выдаваемый удостоверяющим центром для подтверждения соответствия электронной цифровой подписи требованиям, установленным настоящим Законом;
8) система электронного документооборота — система обмена электронными документами, отношения между участниками которой регулируется настоящим Законом и иными нормативными правовыми актами Республики Казахстан;
9) средства электронной цифровой подписи — совокупность программных и технических средств, используемых для создания и проверки подлинности электронной цифровой подписи;
10) удостоверяющий центр — юридическое лицо, удостоверяющее соответствие открытого ключа электронной цифровой подписи закрытому ключу электронной цифровой подписи, а также подтверждающее достоверность регистрационного свидетельства;
1. Цифровая (электронная) подпись предназначена для обеспечения подтверждения подлинности и авторства документов, обрабатываемых в электронной форме с помощью вычислительной техники.
Цифровая подпись жестко увязывает в одно целое содержание документа и секретный ключ подписывающего и делает невозможным изменение документа без нарушения подлинности данной подписи.
2. Процедура электронной подписи включает в себя два алгоритма: формирования цифровой подписи и проверки подлинности подписи.
Формирование подписи состоит в вычислении по документу, представленному в электронной форме, и секретному параметру(ключу подписывания), имеющемуся лишь у автора подписи, длинной цифровой последовательности, называемой цифровой подписью данного лица под данным документом.
Проверка подписи под документом состоит в осуществлении вычислений над содержимым документа, цифровой подписью под ними, "образцом подписи" лица, его подписавшего, результатом которых является признание или отрицание подлинности подписи данного лица под предъявленным документом.
Образец подписи - длинная цифровая последовательность(не являющаяся секретной),однозначно связанная с секретным ключом подписывания.
Главные требования к этим алгоритмам заключаются в исключении возможности получения подписи без использования секретного ключа и гарантировании возможности проверки подписи без знания какой-либо секретной информации.
Надежность схемы цифровой подписи определяется сложностью следующих трех задач:
— подделки подписи, то есть нахождения значения подпи-си под заданным документом лицом, не являющимся вла-дельцем секретного ключа;
— создания подписанного сообщения, то есть нахождения хотя бы одного сообщения с правильным значением подписи;
— подмены сообщения, то есть подбора двух различных сообщений с одинаковыми значениями подписи.
Для алгоритма проверки подписи необходима дополни-тельная открытая информация, связанная с обеспечением возможности открытой проверки подписи и зависящая от секретного ключа автора подписи. Эту информацию можно назвать открытым ключом цифровой подписи. Для исключения возможности подделки этой информации (открытого ключа) лицами, которые хотят выступить от лица законного владель-ца подписи (секретного ключа), создается инфраструктура состоящая из центров сертификации открытых ключей и обеспечивающая возможность своевременного подтверждения достоверности принадлежности данной открытой информации заявленному владельцу и обнаружения подлога.
Цифровые подписи на основе
шифрсистем с открытыми ключами
Идея использования систем шифрования с открытыми ключами для построения систем цифровой подписи как бы заложена в постановке задачи. Действительно, пусть имеется пара преобразований (Е, D), первое из которых зависит от открытого ключа, а второе — от секретного. Для того чтобы вычислить цифровую подпись S для сообщения, владелец секретного ключа может применить к сообщению Μ второе преобразование D: S = D(M). В таком случае вычислить подпись может только владелец секретного ключа, в то время как проверить равенство E(S) = Μ может каждый. Основными требованиями к преобразованиям Ε и D являются:
— выполнение равенства Μ = E(D(M)) для всех сообщений М;
— невозможность вычисления значения D(M) для заданного сообщения Μ без знания секретного ключа.
Отличительной особенностью предложенного способа построения цифровой подписи является возможность отказаться от передачи самого подписываемого сообщения М, так как его можно восстановить по значению подписи. В связи с этим подобные системы называют схемами цифровой подписи с восстановлением текста.
Стандарт ЭЦП DSS
В 1991 г. NIST (National Institute of Standards and Technology) предложил для обсуждения проект стандарта ЭЦП DSS (Digital Signature Standard), использующий алгоритм DSA (Digital Signature Algorithm). Стойкость данного алгоритма основана на сложности решения задачи дискретного логарифмирования в мультипликативной группе простого поля F(/p) (см. главу 3).
Формирование подписи.
1. Отправитель А сообщения Μ предоставляет широкому кругу абонентов (получателей его сообщений) доступ к следующим параметрам:
p — простое число, 2(\512) < р< 2(\1024), битовая длинам кратна 64;
q — простое число, 2(\159) <р< 2(\160), и делитель р-1
g=h(\((p-1)/q))(mod p) где h — такое целое число, что 0 < h < p и h(\((p-1)/q)) (mod p) > 1;
у — открытый ключ, сформированный по правилу у = a(\x)(mod p). Здесь x — секретный ключ, известный только А, причем 0 < x < q;
Η (Μ) — хэш-функция, которая по исходному сообщению Μ формирует целое число в диапазоне от 1 до q
2. Пользователь А генерирует случайное число к такое, что 0 < к < q, держит его в секрете и уничтожает сразу после получения подписи.
3. А находит два числа r и s по следующему правилу:
r=(g(\k)(mod p))(mod q)
s=k(\-1)(xr+H(M))(mod q)
Подписью к сообщению Μ является пара (r, s).
Проверка подписи. Пользователь В получает от А сообщение M’ и подпись (r’,s’) к нему. B должен убедиться, что Μ совпадает с M’. Для этого:
1) если хотя бы одно из условий 0<s’<q, 0<r’<q не выполняется, то подпись считается недействительной;
2) В находит v=(s’)(\-1) mod q
3) В вычисляет z(/-1)=H(M’)v(mod q), z(/2)=r’v(mod q)
4) далее вычисляется u=(g(\z(/1))y(\z(/2))(mod p))(mod q);
5) В проверяет условие r’=u Если оно выполняется, то подпись считается
подлинной и сообщение не измененным, т.е. M’= М.
Корректность алгоритма DSA. Пусть M=M’,s=s’, r=r’. Покажем, что тогда u=r
Итак, v=s(\-1)(mod q), z(/1)=H(M)v(mod q) Имеем u=g(\z1)y(\z2)(mod p)(mod q)=g(\H(M)*s(\-1))*g(\xrs(\-1))(mod p)(mod q)=g(\(k*(xr+H(M)))(\-1))(xr+H(M)))(mod p)(mod q)=r
Таким образом, и = r, и корректность алгоритма доказана. Для нахождения секретных параметров ЭЦП по открытым необходимо решить следующую систему сравнений:
y=(\-)a(\x)(mod p)
g(\k)+pn=(\-)r’(mod p)
s’=(\-)k(\-1)(xr+H(M’))(mod p)
где неизвестными являются х, п, к.
Некоторые замечания по стойкости алгоритма DSA.
1. В алгоритме формирования
подписи есть недостаток: в редких случаях, когда
S=0,
при проверке подписи будет сбой, так как в этом случае не существует
. Эта
ошибка легко устраняется при помощи дополнительной проверки, что и сделано в
российском стандарте ЭЦП.
2. Алгоритм DSA медленный. В то время как скорость получения подписи сравнима со скоростью шифрования по схеме RSA, проверка подписи в большом количестве случаев примерно в 100 раз медленнее, чем RSA.
3. Тот факт, что один модуль p используется многими пользователями, ослабляет стойкость алгоритма, поскольку единственный «взлом» p нарушает безопасность сразу всех абонентов, пользующихся этим р. Под взломом понимается некое предвычисление, которое позволяет в дальнейшем легко решать проблему дискретного логарифмирования для данного р.
4. Величина 512 битов для p слишком мала. С учетом тенденции уменьшения стоимости вычислений стоимость взлома через несколько лет может сократиться до разумной величины, что для стандарта неприемлемо.
5. Существует целый класс простых чисел, для которых проблема дискретного логарифмирования решается легко. Причем построить такие числа также легко, однако затраты на проверку, является ли данное простое «слабым», превышают возможности среднего пользователя. Это значит, что тот, кто распределяет простые р, в принципе может знать секретные ключи своих клиентов.
6. Анализ алгоритма DSA показывает, что в данном случае проблема взлома подписи, вообще говоря, не сводится к проблеме дискретного логарифмирования, поскольку в алгоритме DSA g — не первообразный корень по модулю р, а лишь элемент порядка q, что намного меньше р-1. Таким образом, вполне возможно, что проблема взлома алгоритма ЭЦП легче общей проблемы дискретного логарифмирования.
Арифметические свойства российского стандарта цифровой подписи
Механизм цифровой подписи. Задаются следующие параметры, используемые алгоритмом: p — простое число, 2(\509) <р<2(\512) либо 2(\1020) < р< 2(\1024); q — простое число, 2(\254) < q < 2(\256); а — целое число в пределах 1 < а < p -1 такое, что a(\q) mod p = 1; x — целое число в пределах 0 < x < q; у — целое число, равное а(\х) mod p; Μ — целое число в пределах 0 < Μ < q.
Число x называют секретным ключом пользователя, у — открытым ключом пользователя, Μ — сообщением. В соответствии с алгоритмом проверки подписи в ГОСТ Ρ 34.10—94 электронную подпись можно ввести следующим образом.
Пусть дано сообщение М. Подписью к Μ называется пара целых чисел (r,s) таких, что
1<r<q, 0<s<q
r=(a(\sM(\q-2) mod q)y(\-rM(\q-2) mod q) mod p) mod q
Теорема 14.7.1. Пусть задано целое Μ(0 < Μ < q). Тогда существует ровно q различных решений (r(/k),s(/k))(\q-1)(/k=0) уравнения (14.7.2), причем
r(/k)=(a(\k) mod q), s(/k)=(x*n(/k)+kM) mod q
Доказательство. Легко проверить путем подстановки, что все пары (r(/k),s(/k)) заданные по формулам (14.7.3) и (14.7.4), удовлетворяют равенству (14.7.2). Все эти пары различны. Действительно, если (r(/i),s(/i))=(r(/j),s(/j)) при некоторых i<>j
то, используя (14.7.4), получаем xr(/i)+iM=(\-)xr(/j)+jM(mod q), откуда следует:
(i - j)M=(\-)0(mod q), что вместе с (M,q)=1 дает i=(\-)j (mod q). Последнее сравне-
ние возможно, только если i = j. Таким образом, чтобы доказать утверждение, достаточно показать, что сравнение (14.7.2) имеет не более q решений.
Будем рассматривать циклическую подгруппу группы Z(\*)(/p):
<a>(/p)={a(\k) mod p: k=0, .., q-1}
порожденную элементом а. Для mE{0, .., q-1}определим функцию кси(m) как
число различных элементов группы <a>(/p), которые по модулю q дают остаток т.
Очевидно, равенство SUM(/m=0)(\q-1)кси(m)=q.Пусть Φ — количество решений (14.7.2),
Ф(r) — количество различных s (0<=s<q) таких, что пара (r,s) есть решение
(14.7.2). Тогда Ф=SUM(/r=0)(\q-1)Ф(r)
Зафиксируем r. Поскольку у = а(\х) тоd р, то имеем равенство
a(\sM(\q-2) mod q)y(\-rM(\q-2) mod p)=a(\a(s-rx)M(\q-2) mod p)
Когда s пробегает значения от 0 до q-1, то v=(s-rx)M(\q-2) также пробегает
(в другом порядке) эти значения. Тогда a(\v) mod p пробегает все элементы группы <a>(/p), когда s изменяется от 0 до q -1. Количество различных s таких, что
r=(a(\sM(\q-2) mod q)y(\-rM(\q-2) mod q) mod p) mod q
есть Φ (r), с одной стороны, и кси(r) — с другой. Тогда
Ф=SUM(/r=0)(\q-1)Ф(r)=SUM(/r=0)(\q-1)кси(r)=q
Итак, количество различных решений сравнения (14.7.2) равно q, и все эти решения описаны по формулам (14.7.3) и (14.7.4).
Введем множества
R(M)={(r(/k),s(/k)):r(/k)=(a(\k) mod p) mod q, s(/k)=(xr(/k)+kM) mod q, 0<=k<=q-1}
S(M)={(r,s)ER(M)Lr-1)rs<>0}.
Тогда множество R(M) состоит из всех решений уравнения (14.7.2), a S(M) — из всех подписей к М.
Чтобы сформировать подпись к сообщению М, необходимо решить сравнение (14.7.2) относительно (r, s). Такую пару можно вычислить по формулам (14.7.3) и (14.7.4). Но для этого необходимо знать значение секретного ключа x и параметра к. Таким образом, получаем следующие алгоритмы.
Алгоритм генерации подписи
1. Генерируем случайное к в интервале [0, q -1] (его значение держится в секрете).
2. Находим r(/к) и s(/k) по формулам (14.7.3) и (14.7.4) (их вычисление осуществляется по алгоритмам полиномиальной сложности).
3. Значение числа к уничтожается.
4. Если r(/k)s(/k)<>0, то полученная пара (r(/k),s(/k)) является подписью к М. В противном случае переходим к шагу 1.
Алгоритм проверки подписи
1. Если r < 0 или r > q -1, или s < 0, или s > q -1, то подпись недействительная, иначе переходим к следующему шагу.
2. Вычисляем z(/0)=M(\q-2) mod q
3. вычисляем z(/1)=sz(/0) mod q
4. вычисляем z(/2)=-rz(/0) mod q
5. вычисляем z(/3)=a(\z1) mod p
6. вычисляем z(/4)=y(\z2) mod p
7. вычисляем z(/5)=z(/3)z(/4) mod p
8. вычисляем z(/6)=z(/5) mod q
9. Если r<>z(/6), то подпись недействительная, иначе подпись действительная.