Односторонняя функция

Функция, используемая в компьютерной криптографии
Нерешенная проблема в информатике :
Существуют ли односторонние функции?

В информатике односторонняя функция — это функция , которую легко вычислить на каждом входе, но трудно инвертировать , имея изображение случайного входа. Здесь «легко» и «сложно» следует понимать в смысле теории вычислительной сложности , в частности теории задач полиномиального времени . Это не имеет ничего общего с тем, является ли функция однозначной ; нахождение любого одного входа с желаемым изображением считается успешной инверсией. (См. § Теоретическое определение ниже.)

Существование таких односторонних функций все еще остается открытой гипотезой . Их существование доказало бы, что классы сложности P и NP не равны , тем самым разрешив самый главный нерешенный вопрос теоретической информатики. [1] : ex. 2.2, page 70  Обратное утверждение, как известно, не является верным, то есть существование доказательства того, что P ≠ NP, не будет напрямую подразумевать существование односторонних функций. [2]

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

Теоретическое определение

Функция f  : {0, 1} * → {0, 1} * является односторонней, если f может быть вычислена с помощью полиномиального алгоритма, но любой полиномиальный рандомизированный алгоритм , который пытается вычислить псевдообратную функцию для f, преуспевает с пренебрежимо малой вероятностью. (Верхний индекс * означает любое количество повторений, см. звезду Клини .) То есть для всех рандомизированных алгоритмов , всех положительных целых чисел c и всех достаточно больших n = length( x ), Ф {\displaystyle F} Ф {\displaystyle F}

Пр [ ф ( Ф ( ф ( х ) ) ) = ф ( х ) ] < н с , {\displaystyle \Pr[f(F(f(x)))=f(x)]<n^{-c},}

где вероятность зависит от выбора x из дискретного равномерного распределения на {0, 1}  n , а случайность . [3] Ф {\displaystyle F}

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

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

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

Односторонняя функция с люком или перестановка с люком — это особый вид односторонней функции. Такую функцию трудно инвертировать, если неизвестна некоторая секретная информация, называемая люком .

Функция хеширования без коллизий f является односторонней функцией, которая также устойчива к коллизиям ; то есть никакой рандомизированный алгоритм полиномиального времени не может найти коллизию — различные значения x , y, такие, что f ( x ) = f ( y ) — с существенной вероятностью. [4]

Теоретические следствия односторонних функций

Если f — односторонняя функция, то инверсия f будет проблемой, выход которой трудно вычислить (по определению), но легко проверить (просто вычислив f на ней). Таким образом, существование односторонней функции подразумевает, что FP  ≠  FNP , что, в свою очередь, подразумевает, что P ≠ NP. Однако P ≠ NP не подразумевает существование односторонних функций.

Существование односторонней функции подразумевает существование многих других полезных концепций, включая:

Кандидаты на односторонние функции

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

Умножение и разложение на множители

Функция f принимает в качестве входных данных два простых числа p и q в двоичной системе счисления и возвращает их произведение. Эту функцию можно «легко» вычислить за время O ( b 2 ) , где b — общее количество бит входных данных. Инвертирование этой функции требует нахождения множителей заданного целого числа N . Лучшие известные алгоритмы факторизации работают за время, где b — количество бит, необходимое для представления N . О ( эксп 64 9 б ( бревно б ) 2 3 ) {\displaystyle O\left(\exp {\sqrt[{3}]{{\frac {64}{9}}b(\log b)^{2}}}\right)}

Эту функцию можно обобщить, позволив p и q варьироваться в подходящем наборе полупростых чисел . Обратите внимание, что f не является односторонней для случайно выбранных целых чисел p , q > 1 , поскольку произведение будет иметь 2 в качестве множителя с вероятностью 3/4 (потому что вероятность того, что произвольное p нечетно, равна 1/2, и то же самое касается q , поэтому если они выбраны независимо, вероятность того, что оба нечетны, равна 1/4; следовательно, вероятность того, что p или q четны, равна 1 − 1/4 = 3/4 ).

Функция Рабина (модульное возведение в квадрат)

Функция Рабина , [1] : 57  или возведение в квадрат по модулю , где p и q — простые числа, считается набором односторонних функций. Запишем Н = п д {\displaystyle N=pq}

Рабин Н ( х ) х 2 мод Н {\displaystyle \operatorname {Рабин} _{N}(x)\triangleq x^{2}{\bmod {N}}}

