Проблема поиска когтей

Проблема поиска когтя — классическая проблема в теории сложности , имеющая несколько приложений в криптографии . Короче говоря, если заданы две функции f , g , рассматриваемые как оракулы , задача состоит в том, чтобы найти x и y, такие как f ( x ) = g ( y ). Пара ( x , y ) тогда называется когтем . Некоторые проблемы, особенно в криптографии, лучше всего решаются, если рассматривать их как проблему поиска когтя, поэтому любое алгоритмическое улучшение решения проблемы поиска когтя обеспечивает лучшую атаку на криптографические примитивы, такие как хэш-функции .

Определение

Пусть будут конечными множествами, и , две функции. Пара называется клешней , если . Задача нахождения клешни определяется как нахождение такой клешни, если она существует. А , Б , С {\displaystyle А,Б,В} ф : А С {\displaystyle f:A\to C} г : Б С {\displaystyle g:B\to C} ( х , у ) А × Б {\displaystyle (x,y)\in A\times B} ф ( х ) = г ( у ) {\displaystyle f(x)=g(y)}

Если рассматривать как случайные функции, то мы ожидаем, что коготь будет существовать, если и только если . Точнее, существует ровно пар вида с ; вероятность того, что такая пара является когтем, равна . Так что если , ожидаемое количество когтей будет не менее 1. ф , г {\displaystyle f,g} | А | | Б | | С | {\displaystyle |A|\cdot |B|\geq |C|} | А | | Б | {\displaystyle |А|\cdot |Б|} ( х , у ) {\displaystyle (x,y)} х А , у Б {\displaystyle x\in A,y\in B} 1 / | С | {\displaystyle 1/|С|} | А | | Б | | С | {\displaystyle |A|\cdot |B|\geq |C|}

Алгоритмы

Если используются классические компьютеры, то лучший алгоритм похож на атаку Meet-in-the-middle , впервые описанную Диффи и Хеллманом . [1] Алгоритм работает следующим образом: предположим . Для каждого сохраним пару в хэш-таблице, индексированной по . Затем для каждого найдем таблицу по адресу . Если такой индекс существует, мы нашли коготь. Этот подход требует времени и памяти . | А | | Б | {\displaystyle |A|\leq |B|} х А {\displaystyle x\in A} ( ф ( х ) , х ) {\displaystyle (f(x),x)} ф ( х ) {\displaystyle f(x)} у Б {\displaystyle y\in B} г ( у ) {\displaystyle g(y)} О ( | А | + | Б | ) {\displaystyle O(|A|+|B|)} О ( | А | ) {\displaystyle O(|A|)}

Сейитиро Тани показал, что при использовании квантовых компьютеров коготь можно найти в сложности

| А | | Б | 3 {\displaystyle {\sqrt[{3}]{|A|\cdot |B|}}} если и | А | | Б | < | А | 2 {\displaystyle |A|\leq |B|<|A|^{2}}

| Б | {\displaystyle {\sqrt {|B|}}} если . [2] | Б | | А | 2 {\displaystyle |B|\geq |A|^{2}}

Шэнъюй Чжан показал, что асимптотически эти алгоритмы являются наиболее эффективными из возможных. [3]

Приложения

Как уже отмечалось, большинство приложений задачи поиска когтей встречаются в криптографии . Примеры включают:

Ссылки

  1. ^ Диффи, Уитфилд; Хеллман, Мартин Э. (июнь 1977 г.). «Исчерпывающий криптоанализ стандарта шифрования данных NBS» (PDF) . Компьютер . 10 (6): 74–84. doi :10.1109/CM.1977.217750.
  2. ^ Тани, Сейитиро (ноябрь 2009 г.). «Алгоритмы поиска когтей с использованием квантового блуждания». Теоретическая информатика . 410 (50): 5285–5297. arXiv : 0708.2584 . doi : 10.1016/j.tcs.2009.08.030.
  3. ^ Чжан, Шэнъюй (2005). «Promised and Distributed Quantum Search». Computing and Combinatorics . Lecture Notes in Computer Science. Vol. 3595. Springer Berlin Heidelberg. pp. 430–439. doi :10.1007/11533719_44. ISBN 978-3-540-28061-3.
Взято с "https://en.wikipedia.org/w/index.php?title=Проблема_с_поиском_когтей&oldid=1156919373"