В криптографии проверяемая случайная функция ( VRF) — это псевдослучайная функция с открытым ключом , которая предоставляет доказательства того, что ее выходные данные были рассчитаны правильно. Владелец секретного ключа может вычислить значение функции, а также связанное с ним доказательство для любого входного значения. Все остальные, используя доказательство и связанный с ним открытый ключ (или ключ проверки [1] ), могут проверить, что это значение действительно было рассчитано правильно, однако эта информация не может быть использована для нахождения секретного ключа. [2]
Проверяемую случайную функцию можно рассматривать как аналог криптографического хэша с открытым ключом [2] и как криптографическое обязательство по экспоненциально большому числу, казалось бы, случайных битов. [3] Концепция проверяемой случайной функции тесно связана с концепцией проверяемой непредсказуемой функции (VUF), чьи выходные данные трудно предсказать, но не обязательно кажутся случайными. [3] [4]
Концепция VRF была введена Микали , Рабином и Вадханом в 1999 году. [4] [5] С тех пор проверяемые случайные функции нашли широкое применение в криптовалютах, а также в предложениях по разработке протоколов и кибербезопасности.
В 1999 году Микали, Рабин и Вадхан ввели концепцию VRF и предложили первую такую функцию. [4] Первоначальная конструкция была довольно неэффективной: сначала она создает проверяемую непредсказуемую функцию , затем использует хардкорный бит для ее преобразования в VRF; более того, входные данные должны быть сопоставлены с простыми числами сложным образом: а именно, с помощью генератора простых последовательностей, который генерирует простые числа с подавляющей вероятностью, используя вероятностный тест на простоту . [3] [4] Таким образом предложенная проверяемая непредсказуемая функция, которая является доказуемо безопасной, если вариант задачи RSA является сложным, определяется следующим образом: Открытый ключ PK равен , где m — произведение двух случайных простых чисел, r — число, случайно выбранное из , coins — случайно выбранный набор битов, а Q — функция, случайно выбранная из всех полиномов степени над полем . Секретный ключ равен . При наличии входных данных x и секретного ключа SK VUF использует генератор простых чисел для выбора соответствующего простого числа (генератору требуются дополнительные входные данные Q и монеты ), а затем вычисляет и выводит , что легко сделать, зная . [4]
В 2005 году Додис и Ямпольский предложили эффективную и практичную проверяемую случайную функцию. [3] [6] Когда входные данные поступают из небольшой области (затем авторы расширяют ее до большей области), функцию можно определить следующим образом:
где e (·,·) — это билинейное отображение . Чтобы проверить, было ли вычислено правильно или нет, можно проверить, если и . [3] [6] Чтобы расширить это на большую область, авторы используют конструкцию дерева и универсальную хэш-функцию . [3] Это безопасно, если трудно нарушить «предположение об инверсии q-Диффи-Хелмана», которое гласит, что ни один заданный алгоритм не может вычислить , и «предположение об инверсии q-решения билинейного Диффи-Хелмана», которое гласит, что невозможно для эффективного алгоритма, заданного в качестве входных данных, отличить от случайного в группе . [3] [6]
В 2015 году Хофхайнц и Ягер построили VRF, которая является доказуемо безопасной для любого члена «семейства (n − 1)-линейных предположений», которое включает в себя линейное предположение о решении . [7] Это первая такая построенная VRF, которая не зависит от «предположения о сложности Q-типа». [7]
В 2019 году Битанский показал, что VRF существуют, если также существуют неинтерактивные доказательства, неразличимые по свидетелям (то есть более слабые версии неинтерактивных доказательств с нулевым разглашением для проблем NP , которые скрывают только свидетельство, которое использует доказывающая сторона [1] [8] ), неинтерактивные криптографические обязательства и псевдослучайные функции с ограничениями по одному ключу (то есть псевдослучайные функции, которые позволяют пользователю оценивать функцию только с помощью предустановленного ограниченного подмножества возможных входных данных [9] ). [1]
Когда забывчивая псевдослучайная функция основана на асимметричной криптографии , обладание открытым ключом может позволить клиенту проверить выходные данные функции, проверив цифровую подпись или доказательство с нулевым разглашением .
В 2020 году Эсгин и др. предложили постквантовую безопасную VRF, основанную на криптографии на основе решеток . [10]
VRF предоставляют детерминированные предварительные обязательства для входных данных с низкой энтропией, которые должны быть устойчивы к атакам методом перебора прообразов . [11] [ необходим лучший источник ] VRF можно использовать для защиты от атак офлайн-перебора (таких как атаки по словарю ) на данные, хранящиеся в структурах данных на основе хэша. [2]
VRF-системы использовались для изготовления:
VRF также можно использовать для реализации случайных оракулов . [13]
DNSSEC — это система, которая не позволяет злоумышленникам вмешиваться в сообщения системы доменных имен , но она также страдает от уязвимости перечисления зон. Предлагаемая система NSEC5, которая использует VRF [ как? ] , доказанно предотвращает этот тип атак. [14] [ важность? ]