Квантовый алгоритм для решения задачи поиска коллизий: различия между версиями

Перейти к навигации Перейти к поиску
м
(Новая страница: «== Постановка задачи == Функция F называется функцией типа «r к 1», если если каждый элемент…»)
 
 
(не показано 6 промежуточных версий этого же участника)
Строка 1: Строка 1:
== Постановка задачи ==
== Постановка задачи ==
Функция F называется функцией типа «r к 1», если если каждый элемент ее образа имеет ровно r различных прообразов.
Функция F называется ''функцией типа «r к 1»'', если если каждый элемент ее образа имеет ровно r различных прообразов.


'''Дано:''' функция F типа «r к 1».
'''Дано:''' функция F типа «r к 1».
'''Требуется:''' найти такие x1 и x2, что F(x1) = F(x2).
 
'''Требуется:''' найти такие <math>x_1</math> и <math>x_2</math>, что <math>F(x_1) = F(x_2)</math>.


== Основные результаты ==
== Основные результаты ==
Представленный здесь алгоритм находит коллизии в произвольной функции F типа «r к 1», выполнив всего O(3N/r) ожидаемых оценок F. Алгоритм использует функцию как «черный ящик», то есть единственное, что требуется алгоритму – это способность оценить функцию. В предположении, что функция задается черным ящиком, алгоритм является оптимальным [1] и более эффективным, чем наилучший возможный классический алгоритм, имеющий сложность в запросах Q(\/N/r). Этот результат точно сформулирован в следующей теореме и следствии.
Представленный здесь алгоритм находит коллизии в произвольной функции F типа «r к 1», выполнив всего <math>O(\sqrt[3]{N/r})</math> ожидаемых оценок F. Алгоритм использует функцию как «черный ящик», то есть единственное, что требуется алгоритму – это способность оценить функцию. В предположении, что функция задается черным ящиком, алгоритм является оптимальным [1] и более эффективным, чем наилучший ''возможный'' классический алгоритм, имеющий сложность в запросах <math>\Omega(\sqrt{N/r})</math>. Этот результат точно сформулирован в следующей теореме и следствии.




Теорема 1. Пусть дана функция типа «r к 1» F: X ! Y, r > 2, и целое число 1 < k < N = jXj. Алгоритм Collision(F, k) возвращает коллизию после ожидаемого числа O(k+pN/(rk)) оценок F с использованием 0(k) ячеек памяти. В частности, при k = p3N/r алгоритм Collision(F, k) использует O(3N/r) ожидаемых оценок и ячеек памяти.
'''Теорема 1. Пусть дана функция типа «r к 1» <math>F: X \to Y, r \ge 2</math>, и целое число <math>1 \le k \le N = |X|</math>. Алгоритм Collision(F, k) возвращает коллизию после ожидаемого числа <math>O(k + \sqrt{N/(rk)})</math> оценок F с использованием <math>\Theta(k)</math> ячеек памяти. В частности, при <math>k = \sqrt[3]{N/r}</math> алгоритм Collision(F, k) использует <math>O(\sqrt[3]{N/r})</math> ожидаемых оценок F и <math>\Theta(\sqrt[3]{N/r})</math> ячеек памяти.'''




Следствие 2. Существует квантовый алгоритм, способный найти коллизию в произвольной функции F: X ! Y для любого значения r > 2, используя объем памяти S и ожидаемое число O(T) оценок F для каждого 1 < S < T при условии, что
'''Следствие 2'''. Существует квантовый алгоритм, способный найти коллизию в произвольной функции типа «r к 1» <math>F: X \to Y</math> для любого <math>r \ge 2</math>, используя объем памяти S и ожидаемое число O(T) оценок F для каждого <math>1 \le S \le T</math> при условии <math>S T^2 \ge |F(X)|</math>, где F(X) обозначает образ F.
ST2 > jF(X)j,
где F(X) обозначает образ F.




Алгоритм использует в качестве процедуры версию алгоритма поиска Гровера. Если дана функция H с размером области n и цель y, Grover(H, y) возвращает x, такой, что H(x) = y, за ожидаемое число O(pn) оценок H.
Алгоритм использует в качестве процедуры версию алгоритма поиска Гровера. Если дана функция H с размером области определения n и цель y, алгоритм Grover(H, y) возвращает x, такой, что H(x) = y, за ожидаемое число <math>O(\sqrt{n})</math> оценок H.




Collision (F,k)
'''Collision (F, k)'''


1. Выбрать произвольное подмножество K С X мощности k. Построить таблицу L размера k, каждый элемент которой содержит отдельную пару (x, F(x)), x 2 K.
1. Выбрать произвольное подмножество <math>K \subseteq X</math> мощности k. Построить таблицу L размера k, каждый элемент которой содержит отдельную пару (x, F(x)), <math>x \in K</math>.


2. Отсортировать L в соответствии со второй записью в каждом элементе L.
2. Отсортировать L в соответствии со второй записью в каждом элементе L.


3. Проверить, содержит ли L коллизию – то есть существуют ли отдельные элементы (X0;F(X0));(X1;F(X1)) 2 L, для которых F(X0) = F(x1). Если да, перейти к шагу 6.
3. Проверить, содержит ли L коллизию – то есть существуют ли различные элементы <math>(x_0,F(x_0)),(x_1, F(x_1)) \in L</math>, для которых <math>F(x_0) = F(x_1)</math>. Если да, перейти к шагу 6.


4. Вычислить x1 = Grover(H; 1), где H:X!f0;1g обозначает функцию, определяемую следующим образом: H(x) = 1 тогда и только тогда, когда существует X0 2 K так, что (x0; F(x)) 2 L, но x =6x0.  (Заметим, что x0 является уникальным, если таковой существует, поскольку мы уже проверили, что в L нет коллизий).
4. Вычислить <math>x_1 = Grover(H, 1)</math>, где <math>H: X \to \{ 0, 1 \}</math> обозначает функцию, определяемую следующим образом: H(x) = 1 тогда и только тогда, когда существует <math>x_0 \in K</math>, такой, что <math>(x_0, F(x)) \in L</math>, но <math>x \ne x_0</math>.  (Заметим, что если <math>x_0</math> существует, то он является уникальным, поскольку мы уже проверили, что в L нет коллизий).


5. Find(x0;F(x1)) 2 L.
5. Найти <math>(x_0, F(x1)) \in L</math>.


6. Вывести результат в виде коллизии FX0; X1G.
6. Вывести результат в виде коллизии <math> \{ x_0, x_1 \} </math>.


== Применение ==
== Применение ==
Эта задача представляет особый интерес для криптологии, поскольку некоторые функции, называемые хэш-функциями, применяются в различных криптографических протоколах. Безопасность этих протоколов в значительной степени зависит от предполагаемой сложности обнаружения коллизий в таких функциях.
Эта задача представляет особый интерес для криптологии, поскольку некоторые функции, называемые ''хэш-функциями'', применяются в различных криптографических протоколах. Безопасность этих протоколов в значительной степени зависит от предполагаемой сложности обнаружения коллизий в таких функциях.


== См. также ==
== См. также ==
4501

правка

Навигация