Рейтинг:14

Криптографически безопасный поиск значения в наборе

флаг cn
vnd

Я ищу элегантное решение, казалось бы, тривиальной проблемы поиска определенного значения в известном наборе значений без раскрытия того, какое значение мы ищем. Позвольте мне описать это классическим способом:

Алиса скоро будет отмечать свой день рождения, и она хочет знать, у кого-нибудь в ее классе день рождения в тот же день, что и у нее. К сожалению, единственный человек, который знает даты рождения всех людей в классе (кроме Алисы), — это Мэлори. Как Алиса могла спросить Мэлори, празднует ли кто-нибудь день рождения в тот же день, не назвав свою собственную дату?

Предположение:

  1. Мэлори готова помочь Алисе, и она законно ответит на любые вопросы. Тем не менее, она может ответить только да или нет.
  2. Алиса спросит Мэлори один раз. Мэлори не может повлиять на Алису, чтобы она снова задала тот же вопрос.Хотя в будущем Алиса может сама спросить о других датах (например, о дне рождения Боба).
  3. Алисе не нужно и не хочется знать даты рождения всех в классе. Она хотела бы получить ответ от Мэлори, задав единственный вопрос.

Довольно простой способ решить эту проблему — применить хэш. Алиса хэширует свой день рождения и передает эту информацию Мэлори, в то же время прося ее хэшировать дни рождения всех людей, которых она знает, и сообщить ей, если они совпадают. Проблема в том, что Мэлори, который хотел бы знать день рождения Алисы, может перечислить все возможные даты (поскольку энтропия ввода мала) и проверить одну за другой, совпадают ли какие-либо с тем, о чем спрашивала Алиса. Я хотел бы устранить эту угрозу.

Я подумал о применении сопоставления «один ко многим» к дню рождения. Поскольку одна дата может быть представлена ​​несколькими значениями, атака перечислением становится невозможной. Первая проблема заключается в том, что я не вижу простого способа позволить Мэлори провести элементарное математическое сравнение с ее набором дат. Вторая проблема заключается в том, что если такое сравнение может быть выполнено, Мэлори по-прежнему может создать новый набор и снова выполнить операцию поиска (что фактически приводит к атаке перечислением). Таким образом, сопоставление «один ко многим», которое применяет Алиса, должно быть параметризовано уникальной характеристикой множества, в котором Мэлори будет искать.

Я надеюсь, что не внес слишком много путаницы, и я буду признателен за любую помощь, ссылки, упоминания об алгоритмах или подобных проблемах! Я также буду признателен за ваше мнение, если вы считаете, что эта проблема не разрешима с заданными предположениями! Если некоторые из них неясны, дайте мне знать, и я сделаю все возможное, чтобы прояснить свои намерения.

флаг cn
vnd
Ложь нежелательна, но в мои задачи не входит ее предотвращение. Моя главная цель — не дать Мэлори раскрыть дату рождения Алисы, предполагая, что Мэлори не будет заинтересована в том, чтобы давать неправильные ответы.
Mark avatar
флаг ng
Это может помочь, если вы уточните: «Алисе не нужно и не хочется знать даты рождения всех в классе. Она хотела бы получить ответ от Мэлори, задав единственный вопрос». Это может быть прочитано как «вам не нужно отправлять всю базу данных (но можете, если хотите)» или «протокол должен иметь какое-то свойство с нулевым разглашением» (которое отправка базы данных нарушит). До сих пор ответы предполагали второе, но если первое нормально, оно *намного* более эффективно, но при этом удовлетворяет всем вашим желаемым свойствам безопасности.
Рейтинг:13
флаг ru

Вы описываете проблему 1 из $n$ Незаметный перевод с $n=366$ если требуется, чтобы Алиса не получала посторонней информации. Методы Колесникова и др. в их статье «Эффективный пакетный забывчивый PRF с применением к частному пересечению множеств» дает представление о том, что возможно.

Если для Алисы приемлемо получение дополнительной информации, то проблема заключается в одном из поиск частной информации. Обзорная статья Островского и Скита «Обзор поиска конфиденциальной информации в одной базе данных: методы и приложения» обеспечивает хороший обзор.

