Схема обязательств — это криптографический примитив , который позволяет брать на себя обязательство по выбранному значению (или выбранному утверждению), сохраняя его скрытым от других, с возможностью раскрыть принятое значение позже. [1] Схемы обязательств разработаны таким образом, что сторона не может изменить значение или утверждение после того, как она приняла на себя обязательство: то есть схемы обязательств являются обязательными . Схемы обязательств имеют важные приложения в ряде криптографических протоколов, включая безопасное подбрасывание монеты, доказательства с нулевым разглашением и безопасные вычисления .
Способ визуализации схемы обязательств — представить отправителя как человека, кладущего сообщение в запертую коробку и передающего коробку получателю. Сообщение в коробке скрыто от получателя, который не может открыть замок самостоятельно. Поскольку коробка находится у получателя, сообщение внутри не может быть изменено — оно просто будет раскрыто, если отправитель решит дать ему ключ в какой-то момент позже.
Взаимодействие в схеме обязательств происходит в два этапа:
В приведенной выше метафоре фаза обязательства — отправитель кладет сообщение в коробку и запирает ее. Фаза раскрытия — отправитель дает ключ получателю, который использует его, чтобы открыть коробку и проверить ее содержимое. Запертая коробка — это обязательство, а ключ — доказательство.
В простых протоколах фаза фиксации состоит из одного сообщения от отправителя получателю. Это сообщение называется обязательством . Важно, чтобы получатель не мог извлечь из сообщения конкретное выбранное значение в это время (это называется свойством сокрытия ). Простая фаза раскрытия будет состоять из одного сообщения, открытия , от отправителя получателю, за которым следует проверка, выполняемая получателем. Значение, выбранное во время фазы фиксации, должно быть единственным, которое отправитель может вычислить и которое проверяет во время фазы раскрытия (это называется свойством связывания ).
Концепция схем обязательств, возможно, была впервые формализована Жилем Брассаром , Дэвидом Шомом и Клодом Крепо в 1988 году [2] как часть различных протоколов с нулевым разглашением для NP , основанных на различных типах схем обязательств. [3] [4] Но эта концепция использовалась и до этого, не будучи формально рассмотренной. [5] [6] Понятие обязательств впервые появилось в работах Мануэля Блюма [7] , Шимона Эвена [ 8] и Ади Шамира и др. [9] Терминология, по-видимому, была создана Блюмом [6], хотя схемы обязательств можно взаимозаменяемо называть схемами битовых обязательств — иногда зарезервированными для особого случая, когда зафиксированное значение равно биту . До этого рассматривалось обязательство через односторонние хэш-функции, например, как часть, скажем, подписи Лампорта , оригинальной одноразовой однобитовой схемы подписи.
Предположим, что Алиса и Боб хотят разрешить спор с помощью подбрасывания монеты . Если они физически находятся в одном месте, типичная процедура может быть такой:
Если Алиса и Боб не находятся в одном и том же месте, возникает проблема. Как только Алиса «вызвала» подбрасывание монеты, Боб может оговорить «результаты» подбрасывания, которые будут наиболее желательными для него. Аналогично, если Алиса не объявляет свой «вызов» Бобу, после того, как Боб подбрасывает монету и объявляет результат, Алиса может сообщить, что она назвала тот результат, который наиболее желателен для нее. Алиса и Боб могут использовать обязательства в процедуре, которая позволит обоим доверять результату:
Чтобы Боб мог исказить результаты в свою пользу, он должен быть в состоянии понять вызов, скрытый в обязательстве Алисы. Если схема обязательств хороша, Боб не может исказить результаты. Аналогично, Алиса не может повлиять на результат, если она не может изменить значение, которое она обязуется.
Реальное применение этой проблемы существует, когда люди (часто в СМИ) обязуются принять решение или дать ответ в «запечатанном конверте», который затем вскрывается позже. «Давайте выясним, так ли ответил кандидат», например, в игровом шоу, может служить моделью этой системы.
Одним из конкретных мотивирующих примеров является использование схем обязательств в доказательствах с нулевым разглашением . Обязательства используются в доказательствах с нулевым разглашением для двух основных целей: во-первых, чтобы позволить доказывающему участвовать в доказательствах «вырезать и выбрать», где проверяющему будет предоставлен выбор того, что изучать, и доказывающий раскроет только то, что соответствует выбору проверяющего. Схемы обязательств позволяют доказывающему заранее указать всю информацию и раскрыть только то, что должно быть раскрыто позже в доказательстве. [10] Во-вторых, обязательства также используются в доказательствах с нулевым разглашением проверяющим, который часто заранее указывает свой выбор в обязательстве. Это позволяет составлять доказательства с нулевым разглашением параллельно, не раскрывая дополнительную информацию доказывающему. [11]
Схема подписи Лампорта — это система цифровой подписи , которая основана на поддержании двух наборов секретных пакетов данных , публикации проверяемых хэшей пакетов данных, а затем выборочном раскрытии частичных секретных пакетов данных способом, который соответствует конкретно подписываемым данным. Таким образом, предварительное публичное обязательство по секретным значениям становится важнейшей частью функционирования системы.
Поскольку система подписи Лампорта не может быть использована более одного раза, была разработана система для объединения множества наборов ключей Лампорта под одним публичным значением, которое может быть привязано к человеку и проверено другими. Эта система использует деревья хэшей для сжатия множества опубликованных наборов ключей-обязательств Лампорта в единое хэш-значение, которое может быть связано с предполагаемым автором позднее проверенных данных.
Другое важное применение обязательств — проверяемое разделение секрета , критически важный строительный блок безопасных многосторонних вычислений . В схеме разделения секрета каждая из нескольких сторон получает «доли» значения, которое должно быть скрыто от всех. Если достаточно сторон соберется вместе, их доли могут быть использованы для восстановления секрета, но даже злонамеренная группа недостаточного размера не должна ничего узнать. Разделение секрета лежит в основе многих протоколов для безопасных вычислений : чтобы безопасно вычислить функцию некоторых общих входных данных, вместо этого манипулируют секретными долями. Однако, если доли должны быть сгенерированы злонамеренными сторонами, может быть важно, чтобы эти доли могли быть проверены на корректность. В проверяемой схеме разделения секрета распределение секрета сопровождается обязательствами по отдельным долям. Обязательства не раскрывают ничего, что могло бы помочь нечестной группе, но доли позволяют каждой отдельной стороне проверить, являются ли их доли правильными. [12]
Формальные определения схем обязательств сильно различаются по нотации и аромату. Первый такой аромат заключается в том, обеспечивает ли схема обязательств совершенную или вычислительную безопасность в отношении свойств сокрытия или связывания. Другой такой аромат заключается в том, является ли обязательство интерактивным, т. е. можно ли рассматривать как фазу подтверждения, так и фазу раскрытия как выполняемые криптографическим протоколом , или они неинтерактивны, состоящие из двух алгоритмов Commit и CheckReveal . В последнем случае CheckReveal часто можно рассматривать как дерандомизированную версию Commit , при этом случайность, используемая Commit, составляет открывающую информацию.
Если обязательство C по отношению к значению x вычисляется как C:=Commit(x,open) , где open — случайность, используемая для вычисления обязательства, то CheckReveal (C,x,open) сводится к простой проверке уравнения C=Commit (x,open) .
Используя эту нотацию и некоторые знания о математических функциях и теории вероятностей, мы формализуем различные версии свойств связывания и сокрытия обязательств. Две наиболее важные комбинации этих свойств — это схемы совершенно связывания и вычислительно сокрытия обязательств и схемы вычислительно связывания и совершенно сокрытия обязательств. Обратите внимание, что ни одна схема обязательств не может быть одновременно совершенно связывающей и совершенно скрывающей — вычислительно неограниченный противник может просто сгенерировать Commit(x,open) для каждого значения x и open до тех пор, пока не найдется пара, которая выводит C , и в схеме совершенно связывания это однозначно идентифицирует x .
Пусть open выбирается из набора размера , т. е. его можно представить в виде строки из k бит, и пусть будет соответствующей схемой обязательств. Поскольку размер k определяет безопасность схемы обязательств, он называется параметром безопасности .
Тогда для всех неравномерных вероятностных полиномиальных алгоритмов , которые выводят и увеличивающейся длины k , вероятность того, что и является пренебрежимо малой функцией от k .
Это форма асимптотического анализа . Также можно сформулировать то же самое требование, используя конкретную безопасность : Схема обязательств Commit является безопасной, если для всех алгоритмов, которые выполняются за время t и выводят вероятность того, что и не превышает .
Пусть будет равномерным распределением по начальным значениям параметра безопасности k . Схема обязательств является соответственно совершенным, статистическим или вычислительно скрытым, если для всех вероятностных ансамблей и равны, статистически близки или вычислительно неразличимы .
Невозможно реализовать схемы обязательств в рамках универсальной компоновки (UC). Причина в том, что обязательство UC должно быть извлекаемым , как показано Канетти и Фишлином [13] и объяснено ниже.
Идеальная функциональность обязательства, обозначенная здесь как F , работает примерно следующим образом. Коммиттер C отправляет значение m в F , который сохраняет его и отправляет «квитанцию» получателю R. Позже C отправляет «открыть» в F , который отправляет m в R.
Теперь предположим, что у нас есть протокол π , реализующий эту функциональность. Предположим, что коммиттер C поврежден. В фреймворке UC это по сути означает, что C теперь контролируется средой, которая пытается отличить выполнение протокола от идеального процесса. Рассмотрим среду, которая выбирает сообщение m , а затем говорит C действовать так, как предписано π , как если бы она приняла обязательство m . Обратите внимание, что для реализации F получатель должен после получения обязательства вывести сообщение «квитанция». После того, как среда видит это сообщение, она говорит C открыть обязательство.
Протокол безопасен только в том случае, если этот сценарий неотличим от идеального случая, когда функциональность взаимодействует с симулятором S. Здесь S контролирует C. В частности, всякий раз, когда R выводит «квитанцию», F должен сделать то же самое. Единственный способ сделать это — сказать S C отправить значение в F. Однако следует отметить, что к этому моменту m не известно S. Следовательно, когда обязательство открывается во время выполнения протокола, маловероятно, что F откроется в m , если только S не сможет извлечь m из сообщений, полученных из среды, до того, как R выведет квитанцию.
Однако протокол, который извлекаем в этом смысле, не может быть статистически скрытым. Предположим, что такой симулятор S существует. Теперь рассмотрим среду, которая вместо того, чтобы портить C , портит R. Кроме того, она запускает копию S. Сообщения , полученные от C , подаются в S , а ответы от S пересылаются в C.
Среда изначально говорит C принять сообщение m . В какой-то момент взаимодействия S примет значение m′ . Это сообщение передается R , который выводит m′ . Обратите внимание, что по предположению мы имеем m' = m с высокой вероятностью. Теперь в идеальном процессе симулятор должен придумать m . Но это невозможно, потому что в этот момент обязательство еще не открыто, поэтому единственное сообщение, которое R может получить в идеальном процессе, — это сообщение «получение». Таким образом, у нас есть противоречие.
Схема обязательств может быть либо совершенно обязательной (Алиса не может изменить свое обязательство после того, как она его приняла, даже если у нее неограниченные вычислительные ресурсы); либо совершенно скрывающей (Боб не может узнать обязательство без того, чтобы Алиса его не раскрыла, даже если у него неограниченные вычислительные ресурсы); либо сформулированной как зависящая от экземпляра схема обязательств, которая либо скрывает, либо связывает в зависимости от решения другой проблемы. [14] [15] Схема обязательств не может быть одновременно и совершенно скрывающей, и совершенно связывающей.
Схемы бит-коммитинга тривиально построить в модели случайного оракула . Учитывая хэш-функцию H с выходом 3k бит , для фиксации k -битного сообщения m Алиса генерирует случайную k- битную строку R и отправляет Бобу H( R || m ). Вероятность того, что существуют любые R′ , m′ , где m′ ≠ m такие, что H( R′ || m′ ) = H( R || m ), составляет ≈ 2 − k , но для проверки любой догадки о сообщении m Бобу потребуется сделать 2k ( для неправильной догадки) или 2k -1 ( в среднем, для правильной догадки) запросов к случайному оракулу. [16] Отметим, что более ранние схемы, основанные на хэш-функциях, по сути, можно рассматривать как схемы, основанные на идеализации этих хэш-функций как случайного оракула.
Можно создать схему бит-обязательства из любой односторонней функции , которая является инъективной . Схема основана на том факте, что каждая односторонняя функция может быть модифицирована (через теорему Голдрайха-Левина ) так, чтобы обладать вычислительно жестким предикатом (сохраняя при этом свойство инъективности).
Пусть f будет инъективной односторонней функцией, а h — хардкорным предикатом. Тогда для фиксации бита b Алиса выбирает случайный вход x и отправляет тройку
Бобу, где обозначает XOR, т. е . побитовое сложение по модулю 2. Чтобы раскоммитить, Алиса просто отправляет x Бобу. Боб проверяет, вычисляя f ( x ) и сравнивая с зафиксированным значением. Эта схема является скрывающей, потому что для того, чтобы Боб восстановил b, он должен восстановить h ( x ). Поскольку h является вычислительно сложным предикатом, восстановление h ( x ) из f ( x ) с вероятностью, большей половины, так же сложно, как и инвертирование f . Совершенное связывание следует из того факта, что f инъективно, и, таким образом, f ( x ) имеет ровно один прообраз.
Обратите внимание, что поскольку мы не знаем, как построить одностороннюю перестановку из любой односторонней функции, этот раздел снижает силу криптографического предположения, необходимого для построения протокола битовой фиксации.
В 1991 году Мони Наор показал, как создать схему бит-коммита из криптографически безопасного генератора псевдослучайных чисел . [17] Конструкция выглядит следующим образом. Если G — псевдослучайный генератор, такой, что G преобразует n бит в 3 n бит, то если Алиса хочет передать бит b :
Чтобы отменить фиксацию, Алиса отправляет Y Бобу, который затем может проверить, получил ли он изначально G ( Y ) или G ( Y ) R .
Эта схема статистически связывающая, что означает, что даже если Алиса вычислительно неограничена, она не может обмануть с вероятностью, большей, чем 2 − n . Чтобы Алиса обманула, ей нужно найти Y' , такой, что G ( Y' ) = G ( Y ) R . Если бы она могла найти такое значение, она могла бы декоммитировать, отправив правду и Y , или отправить противоположный ответ и Y' . Однако G ( Y ) и G ( Y' ) могут производить только 2 n возможных значений каждый (то есть 2 2 n ), в то время как R выбирается из 2 3 n значений. Она не выбирает R , поэтому существует вероятность 2 2 n /2 3 n = 2 − n , что Y' удовлетворяет уравнению, необходимому для обмана.
Свойство сокрытия следует из стандартного сокращения: если Боб может сказать , приняла ли Алиса ноль или единицу, он также может отличить выход псевдослучайного генератора G от истинно случайного, что противоречит криптографической безопасности G.
Алиса выбирает кольцо простого порядка p с мультипликативным генератором g .
Алиса случайным образом выбирает секретное значение x от 0 до p − 1 для фиксации и вычисляет c = g x и публикует c . Задача дискретного логарифма диктует, что из c вычислительно невозможно вычислить x , поэтому при этом предположении Боб не может вычислить x . С другой стороны, Алиса не может вычислить a x ′ <> x , так что g x ′ = c , поэтому схема является обязательной.
Эта схема не идеально скрывает, так как кто-то может обнаружить обязательство, если ему удастся решить задачу дискретного логарифма . Фактически, эта схема вообще не скрывает по отношению к стандартной игре в сокрытие, где противник не должен иметь возможности угадать, какое из двух выбранных им сообщений было передано — аналогично игре IND-CPA . Одним из следствий этого является то, что если пространство возможных значений x невелико, то злоумышленник может просто попробовать их все, и обязательство не будет скрыто.
Лучшим примером схемы идеально связывающего обязательства является тот, где обязательство представляет собой шифрование x в соответствии с семантически безопасной схемой шифрования с открытым ключом с идеальной полнотой, а декоммитирование представляет собой строку случайных битов, используемых для шифрования x . Примером схемы теоретически скрывающего информацию обязательства является схема обязательства Педерсена, [18] которая вычислительно связывает в соответствии с предположением дискретного логарифма. [19] В дополнение к схеме выше, она использует другой генератор h простой группы и случайное число r . Обязательство устанавливается . [20]
Эти конструкции тесно связаны и основаны на алгебраических свойствах базовых групп, и изначально это понятие казалось очень связанным с алгеброй. Однако было показано, что базирование статистически связывающих схем обязательств на общем неструктурированном предположении возможно, через понятие интерактивного хеширования для обязательств из общих предположений сложности (в частности и изначально, основанных на любой односторонней перестановке), как в. [21]
Алиса выбирает так, что , где и — большие секретные простые числа. Кроме того, она выбирает простое число, такое что и . Затем Алиса вычисляет публичное число как элемент максимального порядка в группе. [22] Наконец, Алиса подтверждает свой секрет , сначала генерируя случайное число из , а затем вычисляя .
Безопасность вышеуказанного обязательства основана на сложности проблемы RSA и имеет идеальное сокрытие и вычислительную привязку. [23]
Схема обязательств Педерсена вводит интересное гомоморфное свойство, которое позволяет выполнять сложение между двумя обязательствами. Более конкретно, учитывая два сообщения и и случайность и , соответственно, можно сгенерировать новое обязательство, такое что: . Формально:
Чтобы раскрыть вышеуказанное обязательство Педерсена для нового сообщения , необходимо добавить случайность и .
Аналогично, упомянутое выше обязательство на основе RSA имеет гомоморфное свойство относительно операции умножения. При наличии двух сообщений и со случайностью и , соответственно, можно вычислить: . Формально: .
Чтобы открыть вышеуказанное обязательство для нового сообщения , необходимо добавить случайность и . Это вновь созданное обязательство распространяется аналогично новому обязательству для .
Некоторые схемы обязательств позволяют предоставить доказательство только части обязательственного значения. В этих схемах секретное значение представляет собой вектор многих индивидуально разделяемых значений.
Обязательство вычисляется из в фазе подтверждения. Обычно, в фазе раскрытия, доказывающий раскрывает все и некоторые дополнительные данные доказательства (например, в простом битовом обязательстве). Вместо этого доказывающий может раскрыть любое отдельное значение из вектора и создать эффективное доказательство того, что это подлинный элемент th исходного вектора, который создал обязательство . Доказательство не требует никаких значений, кроме как быть раскрытыми, и невозможно создать действительные доказательства, которые раскрывают другие значения для любого из , кроме истинного. [24]
Вектор хеширования является наивной векторной схемой частичного раскрытия обязательств, основанной на бит-обязательстве. Значения выбираются случайным образом. Отдельные обязательства создаются путем хеширования . Общее обязательство вычисляется как
Чтобы доказать один элемент вектора , доказывающий раскрывает значения
Проверяющий может вычислить из и , а затем может проверить, что хэш всех значений является обязательством . К сожалению, доказательство находится в размере и времени проверки. С другой стороны, если есть набор всех значений, то обязательство находится в размере, а доказательство находится в размере и времени проверки. В любом случае, обязательство или доказательство масштабируется с , что не является оптимальным.
Распространенным примером практической схемы частичного раскрытия является дерево Меркла , в котором создается двоичное хэш-дерево из элементов . Эта схема создает обязательства, которые имеют размер, и доказательства, которые имеют размер и время проверки. Корневой хэш дерева является обязательством . Чтобы доказать, что раскрытое является частью исходного дерева, только значения хэша из дерева, по одному с каждого уровня, должны быть раскрыты в качестве доказательства. Проверяющий может проследить путь от заявленного листового узла до корня, хэшируя родственные узлы на каждом уровне и в конечном итоге достигая значения корневого узла, которое должно быть равно . [25]
Обязательство Кейт-Заверуча-Голдберг использует криптографию на основе пар для построения схемы частичного раскрытия с размерами обязательств, размерами доказательств и временем проверки доказательств. Другими словами, по мере того, как , количество значений в , увеличивается, обязательства и доказательства не становятся больше, и доказательства не требуют дополнительных усилий для проверки.
Обязательство KZG требует предопределенного набора параметров для создания пары и доверенного элемента-ловушки. Например, можно использовать пару Тейта . Предположим, что — аддитивные группы, а — мультипликативная группа пары. Другими словами, пара — это отображение . Пусть — элемент-ловушка (если — простой порядок и ), и пусть и — генераторы и соответственно. В рамках настройки параметров мы предполагаем, что и — известные и общие значения для произвольного числа положительных целочисленных значений , в то время как само значение-ловушка отбрасывается и никому не известно.
Обязательство KZG переформулирует вектор значений, которые должны быть приняты, как полином. Сначала мы вычисляем полином таким образом, что для всех значений в нашем векторе. Интерполяция Лагранжа позволяет нам вычислить этот полином
В этой формулировке полином теперь кодирует вектор, где . Пусть будут коэффициентами , такими, что . Обязательство вычисляется как
Это вычисляется просто как скалярное произведение между предопределенными значениями и коэффициентами полинома . Поскольку является аддитивной группой с ассоциативностью и коммутативностью, равно просто , поскольку все сложения и умножения с могут быть распределены вне оценки. Поскольку значение ловушки неизвестно, обязательство по сути является полиномом, оцененным по числу, неизвестному никому, с результатом, замаскированным в непрозрачный элемент .
Доказательство KZG должно продемонстрировать, что выявленные данные являются подлинным значением, когда было вычислено. Пусть , выявленное значение, которое мы должны доказать. Поскольку вектор был переформулирован в многочлен, нам действительно нужно доказать, что многочлен , будучи оцененным в , принимает значение . Проще говоря, нам просто нужно доказать, что . Мы сделаем это, продемонстрировав, что вычитание из дает корень в . Определим многочлен как
Этот многочлен сам по себе является доказательством того, что , поскольку если существует, то делится на , то есть имеет корень в , поэтому (или, другими словами, ). Доказательство KZG покажет, что существует и обладает этим свойством.
Доказывающая программа вычисляет посредством указанного выше полиномиального деления, а затем вычисляет значение доказательства KZG.
Это равно , как и выше. Другими словами, значение доказательства — это многочлен, снова оцененный при значении ловушки , скрытом в генераторе .
Это вычисление возможно только в том случае, если указанные выше многочлены делятся нацело, поскольку в этом случае частное является многочленом, а не рациональной функцией . Из-за конструкции ловушки невозможно оценить рациональную функцию при значении ловушки, можно оценить многочлен только с помощью линейных комбинаций предварительно вычисленных известных констант . Вот почему невозможно создать доказательство для неверного значения .
Для проверки доказательства используется билинейная карта спаривания , чтобы показать, что значение доказательства суммирует действительный многочлен , который демонстрирует желаемое свойство, которое состоит в том, что было разделено нацело на . Проверочное вычисление проверяет равенство
где — билинейная функция отображения, как указано выше. — предварительно вычисленная константа, вычисляется на основе .
Переписав вычисление в группе сопряжения , заменив в и и позволив быть вспомогательной функцией для подъема в группу сопряжения, проверка доказательства становится более ясной.
Предполагая, что билинейное отображение построено корректно, это демонстрирует, что , без того, чтобы валидатор знал, что такое или . Валидатор может быть в этом уверен, потому что если , то многочлены оцениваются с одинаковым выходом в значении ловушки . Это демонстрирует, что многочлены идентичны, потому что, если параметры были построены корректно, значение ловушки никому не известно, а это означает, что проектирование многочлена, имеющего определенное значение в ловушке, невозможно (согласно лемме Шварца–Циппеля ). Если теперь проверено, что является истинным, то проверено, что существует, поэтому должно быть полиномиально делимым на , поэтому из-за теоремы о факторах . Это доказывает, что значение th принятого вектора должно быть равно , поскольку это выход оценки принятого многочлена в .
Полезность спаривания билинейного отображения заключается в том, чтобы позволить умножению на происходить безопасно. Эти значения действительно лежат в , где деление предполагается вычислительно сложным. Например, может быть эллиптической кривой над конечным полем, как это принято в криптографии на эллиптических кривых . Тогда предположение о делении называется проблемой дискретного логарифма эллиптической кривой [ сломанный якорь ] , и это предположение также является тем, что защищает значение ловушки от вычисления, делая его также основой обязательств KZG. В этом случае мы хотим проверить , . Это невозможно сделать без спаривания, потому что со значениями на кривой и мы не можем вычислить . Это нарушило бы вычислительное предположение Диффи-Хеллмана , основополагающее предположение в криптографии на эллиптических кривых . Вместо этого мы используем спаривание, чтобы обойти эту проблему. по-прежнему умножается на , чтобы получить , но другая сторона умножения выполняется в парной группе , поэтому . Мы вычисляем , что из-за билинейности отображения равно . В этой выходной группе у нас все еще есть проблема дискретного логарифма , поэтому, даже если мы знаем это значение и , мы не можем извлечь показатель степени , предотвращая любое противоречие с дискретным логарифмом ранее. Это значение можно сравнить с , и если мы сможем заключить, что , даже не зная, чему равно фактическое значение , не говоря уже о .
Кроме того, обязательство KZG может быть расширено для доказательства значений любых произвольных значений (не только одного значения), при этом размер доказательства остается , но время проверки доказательства масштабируется с . Доказательство то же самое, но вместо вычитания константы мы вычитаем многочлен, который вызывает множественные корни, во всех местах, которые мы хотим доказать, и вместо деления на мы делим на для тех же мест. [26]
В квантовой криптографии интересен вопрос о том, существуют ли безусловно безопасные протоколы битовых обязательств на квантовом уровне, то есть протоколы, которые (по крайней мере асимптотически) связывают и скрывают, даже если нет ограничений на вычислительные ресурсы. Можно надеяться, что может быть способ использовать внутренние свойства квантовой механики , как в протоколах для безусловно безопасного распределения ключей .
Однако это невозможно, как показал Доминик Майерс в 1996 году (см. [27] для оригинального доказательства). Любой такой протокол можно свести к протоколу, в котором система находится в одном из двух чистых состояний после фазы принятия, в зависимости от бита, который Алиса хочет принять. Если протокол является безусловно скрывающим, то Алиса может унитарно преобразовать эти состояния друг в друга, используя свойства разложения Шмидта , эффективно побеждая свойство связывания.
Одно тонкое предположение доказательства заключается в том, что фаза фиксации должна быть завершена в какой-то момент времени. Это оставляет место для протоколов, которые требуют непрерывного потока информации до тех пор, пока бит не будет раскрыт или протокол не будет отменен, в этом случае он больше не будет обязательным. [28] В более общем плане доказательство Майерса применимо только к протоколам, которые используют квантовую физику , но не специальную теорию относительности . Кент показал, что существуют безусловно безопасные протоколы для фиксации битов, которые используют принцип специальной теории относительности, утверждающий, что информация не может распространяться быстрее света. [29]
Физические неклонируемые функции (PUF) полагаются на использование физического ключа с внутренней случайностью, который трудно клонировать или эмулировать. Электронные, оптические и другие типы PUF [30] широко обсуждались в литературе в связи с их потенциальными криптографическими применениями, включая схемы обязательств. [31] [32]