https://cyphersnake.codeberg.page/posts/atom.xml

Universal Protocol v1

2024-03-18

Universal Protocol

Универсальный стандарт

Давайте поговорим про криптографические вундервафли от компании 0xPARC — авторов той самой статьи про Programmable Cryptography. Если помните, там упоминался "универсальный криптографический протокол", который должен был решить проблему унификации. Проблема фундаментальная: ты приходишь в какой-то домен, видишь там N стандартов, пытаешься их унифицировать, но вместо «кольца, что правит ими всеми» создаёшь просто ещё один стандарт. Давайте попробуем решить эту проблему, как #progcrypto-специалисты.

Допустим, ты сформировал N+1 стандарт. Что сделает его универсальным?

Шаг 1.

Для начала напишем N алгоритмов, которые преобразуют старые стандарты в новый. Чтобы избежать появления нескольких конкурирующих реализаций, создадим формальную спецификацию¹. Используя формальные доказательства корректности кода этой спецификации, мы получим каноничный способ работы со стандартом — причём со всеми существующими. Это позволит предсказуемо преобразовывать данные между всеми возможными представлениями. Отличная функциональность!

Шаг 2.

Теперь нам нужно доказательство соответствия исходных данных и их преобразованной версии. Здесь есть два подхода: либо повторное выполнение кода преобразователя (re-execution) из предыдущего пункта, либо использование криптографического протокола, поддерживающего короткие доказательства (zk-SNARK², zk-STARK³ и другие). Первый вариант неудачен: он требует передавать вместе с новым форматом данных ещё и старый. Второй же позволяет взять с собой лишь небольшой proof, подтверждающий корректность преобразования. Например, если исходные данные были криптографически подписаны, или их хеш находится в открытом доступе, мы можем создать математические гарантии, что наш N+1 формат соответствует любому из легаси-форматов.

Скептичный читатель уже заметил подвох. Данные можно верифицировать множеством способов, и учесть их все в рамках одного circuit невозможно — ведь только методов криптографической подписи существует сотни. Простая схема тут не поможет.

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

Здесь есть пространство для экспериментов, но выберем такой подход: создадим виртуальную машину (VM), которая работает с логическими операциями!

Звучит масштабно, но логическая VM — это всего лишь движок для математических выражений. Входные данные легаси-протокола — это аксиомы, а внутри программы мы с помощью Domain-Specific Language (DSL) доказываем их соответствие нашему новому формату. Это предельно упрощённая вариация CoQ/Lean, которая, тем не менее, позволяет реализовать любую верификацию. К примеру криптографические подписи всегда специфицированы математически, так что большую часть таких программ-доказательств с небольшой помощью сможет перепечатать из PDF даже средняя LLM. Теперь мы из коробки получим и circuit, и формальное соответствие спецификации, ведь оба этих инструмента сводят преобразования обычных процессорных операций к логическим.

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

Однако возникает следующая проблема: любое изменение данных полностью обнуляет всю цепочку доказательств. Получая данные, мы знаем, что они корректны и унифицированы, но стоит изменить хотя бы один байт — и наш N+1 формат теряет все преимущества. Или нет? Можно ли использовать созданную ранее среду исполнения для любых преобразований? Да!

Шаг 3.

Теперь наш формат требует, чтобы любая операция выполнялась внутри логической VM. Это создаёт накладные расходы, но возможно ли, чтобы преимущества перевешивали недостатки? Если мы сделаем систему модульной и переиспользуемой, то сможем собирать из её компонентов любую логику. В итоге наш N+1 формат перестаёт быть просто форматом и становится универсальным адаптером, где вся цепочка вычислений одновременно и доказуема, и верифицируема. А если базовый протокол поддерживает zk⁴, мы сможем работать с приватными данными, не раскрывая их. В итоге, решая проблему N+1 стандарта, мы получили настоящую вундервафлю — способ соединить всё со всем без необходимости мгновенной миграции участников.


Какие задачи можно решать при помощи такой вундервафли?

Давайте пофантазируем.

  1. Перенести профиль с одной платформы на другую.

Действительно: возьми несколько готовых алго-кубиков, соедини их вместе — и получи данные в рамках другой платформы, причём без разработки специфичного решения.

  1. Доказать свои "персональные данные", без раскрытия паспорта.

Большинство заграничных паспортов содержит криптографическую подпись, заверенную государством. Теперь её можно использовать для подтверждения любых сведений о вас, не раскрывая сам документ. Да, KYC (Know Your Customer), но KYC здорового человека!

  1. Агрегировать все ваши финансовые данные в одном месте.

Десятки legacy-форматов банков, данные из разных блокчейнов и ваше приложение для учета наличных — всё это можно легко привести к единому виду, рассчитать любые метрики и даже доказать свойства над ними.


Причём для всех этих случаев математически гарантировано отсутствие ошибок (если сами данные корректны). Кто-то сделал универсальный N+2 стандарт? Вы вполне сможете быть совместимы друг с другом и будете конкурировать только алгоритмической полнотой платформы.

Красота же!

PS

Вы можете, конечно, подумать, что это звучит слишком фантастично. Но достижимо ли это? Да! И POC (Proof-of-Concept) не просто существует, но даже выложен в open-source, и его можно потрогать. В этот раз я не повторю своей ошибки с "галлюцинирующими серверами", когда просто оставил ссылку, а попробую рассказать подробнее в одном из следующих постов.


  • ¹ Формальная спецификация - математическое описание системы, однозначно определяющее её поведение и позволяющее формально доказать корректность реализации. awesome-rust-formalized-reasoning
  • ² zk-SNARK - компактное, неинтерактивное доказательство с нулевым разглашением, как пример halo2-protocol.
  • ³ zk-STARK - масштабируемое и прозрачное доказательство с нулевым разглашением, не требующее доверенной настройки и устойчивое к квантовым атакам.
  • ⁴ zk - свойство криптографических протоколов, позволяющее доказать истинность утверждения, не раскрывая дополнительных сведений.