Хеш-функция с контролируемыми коллизиями

From
Sergey Kabikov (2:5020/175.2)
To
Vladimir Vassilevsky ()
Date
2003-03-04T15:15:46Z
Area
RU.ALGORITHMS
From: "Sergey Kabikov" <kser@elsov.ru>

Tue Mar 04 2003 15:00, Vladimir Vassilevsky wrote to Sergey Kabikov:


 SK>> Необходимо построить функцию, y = f(x), где
 SK>>  0 <= x < 2^nx
 SK>>  0 <= y < 2^ny
 SK>>  ny < nx
 SK>> Т.е. мощность множества значений результата меньше мощности множества
 SK>> значений аргумента, т.н. функцию с коллизиями.
 VV>  Имеется наперед заданное множество ключей. Требуется функция F(ключ), 
 VV>  которая == 0 для любого из ключей, и гарантированно != 0 для всех прочих
 VV>  случаев. Не так ли? :) 
Ну вот, прятался, прятался - а меня сразу и вычислили ;-)
Почти так. За вычетом двух мелочей :
- не нулю (никаких сравнений с константой !), а некоему значению, которое
потом будет использовано как ключ для расшифрования. Ergo требуемое значение
у0 останется неизвестным, пока не получен хотя бы один валидный х.
- "изначальное" множество допустимых значений, входящих в {x0}, я
действительно могу выбрать произвольно. Например, "все простые числа в
диапазоне от .. до .., арктангенс логарифма пятой степени которых лежит в
диапазоне от 20 до 22 градусов" ;-) Но потом мне надо опеределенные значения
"поштучно" из этого множества вычеркивать. Вся эта затея - попытка найти
замену табличному blacklist-у, который должен блокировать краденые ключи.

 SK>> Дополнительное требование : по виду самой функции должно быть невозможно
 SK>> определить правильные у0 и {x0}, т.е. должно существовать множество
 SK>> приблизительно равномощных пар yi и {xi}, в идеале 2^(nx - ny) таких
 SK>> пар.  Поэтому типовой ответ
 SK>>   if x in {x0}
 SK>>   then y := y0
 SK>>   else y := random(2^ny)
 SK>> не проходит.
 VV>  Рабоче - крестьянский метод:
 VV>  Можно построить { x1 } = Encrypt( {x0} )
 VV>  Соответственно проверять if(Encrypt(x)) in { x1 }
 VV>  В качестве Encrypt использовать RSA или другой несимметричный
 VV> криптоалгоритм.
Смеесси ? Отломают не шифрование, а последующую проверку на вхождение в
множество. Не годится, я же на это намекал.

 SK>> Мой пока единственный вариант таков :
 VV>  Боюсь, что для произвольно заданного { x } решения нет и быть не может.
Если никто не подкинет идею - рожу ее сам. И никому не скажу. Вот ;-)

 VV> "Хотели как лучше - получилось как всегда.   (с) В. С. Черномырдин"
А у меня ориджин лучше ;-)

С уважением
Сергей

...с авторитетами приходится спорить. У них должность такая.(с)Лукьяненко

--- ifmail v.2.15dev5
 * Origin: FidoNet Online - http://www.fido-online.com (2:5020/175.2)