Семейство универсальных попарно независимых хеш-функций — различия между версиями

Материал из Викиконспекты
Перейти к: навигация, поиск
(Доказательство)
(Доказательство)
Строка 10: Строка 10:
 
Для <tex>r=(ax_1+b)\ mod\ p</tex> и <tex>r=(ax_2+b)\ mod\ p</tex>, где <tex>x_1 \ne x_2 </tex>:
 
Для <tex>r=(ax_1+b)\ mod\ p</tex> и <tex>r=(ax_2+b)\ mod\ p</tex>, где <tex>x_1 \ne x_2 </tex>:
  
<tex> P(h(x_1)=y_1 \land h(x_2)=y_2)=P(r\ mod\ 2^n = y_1 \land s\ mod\ 2^n = y_2)</tex> где <tex>r \ne s </tex>.
+
<tex> P(h(x_1)=y_1 \land h(x_2)=y_2)=P(r\ mod\ 2^n = y_1 \land s\ mod\ 2^n = y_2)</tex>, где <tex>r \ne s </tex>.
 
Число таких пар <tex>(r, s)</tex> есть <tex>p(p-1)</tex>
 
Число таких пар <tex>(r, s)</tex> есть <tex>p(p-1)</tex>
  

Версия 23:57, 2 июня 2010

Определение

[math] H_{n, k} = \{ h | h: 2^n \to 2^k \}[/math] называется семейством универсальных попарно независимых хеш-функций, если для [math] \forall x_1, x_2 \in 2^n, x_1 \ne x_2[/math] и [math] \forall y_1, y_2 \in 2^k[/math] и равномерной выборки функции [math] h \in H_{n, k} [/math] будет выполнено [math]P(h(x_1) = y_1 \land h(x_2) = y_2) = \frac{1}{2^{2k}}[/math]

Лемма

Для любого [math]n \in N [/math] существует [math]H_{n, n}[/math]

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

Рассмотрим функцию [math] h_{a, b} = (ax+b)\ mod\ p[/math] в поле [math] \mathbb{F}_{2^n}[/math] для простого [math]p \in [2^n; 2^{n+1}][/math], любых [math]a, b \in N[/math], [math]a \ne 0[/math]

Для [math]r=(ax_1+b)\ mod\ p[/math] и [math]r=(ax_2+b)\ mod\ p[/math], где [math]x_1 \ne x_2 [/math]:

[math] P(h(x_1)=y_1 \land h(x_2)=y_2)=P(r\ mod\ 2^n = y_1 \land s\ mod\ 2^n = y_2)[/math], где [math]r \ne s [/math]. Число таких пар [math](r, s)[/math] есть [math]p(p-1)[/math]

Можно записать следующую оценку:

[math]\frac{1}{p(p-1)} \left(\frac{p}{2^n} \right)^2 \le P(r\ mod\ 2^n = y_1 \land s\ mod\ 2^n=y_2) \le \frac{1}{p(p-1)} \left( \frac{p}{2^n}+1 \right)^2 [/math]

[math] P(h(x_1)=y_1 \land h(x_2)=y_2) = \frac{1}{2^{2k}}[/math]

[math]h_{a, b} \in H_{n, n}[/math]

Теорема

Для любых [math]n, k \in N[/math] существует [math]H_{n, k}[/math]

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

Построим [math]H_{n, k}[/math] следующим образом:

При [math]n=k[/math] существование [math]H_{n, k}[/math] следует из леммы.

При [math]n \gt k [/math] получим переменную [math] x' [/math] обрезав первые [math]n-k[/math] бит переменной [math]x[/math]. Тогда для переменной [math]x'[/math] существует [math]H_{k, k}[/math], а для [math]x[/math] - соответственно [math]H_{n, k}[/math].

При [math]n \lt k [/math] Сперва получим [math]H_{k, k}[/math]. [math]H_{n, k}[/math] можно получить отбросив у значений хеш-функций из [math]H_{k, k}[/math] первые [math]n-k[/math] бит.