kelalaka avatar
флаг in
Этот опрос о PIR был старым, и был опрос об измерении PIR (был UNY, но я не могу правильно вспомнить автора Gene Tsudik?), что, если клиент загружает все данные и обрабатывает локально, они были быстрее, чем все существующие схемы. Новый PIR основан на [FHE] (https://pdfs.semanticscholar.org/bfde/352ba1bdb70bf850b18a08c9da092489b698.pdf), хотя сервер вычисляет операции FHE...
Рейтинг:5
флаг es

Второй, более простой подход, благодаря комментарию @Mikero:

Алиса выбирает равномерно случайный закрытый ключ $b$. У Алисы день рождения $к$й день года. Алиса отправляет $A = bH_p(k)$ Мэлори, где функция $H_p()$ означает хэшировать ввод и интерпретировать результат как точку EC.

Мэлори выбирает равномерно случайный закрытый ключ $е$. У Мэлори есть функция $F_e(i)$ который выводит $eH_p(i)$ если хотя бы один человек родился в этот день года, а в противном случае выводит случайно выбранный балл ЕС.

Для каждого значения $я$ такой, что $0\leq i \leq 365$, Мэлори посылает $F_e(i)$ Алисе. Кроме того, Мэлори посылает $Q = eA$ Алисе.

Алиса вычисляет $Z = b^{-1}Q == b^{-1}eA == b^{-1}ebH_p(k) == eH_p(k)$.

Затем Алиса проверяет, $Z$ соответствует любому из 366 выходов $F_e(i)$ который Мэлори отправил Алисе. Если есть совпадение, Алиса делит день рождения с кем-то еще.

Объяснение: Мы создали "1-OPRF", что означает не обращающую внимания псевдослучайную функцию, которую Алиса может запросить один раз с помощью Мэлори вслепую, но которую Мэлори может запрашивать много раз.

PRF просто Мэлори ослепляет точку EC $H_p(i)$ (куда $H_p(i)$ представляет определенный день $я$ года в качестве балла ЕС), со своим закрытым ключом $е$, вычислив $eH_p(i)$. Из-за проблемы дискретного журнала эллиптической кривой ни один наблюдатель (включая Алису) не может предсказать результат $eH_p(i)$ для любой $я$ без знания секрета $е$. Это означает, что если в определенный день никто не родился, Алиса не может сказать, что Мэлори прислал случайную точку EC вместо реального результата PRF, потому что результат PRF непредсказуем для Алисы.

Алиса ослепляет свой ввод в PRF, выбирая ослепляющий фактор. $b$ и отправка $bH_p(k)$ Мэлори вместо отправки (и, таким образом, раскрытия) $к$. Алиса снимает ослепление ответа, обращая умножение с помощью $b$, и, таким образом, может запрашивать PRF, не зная Мэлори о входных данных, которые использует Алиса.

Следствием этого является то, что Мэлори отправил Алисе список баллов EC, который включает только истинный результат PRF для тех дней в году, когда родился хотя бы еще один человек. Кроме того, Алиса может вслепую запросить в PRF выходные данные о своем конкретном дне рождения и может увидеть, появляется ли этот результат в списке возможных выходных данных PRF, отправленных ей Мэлори.

Мэлори не научился $к$, и Алиса не может узнать ничего, кроме того, совпадает ли ее день рождения хотя бы с одним человеком.

Matthieu M. avatar
флаг ru
Почему Алиса не может угадать `е` в этой схеме? Они знают `A` и `Q = eA`, не могут ли они "поделить" `Q` на `A`, чтобы получить доступ к `e`?
knaccc avatar
флаг es
@MatthieuM. Проблема дискретного журнала эллиптической кривой означает, что вы не можете «разделить» одну точку на другую точку. Если бы вы могли, вы могли бы легко просмотреть любой открытый ключ и определить закрытый ключ.
Рейтинг:4
флаг cn
Mac

Добро пожаловать на форум, @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). Триста или четыре миллиона, это не имеет значения.

Рейтинг:4
флаг es

Один подход заключается в том, чтобы сделать 1 из n забывчивая передача. Мэлори отправит Алисе список из 366 зашифрованных логических значений (чтобы учесть дни рождения 29 февраля), где каждое логическое значение будет означать, есть ли у кого-либо день рождения в этот день года.Алиса сможет расшифровать только одно из 366 логических значений и, таким образом, сможет узнать только, есть ли у кого-либо еще день рождения в этот день года.

Статья в Википедии, на которую я ссылался в абзаце выше, ссылается на несколько подходов к реализации для достижения переноса без внимания 1 из n. Вот один из подходов, который я придумал только что (благодаря @IlmariKaronen за очень элегантное улучшение):

Алиса родилась в день $к$ года, где $0\leq k\leq 365$. Алиса отправляет открытый ключ $P = xG-kH$ в Мэлори, где $х$ является равномерно случайным скалярным закрытым ключом. $Ч$ рассчитывается как $H = H_p(G)$, где функция $H_p()$ означает хэшировать значение и интерпретировать результат как точку EC. Выбор $Ч$ таким образом означает дискретный журнал $Ч$ w.r.t. $G$ непознаваемо, т. $ч$ не может быть известно так, что $H==hG$.

