Односторонние функции и псевдослучайные генераторы

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

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

Определения

  • Функция [math] \epsilon(n) [/math] называется пренебрежимо малой, если [math] \forall c \gt 0 [/math] и достаточно больших [math] n:~\epsilon(n) = o(n^{-c}) [/math]. Пример: [math] 1/2^n [/math].
  • Функция [math] f [/math] называется односторонней, если для любого полиномиального вероятностного алгоритма [math] A [/math] существует пренебрежимо малая функция [math] \epsilon (n)[/math] такая, что для любого [math] n [/math] вероятность [math] P_{A}(A(f(x)) = x) \lt \epsilon (n)[/math] по всем [math] x \in \{0,1\}^n [/math].

Гипотеза

  • Односторонние функции существуют.

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

  1. [math] f(x,y) = xy [/math]
  2. RSA: [math] f_{e,n}(x) = x^e \bmod n [/math]
  3. Функция Рабина: [math] f(x,n) = x^2 \bmod n [/math]

Теорема

Если P = NP, то не существует односторонних функций.

Доказательство:

Рассмотрим язык [math] L = \{\langle a,y \rangle ~|~ \exists x, a [/math] - префикс [math] x, f(x) = y \} [/math].

[math] L \in NP [/math], однако [math] x [/math] легко восстанавливается за полином.

Определение

Система шифрования называется вычислительно безопасной, если для любого алгоритма [math] A [/math], удовлетворяющего классу BPP выполнено:

вероятность [math] P(A(E_{k}(x)) = (i,b) \wedge x_{i} = b) \le 1/2 + \epsilon(n) [/math] по всем [math] k \in K = \{0,1\}^n, x \in \{0,1\}^m [/math], где функция [math] \epsilon(n) [/math] - пренебрежимо мала.

Теорема

Если существуют односторонние функции, то [math] \forall c ~\exists \langle E,D \rangle[/math] -- вычислительно безопасная схема: [math] |k| = n, |x| = n^c [/math]

Без доказательства.

Псевдослучайные генераторы

Определение

Слово [math] x: |x| = n [/math] называется с - случайным, если его нельзя вывести программой на языке Pascal длиной не более [math] cn [/math], где [math] 0 \lt c \lt 1 [/math].

Определение

Функция [math] g: \{0,1\}^n \to \{0,1\}^m, m \gt n [/math] называется псевдослучайным генератором, если [math] \forall A [/math], удовлетворяющего классу BPP, разность вероятностей [math] |P(A(g(x)) = 1) - P(A(y) = 1)| [/math] по всем [math] x \in \{0,1\}^n, y \in \{0,1\}^m [/math] пренебрежимо мала.

Теорема

Если существуют односторонние функции, то существуют псевдослучайные генераторы.

Без доказательства.

Определение

Функция [math] g: \{0,1\}^n \to \{0,1\}^m, m \gt n [/math] называется непредсказуемой, если [math] \forall A [/math], удовлетворяющего классу BPP, вероятность [math] P(A(y_{1},...,y_{i-1},1^n) = y_{i} \wedge y = g(x)) \le 1/2 + \epsilon(n) [/math] по всем [math] x \in \{0,1\}^n [/math], где функция [math] \epsilon(n) [/math] -- пренебрежимо мала.

Теорема

Функция [math] g [/math] является случайным генератором тогда и только тогда, когда [math] g [/math] - непредсказуемая.

Без доказательства.