Problem ze znalezieniem pazurów

Problem znajdowania pazurów jest klasycznym problemem teorii złożoności , mającym kilka zastosowań w kryptografii . Krótko mówiąc, mając dwie funkcje f , g , postrzegane jako wyrocznie , problem polega na znalezieniu x i y, takich jak f ( x ) = g ( y ). Para ( x , y ) jest wtedy nazywana pazurem . Niektóre problemy, zwłaszcza w kryptografii, najlepiej rozwiązuje się, gdy są postrzegane jako problem ze znalezieniem pazurów, stąd każde ulepszenie algorytmiczne rozwiązania problemu ze znalezieniem pazurów zapewnia lepszy atak na prymitywy kryptograficzne, takie jak funkcje mieszające .

Definicja

Niech będą skończonymi zbiorami i sol dwie funkcje. Para nazywana jest pazurem , jeśli . Problem ze znalezieniem pazura definiuje się jako znalezienie takiego pazura, jeśli taki istnieje.

Jeśli spojrzymy na funkcje losowe, spodziewamy się istnienia pazura fa , . Dokładniej, są dokładnie pary postaci z ; prawdopodobieństwo, że taka para jest pazurem wynosi . Więc jeśli , oczekiwana liczba pazurów wynosi co najmniej 1.

Algorytmy

Jeśli używane są klasyczne komputery, najlepszy algorytm jest podobny do ataku Meet-in-the-middle , opisanego po raz pierwszy przez Diffiego i Hellmana . Algorytm działa w następujący sposób: załóż . Dla każdego ( tabeli skrótów indeksowanej przez . Następnie dla każdego w górę tabeli w } Jeśli taki indeks istnieje, znaleźliśmy pazur. Takie podejście wymaga O }

Jeśli używane są komputery kwantowe , Seiichiro Tani pokazał, że pazur można znaleźć w złożoności .

Shengyu Zhang wykazał, że asymptotycznie te algorytmy są najbardziej wydajne z możliwych.

Aplikacje

Jak zauważono, większość zastosowań problemu znajdowania pazurów pojawia się w kryptografii . Przykłady obejmują: