Хеш-функция с контролируемыми коллизиями
- From
- Sergey Kabikov (2:5020/175.2)
- To
- All ()
- Date
- 2003-03-04T08:30:36Z
- Area
- RU.ALGORITHMS
From: "Sergey Kabikov" <kser@elsov.ru>
Hi All,
Необходимо построить функцию, y = f(x), где
0 <= x < 2^nx
0 <= y < 2^ny
ny < nx
Т.е. мощность множества значений результата меньше мощности множества значений
аргумента, т.н. функцию с коллизиями.
Основное требование к ней : для любого х, принадлежащего некоему заранее
заданному множеству {x0}, результат функции должен быть некой величиной у0, а
для любого х, не принадлежащего этому множеству - величиной, отличной от у0.
Дополнительное требование : по виду самой функции должно быть невозможно
определить правильные у0 и {x0}, т.е. должно существовать множество
приблизительно равномощных пар yi и {xi}, в идеале 2^(nx - ny) таких пар.
Поэтому типовой ответ
if x in {x0}
then y := y0
else y := random(2^ny)
не проходит.
Значения, составляющие множество {x0}, фиксированы заранее. Величину у0
допустимо определять на этапе "конструирования" функции.
В принципе, требования можно несколько ослабить :
- есть заданное множество {x0}, для любого х из которого f(x)=y0,
- есть заданное множество {x1}, для любого х из которого f(x)<>y0,
- для всех остальных значений х функция у может давать любое значение.
И еще одно пожелание - в идеале функция должна обладать свойствами
криптографического хеша : вычисление любого х из {x0} по известному у0 должно
быть вычислительно трудным (лучше всего - NP-полной задачей).
Мой пока единственный вариант таков :
- задаемся простым числом у0,
- вычисляем z = у0 + НОК {x0}
тогда искомая функция будет :
y := z modulo x
Доказательство для {x0} очевидно. Недостатки - тоже. Если хотя бы одно число
из {x1} будет произведением сомножителей, уже входящих в НОК {x0} - алгоритм
не сработает.
Прошу помощи клуба ;-)
С уважением
Сергей
P.S. Я бы отправил это письмо в RU.CRYPT, но, похоже, все серьезные математики
из "там" уже здесь ;-)
...and the eyes in his head see the world spinning round... (c) Beatles
--- ifmail v.2.15dev5
* Origin: FidoNet Online - http://www.fido-online.com (2:5020/175.2)