Добро пожаловать на форум, @vnd!
Может ли ваш вопрос быть решен с помощью основанный на хеше к-Анонимность? Насколько я понимаю, этот подход будет:
- не дать Мэллори узнать день рождения Алисы;
- не дать Алисе узнать даты рождения ее одноклассников; и
- только разрешить Алисе узнать, совпадает ли с ней день рождения кого-либо из ее одноклассников
Предположим, у Алисы есть 12 одноклассников, чьи данные представлены в этой таблице:
()
Боб 11 января 2001 г. a40b69b979ef6af5e9f13a49cfc568d8b942d5c2 a40b6
Джо 23 марта 1989 г. 4fde4b6b8e077d5b51eed716ab3d94a6ac04c45e 4fde4
Бен 9 июня 2002 г. 46885da4ffaa4c3d1b31413f96c38f2cb7e895ea 46885
Статья 4, декабрь 2005 г. a40b6425e2a7a93a9ac95ee275a5398397c46dd2 a40b6
Том 17 ноября 1977 г. a49e374c34333b86ccf08bc10d6e04312e772c41 a49e3
Тим 3 июля 1989 г. 39e95ac6c6286e6f036822f3fa31131a2e892b08 39e95
Эми 12 февраля 2002 г. 92dac31b3d3a0793fd2845081c93024d0ea8ac8c 92dac
Ева 24 апреля 1990 г. a0ed580e3df29f9a8f22276092ac9f58117401ec a0ed5
Сью 10 июля 2003 г. a93703839d02a539c12841f5de2ec8790107925b a9370
Зои 5 января 2006 г. a40b6232f910b358e971e4c5f91e273c07499ab0 a40b6
Lia 18 декабря 1978 г. addc1fc5fbe7dea93e3bd1d421521f005ba89c8e addc1
Кей 4 августа 1990 г.
Алиса 11 января 2001 г. a40b69b979ef6af5e9f13a49cfc568d8b942d5c2 a40b6
ТАБЛИЧНЫЕ ДАННЫЕ
Эта таблица включает данное имя; дата рождения (в военном формате, из косметических соображений); хеш-значение даты рождения с использованием несуществующего искусственного хэша (MUH) и первых 5 графем хеша (фрагмента).
ПРОЦЕДУРА
. Алиса вычисляет дайджест сообщения о своей дате рождения, используя выдуманный хеш (можно использовать любой хеш, даже слабый SHA1).
. Вместо того, чтобы сообщать Мэллори все значение хеша, что было бы воспринято как угроза, Алиса дает Мэллори только фрагмент своего хэша: первые пять графем (это можно настроить).
. Мэллори знает даты рождения всех в классе, кроме Алисы. Мэллори вычисляет хэш дня рождения каждого одноклассника и возвращает эти данные Алисе, но только тогда, когда фрагмент Алисы совпадает с тем же фрагментом полного хэша.Возвращаемые данные не включают фрагмент, так как это было бы избыточно.
   . Использование фрагмента из 5 графем а40б6
, Мэллори давал Алисе следующие данные.
9b979ef6af5e9f13a49cfc568d8b942d5c2
425e2a7a93a9ac95ee275a5398397c46dd2
232f910b358e971e4c5f91e273c07499ab0
    и Алиса увидит, соответствует ли ее фрагмент плюс какой-либо ответ ее полному хешу. В этом случае первый является совпадением, и у Алисы есть ответ. Теперь она знает, что кто-то из ее класса разделяет с ней день рождения, хотя она не знает их личности.
В этом обмене мы видим, что Мэллори, получив только фрагмент, не может определить, полностью ли какой-либо из вычисленных ею хэшей совпадает с фактическим хэшем Алисы, поскольку у нее нет возможности вычислить полный хеш Алисы.
Возможность угрозы исключена, потому что решение о том, существует ли совпадение, не может быть принято Мэллори (враждебный сервер), его может определить только Алиса (честный клиент).
Кроме того, используя данные, предоставленные Мэллори, Алиса не может определить дату рождения кого-либо из своих одноклассников, кроме тех, которые соответствуют ее хешу. Частичные совпадения неубедительны.
Количество возвращаемых данных можно регулировать размером фрагмента:
   . Использование фрагмента одного символа а
, Мэллори давал Алисе следующие данные:
40b69b979ef6af5e9f13a49cfc568d8b942d5c2
40b6425e2a7a93a9ac95ee275a5398397c46dd2
f9e374c34333b86ccf08bc10d6e04312e772c41
0ed580e3df29f9a8f22276092ac9f58117401ec
93703839d02a539c12841f5de2ec8790107925b
40b6232f910b358e971e4c5f91e273c07499ab0
4e15e622b89d302f2b0357c2b2efc0d38fba7a0
ПРИМЕЧАНИЕ. Этот подход не требует от нас знания количества возможных дней рождения (365). Триста или четыре миллиона, это не имеет значения.