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

Материал из Википедии — свободной энциклопедии
Перейти к: навигация, поиск

Односторонняя функция с потайным входом (англ. trapdoor function) — это функция, которая легко вычисляется в одном направлении, но трудно вычисляется в обратном без специальной информации (секрета), называемой «лазейкой» или «потайным входом». Односторонние функции с потайным входом широко используются в криптографии.

Данная функция была введена в 1976 году Уитфилдом Диффи, Мартином Хеллманом и Ральфом Мёрклом. Главное отличие от обычной односторонней функции заключается в том, что функции с потайным входом не обязательно теряют информацию. Примерами применения таких функций могут служить алгоритм RSA, функция Рабина, схемы Эль-Гамаля и другие.

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

Определение[править | править исходный текст]

Функция

F:\{0,1\}^{l(n)} \times \{0,1\}^{n} \xrightarrow[]{} \{0,1\}^{m(n)}

\{0,1\}^{l(n)} - множество открытых ключей.

\{0,1\}^{m(n)} - отображаемый элемент, состоящий из n битов.

называется односторонней с потайным входом, если

  1. Она является односторонней.
  2. Существует эффективный алгоритм, который при заданных открытом ключе Y, сообщении M и значении функции вычисляет M‘ такое, что F(M) = F(M‘) для некоторого ключа Z.
  3. Для данного сообщения M и функции F(M) трудно найти сообщение M‘≠M такое, что F(M) = F(M‘).

Иначе говоря, если F — односторонняя функция с потайным входом, тогда существует секретная информация Y, такая, что при известных F(х) и Y легко вычислить x. Рассмотрим замок и его ключ. Можно изменить состояние замка с открытого на закрытое, не прибегая к использованию ключа, защелкнув дужку замка. Это простая задача. Однако, чтобы легко открыть замок, требуется ключ. В данном примере ключом является «лазейка».

История[править | править исходный текст]

Понятие односторонней функции с потайным входом было введено в середине 1970-х годов после публикации Уитфилдом Диффи, Мартином Хеллманом и Ральфом Мёрклом статьи об асимметричных методах шифрования (шифрование с открытым ключом). Именно Диффи и Хеллман ввели данный термин[1].

Статья описывала новый способ для минимизации необходимости передачи ключей по защищенным каналам, а также в ней была разобрана криптографическая система, которая может использоваться в создании цифровой подписи[2].

Авторы также показали, что одностороняя функция с потайным входом используется в криптосистемах с открытым ключом и в устройстве цифровой подписи[3]. Криптосистема с открытым ключом — система, в которой открытый ключ передается по незащищённому каналу. Смысл цифровой подписи заключается в том, что при пересылке подписанного сообщения от Алисы к Бобу, Боб может убедиться в том, что сообщение действительно было послано Алисой.

Благодаря односторонним функциям с потайным входом могут быть реализованы различные шифры с потайным входом. Эти шифры являются криптозащищенными[1].

Было предложено несколько классов функций, но скоро стало понятно, что подходящие функции труднее найти, чем считалось изначально. Например, сначала предполагалось использовать функции, основанные на задаче суммы подмножества. Вскоре выяснилось, что этот способ неприемлем.

В 2005 году самыми подходящими кандидатами в односторонние функции с потайным входом являлись функции из классов RSA и Рабина [4]. Эти функции используют возведение в степень по модулю составного числа, и обе они основаны на задаче факторизации целых чисел.

Развитие односторонних функций с потайным входом[править | править исходный текст]

Односторонние функции с потайным входом, допускающие потери[править | править исходный текст]

Данную функцию впервые ввели Крис Пейкерт (англ. Chris Peikert) и Брент Уотерс (англ. Brent Waters)[5]. Они основаны на идее повреждения значительной части информации[6].

Такие функции имеют два свойства:

  1. Повторяют работу обычной односторонней функции с потайным входом, то есть при наличии «лазейки» позволяет эффективно вычислить x по значению F(x).
  2. Теряют часть информации о входе, тогда у выхода F(x) существует много прообразов.

Основная особенность в том, что эти два свойства становятся фактически неразличимыми[6]. Зная только зашифрованное сообщение F(x), ни один криптоаналитик не может сказать, какая функция была использована — с потерями или без.

Односторонние функции с потайным входом, допускающие потери применяются во многих схемах шифрования. В их число входят: детерминированное шифрование с открытым ключом, защита от атак выборочного открытого текста и другие. Также эти функции могут использоваться в псевднослучайных генераторах[7].

Односторонние функции с потайным входом «Все, кроме одного»[править | править исходный текст]

