Intel SGX Card. Своего SGX достоин каждый сервер



    Разрешите вам напомнить, что представляют из себя Intel Software Guard Extensions. Как следует из названия, дело тут в безопасности. Человечество придумало множество программных способов защитить свою IT-инфраструктуру от злонамеренного или неправомочного кода, однако все эти способы имеют свои принципиальные ограничения. Чтобы их обойти, необходимо, чтобы защита начиналась в самом сердце компьютера — его процессоре и опиралась на его функционал.

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

    Этот пост о новой аппаратной основе Intel SGX для любой серверной платформы — карте Intel SGX Card.

    Принципы работы анклавов Intel SGX таковы:

    • Доступ к памяти анклава на чтение и запись извне анклава отсутствует вне зависимости от текущего уровня прав и режима работы ЦП.
    • Анклавы рабочего уровня недоступны для отладки как программными, так и аппаратными отладчиками. (Можно создать анклав с атрибутом отладки, при наличии которого отладчик Intel SGX может просматривать содержимое анклава аналогично стандартному отладчику. Это сделано, чтобы повысить удобство процесса разработки программного обеспечения.)
    • В среду анклава невозможно войти с помощью классических вызовов функций, переходов, манипуляций с регистрами или со стеком. Единственный способ вызвать функцию анклава — с помощью новой инструкции, выполняющей несколько защитных проверок.
    • Память анклава защищена с помощью стандартных алгоритмов шифрования с защитой от воспроизведения. Если прочесть память или подключить модули оперативной памяти к другой системе, удастся получить только зашифрованные данные.
    • Ключ шифрования памяти изменяется случайным образом при каждом изменении цикла электропитания (например, при загрузке, при возобновлении работы после сна и гибернации). Ключ хранится внутри ЦП и недоступен извне.
    • Данные изолированы в анклавах и доступны только для кода данного анклава.

    image
    Intel SGX существенно сокращает периметр уязвимости ПО

    Решение Intel Software Guard Extensions было представлено в 2016 году, с тех пор его поддержку получили ряд серверных процессоров Intel Xeon, после чего, в свою очередь, ряд крупнейших облачных провайдеров и производителей ПО, таких как Alibaba Cloud, Baidu, IBM и Microsoft оценили преимущества технологии и стали ее внедрять в свои сервисы и продукты. Однако на пути триумфального шествия Intel SGX оказалось техническое препятствие: процессоров, не поддерживающих технологию, все еще намного больше, чем поддерживающих. Особенно не хватает Intel SGX в многосокетных конфигурациях, сплошь и рядом применяющихся в облачных сервисах и датацентрах.



    Решение пришло с неожиданной стороны. У Intel есть устройство под названием Intel Visual Compute Accelerator (VCA), мы о нем вкратце рассказывали. Это специализированный ускоритель для повышения производительности обработки медиа контента, по сути — полноценный сервер в формате карты PCIe x16, его характеристики приведены в посте по ссылке выше. Именно VCA решили взять за основу, и после некоторых доработок — отключения графического ядра, оптимизаций средств безопасности и т.д. — получилась Intel SGX Card, карта, оснащенная тремя процессорами с поддержкой Intel Software Guard Extensions, готовая взять на себя взаимодействие с анклавами SGX — от хост-системы этого уже не требуется.

    На эту самую карту можно оффлоадить требовательную к ресурсам нагрузку, для которой необходима дополнительная защита. Стандартная серверная 2U платформа на базе Intel Xeon Scalable поддерживает до 4 карт PCIe х16; таким образом на одном сервере до 12 процессоров могут работать с деликатными данными. Как показано на рисунке выше, конфигурация среды для приложений стала более комфортной и гибкой, в их распоряжении как защищенные так и простые области памяти, процессорные ядра с поддержкой SGX и без и так далее.

    Intel SGX Card — это вариант для поставщика разнообразных цифровых услуг подготовить свою инфраструктуру к использованию Intel Software Guard Extensions, не дожидаясь, когда выйдут Intel Xeon Scalable с поддержкой этой технологии. Возможно, он кому-то окажется полезным.
    Intel
    209,00
    Компания
    Поделиться публикацией

    Комментарии 21

      +3
      Просто оставлю это здесь:
      Researchers use Intel SGX to put malware beyond the reach of antivirus software
      Processor protects malware from attempts to inspect and analyze it.
      +2
      А я же правильно помню, что самоподписанный SGX-анклав запустить нельзя? Только подписанный ключом, заверенным Intel?
        0
        Мало мы видели утечек ключей, сертификатов и прочего?
          +1
          Вроде как можно, но сложно. И это работает только на 2-3 моделях CPU пока что. Гугл в помощь: Intel DCAP, Flexible Launch Control
          +1
          А зачем устанавливать в сервер дополнительное оборудование для защиты кода от пользователя? Я хочу видеть код, который исполняется на моём оборудовании. Весь. Желательно, в исходниках, но если все такие жадные, то хотя бы в бинарном виде.

          А вот эта железка позволяет кому-то (не мне!) запускать их код на моём железе за мой счёт без подотчётности мне.

          И нафига оно сдалось? Больше DRM дьяволу DRM?
            0
            Запускать код, который оперирует с чувствительными данными (ключи, секреты) в ограниченной доверенной среде (облако).
              0
              А почему облако должно доверять этому коду, если этот код не может быть проинспектирован? Как так получается, что intel решает, что можно на железе исполнять, а что нет? У меня ощущение, что в этот момент под обещание «безопасные секреты» intel хочет начать торговать лицензиями на выполнение кода. Хочет — разрешает, не хочет — не разрешает.
                0
                А почему облако должно доверять этому коду, если этот код не может быть проинспектирован?

                Потому что для анклавов разрешен только тот набор инструкций, которые не вызывают выход из гипервизора, не возбуждают прерывания, и не обращаются к I/O напрямую, т.е. такой код содержит только изолированную логику по обработке чувствительных данных (например, перешифровка) или защищенные проприетарные алгоритмы. за всем IO анклав обращается к коду который его породил.
                А там уже можно ограничивать ввод-вывод средствами ОС и гипервизора.
                У меня ощущение, что в этот момент под обещание «безопасные секреты» intel хочет начать торговать лицензиями на выполнение кода.

                Да, тоже промелькнула такая мысль.
                  0
                  … Например, он может использовать rop для выполнения IO (выше ссылку уже приводили), расшифровывать малварь вне доступа антивирусов и, вообще, идеально подходит для хранения секретов от пользователя на его же машине.
                    0
                    Ну, тут, кмк, эвристику антивирусов менять. Т.е. если приложение загружает анклав и только гоняет в него сетевой трафик, а с диска только читает конфиги и персистит по разрешенным путям и только своё — это норма.
                      0
                      А можно мне, как владельцу оборудования, запустить там мой код? Я владелец устройства. Почему мне нужно получать согласие компании на запуск моего кода на моём же оборудовании?
                        0
                        Можно. Берите SDK, собирайте, запускайте.
                        Если вы владелец Gen6 или позднее Core процессора — у вас там этот самый SGX уже есть, и процессор вполне может выполнять одобренные анклавы от производителя ОС, поставщиков приложений и драйверов без вашего ведома.
                        А конкретно эта железка — для массового хостинга анклавов в облаках.
                          0

                          Можно я уточню, если "производитель" OC — это


                          git clone https://git.kernel.org/
                          cd linux
                          make && make install

                          То чьё одобрение мне требуется, чтобы запустить в анклаве свой собственный код?

                            +1
                            Зависит. Судя по комментарию выше и вот этому документу — возможны несколько сценариев.
                            1. Умолчательный. Есть SGX, нету DCAP. Можно запускать только анклавы, чьи ключи заверены Intel.
                            2. Developer-friendly. Поставщик ОС имеет whitelisted-ключ, и реализовал launch-анклав, который разрешает запускать любой корректно подписанный (например самоподписанный) анклав.
                            3. Есть SGX, есть DCAP, развернута инфраструктура приватной сертификации. Можно управлять своим корнем доверия, и самостоятельно определять ключи, для которых разрешен запуск подписанного кода.
                              +1
                              To support non-Intel attestation infrastructures for Intel® SGX, Intel provides a general certification infrastructure to certify Quoting Enclaves with a certificate chain rooted to an Intel issued certificate.

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

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

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

            Кстати как быть с интерпретаторами? их код так же тегируется на свой чужой? А то у нас он браузеры и всякие javascript…
              0
              так что из себя представляют проверки?

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

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

              Никак. Так же как раньше продолжают работать в памяти, управляемой и защищаемой ОС. Либо портировать на SGX-поддерживаемую псевдо-ОС, например, Graphene.
              0
              Шикарный костыль.
              ОСь нужна человеческая.
                0
                Увы дело не в оси. Архитектура хромает в целом. Беда еще в том, что подобные «пластыри» вообще не пригодны для заделывания брешей.
                  0
                  Это понятно.
                  Но делать в революцию страшно дорого, никто не будет.
                  Интел пробовал с Итаниумом — обжегся, костыли прибыльнее и по инерции идут.
                  Так что остается ОСь.

              Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

              Самое читаемое