Просто о сложном: Confidential Cloud Computing

Сегодня мы попробуем разложить по полочкам концепцию Confidential Cloud Computing и содержательно поговорить о конфиденциальных вычислениях в Web 3.

  • Облачные вычисления

Термин «облако» несколько раз пересматривался в истории Интернета. Для первопроходцев на заре Интернета идея заключалась в создании распределенной системы взаимосвязанных мейнфреймов, которая сама стала бы облаком. В более позднем видении облако будет означать возможность пользователей получать доступ к своим ресурсам (в основном данным) с любого устройства, которое к нему подключено.

Облако начало приобретать современные очертания только в начале 2000 года. Что произошло? До этого Интернет был в основном в руках нескольких энтузиастов. Затем произошла удивительная вещь: сотрудники Amazon (в то время интернет-магазина) не были удовлетворены скоростью, с которой они могли разрабатывать новые продукты и услуги. Проще говоря, они внедрили новый процесс для своих команд разработчиков и построили инфраструктуру с двумя ключевыми функциями:

  • позволить инженерам создавать новые сервисы быстрее и не затрачивать слишком много ресурсов на обслуживание;

  • обеспечить масштабирование и рост успешных услуг (тех, которые удовлетворяют спрос клиентов)

В первые дни, если разработчик делал инструмент, который другие разработчики могли бы найти полезным, он делал его открытым исходным кодом — бесплатным для использования и создания другими. Amazon действительно позволял другим разработчикам использовать созданную ими инфраструктуру и программное обеспечение, но, будучи коммерческой компанией, они взимали плату и превращали это в продукт.

Так родилось современное значение облака. От открытой распределенной сети, которую может использовать каждый, до закрытой инфраструктуры, доступ к которой осуществляется за плату. Термин прижился, потому что AWS стала чрезвычайно популярной, назвав себя пионером.

Более того, если раньше AWS выполняла свою задачу и позволяла другим компаниям и сервисам создавать, масштабировать и добиваться успеха, то сегодня темпы инноваций стагнируют.

Amazon и другие технологические гиганты, скопировавшие ее облачную модель, упустили возможность построить открытую экосистему со средой, которая способствовала бы инновациям. Вместо этого у нас теперь есть несколько конкурирующих продуктов, которые почти идентичны (главным отличием является деловая практика, используемая для продвижения этих продуктов).

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

Однако ничто не мешает нам еще раз переосмыслить облако. Основываясь на предыдущих идеях и истории, наше новое определение должно включать следующее:

  • распределенная платформа без накладных расходов или других барьеров для входа/использования;

  • стек технологий, который позволяет разработчикам и не требует особого обслуживания;

  • открытая экосистема без единого владельца, в которую каждый может внести свой вклад.

Это видение нашло сегодня свое отражение в проектах Cloud Computing в WEB 3.

  • SCC: Конфиденциальные вычисления. В чем вся суть?

Прежде всего, что означают  слова Конфиденциальные вычисления (Confidential  computing)? В частности, разве не очевидно, что данные (имеющие в действительности что угодно: изображение, дату рождения, номер счета, его баланс или даже количество дней, прошедших с момента его активации) должны быть конфиденциальными и защищенными, так зачем делать акцент на «вычислениях»?

Иногда озвучивание очевидных вопросов может привести к интересным результата. В общем случае данные могут находиться в трех состояниях:

  • в состоянии покоя: здесь буквально ничего не происходит, данные просто лежат где-то на жестком диске, и с ними ничего не происходит

  • в движении: переносятся из точки А сети в точку Б

  • в использовании: данными каким-то образом манипулируют

Важная часть здесь заключается в том, что в любой работающей системе данные почти никогда не находятся в состоянии покоя. Как только к нему обращается какое-либо приложение (даже для чтения), он считается используемым, поскольку какой-то объект каким-то образом манипулирует им.

Например, вы совершили транзакцию, поэтому алгоритм должен взять два адреса аккаунта, чтобы соответствующим образом изменить их балансы (используемые данные) и опубликовать новые балансы в сети (данные в движении).

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

Так появился термин «конфиденциальные вычисления»! Он указывает на определенный набор методов, направленных на защиту данных во время их использования (вычисления).

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

Таким образом, никакое неавторизованное приложение не сможет получить доступ, выполнить какие-либо вычисления или даже получить какую-либо информацию о том, что происходит внутри этих анклавов на аппаратном уровне. Все это называется Trusted Execution Environment (мы подробно рассмотрим его далее).

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