Мэлори вычисляет 366 открытых ключей $\{Q\}$ формы $Q_i=P+iH$ для всех значений $я$ куда $0\leq i\leq 365$.

Закрытый ключ, соответствующий каждому открытому ключу $Q_i$ будет $q_i == x - kh + ih == x+(i-k)h$.

Поскольку мы уже продемонстрировали, что $ч$ непознаваемо, это означает, что $q_i$ будут известны Алисе только тогда, когда $я==к$, в таком случае $q_k$ будет равно $х$.

Таким образом, Мэлори вычислит 366 открытых ключей, для которых Мэлори может быть уверен, что Алиса может знать только закрытый ключ, соответствующий одному из них.

На каждый день года $я$, Мэлори использует схему Эль-Гамаля следующим образом: Мэлори выбирает равномерно случайный скаляр $e_i$, и предоставляет Алисе пару $(E_i, F_i)$ куда $E_i = e_iG$, $F_i = e_iQ_i + H_p(v_i)$ и где $v_i$ будет указано как $0$ если ни у кого нет дня рождения в этот день года, или как $1$ если хотя бы у одного человека день рождения в этот день года.

Расшифровать $v_k$, Алиса вычисляет $V_k = F_k - xE_k$. Затем Алиса проверяет, $V_k\overset{?}{=}H_p(0)$ или же $V_k\overset{?}{=}H_p(1)$, и, таким образом, знает, если $v_k$ является $0$ или же $1$. Это работает, потому что $q_k==x$ и $Q_k==xG$, и другие $xE_k==x\cdot e_kG==e_k\cdot xG==e_kQ_k$.

Алиса сможет определить, только если кто-то еще родился в этот день. $к$ года, и Мэлори не сможет определить $к$.

