ESIGN

ESIGN (англ. Efficient digital SIGNature — эффективная цифровая подпись) — схема цифровой подписи с открытым ключом, основанная на проблеме факторизации чисел. Отличительной чертой данной схемы является возможность быстрой генерации подписи.[1]

История

Цифровая подпись была разработана в японской компании NTT в 1985 году.[2] Схема оказалась эффективна в плане скорости генерации цифровой подписи. Однако первые версии были взломаны Эрни Брикеллом (англ. Ernie Btickel) и Джоном ДеЛаурентисом (англ. John DeLaurentis), после чего рекомендованные параметры алгоритма были модифицированы.[3] Последующие попытки взлома оказались безуспешными. Авторы уверяют, что сложность взлома последней версии ESIGN сравнима со сложностью задачи факторизации числа n {\displaystyle n} вида p 2 q {\displaystyle p^{2}q} , где p {\displaystyle p} и q {\displaystyle q} простые числа.[4]

Описание протокола

Введение

В протоколе участвуют два субъекта: субъект A {\displaystyle A} , цель которого — доказать то, что является автором сообщения m {\displaystyle m} , и субъект B {\displaystyle B} , целью которого является проверка авторства. В ESIGN для осуществления поставленных целей A {\displaystyle A} и B {\displaystyle B} должны совершить следующие действия[5].

  • Предварительно, A {\displaystyle A} генерирует ключи: открытый, известный всем, и закрытый, известный только субъекту A {\displaystyle A} .
  • Субъект A {\displaystyle A} генерирует цифровую подпись s {\displaystyle s} для сообщения m {\displaystyle m} на основе закрытого ключа.
  • A {\displaystyle A} отправляет сообщение m {\displaystyle m} вместе с подписью s {\displaystyle s} субъекту b {\displaystyle b} .
  • Субъект B {\displaystyle B} проверяет достоверность подписи на основе открытого ключа.

Генерация открытого и закрытого ключей

Ключи ESIGN генерируются следующим образом[6].

  1. Случайным образом выбираются два простых числа p {\displaystyle p} и q {\displaystyle q} одинаковой битовой длины.
  2. Вычисляется число n = p 2 q {\displaystyle n=p^{2}q} .
  3. Выбирается целое положительное число k 4 {\displaystyle k\geqslant 4} .
  4. Пара чисел ( n , k ) {\displaystyle (n,k)} является открытым ключом.
  5. Пара чисел ( p , q ) {\displaystyle (p,q)} — закрытый ключ.

Генерация подписи

Чтобы подписать сообщение m {\displaystyle m} , где m {\displaystyle m} двоичное число произвольной длины, предпринимаются следующие шаги[6].

  1. Вычисляется μ = h ( m ) {\displaystyle \mu =h(m)} , где h {\displaystyle h} — заранее выбранная хеш-функция, принимающая значения от 0 {\displaystyle 0} до n 1 {\displaystyle n-1} .
  2. Выбирается случайное число x {\displaystyle x} из интервала [ 0 , p q ) {\displaystyle [0,pq)} .
  3. Вычисляется χ = μ ( x k mod n ) p q {\displaystyle \chi =\left\lceil {\frac {\mu -(x^{k}{\bmod {n}})}{pq}}\right\rceil } и ϰ = ( χ k x k 1 ) mod p {\displaystyle \varkappa =\left({\frac {\chi }{k*x^{k-1}}}\right){\bmod {p}}} , где : R Z {\displaystyle \lceil \cdot \rceil \colon \mathbb {R} \to \mathbb {Z} } — функция округления до наименьшего целого, большего аргумента.
  4. Вычисляется подпись s = x + ϰ p q {\displaystyle s=x+\varkappa pq} .

Проверка подписи

Чтобы проверить, что подпись s {\displaystyle s} действительно подписывает сообщение m {\displaystyle m} , предпринимаются следующие шаги[6].

  1. Вычисляется μ = h ( m ) {\displaystyle \mu =h(m)} , где h {\displaystyle h} — та же самая хеш-функция, которая использовалась для генерации подписи.
  2. Вычисляется ξ = 2 3 log 2 n {\displaystyle \xi =\left\lceil {\frac {2}{3}}\log _{2}{n}\right\rceil } .
  3. Выполняется проверка неравенства μ s k mod n μ + 2 ξ {\displaystyle \mu \leqslant s^{k}{\bmod {n}}\leqslant \mu +2^{\xi }} .
  4. Подпись считается достоверной, если неравенство выполнено.

Предыдущие версии

В изначально предложенном варианте ESIGN параметр k {\displaystyle k} был равен двум.[5] Однако после успешной атаки Эрни Брикелла и Джона ДеЛаурентиса, которая распространялась также на вариант схемы с k = 3 {\displaystyle k=3} , авторы изменили требование к этому параметру на существующее k 4 {\displaystyle k\geqslant 4} .[7]

Криптоанализ

Атака на хеш-функцию

