Определение
[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} \in H_{n, n}[/math], где [math] h_{a, b} = (ax+b)[/math] в поле [math] \mathbb{F}_{2^n}[/math] для любых [math]a, b \in N[/math], [math]a \ne 0[/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 \lt k [/math] получим переменную [math] x' [/math] обрезав первые [math]n-k[/math] бит переменной [math]x[/math]. Тогда для переменной [math]x'[/math] существует [math]H_{n, n}[/math], а для [math]x[/math] - соответственно [math]H_{n, k}[/math].
При [math]n \gt k [/math] получим [math]H_{k, k}[/math]. [math]H_{n, k}[/math] можно получить, обрезав значение хеш-функции из [math]H_{k, k}[/math], на первые [math]n-k[/math] бит.