флаг ar
Я не уверен, что полностью понимаю вашу схему, но мне приходит в голову, что вместо того, чтобы возиться с кольцевыми подписями, Алиса не может просто позволить $C_i = (i-k)H_p(G) + c_kG$? Таким образом, Мэллори может проверить, что $C_{i+1} = H_p(G) + C_i$ выполняется для всех $C_i$, и таким образом быть уверенным, что Алиса не может знать дискретный журнал более чем для одного из них. (Алисе даже не нужно отправлять все точки Мэллори, поскольку Мэллори может просто вычислить их все из $C_0$ путем повторного сложения точек.) Или, может быть, я что-то напутал; это всегда возможно, так как я действительно не очень хорошо знаком с ECC.
knaccc avatar
флаг es
@IlmariKaronen Это очень элегантно, ты прав, мне жаль, что я не подумал об этом! Я исправлю свой ответ.
флаг us
Я считаю, что этот ответ сходится к Oblivious PRF. Алиса и Мэллори запускают протокол OPRF, в котором Алиса изучает случайную функцию $F : \{1,\ldots,365\} \to \{0,1\}^\lambda$, а Мэллори изучает $F(i)$, где $ i$ - ее день рождения. Поскольку это PRF, все остальные результаты $F$ кажутся ей случайными. Затем Алиса может отправить $\{ F(j) \mid j \in \mbox{Дни рождения}\}$, а Мэллори увидит, есть ли совпадение. [Действительно возможно](https://ia.cr/2020/1043) сделать такой ОПРФ при постоянной связи. Эта ссылка содержит защищенный протокол UC; Я сомневаюсь, что в этом вопросе UC безопасен.
knaccc avatar
флаг es
@Mikero спасибо, это интересная статья. Я не полностью понял то, что вы сказали, но я добавил второй ответ на этот вопрос, который включал подход 1-OPRF из этой статьи. Есть ли улучшение по сравнению с моим методом?
knaccc avatar
флаг es
@Mikero Возможно, вы хотели сказать, что именно Мэлори отправит $\{F(j)\}$ Алисе, а не наоборот?
флаг us
Да, я думаю, что случайно поменял местами имена двух сторон (слишком поздно редактировать комментарий сейчас).
Рейтинг:3
флаг in

Существует новый поиск частной информации с полностью гомоморфными системами,

Это частная схема шифрования, которая может использовать значение индекса $я$ из массива на получестном сервере. Сервер ничего не узнает и возвращает только значение по индексу $я$. Мы можем изменить это как;

Базовая схема
  1. Мэллори шифрует все существующие дни рождения $b_i$, $0 \leq i \leq 366 $ с открытым ключом FHE Алисы. (Шифрование $366\cdot 8$ биты, не обязательно все дни, достаточно существующих дней рождения и это экономит место в больших наборах.

    $$c_i = \operatorname{FHE-Enc}(A_{pub}, b_i)$$

    Если мы используем побитовые (HLibe, TFHE), то каждый $c_i$ размер массива 8.

  2. Алиса посылает свой день рождения $А$ зашифрована ее открытым ключом для Мэллори (шифрование 8-битное).

    $$a = \operatorname{FHE-Enc}(A_{pub}, A)$$

  3. Мэллори казнит Схема равенства FHE в каждый зашифрованный день рождения

    $$t_i = \operatorname{FHE-Compare}(A_{pub}, c_i,a)$$

  4. Мэллори ИЛИ ЖЕ результаты с FHE с использованием подхода бинарного дерева для уменьшения глубины схемы (возможно с суммированием вместо ИЛИ ЖЕ) и вернуть результат обратно Алисе.

    $$o = \operatorname{FHE-OrAll}(A_{pub}, [t_0,\ldots,t_n])$$

  5. Алиса расшифровывает полученное кусочек со своим закрытым ключом;

    $$ b = \operatorname{FHE-Dec}(A_{priv})$$

    • если $б=1$ тогда есть хотя бы один студент с датой $А$
    • если $б=0$ тогда нет студента с датой $А$.

Что гарантируется;

  1. Мэллори не может узнать, что такое запрошенные данные $А$ поскольку он зашифрован с помощью FHE, существует семантическая безопасность.
  2. Мэллори не может вывести запрошенные данные из результата по той же причине, что и выше; от $(А,о)$.
  3. Схема не раскрывает ничего о внутренностях данных, кроме того, какая функция вычисляется — схема вычисляет наличие данных, не раскрывая результат.
  4. Алиса узнает только о существовании дня рождения и не более того! Алиса получает только один бит $b$, есть или нет. Это не возвращает количество одинаковых дней рождения.
  5. Алиса запрашивает только один раз.
  6. Мэллори отправляет шифрование только в один бит $b$! Таким образом, довольно эффективная схема.
Улучшенная схема в основном для времени обработки
  1. Мэллори подготавливает битовый массив размером 366, инициализированный нулем. $$B = [b_0,b_1,\ldots,b_{366}] = 0$$

  2. Мэллори установил существующие дни рождения на 1. Нравится; $$B = [0,0,1,\ldots,0] $$

  3. Мэллори шифрует битовый массив открытым ключом Алисы (открытый ключ FHE) и получает еще один массив размером 366.

    $$c_i = \operatorname{FHE-Enc}(A_{pub}, B[i]) \;\; \текст{для}\; 0\leq i \leq 366 $$

  4. Алиса подготавливает еще один битовый массив размером 366, где только ее день рождения установлен на 1, а остальные установлены на 0. $$A = [0,0,0,\ldots,1,\ldots,0] $$

  5. Аналогично Мэллори, Алиса получает массив со своим открытым ключом и отправляет полученный массив Мэллори.

    $$a_i = \operatorname{FHE-Enc}(A_{pub}, A[i]) \;\; \текст{для}\; 0\leq i \leq 366 $$

  6. Мэллори разумно выполняет компонент операции FHE-AND на зашифрованных массивах. $$c_i = \operatorname{FHE-И}(A_{pub}, A[i], B[i])$$

  7. Мэллори ИЛИ ЖЕ бит результирующего массива и вернуть результат обратно Алисе.

    $$b = \operatorname{FHE-OrAll}(A_{pub}, [c_0,\ldots,c_{366}])$$

  8. Алиса расшифровывает полученное кусочек со своим закрытым ключом;

    $$ b = \operatorname{FHE-Dec}(A_{priv})$$

    • если $б=1$ тогда есть хотя бы один студент с датой $А$
    • если $б=0$ тогда нет студента с датой $А$.

Что гарантируется;

  1. То же, что и основная схема.
  2. На этот раз вместо 9-битного шифрования Алиса шифрует 366-битное (~40-кратное увеличение начальной стоимости/времени отправки).
  3. Мэллори, с другой стороны, получил много улучшений по времени и памяти.
    1. Нет необходимости в тяжелой операции FHE-равенства.
    2. Размер хранимого зашифрованного текста был уменьшен на ~40.
  4. Результат, с другой стороны, по-прежнему является 1-битным шифрованием.
  5. Эта схема экономит много времени на процессе.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.