Атаки на хеш-функцию h {\displaystyle h} с целью подделки подписи основаны на ее несовершенности, то есть на несоответствии хеш-функции одному или нескольким критериям криптографической стойкости c той оговоркой, что в случае ESIGN равенства в критериях стоит понимать с точностью до ( log 2 n ) / 3 {\displaystyle (\log _{2}{n})/3} старших бит. Это послабление связано с условием проверки подписи, которое выполняется не только для исходного значения хеш-функции, но и для прочих, совпадающих в первых ( log 2 n ) / 3 {\displaystyle (\log _{2}{n})/3} старших битах.

Допустим, что функция h {\displaystyle h} неустойчива к поиску коллизий, то есть можно найти такие различные m {\displaystyle m} и m {\displaystyle m'} , что h ( m ) {\displaystyle h(m)} и h ( m ) {\displaystyle h(m')} совпадают в первых ( log 2 n ) / 3 {\displaystyle (\log _{2}{n})/3} старших битах. Тогда, подписывая сообщение m {\displaystyle m} , автор A {\displaystyle A} , ничего не подозревая, автоматически подписывает сообщение m {\displaystyle m'} , так как выполняется неравенство h ( m ) s k mod n h ( m ) + 2 2 3 log 2 n {\displaystyle h(m')\leqslant s^{k}{\bmod {n}}\leqslant h(m')+2^{\left\lceil {\frac {2}{3}}\log _{2}{n}\right\rceil }}

Если выбранная хеш-функция криптографически стойкая, то атака с использованием коллизий займет 2 ( log 2 n ) / 3 {\displaystyle 2^{(\log _{2}{n})/3}} операций вычисления хеш-функции, атака с использованием второго прообраза — 2 ( log 2 n ) / 6 {\displaystyle 2^{(\log _{2}{n})/6}} операций, что считается неосуществимым, при больших n {\displaystyle n} .[8][9]

Атака на открытый ключ

Атака на открытый ключ ( n , k ) {\displaystyle (n,k)} заключается в попытке получить на его основе закрытый ключ ( p , q ) {\displaystyle (p,q)} . Сделать это можно, решив уравнение n = p 2 q {\displaystyle n=p^{2}q} , то есть факторизовав число n {\displaystyle n} . Можно заметить, что в RSA число n {\displaystyle n} генерируется похожим образом, там n = p q {\displaystyle n=pq} , но на сегодняшний день вопрос о том, в каком из случаев факторизация становится проще или сложнее, остается открытым, так как эффективных алгоритмов факторизации до сих пор нет. На данный момент самым быстрым способом факторизовать число n {\displaystyle n} , что для ESIGN, что для RSA, является метод решета числового поля, который делает это со скоростью, зависящей от битовой длины n {\displaystyle n} . Однако, при большой битовой длине числа n {\displaystyle n} задача факторизации становится невыполнимой.[10][9]

Рекомендуемые параметры

Помимо уже введенных ограничений в описании ESIGN, для большей безопасности рекомендуется выбирать размер p {\displaystyle p} и q {\displaystyle q} равным или большим 320 {\displaystyle 320} бит, размер n {\displaystyle n} равным или большим 960 {\displaystyle 960} соответственно, а параметр k {\displaystyle k} большим или равным 8[11]:

  • log 2 p 320 {\displaystyle \log _{2}{p}\geqslant 320} ;
  • k 8 {\displaystyle k\geqslant 8} ;

Уровень безопасности относительно других схем цифровой подписи

Ниже представлена таблица соответствия уровня безопасности ESIGN уровням безопасности RSA и ECDSA при различных размерах параметра n {\displaystyle n} в битах. Можно заметить, что при одинаковым размерах n {\displaystyle n} RSA и ESIGN сравнимы по уровню безопасности.[12]

Размер n {\displaystyle n} в ESIGN, биты Размер n {\displaystyle n} в RSA, биты Размер n {\displaystyle n} в ECDSA, биты
960 960 152
1024 1024 160
2048 2048 224
3072 3072 256
7680 7680 384

Преимущества

Схема ESIGN позволяет быстро генерировать подпись. Так как вычислительно сложные операции, такие как возведение в степень ( x k mod n ) {\displaystyle (x^{k}{\bmod {n}})} и нахождение обратного элемента ( k x k 1 ) 1 {\displaystyle (k*x^{k-1})^{-1}} , не зависят от подписываемого сообщения m {\displaystyle m} , их можно осуществить заранее и сохранить полученные значения в памяти. Таким образом, чтобы подписать сообщение, достаточно выполнить оставшиеся операции сложения, умножения и деления, доля которых в вычислительной сложности алгоритма создания подписи мала. В случае, когда k = 4 {\displaystyle k=4} , а битовая длина n {\displaystyle n} равна 768 {\displaystyle 768} , скорость генерации подписи в 10 ÷ 100 {\displaystyle 10\div 100} больше, чем для RSA при соответствующих параметрах. Что же касается проверки подписи, то её скорость сравнима со скоростью проверки подписи в алгоритме RSA, открытая экспонента которого мала.[13][9]

Протоколы идентификации на основе ESIGN

С помощью ESIGN можно реализовать протоколы идентификации с нулевым разглашением, которые позволяют субъекту P {\displaystyle P} (англ. Prover — доказывающий) доказать субъекту V {\displaystyle V} (англ. Verifier — проверяющий) факт наличия информации, сохранив её в тайне от V {\displaystyle V} . Протоколы идентификации на основе ESIGN не уступают протоколу Фейга — Фиата — Шамира в своей эффективности. Мы рассмотрим два таких протокола: трёхраундовый и двухраундовый.[14]

Трёхраундовая схема идентификации

  1. P {\displaystyle P} генерирует открытые ( n , k ) {\displaystyle (n,k)} и секретные ( p , q ) {\displaystyle (p,q)} ESIGN ключи.
  2. P {\displaystyle P} выбирает случайным образом числа r {\displaystyle r} и u {\displaystyle u} , вычисляет x = f ( r u ) {\displaystyle x=f(r\|u)} , где f {\displaystyle f} односторонняя функция, {\displaystyle \|} — операция конкатенации, и отправляет x {\displaystyle x} проверяющему V {\displaystyle V} .
  3. V {\displaystyle V} выбирает случайным образом число y {\displaystyle y} и отправляет доказывающему.
  4. P {\displaystyle P} вычисляет m = r y {\displaystyle m=r\oplus y} , генерирует подпись s {\displaystyle s} для m {\displaystyle m} и отправляет тройку ( s , r , u ) {\displaystyle (s,r,u)} проверяющему.
  5. V {\displaystyle V} проверяет выполнение равенства x = f ( r u ) {\displaystyle x=f(r\|u)} и достоверность подписи s {\displaystyle s} для сообщения m {\displaystyle m} .

Двухраундовая схема идентификации

  1. P {\displaystyle P} генерирует открытые ( n , k ) {\displaystyle (n,k)} и секретные ( p , q ) {\displaystyle (p,q)} ESIGN ключи.
  2. V {\displaystyle V} выбирает случайным образом число r {\displaystyle r} и отправляет доказывающему.
  3. P {\displaystyle P} выбирает случайным образом число u {\displaystyle u} , вычисляет m = f ( r u ) {\displaystyle m=f(r\|u)} , генерирует подпись s {\displaystyle s} для m {\displaystyle m} и отправляет ( s , u ) {\displaystyle (s,u)} проверяющему.
  4. V {\displaystyle V} проверяет выполнение равенства m = f ( r u ) {\displaystyle m=f(r\|u)} и достоверность подписи s {\displaystyle s} для сообщения m {\displaystyle m} .

В приведенных протоколах секретной информацией являются ключи ( p , q ) {\displaystyle (p,q)} , знание которых и доказывает субъект P {\displaystyle P} . Если результаты всех проверок на завершающих этапах оказываются успешными, то считается, что P {\displaystyle P} действительно обладает секретом.

Примечания

  1. Menezes, Oorschot, Vanstone, 1996, §11.7 п.2, pp. 473—474.
  2. Minghua, 2001, p. 1.
  3. Шнайер, 2002, глава 20, п.6.
  4. Atsushi, 1991, глава 2, п.3: «We conjective that to break our higher degree version (ESIGN) is as hard as facctoring N».
  5. 1 2 Шнайер, 2002, глава 2, п.6.
  6. 1 2 3 Menezes, Oorschot, Vanstone, 1996, §11.7 п.2, p. 473.
  7. Menezes, Oorschot, Vanstone, 1996, §11.9, pp. 486—487.
  8. Minghua, 2001, p. 3.
  9. 1 2 3 Menezes, Oorschot, Vanstone, 1996, §11.7 п.2, p. 474.
  10. Minghua, 2001, p. 4.
  11. Minghua, 2001, p. 6.
  12. Minghua, 2001, p. 7.
  13. Atsushi, 1991, глава 3.
  14. Atsushi, 1991, глава 4.

Литература

  • Шнайер Б. Прикладная криптография. Протоколы, алгоритмы, исходные тексты на языке Си = Applied Cryptography. Protocols, Algorithms and Source Code in C. — М.: Триумф, 2002. — 816 с. — 3000 экз. — ISBN 5-89392-055-4.
  • Alfred J. Menezes, Paul C. van Oorschot and Scott A. Vanstone. Глава 11. Digital Signatures // Handbook of Applied Cryptography. — 5-e изд. — CRC Press, 1996. — С. 473—474. — 816 с. — ISBN 0-8493-8523-7.
  • Atsushi Fujioka, Tatsuaki Okamoto, Shoji Miyaguchi. ESIGN: An Efficient Digital Signature Implementation for Smart Cards // Advances in Cryptology — EUROCRYPT ’91 : материалы конф. / Advances in Cryptology - EUROCRYPT '91, Брайтон, Великобритания, 8-11 апреля 1991. — Springer Berlin Heidelberg, 1991. — С. 446—457. — ISBN 978-3-540-54620-7. (недоступная ссылка)
  • Alfred Menezes , Minghua Qu , Doug Stinson , Yongge Wang. Evaluation of security level of cryptography: ESIGN signature scheme : материалы проекта / CRYPREC Project, Япония. — 2001. — Январь. Архивировано 9 августа 2017 года.