ЗАЩИЩЕННОЕ УПРАВЛЕНИЕ КЛЮЧАМИ
SECURE KEY MANAGEMENT

Уровень техники
Описание предшествующего уровня техники
[0001] Компьютеры и вычислительные системы затрагивают почти все аспекты современной жизни. Компьютеры, в общем, используются на работе, на отдыхе, в здравоохранении, транспортировке, развлечениях, ведении домашнего хозяйства и т.д.
[0002] Дополнительно, функциональность вычислительной системы может улучшаться посредством способности вычислительных систем взаимно соединяться с другими вычислительными системами через сетевые соединения. Сетевые соединения могут включать в себя, но не только, соединения через проводной или беспроводной Ethernet, сотовые соединения либо даже соединения между компьютерами через последовательное, параллельное, USB- или другие соединения. Соединения обеспечивают возможность вычислительной системе осуществлять доступ к службам в других вычислительных системах с тем, чтобы быстро и эффективно принимать данные приложений из других вычислительных систем.
[0003] Соединение вычислительных систем упрощает распределенные вычислительные системы, к примеру, так называемые "облачные" вычислительные системы. В этом описании, "облачные вычисления" могут представлять собой системы или ресурсы для обеспечения повсеместного удобного сетевого доступа по запросу к совместно используемому пулу конфигурируемых вычислительных ресурсов (например, сетей, серверов, устройств хранения данных, приложений, служб и т.д.), которые могут инициализироваться и высвобождаться с уменьшенным объемом работ по управлению или взаимодействием с поставщиком служб. Облачная модель может состоять из различных характеристик (например, самообслуживание по запросу, широкополосный доступ к сети, объединение ресурсов в пул, быстрая эластичность, обслуживание на основе измеряемых показателей и т.п.), моделей предоставления служб (например, программное обеспечение как служба (SaaS), платформа как служба (PaaS), инфраструктура как служба (IaaS)) и моделей развертывания (например, закрытое облако, коллективное облако, открытое облако, гибридное облако и т.д.).
[0004] В облачных вычислительных системах, предусмотрены поставщик облачных служб и клиенты-арендаторы. Хотя клиенты-арендаторы хотят использовать облачные вычислительные системные ресурсы, эти клиенты, в общем, не хотят, чтобы люди в поставщике облачных служб, например, сотрудники поставщика облачных служб или другие, имеющие физический доступ к ресурсам поставщика облачных служб, имели доступ к данным клиента. Таким образом, желательно, со стороны клиентов-арендаторов для третьей стороны, администрировать данные без фактической возможности просматривать данные.
[0005] Предмет изобретения, заявленный в данном документе, не ограничен вариантами осуществления, которые разрешают недостатки или которые работают только в таких окружениях, как описанные выше. Наоборот, это описание уровня техники предоставляется только для того, чтобы проиллюстрировать одну примерную область техники, в которой могут осуществляться на практике некоторые варианты осуществления, описанные в данном документе.
Сущность изобретения
[0006] Один вариант осуществления, проиллюстрированный в данном документе, включает в себя машину. Машина включает в себя анклав. Анклав включает в себя защищенную область адресного пространства приложения, для которой предотвращается доступ для любого кода приложения, нерезидентного в самом анклаве, за исключением того, что ключи могут предоставляться посредством одного или более управляющих анклавов в анклав. Машина дополнительно включает в себя управляющий анклав, соединенный с анклавом. Управляющий анклав выполнен с возможностью предоставлять ключ в анклав. Управляющий анклав представляет собой защищенную область адресного пространства приложения, для которой предотвращается доступ для любого кода приложения, нерезидентного в самом управляющем анклаве.
[0007] Данная сущность изобретения предоставлена для того, чтобы представлять в упрощенной форме выбор концепций, которые дополнительно описаны ниже в подробном описании. Эта сущность не имеет намерение идентифицировать ключевые или важнейшие признаки заявленного предмета изобретения, а также не имеет намерение использоваться в качестве помощи при определении объема заявленного предмета изобретения.
[0008] Дополнительные признаки и преимущества изобретения частично изложены в нижеприведенном описании и должны частично становиться очевидными из описания либо могут быть изучены при практическом использовании идей в данном документе. Признаки и преимущества изобретения могут реализовываться и получаться посредством инструментов и комбинаций, подробно указанных в прилагаемой формуле изобретения. Признаки настоящего изобретения должны становиться более очевидными из нижеследующего описания и формулы изобретения или могут быть изучены при практическом использовании изобретения, как изложено далее.
Краткое описание чертежей
[0009] Чтобы описывать способ, которым могут быть получены вышеуказанные и другие преимущества и признаки, более подробное описание предмета изобретения, вкратце описанного выше, должно быть представлено посредством ссылки на конкретные варианты осуществления, которые проиллюстрированы на прилагаемых чертежах. При условии того, что эти чертежи иллюстрируют только типичные варианты осуществления и в силу этого не должны рассматриваться как ограничивающие по объему, варианты осуществления должны описываться и поясняться более конкретно и подробно с помощью прилагаемых чертежей, на которых:
[0010] Фиг. 1 иллюстрирует машину, включающую в себя управляющий анклав и анклав и аттестационный сертификат;
[0011] Фиг. 2 иллюстрирует облачную систему, включающую в себя вычислительную фабрику и фабрику ключей; и
[0012] Фиг. 3 иллюстрирует способ защищенного управления арендаторами в облачной системе.
Подробное описание изобретения
[0013] Варианты осуществления, проиллюстрированные в данном документе, включают в себя функциональность для систем аппаратной защиты по ключам и аппаратной защиты для виртуальных машин (VM) в облачных вычислительных системах. В частности, некоторые современные процессоры включают в себя аппаратные инструкции и компоненты архитектуры, которые могут использоваться для того, чтобы защищать выбранный код и данные от раскрытия или модификации. Приложения могут сегментироваться на CPU-укрепленные "анклавы" или защищенные области выполнения, которые повышают безопасность. В частности, при использовании в данном документе, анклав представляет собой защищенную область адресного пространства приложения, для которой предотвращается доступ для любого программного обеспечения, нерезидентного в самом анклаве. Эта безопасность может поддерживаться даже на скомпрометированных платформах, поскольку защищенные данные и код защищаются на CPU-уровне. Таким образом, CPU может предотвращать осуществление доступа, посредством внешнего программного обеспечения, к анклаву. Эти анклавы могут использоваться для того, чтобы реализовывать защищенные передачи ключей шифрования данных арендаторов и защищенные виртуальные машины для работы с данными арендаторов. Один пример таких анклавов и защищенного вычисления доступен в технологии Intel SGX (программные защитные расширения), предлагаемой компанией Intel Corporation, Санта-Клара, Калифорния.
[0014] Фиг. 1 иллюстрирует машину 100. Машина 100 представляет собой физическое аппаратное устройство, выполненное с возможностью выполнять инструкцию программирования. Например, машина может включать в себя центральный процессор (CPU). Машина включает в себя анклав 102. Анклав 102 представляет собой защищенную область выполнения, включающую в себя защищенный код и данные. Анклав 102 защищается в том, что он имеет ограниченный (ограниченный на CPU-уровне) вход и выход. В частности, после того, как код и/или данные выполнения помещены в анклав, они не могут проверяться посредством внешних объектов. Это включает в себя как состояние процессора, так и состояние регистра. Дополнительно, они не могут модифицироваться посредством внешнего объекта. Данные могут помещаться во внешний регистр 104, к которому может осуществлять доступ код, выполняющийся в анклаве 102, но анклав 102 должен осуществлять доступ к этому коду по мере необходимости. Данные не могут предоставляться принудительно в анклав 102, за исключением случаев, как проиллюстрировано ниже, когда управляющий анклав 106 может предоставлять ключи, такие как ключ 108, в анклав 102.
[0015] Как отмечено выше, фиг. 1 иллюстрирует управляющий анклав 106. Управляющий анклав является аналогичным анклаву 102 в том, что он представляет собой защищенную область выполнения. Тем не менее, одно отличие состоит в том, что управляющий анклав 106 имеет способность предоставлять ключи, такие как ключ 108, в анклав 102.
[0016] Хотя предусмотрен ограниченный выход из анклава 102, один элемент, который анклав 102 может формировать и предоставлять внешне по отношению к анклаву 102, представляет собой аттестационный сертификат 110. Аттестационный сертификат 110 может включать в себя верифицируемую информацию, используемую для того, чтобы аутентифицировать то, что анклав выполняется на конкретной платформе, управляемой посредством конкретного управляющего анклава, наряду с информацией относительно самого анклава 102.
[0017] В частности, аттестационный сертификат 110, сформированный посредством анклава 102, включает в себя платформенную аттестацию 112. Платформенная аттестация 112 включает в себя верифицируемое подтверждение того, что анклав 102 реализуется на конкретной платформе. Она может включать в себя, например, конкретную машину 100. Например, машина 100 может включать в себя серийный номер либо другие характеристики или компоненты, которые могут оцениваться, чтобы создавать верифицируемое подтверждение, которое является уникальным для конкретной машины 100. Например, алгоритм хэширования может использоваться для того, чтобы создавать верифицируемое подтверждение с использованием серийного номера процессора и/или других характеристик или компонентов машины 100. Например, алгоритм хэширования может хэшировать серийные номера различных компонентов в машине 100, набор определенных номеров моделей (или других характеристик) компонентов в машине 100 либо других характеристик машины 100.
[0018] Альтернативно, оно может представлять собой просто верифицируемое подтверждение того, что платформа, которой принадлежит машина 100, в общем, имеет поддержку анклава. Например, может предоставляться верифицируемое подтверждение в отношении того, что машина 100 включает в себя поддержку анклава.
[0019] Аттестационный сертификат 110, сформированный посредством анклава 102, включает в себя управляющую аттестацию 114. Управляющая аттестация 114 включает в себя верифицируемое подтверждение, такое как цифровой отпечаток анклава 102, того, что анклав 102 управляется посредством управляющего анклава 106. Например, код в управляющем анклаве может использоваться для того, чтобы создавать верифицируемое подтверждение того, что управляющий анклав используется для того, чтобы управлять анклавом 102. Например, алгоритм хэширования может применяться к коду и/или данным управляющего анклава 106, чтобы формировать верифицируемое подтверждение, которое затем может использоваться при управляющей аттестации 114.
[0020] Аттестационный сертификат 110, сформированный посредством анклава 102, включает в себя анклавную аттестацию 116. Анклавная аттестация 116 включает в себя верифицируемое подтверждение для анклава. Например, анклавная аттестация 116 может включать в себя цифровой отпечаток кода и/или данных в анклаве 106.
[0021] Аттестационный сертификат 110, сформированный посредством анклава 102, включает в себя функцию 118 шифрования. Функция 118 шифрования может использоваться для того, чтобы шифровать данные, которые затем помещаются в регистр 104. Например, функция 118 шифрования может использоваться в качестве части обмена открытыми ключами для схем обмена открытыми ключами, таких как обмен ключами Диффи-Хеллмана. Таким образом, данные могут предоставляться защищенно в анклав 102.
[0022] На основе этого, обратим внимание на фиг. 2, который иллюстрирует использование этой специализированной процессорной функциональности при реализации виртуальных машин для арендаторов облачной службы. В частности, типично клиент-арендатор облачной службы 200 не имеет защищенной инфраструктуры, так что он приобретает ресурсы от поставщика облачных служб, который может предоставлять защищенную инфраструктуру. В облачной службе 200, облачные ресурсы, к примеру, вычислительные ресурсы (например, циклы процессора), ресурсы запоминающего устройства и ресурсы хранения, совместно используются определенным числом различных арендаторов. Физические машины в облачной службе 200 выполняют хостинг ресурсов и предоставляют ресурсы для различных арендаторов по мере необходимости. Тем не менее, арендатор также не хочет, чтобы поставщик облачных служб имел доступ к незашифрованным данным арендаторов. Таким образом, конкретный арендатор имеет ключ 108, ассоциированный со своими данными, который используется защищенным способом для того, чтобы обеспечивать то, что данные 120 арендатора не становятся открытыми для других арендаторов или людей в облачной службе 200. Поскольку ресурсы на различных машинах совместно используются, и различные машины могут использоваться для различных арендаторов в различные моменты времени, ключ 108 должен быть общим для различных машин, храниться посредством облачной службы 200, и должно предоставляться верифицируемое подтверждение того, что облачная служба 200 не знает значение для ключа 108.
[0023] В проиллюстрированном примере, это может достигаться посредством использования фабрики 124 управления ключами и вычислительной фабрики 126.
[0024] Фабрика 124 управления ключами содержит определенное число машин 110-2-1-100-2-m, которые выбираются из машин в облачной службе 200 и выполнены с возможностью управлять ключом 108 для конкретного арендатора. Таким образом, ключ может избыточно сохраняться для арендатора с требуемым числом уровней избыточности.
[0025] Каждая машина в фабрике 124 управления ключами соединяется с локальным устройством 122-1-122-m хранения данных, соответственно.
[0026] Фиг. 2 иллюстрирует вычислительную фабрику 126. Вычислительная фабрика содержит определенное число машин 100-1-1-100-1-n, которые выбираются из машин, доступных в облачной службе 200, и выполнены с возможностью реализовывать виртуальные машины для арендатора. В частности, арендатор хочет, чтобы определенные виртуальные машины выполнялись для арендатора. Эти виртуальные машины могут реализовываться с использованием анклавов 102-1-1-102-1-n. В частности, VM-код может реализовываться в анклавах 102-1-1-102-1-n. Код для каждого анклава может предоставляться посредством поставщика облачных служб либо может предоставляться посредством арендатора в поставщика облачных служб, чтобы реализовывать анклавы для арендатора. В любом случае, арендатор может верифицировать VM посредством анализа аттестационного сертификата, сформированного посредством анклавов, выполняющих VM, что включает в себя анклавную аттестацию для каждого анклава, имеющего цифровой отпечаток для анклава.
[0027] Следует отметить, что машины 100-1-1-100-1-n и 100-2-1-100-2-m имеют управляющий анклав 106-1-1-106-1-n и 106-2-1-106-2-m, соответственно. В некоторых вариантах осуществления, управляющие анклавы 106-1-1-106-1-n и 106-2-1-106-2-m имеют идентичный исполняемый код, выполняемый в них. Таким образом, все анклавы на машинах для арендатора, независимо от того, в фабрике 124 ключей или в вычислительной фабрике 126, формируют аттестационный сертификат с идентичной управляющей аттестацией, к примеру, как проиллюстрировано на фиг. 1. Это обеспечивает возможность каждому из управляющих анклавов 106-1-1-106-1-n и 106-2-1-106-2-m обмениваться данными между собой защищенным способом и отклонять связь с любыми управляющими анклавами, которые не могут формировать управляющую аттестацию. С использованием этой функциональности, защищенное создание и управление ключами может достигаться для конкретного арендатора.
[0028] Хотя следует отметить, что, как подробнее описано ниже, другие модальности могут использоваться для того, чтобы верифицировать управляющие анклавы. Например, в альтернативных вариантах осуществления, два управляющих анклава, которые не используют совместно идентичный цифровой отпечаток, по-прежнему могут распознавать друг друга как доверенные. Анклавы могут реализовывать сложную и гибкую политику. Таким образом, например, управляющие анклавы 106-1-1-106-1-n могут отличаться и иметь цифровой отпечаток, отличный от цифрового отпечатка управляющих анклавов 106-2-1-106-2-m, но по-прежнему могут иметь возможность обмениваться данными между собой на основе анализа степени доверия. Аналогично, один или более управляющих анклавов 106-1-1-106-1-n могут отличаться друг от друга, но по-прежнему могут обмениваться данными между собой на основе анализа степени доверия. Аналогично, один или более управляющих анклавов 106-2-1-106-2-m могут отличаться друг от друга, но по-прежнему могут обмениваться данными между собой на основе анализа степени доверия.
[0029] Например, в некоторых вариантах осуществления, управляющий анклав может иметь возможность определять то, что другой управляющий анклав выполняет другую версию идентичного кода. Это может достигаться, например, посредством анализа анклавной аттестации (например, анклавной аттестации 116) аттестационного сертификата (например, аттестационного сертификата 110), чтобы верифицировать информацию, связанную с автором кода, центром подписывания, либо другими способами. Например, анклавная аттестация может включать в себя индикатор, созданный с использованием всех трех из индикатора центра подписывания, индикатора объявления центра подписывания относительно того, какой является функциональность кода, и индикатора объявленной центром подписывания версии кода. Приемный управляющий анклав может включать в себя функциональность для верификации этих трех индикаторов.
[0030] Таким образом, управляющий анклавы могут иметь совпадающую функциональность, сводимую в код управляющего анклава. Эта совпадающая функциональность может быть выполнена с возможностью требовать точного совпадения в анклавной аттестации или может предоставлять возможность подтвержденных изменений.
[0031] Например, рассмотрим следующие сценарии. В первом сценарии, управляющий анклав 106-2-1 формирует аттестационный сертификат 110-1. Аттестационный сертификат 110-1 включает в себя анклавную аттестацию 116-1. Анклавная аттестация 116-1 включает в себя информацию относительно управляющего анклава 106-2-1. Например, в настоящем проиллюстрированном сценарии, управляющий анклав 106-2-1 может включать в себя функциональность, чтобы вычислять хэш кода, реализующего управляющий анклав 106-2-1. В этом примере, управляющие анклавы требуют совпадающего кода, чтобы доверять другим. Таким образом, если управляющий анклав 106-1-1 принимает аттестационный сертификат 110-1, управляющий анклав 106-1-1 должен доверять управляющему анклаву 106-2-1 только в том случае, если анклавная аттестация 116-1 может формироваться посредством управляющего анклава 106-1-1 посредством хэширования собственного кода управляющего анклава.
[0032] В альтернативном варианте осуществления, управляющие анклавы могут иметь возможность определять то, что другие управляющие анклавы могут быть доверенными, даже когда эти другие управляющие анклавы не выполняют полностью идентичный код. Например, управляющий анклав 106-2-1 может формировать аттестационный сертификат 110-1, который включает в себя анклавную аттестацию 116-1, которая основана на верифицируемом подтверждении автора кода управляющего анклава, выполняющегося в управляющем анклаве 106-2-1, верифицируемом подтверждении цели кода анклава, выполняющегося в управляющем анклаве 106-2-1, и верифицируемом подтверждении версии кода управляющего анклава, выполняющегося в управляющем анклаве 106-2-1. Каждый из управляющих анклавов, включающих в себя управляющий анклав 106-1-1, может включать в себя функциональность для приема аттестационного сертификата 110-1 и верификации анклавной аттестации 116-1.
[0033] Далее иллюстрируются различные примеры того, как верификация функционирует в некоторых вариантах осуществления. Аттестационный сертификат содержит информацию, которая может уникально идентифицировать анклав. Она включает в себя цифровой отпечаток всего кода и данных, которые загружены в анклав, то, когда они созданы, и необязательно может также включать в себя идентифицирующую информацию, подписанную посредством некоторого доверенного центра. В простейшем случае, верификация (например, между двумя управляющими анклавами) может выполняться посредством осуществления, управляющим анклавом, чего-либо, аналогичного следующему:
[0034] 1) Запрашивание другого управляющего анклава в отношении отправки отчета об аттестации.
[0035] 2) Верификация того, что отчет об аттестации из другого управляющего анклава корректно подписывается посредством удаленной системы, чтобы указывать то, что он представляет собой доверенный отчет об аттестации.
[0036] 3) Запрашивание CPU в отношении подготовки отчета об аттестации для себя (доверенного, поскольку он поступает непосредственно из CPU).
[0037] 4) Сравнение идентификационной информации, присутствующей в самоаттестации, с идентификационной информацией, присутствующей в удаленной аттестации. Если они совпадают, то управляющий анклав взаимодействует с другой копией себя и в силу этого может доверять ему.
[0038] Альтернативная версия, используемая посредством управляющих анклавов различных версий или используемая между анклавом и управляющим анклавом, должна заключаться в том, чтобы заменять этапы 3-4 сравнением идентификационной информации в удаленной аттестации с информацией политик, используемой для того, чтобы определять то, какие идентификационные данные представляют доверенные анклавы.
[0039] Ключ 108 может сохраняться избыточно в фабрике 124 ключей. Ключ 108 может получаться посредством фабрики 124 ключей рядом различных способов. Например, в некоторых вариантах осуществления, арендатор может предоставлять ключ 108 в один из управляющих анклавов, к примеру, в управляющий анклав 106-2-1. Альтернативно, управляющие анклавы могут включать в себя функциональность для получения ключа 108 из машины. Таким образом, например, управляющий анклав 106-2-1 может запрашивать то, что CPU в машине 100-2-1 должен вычислять соответствующий ключ с использованием соответствующего алгоритма.
[0040] Чтобы избыточно сохранять ключ 108, управляющие анклавы 106 могут совместно использовать ключ друг с другом, но не должны совместно использовать свой ключ с другими объектами, включающими в себя другие скомпрометированные управляющие анклавы или, в некоторых вариантах осуществления, другие управляющие анклавы, которые не выполняют идентичный код (либо подтвержденную и верифицируемую версию кода, например, другую версию кода управляющего анклава), за исключением того, что управляющие анклавы 106 могут предоставлять ключ 108 в ассоциированных анклавах таким образом, что эти ассоциированные анклавы могут дешифровать данные арендатора. Как отмечено выше, управляющий анклав 106-2-1 может запрашивать то, что CPU в машине 100-2-1 должен вычислять соответствующий ключ с использованием некоторого соответствующего алгоритма. Корень того извлечения представляет собой ключ, который впоследствии предоставляется посредством управляющего анклава в другие анклавы. Следовательно, управляющий анклав предоставляет ключ в местоположение, которое CPU использует для извлечения ключа. В альтернативных вариантах осуществления, управляющий анклав помещает ключ в специальный регистр в другой машине, чтобы предоставлять ключ.
[0041] Управляющий анклав не должен предоставлять ключ 108 в другой управляющий анклав, если только управляющий анклав не может определять то, что другой управляющий анклав является доверенным, к примеру, в некоторых вариантах осуществления, посредством определения того, что управляющий анклав выполняет идентичный код управляющего анклава или другой подтвержденный код, к примеру, код, описанный выше. Это может достигаться посредством анализа аттестационных сертификатов управляющих анклавов, чтобы определять то, что управляющие аттестации совпадают. Таким образом, в этом примере, управляющий анклав может определять то, что другой управляющий анклав имеет идентичный цифровой отпечаток или подтвержденный цифровой отпечаток, и в силу этого может быть безопасным обмениваться данными с другим управляющим анклавом.
[0042] Каждый из управляющих анклавов 106-2-1-106-2-m шифрует ключ управления с использованием ключа машины, уникального для конкретной машины, на которой выполняется управляющий анклав, для того чтобы создавать зашифрованные ключи 108-1-108-m, соответственно, и сохранять зашифрованные ключи 108-1-108-m в устройстве 122-1-122-m хранения данных, ассоциированном с их соответствующими машинами. Каждый из управляющих анклавов 106-2-1-106-2-m выполнен с возможностью сохранять зашифрованные ключи арендаторов в устройстве хранения данных локально и исключительно на своей соответствующей машине. Таким образом, управляющие анклавы, которые выполняются в фабрике управления ключами, имеют способность сохранять ключи клиентов в зашифрованной форме на своем локальном устройстве хранения данных и только на своем локальном устройстве хранения данных.
[0043] Чтобы развертывать виртуальную машину, машина в вычислительной фабрике 126 должна развертывать управляющий анклав 106 и анклав 102. Например, в примере, проиллюстрированном на фиг. 2, машина 100-1-1 развертывает управляющий анклав 106-1-1 и анклав 102-1-1. Управляющий анклав 106-1-1 выполняет код, идентичный коду управляющих анклавов 106-2-1-106-2-m в фабрике 124 ключей. Таким образом, управляющий анклав 106-1-1 может обмениваться данными защищенно с использованием аттестационных сертификатов с управляющими анклавами 106-2-1-106-2-m. Это обеспечивает возможность управляющим анклавам в фабрике 124 ключей извлекать зашифрованный ключ арендатора из устройства хранения данных, дешифровать зашифрованный ключ и предоставлять ключ 108 в управляющий анклав в вычислительной фабрике. Например, управляющий анклав 106-2-1 может извлекать зашифрованный ключ 108-1 из устройства 122-1 хранения данных. Управляющий анклав 106-2-1 может дешифровать зашифрованный ключ 108-1 с использованием ключа машины для машины 100-2-1, чтобы получать ключ 108. Ключ 108 затем может предоставляться в управляющий анклав 106-1-1.
[0044] В машине 100-1-1, управляющий анклав 106-1-1 может предоставлять ключ 108 в анклав 102-1-1. Анклав 102-1-1 затем может получать данные для арендатора из устройства 120 хранения данных и дешифровать данные с использованием ключа 108. В одном варианте осуществления, анклавная архитектура, заданная посредством CPU, может предлагать привилегированную инструкцию, доступную только для управляющего анклава, которая разрешает ему доставлять ключ непосредственно в адресное пространство анклава. В другом варианте осуществления, управляющий анклав и анклав могут устанавливать защищенное соединение с использованием взаимной аутентификации (через аттестацию), и управляющий анклав может доставлять ключ по защищенному соединению.
[0045] Любой арендатор, которому требуется портативность ключей в своем анклаве, либо должен доверять облачной службе 200 выполнение управления ключами от своего имени, либо должен предоставлять собственную систему управления ключами. Любая модель может реализовываться без необходимости доверия, от каждого клиента, к облачной службе, чтобы держать ключи в секрете, поскольку аппаратные средства осуществляют это для них. Таким образом, в общих словах, проектное решение может заключаться в следующем.
[0046] Проектное решение включает в себя фабрику управления ключами, которая включает в себя набор серверов, которые выполняют хостинг анклавов управления ключами для каждого клиента (которые могут быть написаны поставщиком облачной инфраструктуры или могут предоставляться клиентами). Каждый сервер допускает выполнение (немигрируемого) управляющего анклава для каждого клиента, который сохраняет главный ключ для этого клиента.
[0047] 2. Когда новый главный ключ клиента требуется, фабрика управления ключами запускает экземпляр управляющего анклава клиента на каждом сервере управления ключами. Один экземпляр формирует новый случайный ключ и затем распределяет его всем остальным (с использованием анклавной аттестации, чтобы верифицировать то, что каждая конечная точка представляет собой корректный управляющий анклав для этого клиента). Теперь главный ключ клиента реплицируется в достаточной степени.
[0048] 3. Каждый управляющий анклав получает CPU-извлеченный ключ шифрования для изоляции главного ключа. Этот изолирующий ключ формируется посредством анклавной архитектуры и включает в себя конкретный для машины секрет и криптографический хэш управляющего анклава. Теперь каждый главный ключ сохраняется на каждом сервере управления ключами с использованием аппаратно-защищенного ключа.
[0049] 4. Когда анклав клиентской рабочей нагрузки требует главного ключа, он контактирует с фабрикой управления ключами, чтобы получать соединение с экземпляром конкретного для клиента управляющего анклава. Он устанавливает защищенное соединение с этим анклавом, использует аттестацию для того, чтобы верифицировать то, что он получает ключ из корректного управляющего анклава, затем получает ключи.
[0050] Эта система может иметь одно или более следующих свойств.
[0051] A. Невозможно принуждать облачный центр обработки и хранения данных облака раскрывать любой главный ключ, поскольку каждый главный ключ изолируется с помощью ключа шифрования, конкретного для точного кода управления ключами (на основе защиты анклава по ключам CPU). Все попытки модифицировать управляющий анклав, чтобы разрешать раскрытие, должны приводить к изменению изолирующего ключа, за счет этого предотвращая успешное дешифрование главного ключа. Кроме того, все попытки склонять устойчивую к раскрытию версию управляющего анклава обнародовать главный ключ для допускающей раскрытие версии анклава предотвращаются посредством аттестации (поскольку каждый управляющий анклав должен обнародовать главный ключ только для версии управляющего анклава, относительно которой он знает, что она является устойчивой к раскрытию).
[0052] B. Каждая клиентская рабочая нагрузка может верифицировать то, что управляющий анклав не разрешает раскрытие главного ключа, поскольку он может демонстрировать, что его ключи предоставляются посредством конкретной, устойчивой к раскрытию версии управляющего анклава. Параноидальный клиент может получать эту гарантию посредством предоставления управляющего анклава непосредственно.
[0053] C. Главные ключи защищаются от повреждения, поскольку фабрика управления ключами предоставляет достаточную репликацию, чтобы гарантировать доступность ключей.
[0054] Нижеприведенное пояснение далее ссылается на определенное число способов и этапов способа, которые могут выполняться. Хотя этапы способа могут поясняться в определенном порядке или иллюстрироваться на блок-схеме последовательности операций способа как осуществляющиеся в конкретном порядке, конкретный порядок не является обязательным, если иное не указано прямо, или является обязательным, поскольку этап зависит от завершения другого этапа до выполнения данного этапа.
[0055] Ссылаясь теперь на фиг. 3, проиллюстрирован способ 300. Способ 300 включает в себя этапы для защищенного управления арендаторами в облачной системе. Способ включает в себя получение ключа арендатора (этап 302). Например, для целей способа 300, ключ арендатора может получаться от арендатора облачной службы. Альтернативно или дополнительно, ключ арендатора может формироваться в облачной службе и получаться посредством управляющего анклава. Альтернативно или дополнительно, конкретный управляющий анклав может получать ключ арендатора из другого управляющего анклава. Как подробнее поясняется ниже, это может обеспечиваться посредством управляющих анклавов, выполняющих идентичный код приложения. Следует отметить, что идентичный код приложения может включать в себя различные версии идентичного кода приложения. Таким образом, один управляющий анклав может выполнять одну версию кода приложения, в то время как различный управляющий анклав выполняет другую версию идентичного кода приложения. Тем не менее, управляющие анклавы, несмотря на это, могут иметь возможность передавать ключи арендаторов друг другу посредством верификации кода приложения (независимо от того, идентичной версии или отличающейся).
[0056] Способ 300 дополнительно включает в себя, в управляющем анклаве на машине в вычислительной фабрике в облачной службе, предоставление ключа арендатора в анклав на машине (этап 302). Управляющий анклав и анклав представляют собой, для данного анклава, защищенную область адресного пространства приложения, для которой предотвращается доступ для любого кода приложения, нерезидентного в самом данном анклаве, за исключением того, что управляющий анклав может предоставлять ключи в анклав арендаторов. В некоторых вариантах осуществления, управляющий анклав может быть ограничен возможностью предоставлять ключи арендаторов только в анклав, выполняющийся на машине, идентичной машине управляющего анклава. Таким образом, например, управляющий анклав 106-1-1 должен иметь возможность предоставлять ключ 108 в анклав 102-1-1, поскольку они оба выполняются на идентичной машине 100-1-1. Тем не менее, управляющий анклав 106-1-1 не должен иметь возможность предоставлять ключ 108 в анклав 102-1-2, поскольку они находятся на различных машинах.
[0057] Анклав выполнен с возможностью выполнять функциональность для арендатора облачных служб. Следует отметить, что код приложения может находиться в другом экземпляре анклава, но до тех пор, пока он представляет собой идентичный код приложения, он может осуществлять доступ к анклаву. Например, управляющий анклав 106-2-1 может иметь возможность предоставлять ключ 108 в управляющий анклав 106-1-1, если оба из этих управляющих анклавов выполняют идентичный код приложения. Как отмечено выше, это может подтверждаться с использованием аттестационных сертификатов, таких как аттестационный сертификат 110-1, проиллюстрированный на фиг. 2.
[0058] Дополнительно следует отметить, что при использовании в данном документе, идентичный "код приложения" может включать в себя различные версии идентичного кода. Тем не менее, код приложения в управляющих анклавах может быть выполнен с возможностью обеспечивать связь с различными версиями идентичного кода приложения. Например, управляющий анклав 106-2-1 может иметь возможность предоставлять ключ 108 в управляющий анклав 106-1-1, если оба из этих управляющих анклавов выполняют различные версии идентичного кода приложения. Как отмечено выше, это может подтверждаться с использованием аттестационных сертификатов, таких как аттестационный сертификат 110-1, проиллюстрированный на фиг. 2. Например, некоторые варианты осуществления могут верифицировать аттестационный сертификат, включающий в себя анклавную аттестацию для управляющего анклава. Анклавная аттестация содержит верифицируемое подтверждение центра подписывания, верифицируемое подтверждение объявления центра подписывания относительно того, какую функциональность имеет код приложения, и верифицируемое подтверждение объявленной центром подписывания версии кода приложения.
[0059] Таким образом, способ 300 может осуществляться на практике, когда получение ключа арендатора содержит получение ключа арендатора из другого управляющего анклава, выполняющего версию идентичного кода приложения, посредством верификации того, что другой управляющий анклав выполняет взаимно подтверждаемый и аутентифицируемый код управляющего анклава таким образом, что ключи арендаторов могут передаваться между управляющими анклавами доверенным способом посредством управляющих анклавов, подтверждающих и аутентифицирующих код управляющего анклава.
[0060] В некоторых таких вариантах осуществления, верификация того, что другой управляющий анклав выполняет взаимно подтверждаемый и аутентифицируемый код приложения, включает в себя верификацию того, что другой управляющий анклав выполняет тот же самый код приложения.
[0061] Альтернативно или дополнительно, в некоторых таких вариантах осуществления, верификация того, что другой управляющий анклав выполняет взаимно подтверждаемый и аутентифицируемый код управляющего анклава, включает в себя верификацию того, что другой управляющий анклав выполняет другую версию кода приложения, которая может верифицироваться в качестве другой версии кода приложения.
[0062] В некоторых таких вариантах осуществления, верификация того, что другой управляющий анклав выполняет другую версию кода управляющего анклава, включает в себя верификацию аттестационного сертификата, включающего в себя анклавную аттестацию для управляющего анклава. Анклавная аттестация включает в себя верифицируемое подтверждение центра подписывания, верифицируемое подтверждение объявления центра подписывания относительно того, какую функциональность имеет код приложения, и верифицируемое подтверждение объявленной центром подписывания версии кода приложения.
[0063] В некоторых вариантах осуществления, управляющий анклав и анклав представляют собой равноправные узлы, которые используют взаимную аутентификацию и аттестацию, чтобы верифицировать то, что управляющий анклав для выдачи ключей представляет собой доверенного эмитента, и анклав получателя представляет собой доверенного получателя ключа. Это может выполняться, например, посредством использования аттестационных сертификатов, как описано выше. В частности, управляющий анклав и анклав могут верифицировать то, что другой из них использует взаимно подтвержденный и верифицируемый код. Это может осуществляться посредством управляющего анклава и анклава, выполняющих идентичный код, как задано выше, либо посредством некоторого другого взаимно согласованного кода.
[0064] Варианты осуществления, проиллюстрированные здесь, могут осуществляться на практике посредством компьютерной системы, включающей в себя один или более процессоров и машиночитаемых носителей, таких как компьютерное запоминающее устройство. В частности, компьютерное запоминающее устройство может сохранять машиноисполняемые инструкции, которые при выполнении посредством одного или более процессоров инструктируют выполнение различных функций, к примеру, этапов, изложенных в вариантах осуществления.
[0065] Варианты осуществления настоящего изобретения могут содержать или использовать компьютер специального назначения или общего назначения, включающий в себя компьютерные аппаратные средства, как подробнее поясняется ниже. Варианты осуществления в пределах объема настоящего изобретения также включают в себя физические и другие машиночитаемые носители для переноса или сохранения машиноисполняемых инструкций и/или структур данных. Эти машиночитаемые носители могу представлять собой любые доступные носители, к которым можно осуществлять доступ посредством компьютерной системы общего назначения или специального назначения. Машиночитаемые носители, которые сохраняют машиноисполняемые инструкции, представляют собой физические носители хранения данных. Машиночитаемые носители, которые переносят машиноисполняемые инструкции, представляют собой передающие среды. Таким образом, в качестве примера, а не ограничения, варианты осуществления изобретения могут содержать, по меньшей мере, два совершенно различных типа машиночитаемых носителей: физические машиночитаемые носители хранения данных и машиночитаемые передающие среды.
[0066] Физические машиночитаемые носители хранения данных включают в себя RAM, ROM, EEPROM, CD-ROM или другое устройство хранения данных на оптических дисках (такое как CD, DVD и т.д.), устройство хранения данных на магнитных дисках либо другие магнитные устройства хранения данных или любой другой носитель, который может использоваться для того, чтобы сохранять требуемое средство программного кода в форме машиноисполняемых инструкций или структур данных, и к которому может осуществляться доступ посредством компьютера общего назначения или специального назначения.
[0067] "Сеть" задается как одна или более линий связи для передачи данных, которые обеспечивают транспортировку электронных данных между компьютерными системами и/или модулями и/или другими электронными устройствами. Когда информация передается или предоставляется по сети или другим соединениям связи (проводным, беспроводным либо комбинации проводных и беспроводных) в компьютер, компьютер надлежащим образом рассматривает соединение в качестве передающей среды. Передающие среды могут включать в себя сеть и/или линии связи для передачи данных, которые могут использоваться для того, чтобы переносить требуемое средство программного кода в форме машиноисполняемых инструкций или структур данных, и к которым может осуществляться доступ посредством компьютера общего назначения или специального назначения. Комбинации вышеперечисленного также включаются в число машиночитаемых носителей.
[0068] Дополнительно, при достижении различных компонентов компьютерной системы, средство программного кода в форме машиноисполняемых инструкций или структур данных может передаваться автоматически из машиночитаемых передающих сред в физические машиночитаемые носители хранения данных (или наоборот). Например, машиноисполняемые инструкции или структуры данных, принимаемые по сети или линии связи для передачи данных, могут буферизоваться в RAM в пределах сетевого интерфейсного модуля (например, NIC) и затем в конечном счете передаваться в RAM компьютерной системы и/или в менее энергозависимые машиночитаемые физические носители хранения данных в компьютерной системе. Таким образом, машиночитаемые физические носители хранения данных могут быть включены в компоненты компьютерной системы, которые также (или даже главным образом) используют передающие среды.
[0069] Машиночитаемые инструкции содержат, например, инструкции и данные, которые инструктируют компьютеру общего назначения, компьютеру специального назначения или устройству обработки специального назначения выполнять определенную функцию или группу функций. Машиноисполняемые инструкции, например, могут представлять собой двоичные файлы, инструкции в промежуточном формате, к примеру, на языке ассемблера или даже в исходном коде. Хотя предмет изобретения описан на языке, характерном для структурных признаков и/или технологических этапов, следует понимать, что предмет изобретения, заданный в прилагаемой формуле изобретения, не обязательно ограничен описанными признаками или этапами, описанными выше. Наоборот, описанные признаки и этапы раскрываются как примерные формы реализации формулы изобретения.
[0070] Специалисты в данной области техники должны принимать во внимание, что изобретение может осуществляться на практике в сетевых вычислительных окружениях с множеством типов конфигураций компьютерных систем, включающих в себя персональные компьютеры, настольные компьютеры, переносные компьютеры, процессоры сообщений, карманные устройства, многопроцессорные системы, микропроцессорные или программируемые бытовые электронные приборы, сетевые PC, миникомпьютеры, мэйнфреймы, мобильные телефоны, PDA, устройства поискового вызова, маршрутизаторы, коммутаторы и т.п. Изобретение также может осуществляться на практике в распределенных системных окружениях, в которых локальные и удаленные компьютерные системы, которые соединены (посредством проводных линий связи для передачи данных, беспроводных линий связи для передачи данных или посредством комбинации проводных и беспроводных линий связи для передачи данных) через сеть, выполняют задачи. В распределенном системном окружении, программные модули могут размещаться как в локальных, так и в удаленных запоминающих устройствах.
[0071] Альтернативно или помимо этого, функциональность, описанная в данном документе, может выполняться, по меньшей мере, частично, посредством одного или более аппаратных логических компонентов. Например, и без ограничения, иллюстративные типы аппаратных логических компонентов, которые могут использоваться, включают в себя программируемые пользователем вентильные матрицы (FPGA), специализированные интегральные схемы (ASIC), специализированные микросхемы для массового производства (ASSP), внутрикристальные системы (SOC), комплексные программируемые логические устройства (CPLD) и т.д.
[0072] Настоящее изобретение может быть осуществлено в других характерных формах без отступления от своей сущности или характеристик. Описанные варианты осуществления должны рассматриваться во всех отношениях только как иллюстративные, а не ограничивающие. Следовательно, объем изобретения указан посредством прилагаемой формулы изобретения, а не посредством вышеприведенного описания. Все изменения, которые подпадают под смысл и рамки равнозначности формулы изобретения, должны охватываться ее объемом.