для обозначения возведения в квадрат по модулю N : конкретный член набора Рабина . Можно показать, что извлечение квадратных корней, т. е. обращение функции Рабина, вычислительно эквивалентно факторизации N (в смысле полиномиальной редукции ). Следовательно, можно доказать, что набор Рабина является односторонним тогда и только тогда, когда факторизация является сложной. Это также справедливо для особого случая, в котором p и q имеют одинаковую длину в битах. Криптосистема Рабина основана на предположении, что эта функция Рабина является односторонней.

Дискретная экспонента и логарифм

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

Пусть G — конечная абелева группа мощности n . Обозначим ее групповую операцию умножением. Рассмотрим примитивный элемент αG и другой элемент βG. Задача дискретного логарифмирования состоит в том, чтобы найти положительное целое число k , где 1 ≤ k ≤ n , такое, что:

α к = α α α к т я м е с = β {\displaystyle \alpha ^{k}=\underbrace {\alpha \cdot \alpha \cdot \ldots \cdot \alpha } _{k\;\mathrm {times} }=\beta }

Целое число k , которое решает уравнение α k = β, называется дискретным логарифмом β по основанию α . Записывается k = log α β .

Популярным выбором для группы G в дискретной логарифмической криптографии являются циклические группы ( Z p ) × (например, шифрование Эль-Гамаля , обмен ключами Диффи–Хеллмана и алгоритм цифровой подписи ) и циклические подгруппы эллиптических кривых над конечными полями ( см. криптография на эллиптических кривых ).

Эллиптическая кривая — это набор пар элементов поля, удовлетворяющих y 2 = x 3 + ax + b . Элементы кривой образуют группу при операции, называемой «сложение точек» (которая не совпадает с операцией сложения поля). Умножение kP точки P на целое число k ( т. е . групповое действие аддитивной группы целых чисел) определяется как повторное сложение точки с собой. Если известны k и P , легко вычислить R = kP , но если известны только R и P , предполагается, что трудно вычислить k .

Криптографически безопасные хэш-функции

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

Другие кандидаты

Другие кандидаты на роль односторонних функций включают сложность декодирования случайных линейных кодов , сложность некоторых решеточных задач и задачу о сумме подмножеств ( ранцевая криптосистема Наккаша–Стерна ).

Универсальная односторонняя функция

Существует явная функция f, которая, как было доказано, является односторонней, тогда и только тогда, когда существуют односторонние функции. [5] Другими словами, если какая-либо функция является односторонней, то f также является односторонней . Поскольку эта функция была первой комбинаторно полной односторонней функцией, которая была продемонстрирована, она известна как «универсальная односторонняя функция». Таким образом, задача нахождения односторонней функции сводится к доказательству — возможно, неконструктивному — того, что одна такая функция существует.

Также существует функция, которая является односторонней, если полиномиально ограниченная сложность Колмогорова в среднем умеренно сложна. Поскольку существование односторонних функций подразумевает, что полиномиально ограниченная сложность Колмогорова в среднем умеренно сложна, функция является универсальной односторонней функцией. [6]

Смотрите также

Ссылки

  1. ^ ab Oded Goldreich (2001). Основы криптографии: Том 1, Основные инструменты (черновик доступен на сайте автора). Cambridge University Press. ISBN  0-521-79172-3 . См. также wisdom.weizmann.ac.il.
  2. ^ Голдвассер, С. и Белларе, М. «Конспект лекций по криптографии». Летний курс по криптографии, Массачусетский технологический институт, 1996–2001.
  3. ^ Многие авторы рассматривают это определение как сильную одностороннюю функцию. Слабая односторонняя функция может быть определена аналогично, за исключением того, что вероятность того, что каждый противник не сможет инвертировать f, заметна. Однако можно построить сильные односторонние функции на основе слабых. Грубо говоря, сильные и слабые версии односторонней функции теоретически эквивалентны. См. Goldreich's Foundations of Cryptography, т. 1, гл. 2.1–2.3. Ф {\displaystyle F}
  4. ^ Рассел, А. (1995). «Необходимые и достаточные условия для хеширования без коллизий». Журнал криптологии . 8 (2): 87–99 . doi :10.1007/BF00190757. S2CID  26046704.
  5. ^ Левин, Леонид А. (январь 2003 г.). «Сказка об односторонних функциях». Проблемы передачи информации . 39 (39): 92– 103. arXiv : cs.CR/0012023 . doi :10.1023/A:1023634616182.
  6. ^ Лю, Яньи; Пасс, Рафаэль (2020-09-24). «Об односторонних функциях и колмогоровской сложности». arXiv : 2009.11514 [cs.CC].

Дальнейшее чтение

Взято с "https://en.wikipedia.org/w/index.php?title=Односторонняя_функция&oldid=1263993374"