Рейтинг:1

Анонимный PAKE с использованием двухсторонних вычислений

флаг us

Допустим, на стороне клиента есть секретный пароль $\пи$. На сервере есть ряд индексов $0..n-1$ и значение, связанное с солью $s_i$ для всех $i \in \{0,n-1\}$ назовите это набором $S=\{s_i | я \in \{0,n-1\}\}$ для каждого клиента. Клиент хочет вычислить функцию OPRF $f(\pi,s)$ так что он не учится $s$ и сервер ничего не узнает. Это в основном то, что OPAQUE делает для $f(\pi,s)=H(\pi,H'(\pi)^s)$ куда $H'$ хэши для элемента подгруппы.Потому что сервер видит только ослепленных $Н'(\пи)$ который является случайным элементом группы, он может имитировать свое представление, и независимо от того, сколько запросов делает клиент, он никогда не узнает $s$.

Но мне нужно сделать еще один шаг вперед и потребовать, чтобы он позволял анонимно входить в систему. То есть мне нужна функция $g(i,\pi,S)=f(\pi,s_i)$ так что сервер ничего не узнает ни о $я$ или же $\пи$ и клиент больше ничего не узнает о $S$ или о любых других элементах в $S$. По крайней мере, нет $f(\pi,s_j)$ для другого $j$ что позволяет одновременно нацеливаться на несколько учетных записей с помощью атак грубой силы / словаря.

Одним из способов сделать это для той же функции, что и в OPAQUE, является использование OPAQUE вместе с переносом по забывчивости. Клиенту не нужно отправлять много значений за раз, но простое использование OT здесь означает, что сервер должен выполнить завершение расчета $f(\pi,s_i)$ для каждого $я$ то есть $n$ возведения в степень/скалярные умножения и должны отправить $n$ шифровать тексты каждый раз, когда клиент пытается войти в систему. И это вне вычислений, связанных с самой ОТ. В конце концов, OT можно использовать для передачи произвольных сообщений, а не только для вычисления каких-то функций. $n$ шифрование текстов в общем случае оправдано. Но здесь это было бы нецелесообразно.

Итак, знает ли кто-нибудь о какой-либо работе по этому поводу или делает что-нибудь, что может достичь этого более эффективно в постоянное или, по крайней мере, сублинейное время количества клиентов, чтобы быть практичным. Это может быть что-то, что использует некоторый аккумулятор в $S$ который может быть предварительно вычислен или что-то в этом роде. Это не обязательно должна быть та же функция, что и в OPAQUE, все с указанными выше свойствами работает.

РЕДАКТИРОВАТЬ: я не предлагаю выполнять полный OPAQUE анонимно, что, поскольку он содержит зашифрованный идентификатор клиента, закрытый ключ DH и открытый ключ DH сервера, требует, чтобы OT выполнял анонимно. Но анонимно выполняется только расчет части OPRF, а остальной обмен ключами выполняется отдельно.

Рейтинг:1
флаг my

Итак, знает ли кто-нибудь о какой-либо работе по этому поводу или делает что-нибудь, что может достичь этого более эффективно в постоянное или, по крайней мере, сублинейное время количества клиентов, чтобы быть практичным.

Что ж, с вашим предложением, основанным на OPAQUE, вам не нужны все гарантии безопасности ОТ; вас не волнует, узнает ли клиент о зашифрованных полезных нагрузках для других клиентов. Следовательно, частного информационного поиска (PIR) достаточно, поскольку он дает вам единственную гарантию безопасности, о которой вы действительно заботитесь (сервер не знает, какую зашифрованную полезную нагрузку получает клиент). Теперь мы не знаем, как сделать PIR за сублинейное время (без предварительной связи с клиентом - в данном случае это невозможно, и без предположения о нескольких серверах, хотя бы одному из которых доверяют); однако я считаю, что константа пропорциональности существующих механизмов PIR достаточно мала, чтобы сделать это практичным.

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

Manish Adhikari avatar
флаг us
Да, я понимаю, что клиент получает зашифрованную полезную нагрузку, анонимность можно сохранить, отделив ее от расчета $f$. Но мой главный вопрос был о расчете OPRF, который требует OT, таких как гарантии безопасности, я не хочу, чтобы злоумышленник мог одновременно исследовать несколько учетных записей для одного пароля. Как и PIR, если он практичен даже с линейным временем и связью, я не возражаю против использования здесь OT. Если мы не знаем, как это сделать за сублинейное время, возможно, пожертвование некоторой анонимностью (OT для подмножества клиентов) ради практичности могло бы стать обходным путем.
poncho avatar
флаг my
@ManishAdhikari: самый простой способ помешать кому-либо одновременно проверять несколько учетных записей - это сделать так, чтобы пароль, который вы даете Opaque, включал имя пользователя, например «poncho@my_password». Поскольку Opaque дает вам свойство, позволяющее тестировать только один пароль на обмен, включая имя пользователя, это означает, что мы не можем тестировать нескольких пользователей с одним обменом.
Manish Adhikari avatar
флаг us
Это хороший способ. Спасибо

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

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