Конфиденциальные вычисления обеспечивают совместную работу и новые разработки для отраслей, которые ранее имели высокие риски безопасности и проблемы с регулированием. Например, медицинские данные жестко регулируются, хотя это может помочь открыть новые способы диагностики и лечения заболеваний, нормативные барьеры делают практически невозможным агрегирование и обработку необходимых объемов данных в одном месте.

Для проектов Web3 конфиденциальные вычисления могут означать гораздо более безопасную инфраструктуру для выполнения кода и обработки данных вне сети, что потенциально устраняет многочисленные хакерские угрозы, делая их невозможными.

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

Вот тут-то и появляется Confidential Cloud Computing — это платформы, которые позволяют поставщикам конфиденциальных вычислений сделать их услуги более заметными и доступными для разработчиков.

  • Trusted Execution Environment: почему это важно для WEB 3.0?

Далее в статье мы рассмотрим более сложную тему Trusted Execution Environment или TEE: что это такое и как Web3 может извлечь выгоду от их использования.

Что такое TEE?

В большинстве статей TEE определяется как область процессора, которая изолирована от остальной части операционной системы и на этом останавливается. После прочтения обычно возникает много вопросов, поэтому мы постараемся ответить на них здесь.

Как выделяют TEE? На аппаратном уровне архитектура TEE очень похожа на то, как работает ваш кошелек Web3 — внешний доступ к области процессора защищен набором закрытых ключей. Точно так же, как только вы можете одобрять транзакции с помощью уникального закрытого ключа, которого нет ни у кого другого, только доверенные приложения могут получить доступ к этой области и выполнять в ней код. Таким образом, TEE буквально является частью процессора, к которой неавторизованное приложение не может получить доступ или даже заглянуть в него (по сути, эти приложения даже не «знают», что такая область существует).

Это не единственный аргумент. Когда приложение запускается, процессор записывает хэш начального состояния (так же, как и в блокчейнах) и всех последующих состояний, поэтому невозможно отклониться от исходной цепочки, не изменив всю цепочку хэшей, что в данном случае невозможно.

Почему это более безопасно? По умолчанию, если вы контролируете доступ, вы можете решить, какие приложения могут выполняться. TEE часто включает в себя зашифрованное хранилище, а это означает, что даже код авторизованного приложения нельзя изменить, чтобы каким-то образом изменить его так, как первоначальный разработчик не собирался этого делать. Это касается и всех данных, которые обрабатывают эти приложения.

Что, если злоумышленнику каким-то образом удастся авторизовать свое приложение? Идеальный сценарий предполагает, что код каждого авторизованного приложения проверяется, и таким образом гарантируется, что оно не попытается сделать что-то подозрительное. Реальность часто разочаровывает, но не в этот раз. У авторизованного приложения есть ключ, который позволяет ему получить доступ только к определенным частям процессора, то есть даже с ключом оно не сможет получить доступ к другим его разделам и увидеть код или среду выполнения других приложений.

Метафора для лучшего понимания (и объяснения TEE на вечеринках): представьте, что вы живете в многоквартирном доме с большой стеной почтовых ящиков (по одному на жильца). Только у вас есть ключи; твой ключ подходит только к замку в вашем почтовом ящике. TEE работает так же. Ни один другой арендатор не может получить к нему доступ и прочитать вашу почту. Кроме того, любой, кто пишет вам, использует секретный код, который можете расшифровать только вы, поэтому, если почтальон неправильно прочитает цифры на ящике, а ваш сосед получит вашу почту — он не сможет ее прочитать!

Теперь давайте перейдем к тому, почему это столь необходимая функциональность для технологий Web3.

Работа с транзакциями в блокчейне — это одно, но большинству приложений требуется больше данных и сложных вычислений, которые не могут быть выполнены в цепочке, чтобы обеспечить ценность для своих пользователей. Большинству приложений приходится обрабатывать личные данные, финансовые данные или другую конфиденциальную информацию. Если мы собираемся сделать DeFi (децентрализованные финансы) мейнстримом, защита этих типов данных должна быть приоритетом номер один. TEE и построенные на его основе конфиденциальные вычисления могут сделать большую часть хакерских атак практически невозможными. Даже если какой-то компонент, другое приложение или сам провайдер будут скомпрометированы — это никак не повлияет на наши приложения.