Для исследований атак, проводимых на основе подобранного шифротекста, были введены односторонние функции с потайным входом «Все, кроме одного»[8].

Каждая функция имеет дополнительный аргумент, называемый ветвью. Все ветви являеются односторонними функциями с потайным входом с одной «лазейкой», за исключением одной — которая является ветвью с потерями. Данная ветвь определяется как параметр функции, причём его значение — скрыто (с точки зрения вычисления) описанием полученной функции.

Применение односторонних функций с потайным входом[править | править исходный текст]

RSA[править | править исходный текст]

Возьмем число n = p * q, где p и q принадлежат множеству простых чисел. Считается, что для данного числа n вычисление p и q является математически трудной задачей. Функция шифрования RSA — E(m) = m^e \mod n, где e — взаимнопростое с (p-1)(q-1). Числа p и q являются потайным входом, зная которые вычислить обратную функцию E^{-1} легко. На сегодняшний день лучшей атакой на RSA является факторизация числа n[9][10].

Функция Рабина[править | править исходный текст]

Рассмотрим функцию F(x, n) = x^2 mod(n), где n = p*q, а p и q принадлежат множеству простых чисел. Рабин показал, что вычислить функцию f^{-1} легко тогда и только тогда, когда разложение на множители составного числа из двух простых является простой задачей[11].

Схема Эль-Гамаля[править | править исходный текст]

Данная схема была предложена Тахером Эль-Гамалем в 1984 году. Она основывается на задаче дискретного логарифмирования[12].

Алгоритм

  1. Алиса выбирает простое чисто p и произвольное число a.
  2. Алиса вычисляет свой открытый ключ (а, b), где b=a^{c}, 1<c<p
  3. Боб выбирает 1<d<p и шифрует сообщение m: (m_1,m_2) = (a^d, m*b^d)
  4. Алиса расшифровывает сообщение m = m_2*(m_1^{c})^{-1}.

Криптосистема Polly Cracker[править | править исходный текст]

Алгоритм[13]

  1. Алиса случайным образом выбирает вектор в конечном поле.
  2. Алиса строит полиномы, которые в точке, задаваемой этим вектором, обращаются в ноль.
  3. Боб генерирует сумму p=\sum {q_i*b_i}
  4. Боб посылает p+m

Другие примеры[править | править исходный текст]

Известно, что функции, связанные с задачей дискретного логарифмирования, не являются односторонними функциями с потайным входом, потому что нет никакой информации о «лазейке», которая позволила бы эффективно вычислять дискретный логарифм. Однако, задача дискретного логарифмирования может использоваться в качестве основы для «лазейки», например, вычислительная задача Диффи-Хеллмана (CDH) и его разновидности. Алгоритм цифровой подписи основан на CDH.

Односторонние функции с потайным входом имеют очень специфическое применение в криптографии и их не нужно путать с бэкдором (часто одно понятие подменяется другим, но это неправильно). Бэкдор — механизм, который намеренно добавляется к шифровальному алгоритму (например, алгоритм генерации ключевых пар, алгоритм цифровой подписи, и т. д.) или к операционным системам, позволяя одному или нескольким посторонним лицам обходить или подрывать безопасность системы.

См. также[править | править исходный текст]

Примечания[править | править исходный текст]

  1. 1 2 Diffie, Hellman, 1976, p. 652
  2. Diffie, Hellman, 1976, p. 644
  3. Diffie, Hellman, 1976, pp. 647-649
  4. Katja Schmidt-Samoa A New Rabin-type Trapdoor Permutation Equivalent to Factoring and Its Applications (англ.) // Electronic notes in theoretical computer science. — Elsevier, 2006. — Vol. 157. — P. 79-94. — ISSN 1571-0661. — DOI:10.1016/j.entcs.2005.09.039
  5. Peikert, Waters, 2008, pp. 6
  6. 1 2 Peikert, Waters, 2008, pp. 8
  7. Peikert, Waters, 2008, pp. 15-17
  8. Peikert, Waters, 2008, pp. 13-14
  9. Daniel Lerch Hostalot (2007). «Factorization Attack to RSA» (en). Hakin9.
  10. S. Goldwasser, M. Bellaret (2008). «Lecture Notes on Cryptography» (en).
  11. Katja Schmidt-Samoa (2005). «A New Rabin-type Trapdoor Permutation Equivalent to Factoring and Its Applications» (en).
  12. Taher ElGamal (1985). «A Public-Key Cryptosystem and a Signature Scheme Based on Discrete Logarithms». IEEE Transactions on Information Theory 31 (4): 469-472. DOI:10.1109/TIT.1985.1057074.
  13. Neal Koblitz, 2004, pp. 105-106

Литература[править | править исходный текст]