Наивысшим приоритетом при переходе на постквантовую криптографию являются базовые строительные блоки протоколов аутентифицированного согласования ключей, таких как TLS. Без этих элементов безопасная связь в Интернете станет невозможной, как только появятся криптографически стойкие квантовые компьютеры. Тем не менее, сегодня мы полагаемся на уязвимую к квантовым вычислениям криптографию далеко за пределами TLS.
Privacy Pass — это протокол, используемый операторами сайтов, такими как Cloudflare, для защиты приложений от злоупотреблений. Один из способов сделать это — ограничение частоты запросов (rate limiting) от отдельных клиентов, чтобы ни один клиент не потреблял слишком много ресурсов сайта. Обычно это сопряжено с определенными трудностями или снижением конфиденциальности для пользователей: капчами или другими проверками для фильтрации трафика, а также использованием учетных записей и фингерпринтинга для идентификации. Протокол Privacy Pass был разработан так, чтобы избежать этого компромисса между удобством использования и конфиденциальностью. Основная идея заключается в том, что клиенту выдается набор токенов, которые он может обменять на доступ к сайту. Что важно, каждый токен невозможно связать с клиентом, которому он был выдан, что гарантирует возможность пользоваться сайтом как прежде без ущерба для конфиденциальности.
Имея за плечами 10-летний опыт развертывания — использование Privacy Pass для таких приложений, как прокси-серверы конфиденциальности (например, iCloud Private Relay) и ретрансляторы (например, Privacy Gateway), — мы совместно с others работаем над тем, чтобы перенести следующее поколение этой технологии в веб. Одна из наших целей заключается в разработке более сложных инструментов для управления автономным трафиком, который в противном случае потреблял бы слишком много ресурсов и снижал производительность для людей-пользователей. Другая цель — способствовать созданию более открытой экосистемы, упрощая участие для самых разных типов клиентов. Достижение этих целей требует создания новых возможностей, выходящих за рамки того, что Privacy Pass предлагает сегодня.
Учитывая текущие тенденции, в этой статье мы рассматриваем перспективы постквантовой криптографии. На самом деле ситуация обстоит лучше, чем можно было бы подумать. Privacy Pass по-прежнему опирается на классическую криптографию, такую как RSA и эллиптические кривые. Это означает, что квантовый злоумышленник сможет по своему желанию подделывать токены и использовать их для обхода любых защитных механизмов, внедряемых оператором сайта (например, ограничения частоты запросов). С другой стороны, Privacy Pass обладает безусловной конфиденциальностью, что означает отсутствие у любого злоумышленника (квантового или нет) возможности связать погашение токена с его выдачей. Более того, новые возможности, которые мы разрабатываем для этого нового поколения технологий конфиденциальной аутентификации, могут быть и будут реализованы способом, сохраняющим ту же гарантию: ваше взаимодействие остается конфиденциальным даже после наступления «квантового дня».
Это дает нам некоторую передышку, однако альтернатива потребуется нам в ближайшее время. Данная область активно исследуется, и за последние годы в ней были достигнуты значительные успехи. Тем не менее, как и в случае с другими аспектами перехода, главной проблемой является колоссальный размер постквантовых альтернатив: подписи ML-DSA-44 весят целых 2420 байт, в то время как подписи ECDSA-P256 — всего 64 байта. И в ближайшее время надеяться на простую замену не приходится. Как и в случае с TLS, нам придется смириться с примитивами более высокой стоимости и перепроектировать наши системы так, чтобы выдерживать эти издержки.
Но что это будут за примитивы? В этой статье мы исследуем одно из потенциальных направлений будущего постквантовой конфиденциальности в вебе, ставшее возможным благодаря недавнему прорыву в разработке слепых подписей.
Что нам нужно построить: краткий обзор MOLE
Начнем с обзора этой новой технологии, которая в настоящее время называется («Moderation Of unLinkable Endorsements» — модерация несвязываемых подтверждений). В дальнейшем мы еще много расскажем о MOLE, но пока выделим детали, наиболее важные для криптографии.
Одним из ключевых компонентов Privacy Pass является схема слепой подписи, которая позволяет клиенту получить подпись на основе секретного ключа эмитента, не раскрывая последнему само подписываемое сообщение. В дальнейшем клиент может предъявить сообщение и слепую подпись, не связывая подпись с моментом ее выдачи.
Один из типов токенов Privacy Pass состоит из сообщения и подписи, выданной вслепую. Для проверки токена верификатору требуется открытый ключ эмитента, из чего неизбежно следует раскрытие личности эмитента. Таким образом, хотя эти токены защищают личность клиента, они не защищают личность эмитента.
Разумеется, именно этого мы и добиваемся в некоторых сценариях использования. Личность эмитента говорит нам о том, какого типа клиент подключается к нашему периметру — этот сигнал мы используем для принятия решений в некоторых наших продуктах и для некоторых наших клиентов. Например, клиент может использовать токен, выданный одним из наших клиентов, чтобы доказать наличие у него прав на использование VPN-продукта этого клиента.
Тем не менее, для многих сценариев использования этой информации больше, чем реально требуется для принятия решения о предоставлении клиенту доступа к ресурсу. Обычно нам важно лишь то, что токен был выдан некоторой доверенной нам сущностью. Фактически MOLE идет в этом направлении еще дальше: токен должен полностью скрывать личность эмитента, чтобы мы не могли относиться к токенам по-разному в зависимости от того, кто их выдал. Это гарантирует равное отношение независимо от типа клиента, упрощая участие для большего числа пользователей.
Это свойство сокрытия эмитента достигается с помощью нового объекта, называемого подтверждением (endorsement). Подтверждение выдается центром (anchor) и погашается модератором. Перед погашением клиент и модератор согласовывают набор центров — открытые ключи центров, которым доверяет модератор. Во время погашения клиент доказывает, что подтверждение было выдано одним из центров из этого набора, не раскрывая, каким именно. После успешной проверки модератор выдает клиенту учетные данные MOLE, которые тот будет использовать для взаимодействия с сайтом.
Подтверждение может принимать различные формы, но его ключевое свойство заключается в том, что его можно погасить, скрывая при этом личность выдавшего его центра. Существует также множество типов учетных данных, но поскольку они предназначены для использования конкретным модератором, им не нужно скрывать центр или даже быть общедоступными для проверки. Это означает, что для создания учетных данных MOLE можно использовать самые разные инструменты: от слепых подписей до анонимных кредитных токенов или анонимных учетных данных с ограничением частоты.
Теперь, когда мы представляем, что именно мы создаем, давайте рассмотрим наши варианты для постквантовой эпохи.
Криптографическое изобилие
При разработке криптографических протоколов адаптивность и эффективность часто находятся в состоянии конфликта. Иногда мы точно знаем, что именно хотим создать, и можем настроить конструкцию под конкретную задачу; но чем сильнее мы адаптируем протокол под этот сценарий использования, тем сложнее становится приспособить такую конструкцию к другой задаче.
Адаптивность имеет решающее значение для такой системы, как MOLE. Мы создаем не просто один вид системы учетных данных, а множество. И типы учетных данных, которые нам необходимы, вероятно, со временем изменятся, особенно в Интернете, где мы должны постоянно адаптироваться к новым шаблонам трафика и поведению злоумышленников. Чтобы не отставать, нам нужен набор строительных блоков, которые можно объединять в различные протоколы для удовлетворения различных требований.
Большинство постквантовых криптографических схем, широко используемых сегодня, происходят из более крупных семейств конструкций, но были настроены под их конкретное применение. ML-DSA — хороший тому пример: криптографический фреймворк, из которого была получена эта схема, может использоваться для создания самых разных вещей, но чтобы сделать ML-DSA как можно более компактным, его параметры были тщательно подобраны для создания эффективной и безопасной схемы цифровой подписи. Однако те же параметры не обязательно будут безопасными для других вариантов использования.
Мы стали рассматривать это как главную задачу для постквантовых анонимных учетных данных: отделить выбор параметров от проектирования протоколов. Классические системы учетных данных воспринимают это как должное: по большей части разработчикам протоколов не нужно думать о параметрах используемой ими эллиптической кривой, что позволяет даже неэкспертам в области криптографии на эллиптических кривых создавать с ее помощью полезные вещи. К сожалению, разработка эффективных постквантовых учетных данных по-прежнему требует огромного объема экспертизы.
Однако эта ситуация, похоже, изменилась. Ранее в этом году мы увидели breakthrough, которая представляет собой потенциальный поворотный момент для анонимных учетных данных.
VOLE-in-the-Head
Истоки этого прорыва уходят в прошлое на несколько лет. Мы начнем историю три года назад с системы доказательства с нулевым разглашением VOLE-in-the-Head (VOLEitH) (Baum et al., Crypto 2023). Система доказательства с нулевым разглашением позволяет доказать знание скрытого свидетеля, удовлетворяющего некоторому публичному утверждению, сохраняя при этом свидетеля в секрете. Например, доказательство с нулевым разглашением можно использовать для доказательства знания ключа AES K, для которого Y=AES(K,X), где X,Y являются публичными. Это доказательство может быть преобразовано в цифровую подпись, безопасность которой сводится к безопасности AES, где X,Y выступают в роли публичного ключа, а K — секретного ключа. Это ровно та цифровая подпись FAEST, которая является кандидатом в текущем конкурсе подписей NIST.
По сравнению со многими современными системами доказательств, VOLEitH относительно проста для понимания и безопасной реализации. VOLE расшифровывается как «Vector Oblivious Linear Evaluation» (векторная слепая линейная оценка) и представляет собой интерактивный метод, который предоставляет двум сторонам коррелированные случайные значения. Эти корреляции действуют как теги аутентификации, позволяя верификатору проверить, что вычисление над скрытым свидетелем было выполнено правильно. В VOLEitH доказывающая сторона локально подготавливает то, что две стороны обычно генерируют вместе — отсюда и «в голове» («in the head») — затем фиксирует эти значения и использует преобразование Фиата-Шамира (широко используемый в криптографии инструмент) для выбора частей, которые проверяет верификатор. Этот шаг превращает интерактивный процесс VOLE в неинтерактивное доказательство с нулевым разглашением.
Помимо своей простоты, VOLEitH представляет собой довольно заурядную систему доказательств. Она не является сжатой в том смысле, во многих других системах доказательств: ее доказательства асимптотически линейны по размеру свидетеля и арифметической сложности доказываемого утверждения. Тем не менее, VOLEitH конкретно очень эффективна для определенного типа утверждений, а именно для тех, которые могут быть выражены в виде набора уравнений над небольшими конечными полями.
Одним из примеров является отношение Y=AES(K,X), которое мы только что обсудили. Мы обычно не воспринимаем AES как набор уравнений, но многие из его вычислений построены на арифметике в GF(2), поле, элементы которого представляют собой отдельные байты. Доказательства FAEST для этого утверждения составляют всего около 4 КБ (NIST Round 3, 128s).
Другим примером является схема подписи KuMQuat, в которой подписывающий доказывает экземпляр задачи многочленов от многих переменных (Multivariate Quadratic — MQ). Здесь нам задана система случайных квадратичных уравнений от нескольких переменных над небольшим полем, например GF(2). Математически это отображение MQ P выглядит примерно как P(s) = (sA1s + b1s,…,sAms + bms), где s и каждый bi являются векторами длины n, а каждый Ai — матрицей n на n. Учитывая P,P(s) для случайного s, задача MQ состоит в том, чтобы найти s. Мы называем ее квадратичной, потому что умножаем элементы s сами на себя.
Считается, что задачу MQ трудно решить даже квантовому компьютеру. Но поскольку P состоит из квадратичных уравнений, доказательство знания решения с помощью VOLEitH обходится относительно недорого, позволяя получать подписи KuMQuat размером до 2.6 КБ.
По сравнению с другими постквантовыми подписями, такими как ML-DSA или FN-DSA, эти цифры не выглядят особенно впечатляющими. Но то, как VOLEitH сопоставляется с другими схемами в определенной категории конструкций, не имеет значения. Для MOLE нам нужно будет найти баланс между производительностью и возможностью создания множества типов систем учетных данных. Для этого нам нужен еще один ингредиент.
Многочленные подписи
Другой способ создания подписей из MQ-отображений включает в себя встраивание некоторой дополнительной математической структуры в отображение. В схеме подписи Unbalanced Oil and Vinegar (UOV) открытым ключом является MQ-отображение P, а подписью является вектор s, удовлетворяющий P(s) = t, где t получается путем хеширования и добавления соли (salting) к подписываемому сообщению.
Секретным ключом для этой схемы подписи является «черный ход» (trapdoor) для P, с помощью которого подписывающий может выводить решения уравнений MQ. Этот черный ход открывает подписывающему скрытое разбиение переменных каждого квадратичного уравнения на «масляные» («oil») и «уксусные» («vinegar») переменные. Переменные oil никогда не умножаются друг на друга, поэтому фиксирование значений vinegar превращает уравнения в линейную систему, которую подписывающий может решить относительно переменных oil. В открытом ключе переменные oil и vinegar смешаны таким образом, что эта структура в отображении скрыта.
UOV также является кандидатом в текущих усилиях NIST по стандартизации подписей. У него одни из самых маленьких подписей среди кандидатов — всего 135 байт. Обратная сторона заключается в том, что у него самые большие открытые ключи — 46.6 КБ. MAYO — еще один многочленный кандидат с гораздо меньшими открытыми ключами за счет немного больших подписей.
Главный вывод здесь заключается в том, что арифметическая сложность вычисления подписи UOV (или MAYO) сопоставима с вычислением экземпляра MQ. Оба представляют собой публичные квадратичные отображения над небольшими двоичными полями, что делает их хорошо подходящими для VOLEitH. Это подводит нас к прорыву.
Слепые подписи на основе VOLE-in-the-Head и UOV
Ранее в этом году была опубликована слепая подпись под названием PoMFRIT (), которая установила на тот момент рекорд для перспективных постквантовых конструкций: 6,7 КБ для самой слепой подписи и всего несколько сотен байт для выдачи. PoMFRIT основана на VOLE-in-the-Head и многочленной подписи MAYO. Мы можем легко уменьшить размер подписи до 4,3 КБ, заменив MAYO на UOV. (В этом показателе используются параметры третьего раунда NIST для UOV (uov-Ip) и FAEST-EM-128s.) Компромиссом являются бóльшие открытые ключи, но это окупается в приложениях, где открытый ключ может кэшироваться и использоваться достаточно часто.
Это конкурентоспособно с современными решеточными конструкциями. Но поистине отличная новость заключается в том, что строительные блоки PoMFRIT можно легко перенастроить во все системы учетных данных, которые мы рассматривали для MOLE, включая подтверждения. Подробнее об этом чуть позже: а пока давайте рассмотрим подробнее, как работает PoMFRIT.
Общепринятая парадигма проектирования слепых подписей выглядит следующим образом. Сначала клиент помещает сообщение в криптографический эквивалент запечатанного конверта, называемый обязательством (commitment). Для наших целей обязательство — это просто хэш сообщения вместе с некоторой случайностью, сгенерированной клиентом. Для завершения выдачи подписывающая сторона просто подписывает обязательство напрямую.
Для создания слепой подписи клиент создает доказательство с нулевым разглашением знания подписи и случайности, использованной для вычисления обязательства, называемое открытием. Верификатор использует открытый ключ подписывающей стороны для проверки этого доказательства.
Давайте определим немного обозначений, чтобы сделать это более понятным:
- Клиент генерирует открытие r и отправляет эмитенту обязательство c=H(m,r) для своего сообщения m.
- Эмитент создает подпись s=Sign(sk,c) и отправляет ее клиенту. Он не узнает сообщение, так как оно скрыто за хэшем.
- Наконец, клиент создает доказательство π знания s,r, для которого Verify(pk,H(m,r))=1,
Доказательство π является слепой подписью. Оно может быть проверено любой стороной, обладающей открытым ключом эмитента pk и сообщением m.
Несвязываемость (unlinkability) достигается за счет того, что клиент предъявляет совершенно разные объекты на двух этапах: обязательство показывается эмитенту во время выдачи, а доказательство с нулевым разглашением показывается верификатору во время предъявления. Даже если эмитент и верификатор вступают в сговор или являются одним и тем же лицом, они не могут связать сессии.
Размер доказательства π определяется в основном вычислением хэша, поэтому нам нужно выбрать хэш-функцию, которая хорошо подходит для нашей системы доказательств. Для большинства систем доказательств такие дружественные к доказательствам хэши изучены недостаточно, но для VOLEitH оказывается, что перестановка Keccak, используемая в SHAKE и TurboSHAKE, является хорошим выбором. Побитовые операции Keccak напрямую переносятся в ограничения VOLEitH: исключающее ИЛИ (XOR) становится сложением, И (AND) становится умножением, а циклические сдвиги просто переставляют значения. (Многие популярные SNARK, напротив, разработаны для больших простых полей, из-за чего байтово- и битово-ориентированные операции выражаются менее естественно.)
Тем не менее, вычисления Keccak в итоге составляют наибольшую часть доказательства VOLEitH, поэтому нам нужно убедиться, что мы используем только минимально необходимое количество перестановок. PoMFRIT требует две: одну для обязательства и другую для подписи. Конкретно, утверждение, которое мы доказываем, выглядит примерно как P(s)=H(H(m,r),rs), где s — подпись, rs — соль, выбранная эмитентом, P — открытый ключ UOV эмитента, а H обозначает перестановку Keccak с усечением вывода до подходящей длины, что также мешает кому-либо обратить ее.
От слепых подписей к подтверждениям и за их пределы
Напомним, что для подтверждений MOLE нам нужно что-то вроде слепой подписи, но такое, которое не раскрывает якорь, выдавший ее. То есть теперь у нас есть последовательность якорных ключей P1,…,PN, и утверждение, которое мы теперь хотим доказать, имеет вид Pi(s)=H(H(m,r),rs) для некоторого якорного ключа Pi, индекс i которого теперь является частью скрытого свидетеля.
При определенном старании мы можем записать это как набор ограничений примерно с той же стоимостью: два хэша и одно MQ-вычисление. Нам нужно доказать немного больше о свидетеле. Что именно? Мы не будем портить вам сюрприз: проектирование схем с нулевым разглашением — это часть ремесла криптографической инженерии, которая делает ее такой увлекательной. Скажем лишь, что тип мышления, необходимый здесь, применим практически к любой современной системе доказательств, с которой вы можете столкнуться.
В рамках этой архитектуры можно создавать еще более продвинутые системы учетных данных, включая упомянутые анонимные кредитные токены и анонимные учетные данные с ограничением частоты запросов. В обоих случаях основная стоимость заключается в дополнительном хэше или двух. Каждое из них также требует доказательства того, что часть свидетеля (например, количество кредитов) находится в некотором ожидаемом диапазоне, но это обходится недорого в VOLEitH.
Действительно, для каждой конструкции, которую мы рассматривали до сих пор для MOLE, основными затратами являются размер вычисления Keccak и то, сколько раз нам нужно его вычислять. Это означает, что поиск способов уменьшения объема хэширования приносит улучшения по всем направлениям.
Оптимизации
Прежде чем идти дальше, мы должны признать, что криптоанализ многочленной криптографии все еще относительно незрел. Мы видели достижения против нескольких режимов параметров всего за последние пару лет. И UOV, и MAYO хорошо выдержали эти атаки, и полный взлом UOV и даже MAYO кажется все менее вероятным с каждым годом. Но нам следует по крайней мере ожидать, что параметры изменятся таким образом, что это добавит немного затрат нашим конструкциям.
С другой стороны, для систем учетных данных, используемых на практике, нередко принимается менее консервативная позиция безопасности ради производительности в той мере, в какой это влияет на устойчивость к подделке. Обычно это означает опору на более сильные, чем обычно, вычислительные предположения. То есть вполне возможно, что может появиться (доквантовая) атака, которая взломает анонимные кредитные токены, но не ECDSA, несмотря на то, что они обе используют одну и ту же эллиптическую кривую.
Использование меньшего количества хэшей
PoMFRit достигла своего рекорда размера, сделав ровно то же самое. Напомним, что слепая подпись требует доказывания двух вычислений хэша: одно клиентом, а другое эмитентом. В PoMFRIT отмечается, что генерация доказательства VOLEitH может быть разделена на два этапа. На первом этапе клиент берет на себя обязательство относительно случайной маски. Затем он хеширует сообщение обычным образом (вне схемы ZK), объединяет результат с маской и отправляет замаскированную цель эмитенту. Эмитент использует бэкдор (trapdoor) UOV для поиска прообраза этой цели. На втором этапе клиент завершает доказательство того, что прообраз и ранее зафиксированная маска согласованы. Хэш остается частью протокола, но эмитент, выступающий в роли верификатора VOLEitH, может вычислить его напрямую, а не требовать от доказательства с нулевым разглашением его воспроизведения.
Эта стратегия существенно уменьшает размер доказательства, но также меняет нашу модель безопасности. Простое предположение UOV заключается в том, что никакой (квантовый) злоумышленник не может найти прообраз для случайного целевого значения без знания лазейки. Соответствующее предположение one-more-UOV (аналогичное предположению one-more-MAYO в статье PoMFRIT) аккуратно описывает дополнительную информацию, доступную злоумышленнику в результате такого рода оптимизации. Следовательно, предположение заключается в том, что эта дополнительная информация не приводит к атаке.
Это предположение может оказаться излишне оптимистичным. Недавно исследователи из Университета Калифорнии в Сан-Диего и INRIA смогли использовать эмитент Privacy Pass в качестве оракула подписи. К счастью, Privacy Pass использует 2048-битный RSA, который в сочетании с другими защитными механизмами обеспечивает весьма хороший запас безопасности. Аналогичным образом, для UOV мы могли бы рассмотреть использование параметров NIST уровня 3 вместо уровня 1.
В любом случае потребуется дополнительное исследование, прежде чем мы будем слишком сильно полагаться на подобного рода оптимизации. Стоит подчеркнуть, что взлом здесь повлияет лишь на способность злоумышленника подделывать токены, а не на его способность нарушить конфиденциальность клиента.
Удешевление каждого хеша
Стандартный SHAKE использует 1600-битное состояние Keccak с 24 применениями базовой раундовой функции. Однако с момента публикации стандарта SHA-3 многие пришли к мнению, что 24 раунда — это просто слишком много криптографии. TurboSHAKE работает точно так же, за исключением того, что перестановка использует 12 раундов вместо 24. Это существенно уменьшает размер доказательств VOLEitH. На самом деле мы вполне довольны этим запасом безопасности, и не только для этого приложения.
Еще одно изменение в Keccak, которое уменьшает размер доказательства — это уменьшение размера состояния. 256 бит состояния зарезервированы для емкости, чтобы обеспечить 128 бит безопасности. Это оставляет 1344 бита, которые можно захешировать за один присест, что больше, чем нам нужно. Уменьшение состояния вдвое до 800 бит оставляет нам скорость 544 бита, чего вполне достаточно. Вдобавок к этому оно даже увеличивает безопасность при том же количестве раундов, так как у злоумышленника остается меньше пространства для маневра. Меньшее состояние означает, что мы используем вдвое меньше умножений в нашей схеме, что уменьшает размер доказательства.
Опора на многочлены (multivariate)
В идеальном мире мы могли бы вообще избежать доказательства традиционных хешей, заменив каждый хеш чем-то, что более естественно сочетается с алгебраической структурой наших примитивов. Действительно, те, кто знаком с коммитментами Педерсена и их использованием в криптографии на эллиптических кривых, могут задаться вопросом, можно ли построить коммитменты на основе многочленной (multivariate) криптографии.
Это может выглядеть примерно так this: Зафиксируем публичные случайные MQ-отображения F и G и закоммитимся к сообщению m с помощью c=(m+F(r),G(r)). Преимущество такого подхода заключается в том, что степень ограничений совпадает со степенью ограничений для подписи UOV. Это не только делает доказательство меньше, но и делает его гораздо проще, так как мы вообще избегаем вычисления симметричной криптографии в ZK.
Мы экспериментировали с этим подходом для нашего приложения, и он дал впечатляющие результаты. Тем не менее, пока совершенно неясно, является ли безопасным диапазон параметров, в котором многочленные коммитменты дают улучшение. Примечательно, что риск здесь касается не только неуязвимости к подделке, но и конфиденциальности клиента. Требуется гораздо больше исследований.
Другое направление — создание дружественного к MQ псевдослучайного генератора (ПСГ / PRG).
Для типичных параметров VOLEitH добавление дополнительного бита свидетеля (witness bit) добавляет десять к бит к доказательству. Существует изящный трюк, позволяющий сделать это намного дешевле: всего один бит доказательства на бит свидетеля! Вместо того чтобы использовать VOLEitH напрямую, мы коммитимся к (сравнительно) короткому ключу. Мы расширяем этот ключ в больший поток битов с помощью PRG с низкой степенью, чтобы его можно было дешево вычислить в схеме. Теперь, чтобы добавить бит свидетеля w, мы получаем один дополнительный бит k из PRG и сохраняем бит w XOR k в доказательстве.
Готов ли MOLE к постквантовой эпохе?
выпуск
презентация
PoMFRIT (с UOV)
<1 КБ
4.3 КБ (погашение)
VOLE-IHAT
5.6 КБ
6.5 КБ (погашение)
VOLE-ACT