Кроме того, поскольку все данные защищены, это затруднит проведение атак социальной инженерии, поскольку злоумышленники не смогут извлечь какую-либо значимую информацию.

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

  • Аппаратное обеспечение для конфиденциальных вычислений: Intel SGX

Возможным TEE сделала инновационная технология Intel Software Guard Extensions (сокращенно SGX, хотя в оригинальной статье «Инновационные инструкции и программная модель для изолированного выполнения» кажется более содержательной).

В мире информационных технологий все является данными, не только типичное «счет A содержит X средств», но и код приложений,  то как они работают, манипулируя вышеупомянутыми данными, и то как они ее хранят и обмениваются. Это означает, что даже если манипулируемые данные зашифрованы, злоумышленник потенциально может подделать их, изменив программный код или адрес, на который отправляются данные, или повредив некоторые их части. Поэтому лучший способ защиты — сделать недоступными (невидимыми) не только обрабатываемые данные, но и все движущиеся части системы.

TEE достигает этого с помощью анклавов — ограниченных пространств в процессоре, доступ к которым имеют только авторизованные приложения. Копните глубже, если вас не устраивает это объяснение, но вы все еще хотите знать, как именно функционируют эти анклавы, действительно ли они настолько безопасны и возможно ли создать децентрализованную сеть поставщиков TEE.

Большая часть того, что вы читаете о технической безопасности Web3, будет касаться защиты всей сети, поскольку считается, что единственный способ нанести вред злоумышленнику — это захватить контроль над сетью или ее ключевыми элементами и изменить цепочку.

К сожалению, история недавних взломов и утечек доказывает, что в некоторых случаях даже одного скомпрометированного узла (или даже не узла, а DNS-провайдера) более чем достаточно для кражи денег или частной информации пользователей. Так что же это за технологии будущего, если мы не можем защитить людей, которые их внедряют и используют?

Разобравшись с этим, давайте рассмотрим, что мог сделать хакер. Получите доступ к коду приложения (смарт-контракта) и каким-то образом изменяйте его во время выполнения, меняйте адреса назначения для транзакции или дату, собирайте информацию и используйте ее в каком-то преднамеренном социальном взломе (банальное вымогательство также возможно). Как они могут это сделать? Путем удаленного взлома машины или получения прямого доступа к ней. Действительно, крупные взломы, способные вывести из строя всю сеть, потребуют доступа более чем к 50% указанных машин, но почему мы так легко отбрасываем злоумышленника, который просто ищет конкретную информацию или хочет избавить некоторых бедняков от их с трудом заработанных токенов?

Теперь мы подошли к моменту, когда становится очевидным, что даже один компьютер не должен быть скомпрометирован, если мы хотим обеспечить безопасность SLA высшего уровня для конечного пользователя. Будет ли достаточно использовать антивирус, следовать основным правилам кибербезопасности и надеяться, что механизмы защиты на сетевом уровне сделают все остальное? К сожалению нет. Лучшей защитой будет устранение любого потенциального уязвимого места.

Вот тут-то и появляется технология Intel SGX. Она была разработана с учетом всех моментов, упомянутых выше. Вопрос исследователей заключался в следующем: «Как мы можем гарантировать, что злоумышленник не сможет причинить вред, даже если он получит физический доступ к машине?»

Технология Intel SGX устраняет потенциальные углы атаки на аппаратном уровне. На базовом уровне это набор низкоуровневых инструкций, которые позволяют отдельным частям процессора работать иначе, чем остальная часть системы. Это поведение также регулируется моделью программирования, разработанной создателями Intel SGX, и позволяет другим разработчикам приложений манипулировать ею на детальном уровне.

Почему это более безопасно? Во-первых, другие приложения (даже с более высокими привилегиями или сама операционная система) не могут видеть, что происходит внутри анклава. Во-вторых, чтобы получить доступ, приложение должно пройти процесс аттестации и пройти регулярные проверки безопасности. Аттестация доказывает пользователю, что он взаимодействует с определенной частью программного обеспечения, работающего в безопасном контейнере, размещенном у доверенного поставщика оборудования.

Важный вопрос: можно ли пройти аттестацию удаленно безопасным способом? Да! Это означает, что мы можем удвоить безопасность, объединив TEE от доверенного поставщика со следующими уровнями сетевой безопасности и уровнем консенсуса.

Возможность подключать доверенных поставщиков TEE и проверять все, что происходит, является важной частью работы Confidential Cloud Computing.


ссылка на оригинал статьи https://habr.com/ru/post/690892/

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *