За пределами Нулевого Разглашения (ZK): Подробное руководство по конфиденциальности Web3 (Часть 1)
Серия из трех частей, посвященная конфиденциальности в Web3, исследующая возможности безопасных вычислений и развеивающая заблуждения обо всем, от ZKP (Доказательство с Нулевым Разглашением) до TEE (Доверенной Среды Выполнения)!
Блокчейны всегда имели проблему конфиденциальности по своей природе. Полное отсутствие конфиденциальности внутрисетевых данных сильно ограничивает возможности блокчейна и задачи, для решения которых они могут быть использованы. Однако только недавно блокчейны стали достаточно полезными (и достаточно используемыми), чтобы этот присущий им недостаток был признан широким сообществом.
Тем не менее, в то время как все больше людей понимают, что такое блокчейны и какие проблемы они могут решить, остается меньше ясности в том, как правильно определить проблему конфиденциальности — и, что более важно, какие для этого существуют решения. Этот пробел приводит к популярным заблуждениям и мифам, причем люди часто приписывают определенным решениям больше полномочий, чем есть на практике. В качестве простого примера можно привести технологию “ZK” (zero-knowledge — нулевого разглашения), которая в первую очередь полезна для масштабирования, а не для повсеместной конфиденциальности, и это, конечно, не серебряная пуля. Но вы не узнаете об этом, читая крипто-Twitter или множество рассуждений.
В Secret Network мы фокусируемся на практических подходах к достижению конфиденциальности в процессе разработки. Мы не просто пытаемся решить “конфиденциальность транзакций” — самую простую проблему приватной отправки данных из точки А в точку Б. У нас есть гораздо более масштабное и значимое представление: позволить каждому создавать универсальные и легко совместимые децентрализованные приложения с программируемой конфиденциальностью. Мы также гордимся тем, что являемся первопроходцами: Secret Network уже является первым блокчейном первого уровня (L1), который внедрил смарт-контракты с сохранением конфиденциальности в основной сети, и мы достигли этого почти 2 года назад.
Поскольку для нашей миссии очень важно, чтобы люди не только понимали, что мы создаем, но и почему мы это делаем, я нашел время, чтобы написать подробную серию из трех частей о конфиденциальности Web3. К концу этих статей вы будете лучше понимать сильные и слабые стороны различных технологий обеспечения конфиденциальности, текущий спектр решений, а также то, почему мы в Secret выбрали именно наш прагматичный и практичный подход к обеспечению конфиденциальности. С учетом вышесказанного, цель этого поста — образовательная, а не особая презентация Secret, поэтому я постарался представить различные решения как можно более объективно.
Для читателей, которые хорошо разбираются в вопросе, вы увидите некоторые чрезмерные упрощения и обобщения. Они были необходимы, чтобы уместить этот исчерпывающий обзор в короткую серию постов. Мы приветствуем ваши отзывы и всегда можем внести улучшения!
Если вам понравился этот материал и вы разделяете нашу миссию по созданию центра конфиденциальности для всего Web3, мы приглашаем вас помочь нам в создании экосистемы Secret.
Вот план этого цикла:
Часть 1 (этот пост): Мы определим общую проблему безопасных вычислений (или вычислений с сохранением конфиденциальности), ее связь с Web3, и почему конфиденциальность является недостающим звеном.
Часть 2: Мы дадим полный обзор всех доступных решений, особенно их компромиссов, и объясним, как и почему мы остановились на текущей архитектуре Secret Network.
Часть 3: Мы развеем распространенные мифы о решениях для обеспечения конфиденциальности, включая то, какие гарантии конфиденциальности дают (и не дают) доказательства с нулевым разглашением.
Давайте погружаться!
Безопасные вычисления
Давайте начнем с определения проблемы безопасных вычислений, которая охватывает многопользовательскую вычислительную проблему. Как мы узнаем из этой статьи, на практике проблема безопасных вычислений характерна для всех блокчейнов (и не блокчейнов!), с отсутствием конфиденциальности.
Представьте себе идеализированный мир, где есть единственный, мощный и доверенный сервер, а все остальные являются клиентами, которые пользуются этим сервером (посылают ему входящие данные и получают исходящие). Если такой сервер существует, доступен для всех и ему действительно можно доверять, мы можем использовать его для любых цифровых услуг, которые только можно себе представить. Этот сервер будет включать в себя весь Интернет: он будет содержать цифровую инфраструктуру наших правительств, нашу банковскую систему, все веб-сайты, социальные сети, поисковые системы, приложения и т.д.
Даже теоретически эта мысль может вызвать тревогу, поскольку, как мы все знаем, не существует такого лица, которому мы могли бы доверить “владение” этим сервером, а вместе с ним и всем Интернетом. Тем не менее, полезно представить себе такую идеальную версию реальности и попытаться построить технические решения, которые попытаются ее имитировать. Очевидно, что если мы сможем построить такие решения (например, с использованием блокчейнов, криптографии), которые достигнут этого идеала, то нам не нужно будет полагаться исключительно на социальное доверие — необходимость слепо доверять организациям, правительствам и т.д., чтобы они поступали правильно.
Вернемся пока к нашей идеальной схеме и предположим, что такой доверенный сервер действительно существует. Когда мы говорим, что “доверяем” этому серверу, что мы ему доверяем? Ну, очевидно, мы хотим, чтобы он защищал все наши данные, и мы хотим быть уверены, что он предоставляет нам полезные услуги (например, не подделывает наши данные и не отправляет нам неправильные результаты на наши запросы).
Другими словами, мы — пользователи — хотим быть уверены, что можем защитить конфиденциальность наших данных (в том числе предотвратить утечку наших данных от сервера другим пользователям), а также обеспечить корректность результатов, которые мы получаем от такого сервера. Обратите внимание, что иногда важно, чтобы сервер также гарантировал, что другие пользователи не испортят вычисления (например, предоставив неверные данные).
Эта структура, которая пытается в мульти-клиентской среде достичь как конфиденциальности, так и достоверности, известна как структура безопасных вычислений в цифровом мире, или иначе — модель Безопасных Многосторонних Вычислений (Multi-Party Computation — MPC). Решения проблемы безопасных вычислений пытаются использовать инструменты криптографии и распределенных систем для моделирования такого мощного доверенного сервера, не предполагая его существования.
Отметим, что терминология, которую мы будем использовать: термины “безопасные вычисления” и MPC часто используются как взаимозаменяемые, но поскольку иногда они относятся к проблеме, а иногда, как вы увидите позже, к определенному набору решений, мы будем продолжать рассматривать проблему как “безопасные вычисления”, а MPC использовать для рассмотрения определенного класса решений.
Чтобы понять, почему эта схема полезна, обратите внимание, что любая операция в цифровом мире может быть по сути подведена под эту идеальную парадигму. Приведем несколько конкретных примеров:
- Веб-поиск: каждый пользователь может поделиться своим поисковым запросом, сервер извлекает все связанные с ним веб-страницы и отправляет их пользователю.
- Райдшеринг: здесь пользователями являются как пассажиры, так и водители — они делятся данными о своем местонахождении с сервером, который подбирает ближайших пассажиров и водителей (в этом случае результат получает и водитель, и пассажир).
- Голосование: каждый пользователь голосует. Сервер подсчитывает все голоса и публикует результаты всем людям. Мы также снова и снова видим, как этот пример реализуется в смарт-контрактах для управления сообществами токенов, где пользователи могут голосовать пропорционально количеству токенов, которыми они владеют.
- Отправка крипто-токенов: на сервере хранятся балансы двух пользователей, назовем их Алисой и Бобом, которые хотят совершить транзакцию. Допустим, Алиса хочет перевести Х токенов Бобу. Сервер вычисляет это и в большинстве блокчейнов сообщает всем клиентам (не только Алисе и Бобу!) их новые балансы.
В оставшейся части этой серии статей наша цель будет заключаться в решении проблемы как достоверности, так и конфиденциальности. Решение обеих задач в универсальном случае (а именно — для всех возможных вычислений/приложений) оказывается очень сложным. Обратите внимание, что существуют и другие свойства, представляющие интерес, но во многих случаях они являются производными от этих двух. Для простоты в этой серии мы в основном игнорируем все, что выходит за рамки правильности и конфиденциальности.
Как мы подробнее расскажем позже, блокчейны сегодня (и Web3 в целом) решают только половину проблемы безопасных вычислений. Блокчейны обеспечивают достоверность, но не предоставляют никакой конфиденциальности. Если вы знакомы с Secret, то вы знаете, что именно здесь мы вступаем в игру — наша цель состоит в том, чтобы предоставить окончательное решение по обеспечению конфиденциальности для Web3, решив вторую половину проблемы безопасных вычислений.
Web2 vs Web3
До недавнего времени все технические решения проблемы безопасных вычислений были только теоретическими, и единственным выбором на практике было просто слепое доверие к одной структуре — точно так же, как в идеальной, нереалистичной модели, которую мы описали выше. По сути, именно так работает Web2: пользователи взаимодействуют с сервером определенной компании (например, Google) и в процессе позволяют этой компании хранить и использовать их данные любым способом, который она сочтет нужным, в обмен на получение некоторой услуги, которой клиенты также полностью доверяют.
Такие подходы привели к бесчисленным нарушениям безопасности данных, проблемам конфиденциальности и, в конечном итоге, к регулированию и новым законам (например, GDPR — Генеральный регламент по защите персональных данных), которые направлены на лучшую защиту пользовательских данных с социальной точки зрения. Однако регулирование — это лишь часть головоломки. Нам также необходимы технологические инновации.
Изобретение Биткоина и блокчейна — а затем и Эфириума— опиралось на идеи, которые десятилетиями существовали в научной литературе, но стали первыми попытками в реальной жизни устранить это доверие к одному субъекту. Блокчейн смарт-контрактов — это, по сути, совокупность множества компьютеров, которым по отдельности доверие не оказывается, но можно доверять коллективно (с учетом некоторых предположений о максимальном сговоре) правильное вычисление любой функциональности. Причина, по которой это чрезвычайно мощное решение, заключается в его универсальности — его можно использовать для всего. На практике вопрос о том, насколько мы сможем масштабировать блокчейны, чтобы они действительно могли заменить централизованные решения, остается открытым, но если мы действительно сможем — разве не было бы здорово построить лучший интернет с их помощью? В этом и заключается основная идея Web3.
Блокчейны приобрели огромную популярность благодаря своей способности решать проблему достоверности, как мы уже упоминали, что является половиной проблемы, которую мы определили для безопасных вычислений. По сути, это означает, что все, что вычисляется на блокчейне, можно считать правильным и что никто (клиент или сервер) не сможет внести в него изменения.
Поэтому неудивительно, что случаи использования блокчейна, где блокчейн на сегодняшний день нашел наибольшее применение на рынках, — это случаи использования в финансовой сфере, где уровень доверия находится в дефиците. Например, если мы можем доверять компании Google в том, что она отправит нам правильные результаты поиска по нашему запросу (мотивы взаимосвязаны), то доверим ли мы ей управление мировыми финансами и книгой бухгалтерского учета? Скорее всего, нет.
Итак, мы установили, что де-факто блокчейн решает проблему достоверности, следующий вопрос: а как насчет конфиденциальности? Как выяснилось, блокчейны по своей конструкции не обеспечивают никакой конфиденциальности. В этом смысле они значительно хуже, чем модель Web2:
Если не вдаваться в технические подробности, основная интуиция о том, почему блокчейн бесполезен для обеспечения конфиденциальности, связана с принципом его работы. В двух словах, блокчейн гарантирует достоверность, позволяя многим серверам выполнять вычисления вместе и проверять, что все они приходят к одному и тому же выводу. Поскольку в бездоверительных блокчейнах каждый может запустить сервер, из этого сразу следует, что любой человек в мире может видеть данные каждого, в то время как в Web2 эти данные видит только один субъект (что уже довольно проблематично).
И теперь мы переходим к сути вопроса. Оказывается, решить проблему конфиденциальности после того, как вы решили проблему достоверности, очень сложно!
Решить проблему конфиденциальности трудно
Прежде чем мы изучим возможности решения (это будет во второй части), важно интуитивно понимать, почему решение проблемы конфиденциальности является трудным, и почему оно, вероятно, сложнее, чем решение проблемы достоверности. Начиная с этого момента и далее, мы начнем получать немного больше технической информации, но мы постараемся сохранить ее на достаточно высоком уровне, чтобы все могли понять.
Для доказательства достоверности в блокчейне есть отличное решение: мы позволяем многим серверам повторно выполнять вычисления, и они могут проверять друг друга и быть уверенными, что никто не мошенничает. Существуют и другие решения для доказательства достоверности, но в конечном итоге все они сводятся к идее, что кто-то другой может проверить вашу работу.
Однако в случае с конфиденциальностью мы требуем чего-то совершенно противоположного интуиции — мы обращаемся к серверу (или нескольким серверам) с просьбой произвести вычисления над данными, которые они не видят. Если они могут видеть данные, они могут их передать, а для этого необходимо доверие, которое мы не хотим оказывать. На практике существует несколько криптографических решений этой проблемы, которые мы вскоре рассмотрим — но, как и все остальное в жизни, они связаны с компромиссами, некоторые из которых остаются очень серьезными.
Что еще более важно, утечка данных — это скрытая форма атаки безопасности: по определению, ни мы, ни другие люди не можем знать, что произошла утечка данных. Даже если в итоге мы обнаружим, что наши конфиденциальные данные оказались выложены где-то в Интернете, может оказаться невозможным точно определить, где произошла утечка и кто ее осуществил. Это сильно отличается от достоверности, где “гласные” атаки (т.е. вы активно нарушаете протокол, и другие могут это обнаружить) позволяют легче определить злоумышленников.
Эта проблема “скрытых” и “гласных” атак, вероятно, является самой большой причиной того, почему создание решений, сохраняющих конфиденциальность, так затруднено, потому что мы не можем создать систему поощрения против подобных действий.
Теперь, когда мы начинаем понимать проблему конфиденциальности в Web3, пришло время углубиться в то, какие существуют решения, каковы компромиссы и как Secret решает эту очень важную проблему с помощью уникальной архитектуры, сохраняющей конфиденциальность, и в то же время являющейся программируемой и прагматичной.
Спасибо, что прочитали первую часть этой серии статей о конфиденциальности Web3! Во второй части мы рассмотрим отдельные технологии, а также их текущие сильные и слабые стороны:
- Полное или частичное гомоморфное шифрование (Fully or partial homomorphic encryption (HE/FHE))
- Доверенные Среды Выполнения (Trusted Execution Environments (TEE))
- Безопасные Многосторонние Вычисления (Secure Multi-Party Computation (MPC))
- Доказательства с нулевым разглашением (Zero-Knowledge Proofs (ZKPs))
Мы глубоко обдумывали эти вопросы на протяжении последних лет, и Secret Network гордится тем, что продолжает лидировать в области создания безопасных вычислений в блокчейн пространстве. Если эти идеи вас заинтересовали — и если вы убеждены в их важности — присоединяйтесь к нам в создании решений и технологий, которые помогут нам обеспечить безопасность децентрализованной сети и масштабирование Web3!
Если вы разработчик приложений, здесь вы можете знакомиться с нашими ресурсами. (Secret использует Rust!)
Если вы из тех, кто так же как и мы, желает обеспечить пользователям Web3 необходимую и заслуженную защиту конфиденциальности данных, станьте Секретным Агентом. Наша миссия заключается в том, чтобы децентрализованная сеть, которую мы создаем, расширяла свои возможности и была доступна для всех. От Просвещения и Образования до Международного Роста и Сотрудничества с Университетами — существует множество способов помочь внести свой вклад в расширение экосистемы Secret и глобальную доступность технологий конфиденциальности в Web3.
Ознакомьтесь с программой «Секретных Агентов» и присоединитесь к одному из лучших и самых активных сообществ во всем блокчейн-пространстве!
Вперед, к новым вершинам конфиденциальности!
Гай Зискинд — основатель Secret Network, генеральный директор SCRT Labs, бывший научный сотрудник Массачусетского технологического института и автор нескольких наиболее цитируемых работ по конфиденциальности блокчейна (включая “Децентрализация конфиденциальности”, написанную в 2015 году).
Чтобы обсудить Secret Network и Secret Apps, посетите каналы нашего сообщества: