Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Эл-ты_криптологии-лек.doc
Скачиваний:
24
Добавлен:
24.11.2019
Размер:
757.76 Кб
Скачать

3.6.2. Цифровая подпись rsa

Пусть некто А планирует подписывать документы. Действуя по схеме шифра RSA, он может сформировать числа NA и dA и разместить их на своем сайте, ассоциировав их со своим именем, а соответствующее число сA хранить в секрете. Остальные числа, использовавшиеся в расчетах, – P, Q и можно забыть. Теперь А готов ставить свою подпись на документе.

Пусть А хочет поставить свою подпись по сообщением = m1...mn. Тогда вначале он вычисляет значение некоторой хеш-функции:

y = h(m1...mn).

Предполагается, что алгоритм вычисления хеш-функции всем известен. Как уже отмечалось, наиболее принципиальным требованием к хеш-функции в данном случае является третье из рассмотренных выше требований. Если считать, что это требование выполнено, то практически невозможно изменить исходный текст m1...mn, не изменив значение хеш-функции. Следовательно, А может снабдить своей подписью только число y и эта подпись будет соответствовать всему сообщению. Поэтому А вычисляет число

s = mod NA, (3.21)

используя свое секретное число сA.

Число s – это и есть требуемая цифровая подпись. Она просто добавляется к сообщению m1...mn и, тем самым, А формирует подписанное сообщение < , s>.

Теперь каждый, кто знает открытые параметры А, ассоциированные с его именем, может проверить подлинность его подписи. Для этого необходимо вычислить значение хеш-функции h( ) и число

w = mod NA (3.22)

и проверить равенство w = h( ). Если подпись подлинная, то указанное равенство справедливо. Действительно, из (3.22) и (3.21) и свойств шифра RSA (см. анализ после формулировки теоремы 3.7) следует, что

w = mod NA = mod NA = y = h( ).

Проверим реализуемость требуемых свойств цифровой подписи.

(а). Это свойство выполняется, поскольку никто не может разложить число NA на простые множители: при NA порядка 1024 бит эта задача практически неразрешима (по состоянию на 2003 год). Поэтому, зная только NA и dA невозможно найти cA. Действительно, чтобы найти cA = dA1 mod , нужно знать = (P1)(Q  1), а для этого нужно знать простые множители P и Q.

(б). Это свойство выполнено вследствие выполнения свойства (а). Автор подписи не сможет отказаться от нее, то есть ему бессмысленно утверждать, что подпись поставил не он, поскольку кроме него никто не сможет ее поставить.

(в). Это свойство выполняется в силу свойств хеш-функции, используемой при формировании цифровой подписи.

(г). Это свойство очевидно выполняется, поскольку в случае спора субъект А может представить судье все вычисления для их проверки и выяснения истины.

3.6.3. Цифровая подпись на базе шифра Эль-Гамаля

Напомним, что в отличие от шифра RSA, где сложность критпоатаки обусловлена сложностью разложения большого числа на простые сомножители, в шифре Эль-Гамаля аналогичная сложность обусловлена сложностью вычисления дискретного логарифма.

Итак, пусть по правилам шифра Эль-Гамаля выбраны открытые числа p и g и субъект А выбирает случайное число x, 1 < x < p1, которое он держит в секрете. Затем он вычисляет

y = gx mod p, (3.23)

Это число А публикует в качестве своего открытого ключа (при больших p, зная только y, нельзя найти x, в силу сложности задачи определения дискретного логарифма). Теперь А может подписывать тексты.

Допустим, он хочет подписать сообщение = m1...mn.

Вначале А вычисляет значение хеш-функции h = h( ), которое должно удовлетворять неравенству 1 < h < p. Затем А выбирает случайное число k, 1 < k < p1, взаимно простое с (p1), и вычисляет число

r = gk mod p, (3.24)

Далее А вычисляет числа

u = (hxr) mod (p1), (3.25)

s = k1u mod (p1), (3.26)

Под k1 подразумевается инверсия, то есть число, удовлетворяющее соотношению:

k1k mod (p1) = 1 (3.27)

Такое число существует, так как k и (p1) взаимно простые, и может быть найдено с помощью обобщенного алгоритма Евклида.

Наконец, А формирует подписанное сообщение:

< ; r, s>. (3.28)

Получатель подписанного сообщения (3.28) заново вычисляет значение хеш-функции h = h( ) и проверяет подпись, используя равенство:

yrrs = gh mod p, (3.29)

Если подпись верна, то соотношение (3.29) выполняется. Действительно:

yrrs = = gxr = gxrgh g xr = gh mod p.

(Первое равенство следует из (3.23) и (3.24), а второе – из (3.26)).

Доказательство реализации всех свойств, которыми должна обладать цифровая подпись, в данном случае практически совпадает с аналогичным доказательством в случае построения цифровой подписи на основе шифра RSA.

Рассмотренный способ формирования цифровой подписи сложнее, чем метод, основанный на RSA. Но важно то, что его стойкость базируется на вычислительной сложности другой односторонней функции. Это важно для криптографии, поскольку при дискредитации одного метода, может быть использован другой. Кроме того, на основе подписи Эль-Гамаля может быть построен более эффективный алгоритм, в котором время вычислений значительно сокращается за счет использования "коротких" показателей степени (см. след. п.).