GMR

GMR — криптографический алгоритм, используемый для создания цифровой подписи. Назван по первым буквам создателей — Рональда Ривеста, Сильвио Микали и Шафи Гольдвассер.

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

Что значит взломать цифровую подпись?

Можно говорить, что криптоаналитик «взломал» цифровую подпись A {\displaystyle A} , если совершенная атака позволяет ему с ненулевой вероятностью совершить следующее[2]:

  • Полный взлом (total break): вычислить закрытый ключ A {\displaystyle A}
  • Универсальная подделка (universal forgery): найти эффективный алгоритм, эквивалентный алгоритму цифровой подписи A {\displaystyle A} (используется, вообще говоря, другой, но эквивалентный секретный ключ)
  • Выборочная подделка (selective forgery): подделать подпись некоторого сообщения, выбранного криптоаналитиком априори
  • Экзистенциальная подделка (existential forgery): подделать подпись хотя бы одного сообщения. При этом криптоаналитик не выбирает сообщение для подделки подписи, подделка может быть случайной и лишённой смысла. Подделка такого типа может нести минимальный урон для A {\displaystyle A} . Авторами схемы GMR доказана ее устойчивость именно к такому типу атаки[3].

Описание алгоритма

Предположим, что Алисе нужно отправить Бобу последовательность сообщений, подтверждённых цифровой подписью. Пусть Алиса предполагает подписать 2 b {\displaystyle 2^{b}} сообщений, случайный параметр шифрования - k {\displaystyle k} . Открытый ключ состоит из следующих компонент:

  • Максимальное число сообщений, которые необходимо зашифровать B = 2 b , b N { 0 } {\displaystyle B=2^{b},b\in \mathbb {N} \cup \left\lbrace 0\right\rbrace }
  • Два случайно выбранных числа Блума n 1 = p 1 q 1 {\displaystyle n_{1}=p_{1}q_{1}} и n 2 = p 2 q 2 {\displaystyle n_{2}=p_{2}q_{2}} , то есть два числа, являющихся произведением простых чисел, сравнимых с числом 3 {\displaystyle 3} по модулю 4 {\displaystyle 4} [4]
  • Два бесконечных семейства односторонних функций с потайным входом f i , n ( x ) {\displaystyle f_{i,n}\left(x\right)}
  • Случайное число r {\displaystyle r} , выбранное из области значений f i , n 1 ( ) {\displaystyle f_{i,n_{1}}\left(\cdot \right)}

.

Закрытый ключ состоит из простых чисел p 1 , q 1 , p 2 , q 2 {\displaystyle p_{1},q_{1},p_{2},q_{2}} , позволяющих эффективно вычислять обратные функции f i , n 1 1 ( y ) {\displaystyle f_{i,n_{1}}^{-1}\left(y\right)} и f i , n 2 1 ( y ) {\displaystyle f_{i,n_{2}}^{-1}\left(y\right)} .

Рассмотрим случай генерации подписи для одного сообщения m {\displaystyle m} , то есть B = 1 {\displaystyle B=1} и b = 0 {\displaystyle b=0} . Алиса выбирает случайное число r 0 {\displaystyle r_{0}} из области значений f i , n 1 ( ) {\displaystyle f_{i,n_{1}}\left(\cdot \right)} и вычисляет подпись сообщения ( t , r 0 , s ) {\displaystyle \left(t,r_{0},s\right)} :

t = f r 0 , n 1 1 ( r ) {\displaystyle t=f_{r_{0},n_{1}}^{-1}\left(r\right)} и s = f m , n 2 1 ( r 0 ) {\displaystyle s=f_{m,n_{2}}^{-1}\left(r_{0}\right)} .

Получив подписанное сообщение, Боб последовательно проверяет, что

  • f m , n 2 ( s ) = r 0 {\displaystyle f_{m,n_{2}}\left(s\right)=r_{0}}
  • f r 0 , n 1 ( t ) = r {\displaystyle f_{r_{0},n_{1}}\left(t\right)=r} .

Для подписи B = 2 b > 1 {\displaystyle B=2^{b}>1} сообщений Алиса строит из корневого элемента r {\displaystyle r} хэш-дерево с B {\displaystyle B} листьями r 0 , r 1 , , r B 1 {\displaystyle r_{0},r_{1},\dots ,r_{B-1}} . Все внутренние вершины дерева выбираются случайно и равновероятно из множества значений f i , n 1 ( ) {\displaystyle f_{i,n_{1}}\left(\cdot \right)} , аналогично r 0 {\displaystyle r_{0}} в случае одного сообщения. Каждая внутренняя вершина R {\displaystyle R} криптостойко связывается со обоими своими дочерними вершинами путём вычисления значения f R 0 R 1 , n 1 ( R ) {\displaystyle f_{R_{0}\parallel R_{1},n_{1}}\left(R\right)} , помещаемого в вершину аналогично тому, как выше вычисляется t {\displaystyle t} . Наконец, сообщение m j ( 0 j B 1 ) {\displaystyle m_{j}\left(0\leqslant j\leqslant B-1\right)} криптостойко связывается с j {\displaystyle j} -ым листом дерева аутентификации r j {\displaystyle r_{j}} путём вычисления значения s j = f m j , n 2 1 ( r j ) {\displaystyle s_{j}=f_{m_{j},n_{2}}^{-1}\left(r_{j}\right)} аналогично тому, как выше вычислено s {\displaystyle s} . Подпись сообщения m j {\displaystyle m_{j}} состоит из

  • Последовательности b {\displaystyle b} вершин дерева от корня r {\displaystyle r} до листа r j {\displaystyle r_{j}}
  • b {\displaystyle b} значений, помещённых в вершины (аналогично t {\displaystyle t} выше)
  • s j {\displaystyle s_{j}} (аналогично s {\displaystyle s} выше)[5].

Односторонние функции с потайным входом

В качестве односторонних функций могут быть использованы f i , n ( x ) = ± 4 rev ( i ) x 2 len ( i ) mod n {\displaystyle f_{i,n}\left(x\right)=\pm 4^{{\text{rev}}\left(i\right)}x^{2^{{\text{len}}\left(i\right)}}\mod {n}} для n = n 1 {\displaystyle n=n_{1}} и n = n 2 {\displaystyle n=n_{2}} , где функция rev ( ) {\displaystyle {\text{rev}}\left(\cdot \right)} принимает на вход битовую строку i { 0 , 1 } + {\displaystyle i\in \left\lbrace 0,1\right\rbrace ^{+}} и возвращает целое число, представленное битами i {\displaystyle i} в обратном порядке [6]. Функция len ( ) {\displaystyle {\text{len}}\left(\cdot \right)} также принимает битовую строку i { 0 , 1 } + , {\displaystyle i\in \left\lbrace 0,1\right\rbrace ^{+},} возвращая её длину. Знак плюс или минус выбирается таким образом, чтобы значение f i , n {\displaystyle f_{i,n}} было положительно и не превышало n / 2 {\displaystyle n/2} . В таком случае вычисление обратной функции осуществляется за время, пропорциональное k 3 {\displaystyle k^{3}} , где k {\displaystyle k}  — длина строки i {\displaystyle i} , при условии, что подписываемые сообщения имеют такую же длину. Таким образом образом, подпись k {\displaystyle k} -битового сообщения может быть подсчитана за время O ( b k 3 ) {\displaystyle O\left(bk^{3}\right)} [6].

Криптостойкость алгоритма

Гольдвассер, Микали и Ривестом доказано[3], что алгоритм GMR не позволяет криптоаналитику успешно совершить адаптивную атаку на основе подобранного сообщения, а именно, осуществить экзистенциальную подделку подписи, сгенерированной по схеме GMR. Криптоаналитик, получивший подписи к ряду сообщений, не может подделать подпись для любого дополнительного сообщения.

Обобщения схемы

Возможны обобщения схемы GMR для использования как подписи назначенного подтверждающего (designated confirmer signature scheme)[7].

Примечания

Литература

  • Goldwasser S., Micali S., Rivest R. L. A digital signature scheme secure against adaptive chosen-message attacks // SIAM Journal on Computing. — 1988. — Т. 61, № 3. — С. 281—308.
  • Van Tilborg H. C. A., Jajodia S. Encyclopedia of cryptography and security. — Springer Science & Business Media, 2014.
  • Goldwasser S., Waisbard E. Transformation of digital signature schemes into designated confirmer signature schemes // Theory of Cryptography Conference. — Springer, Berlin, Heidelberg, 2004. — С. 77-100.

Ссылки

  • Схемы цифровой подписи (англ.)
Перейти к шаблону «Криптосистемы с открытым ключом»
Алгоритмы
Факторизация целых чисел
Дискретное логарифмирование
Криптография на решётках
Другие
Теория
Стандарты
Темы