Страница: 5/11
Пусть принято сообщение m1 и его подпись s1,r1.
Проверка ЭЦП происходит следующим образом:
- проверяется выполнений условий 0<r1<q, 0<s1<q, и если хотя бы одно из них нарушено, подпись отвергается.
- Вычисляются значения:
w= s1^-1 mod q
u1 = (H(m1)w) mod q
u2 = ((r1/w) mod q
v = (( g^u1y^u2) mod p ) mod q
- проверяется равенство v = r1
Если последнее равенство выполняется, то подпись принимается. В данном стандарте специфицируется также процедура генерации основных параметров системы и проводится доказательство того, что если v=r1, то m1=m, r1=r, s1=s.
Отечественным стандартом на процедуры выработки и проверки ЭЦП является ГОСТ Р 34.10-94. Схема ЭЦП, предложенная в данном стандарте, во многом напоминает подпись в DSA.
Цифровая подпись представляет собой два больших целых простых числа. Общедоступные параметры схемы ЭЦП (p,q,a) должны удовлетворять следующим условиям:
p: 2^501<p<2^512 или 2^1020<p<2^1020
q: простой делитель числа (p-1), который удовлетворяет
условию 2^254<q<2^256
a: 1<a<p-1, a^q(mod p) =1
Секретный ключ x случайно выбирается из диапазона [1,q] и держится в секрете.
Открытый ключ вычисляется: y=a^x mod p.
Процесс генерации ЭЦП состоит из нескольких этапов:
1.Вычисляется хэш-код сообщения m h=H(m)
(хэш-функция, используемая в данном стандарте в соответствии с
ГОСТ Р 34.10-94), если h(m)(mod p) = 0, то h(m) присваевается значение 0…02551
2.Из диапазона [1,q] случайным образом выбирается значение k
3. вычисляется r= (a^k mod p) , r1=r(mod p); если r1=0, следует вернуться к предыдущему этапу и выработать другое значение k.
3. Вычисляется s= (xr1+kh(m))(mod p); если s=0, то необходимо выработать другое значение k.
Значения r1,s1 являются ЭЦП сообщения m и передаются вместе с ним по каналам связи.
Проверка ЭЦП происходит следующим образом:
- проверяется выполнений условий 0<r<q, 0<s<q, и если хотя бы одно из них нарушено, подпись отвергается.
- Вычисляется хэш-код данного сообщения h=H(m); Если h(m)(mod p) = 0, то битовое представление h(m): 0…02551
- Вычисляется значение v=(h(m))^q-2(mod p).
- Вычисляется значения z1=sv(mod p); z2=(q-r1)v(mod p).
- Вычисляется значение u=(a^z1y^z2(mod p))(mod q)
- проверяется равенство u = r1
Если последнее раенство выполняется, то подпись принимается.
На первый взгляд, сама эта идея может показаться абсурдом. Действительно, общеизвестно, что так называемая «современная», она же двухключевая криптография возникла и стала быстро развиваться в последние десятилетия именно потому, что ряд новых криптографических протоколов типа протокола цифровой подписи не удалось эффективно реализовать на базе традиционных криптографических алгоритмов, широко известных и хорошо изученных к тому времени. Тем не менее, это возможно. И первыми, кто обратил на это внимание, были родоначальники криптографии с открытым ключом У. Диффи и М. Хеллман, опубликовавшие описание подхода, позволяющего выполнять процедуру цифровой подписи одного бита с помощью блочного шифра. Прежде чем изложить эту идею, сделаем несколько замечаний о сути и реализациях цифровой подписи.
Стойкость какой-либо схемы подписи доказывается обычно установлением равносильности соответствующей задачи вскрытия схемы какой-либо другой, о которой известно, что она вычислительно неразрешима. Практически все современные алгоритмы ЭЦП основаны на так называемых «сложных математических задачах» типа факторизации больших чисел или логарифмирования в дискретных полях.
Однако, доказательство невозможности эффективного вычислительного решения этих задач отсутствует, и нет никаких гарантий, что они не будут решены в ближайшем будущем, а соответствующие схемы взломаны – как это произошло с «ранцевой» схемой цифровой подписи. Более того, с бурным прогрессом средств вычислительных техники «границы надежности» методов отодвигаются в область все больших размеров блока.
Всего пару десятилетий назад, на заре криптографии с открытым ключом считалось, что для реализации схемы подписи RSA достаточно даже 128-битовых чисел. Сейчас эта граница отодвинута до 1024-битовых чисел – практически на порядок, – и это далеко еще не предел. Это приводит к необходимости переписывать реализующие схему программы, и зачастую перепроектировать аппаратуру.
Ничего подобного не наблюдается в области классических блочных шифров, если не считать изначально ущербного и непонятного решения комитета по стандартам США ограничить размер ключа алгоритма DES 56-ю битами, тогда как еще во время обсуждения алгоритма предлагалось использовать ключ большего размера. Схемы подписи, основанные на классических блочных шифрах, свободны от указанных недостатков:
Реферат опубликован: 8/03/2008