GHR
GHR (буквенная аббревиатура от фамилий Gennaro, Halevi и Rabin) — схема цифровой подписи с открытым ключом.
История.
В Праге в 1999 году на международной конференции по теории и применению криптографических методов (International Conference on the Theory and Application of Cryptographic Techniques) была представлена статья Росарио Дженнаро, Шай Халеви и Таль Рабин «Secure Hash-and-Sign Signatures Without the Random Oracle», в которой они описали схему цифровой подписи с доказуемой точностью (позже названную GHR-схемой подписи). Доказательство её стойкости, которое основывается на сильных предположениях RSA можно получить, не привлекая модель случайного оракула (недоступная ссылка).
(Задача RSA) Пусть дан модуль алгоритма RSA n = р*q , экспонента Е взаимно простая с φ(N) и случайное целое число С (C<n). Требуется найти целое число m (m<n), для которого выполняется следующее равенство. m^E=С mod n
Сильное предположение RSA состоит в трудноразрешимости следующей задачи:
(Слабая задача RSA) Пусть дан модуль n = р*q алгоритма RSA и случайное целое число C (C<n). Требуется найти целое число е > 1 и целое число m (m<n), для которых выполняется следующее равенство. m^ e=С mod n
Модель случайного оракула (недоступная ссылка) реально не моделирует вычислений, встречающихся на практике. Доказательства, полученные в рамках этой модели, говорят лишь о возможной стойкости алгоритмов, но не гарантируют её.
Описание алгоритма.
Введение. GHR схема напоминает стандартный алгоритм RSA подписи, но с некоторым изменением. Отличие состоит в том, что в алгоритме RSA сообщение представленное двоичным числом возводиться в некоторую заранее выбранную степень по модулю n. В GHR-схеме ищется решение уравнения ∑^H(M)=S mod n (∑-искомая неизвестная, S-заранее выбранное число, H(M)-значение хеш-функции от сообщения).
Пояснение.
RSA подпись
M — сообщение
e — открытая экспонента (общественная экспонента, фиксированное значение)
d — секретная экспонента (d*e mod φ(n) =1 φ(n) — функция Эйлера)
n — модуль RSA (n=p*q)
Пара (e, n) — открытый ключ
Пара (d, n) — секретный ключ
Алгоритм подписи.
Формирование подписи σ = M^d mod n
Передача пары (M, σ)
Проверка подписи.
Прием пары (M, σ)
Проверка равенства M = σ^e mod n
GHR подпись
M — сообщение
экспонента H(M) (H — некоторая хеш-функция)
n — модуль RSA (n=p*q)
S — база (фиксированное значение)
Набор (S, H, n) — открытый ключ
Набор (S, p, q) — секретный ключ
Формирование подписи.
Σ^H(M) = S mod n (∑ — подпись на сообщение M). На данном этапе происходит вычисление ∑, что является вычислительно сложной задачей если n=p*q (p, q большие простые числа) и p, q не известны.
Передача пары (M, ∑)
Проверка подписи.
Прием пары (M, ∑)
Проверка равенства Σ^H(M) = S mod n
Построение алгоритма GHR подписи.
1) Формирование открытого ключа.
Открытым ключом является целое число n = p*q (n — модуль RSA), случайное целое S (S < n) и хеш-функция H.
Открытый ключ (n, S, H).
Секретный ключ (p, q, S).
2) Формирование подписи.
Чтобы подписать сообщение M открытым ключом (n, S), подписывающееся лицо сперва применяет хеш-функцию для вычисления значения e=H(M), а зетем использует полученное значение как экспоненту, то есть находит корень степени е из S по модулю n. Подпись на сообщение M представляет собой целое число ∑, такое что
∑^H(M)=S mod n.
3) Проверка подписи.
Для проверки подписи число ∑ возводится в степень H(M) и проверяется равенство ∑^H(M)=S mod n
Пояснение правила нахождения корня по модулю заданного числа.
a^b=s mod n
для того чтобы найти корень степени b из s по модулю n. Необходимо найти число r, такое что r*b = 1 mod φ(n), причём для существования числа r необходимо чтобы НОД(b,φ(n))=1.
a=s^r mod n
Требования и предположения.
В данной схеме p и q — простые либо И. М. Виноградов. Квазипростое число // Математическая энциклопедия. — М.: Советская энциклопедия. — 1977—1985. числа одинаковой длины, обладающие следующим дополнительным свойством: (p-1)/2, (q-1)/2 — простые числа. В частности такой выбор означает, что (p-1), (q-1) не имеют общих простых делителей отличных от 2, и что найти нечетное целое число не являющееся взаимно простым с φ(n) так же сложно, как и разложить n на простые множители. Это условие гарантирует, что нахождение корня степени е из S, при e=H(M), всегда возможно если наложить на хеш-функцию H соответствующее ограничение. Вывод хеш-функции H должен быть в виде нечетных целых чисел. Такую функцию легко построить, достаточно к значениям обычной хеш-функции, представленным в двоичном виде, приписывать дополнительный бит равный 1.
H*=H|1
Либо устанавливать младший бит хеш-функции H равным 1.
Комментарии.
1) Отметим что с подавляющей вероятностью экспонента e=H(M) будет взаимно проста с φ(n). Так как найти нечетное число не являющееся взаимно простым с φ(n) сложная задача.
2) Длина вывода хеш-функции имеет значение для эффективности системы. Если мы зададим выход хеш-функции как двоичное число длиной равной длине числа n в двоичной записи, то процесс генерации подписи будет занимать примерно в два раза больше времени чем в процессе стандартной RSA подписи (так как для подписи сначала необходимо вычислить e^(−1) mod (n), а затем возвести базу S в степень e^(-1)). Проверка подписи примерно равна времени полного возведения в степень по модулю n. Сокращение времени работы GHR-схемы может быть достигнута путём сокращения длины вывода для H. Однако для обеспечения необходимой безопасности вывод H должен быть достаточно длинным. В своей работе 1999 года Дженнаро, Халеви и Рабин опубликовали экспериментальные результаты свидетельствующие о том, что для получения эквивалентной безопасности 1024-разрядной RSA-схемы, размер вывода хеш-функции должен быть около 512 бит. Для такого значения вывода хеш-функции, процесс вычисления подписи будет примерно в 1,5 раза медленнее, чем для стандартной 1024-разрядной подписи RSA. Однако в своей работе «Security Analysis of the Gennaro-Halevi-Rabin Signature Scheme» (EUROCRYPT2000) Jean-Sebastien Coron и David Naccache показали, что существуют атаки требующие увеличить длину вывода хеш-функции до 1024 бит для обеспечения безопасности соответствующей 1024-разрядной RSA-схеме.
Возможные атаки.
Предположим, что активный противник намерен подписать сообщение M1, причем ему удалось найти такое сообщение М2, что H(M2) = Z*H(M1)
Допустим теперь, что этот нападающий использует алгоритм GHR c уже сформированным открытым ключом (n, S, H) для подписания сообщения М2. В результате нападающий получает подпись ∑2 на своё сообщение M2. (∑2^H(M2)=S mod n) В этой ситуации у нападающего появляется возможность подделать подпись на сообщение Ml, вычисляя
∑1=∑2^Z mod n
поскольку
∑1^H(M1) mod n = S mod n =∑2^H(M2) mod n = ∑2^(Z*H(M1)) mod n = (∑2^Z)^H(M1) mod n
Откуда получаем необходимое равенство
∑1=∑2^Z mod n
Решить данную проблему можно если наложить на хеш-функциб специальное ограничение — её результатом должны быть только простые числа. Это исключит возможность нахождения сообщения M2 такого, что H(M2) = Z*H(M1). Хеш-функции, значения которых - простые числа, могут быть спроектированы, однако на настоящее время они довольно слабо изучены .
Еще один вариант взлома это найти сообщение M2 такое, что H(M2) = H(M1)
В этом случае подпись на сообщение M1 очевидно равна подписи на сообщение M2.
Такой вариант исключают современные требования на криптографическую стойкость хеш-функций. Задача нахождения значения M2 такого, что H(M2) = H(M1), является вычислительно невозможной задачей.
Литература.
1) «Secure Hash-and-Sign Signatures Without the Random Oracle» Rosario Gennaro, Shai Halevi, Tal Rabin. Advances in Cryptology — EUROCRYPT 1999. http://www.springerlink.com/content/bryhef8g51vwbl10/fulltext.pdf (недоступная ссылка)
2) «Security Analysis of the Gennaro-Halevi-Rabin Signature Scheme» Jean-Sebastien Coron and David Naccache. Advances in Cryptology — EUROCRYPT2000. http://www.springerlink.com/content/wgm9b431d0fnfjah/fulltext.pdf (недоступная ссылка)
3) Мир программирования «Криптография» Н. Смарт. Техносфера, 2005. 439—443 стр. ISBN 5-94836-043-1.
Content Disclaimer
Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.
- The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
- There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
- It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
- Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
- Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.