Универсальное семейство хеш-функций — различия между версиями
Yulya3102 (обсуждение | вклад) м (→Построение универсального множества хеш-функций) |
|||
Строка 32: | Строка 32: | ||
<tex dpi = "150">\left\lceil \frac{p}{m}\right\rceil-1\le\frac{p+m-1}{m}-1=\frac{p-1}{m}</tex>. | <tex dpi = "150">\left\lceil \frac{p}{m}\right\rceil-1\le\frac{p+m-1}{m}-1=\frac{p-1}{m}</tex>. | ||
− | Вероятность того, что <tex>s</tex> приводит к коллизии с <tex>r</tex> при приведении по модулю <tex>m</tex>, не превышает <tex dpi = "150">\frac{p-1}{m} | + | Вероятность того, что <tex>s</tex> приводит к коллизии с <tex>r</tex> при приведении по модулю <tex>m</tex>, не превышает <tex dpi = "150">\frac{p-1}{m}\cdot\frac{1}{p-1}=\frac{1}{m}</tex>. |
Значит, <tex dpi = "150">\forall k\ne l\in Z_p\ P(h_{a,b}(k)=h_{a,b}(l))\le\frac{1}{m}</tex>, что означает, что множество хеш-функций <tex>H_{p,m}</tex> является универсальным. | Значит, <tex dpi = "150">\forall k\ne l\in Z_p\ P(h_{a,b}(k)=h_{a,b}(l))\le\frac{1}{m}</tex>, что означает, что множество хеш-функций <tex>H_{p,m}</tex> является универсальным. |
Версия 18:16, 12 июня 2012
Определение
Качественная хеш-функция удовлетворяет (приближенно) условию простого равномерного хеширования: для каждого ключа, независимо от хеширования других ключей, равновероятно помещение его в любую из ячеек. Но это условие обычно невозможно проверить, так как распределение вероятностей, с которыми поступают входные данные, как правило, неизвестно. К тому же, вставляемые ключи могут и не быть независимыми. Если наш противник будет умышленно выбирать ключи для хеширования при помощи конкретной хеш-функции, то при некоторых реализациях хеш-таблиц может получиться так, что все ключи будут записаны в одну и ту же ячейку таблицы, что приведет к среднему времени выборки . Таким образом, любая фиксированная хеш-функция становится уязвимой. И единственный эффективный выход из данной ситуации — случайный выбор хеш-функции. Такой подход называется универсальным хешированием. Он гарантирует хорошую производительность в среднем, вне зависимости от данных, выбранных нашим противником.
Определение: |
Пусть | — конечное множество хеш-функций, которые отображают пространство ключей в диапазон . Такое множество называется универсальным, если для каждой пары ключей количество хеш-функций , для которых не превышает .
Иными словами, при случайном выборе хеш-функции из вероятность коллизии между различными ключами не превышает вероятности совпадения двух случайным образом выбранных хеш-значений из множества , которая равна .
Построение универсального множества хеш-функций
Теорема: |
Множество хеш функций , где , , , — простое число, является универсальным. |
Доказательство: |
Рассмотрим . Пусть для данной хеш-функции, . , так как , а — простое число, и не равны нулю по модулю . Значит, произведение и также отлично от нуля по модулю . Таким, образом, коллизии "по модулю " отсутствуют. Более того, каждая из возможных пар , приводят к различным парам . Чтобы доказать это, достаточно рассмотреть возможность однозначного определения и по заданным и : . Поскольку имеется только возможных пар , то имеется взаимнооднозначное соответствие между парами и парами . Таким образом, для любых при равномерном случайном выборе пары из , получаемая в результате пара может быть с равной вероятностью любой из пар с отличающимися значениями по модулю .Отсюда следует, что вероятность того, что различные ключи приводят к коллизии, равна вероятности того, что при произвольном выборе отличающихся по модулю значений и . Для данного имеется возможное значение . При этом число значений и , не превышает. Вероятность того, что Значит, приводит к коллизии с при приведении по модулю , не превышает . , что означает, что множество хеш-функций является универсальным. |
Источники
- Томас Х. Кормен, Чарльз И. Лейзерсон, Рональд Л. Ривест, Клиффорд Штайн Алгоритмы: построение и анализ — 2-е изд. — М.: «Вильямс», 2005. — с. 294. — ISBN 5-8459-0857-4