ПРЕДШЕСТВУЮЩИЙ УРОВЕНЬ ТЕХНИКИ
[0001] При проектировании электронных устройств разработчики прилагают усилия по созданию для электронных устройств противопиратстских мер (например, программных средств), которые защищают приложения от злонамеренных пользователей. Однако даже если приняты современные меры против пиратства, злонамеренные пользователи часто все еще способны манипулировать электронными устройствами для незаконного действия приложениями. Обычно, злонамеренный пользователь электронного устройства будет модифицировать операционную систему, гипервизор и/или микропрограммное обеспечение электронного устройства. Используя модифицированное электронное устройство, злонамеренный пользователь затем способен извлекать код для приложения, которое необходимо пользователю, чтобы злонамеренно исполнять приложение в электронном устройстве.
СУЩНОСТЬ ИЗОБРЕТЕНИЯ
[0002] Это раскрытие описывает способы для использования защищенной изолированной технологии, чтобы предотвращать пиратство и мошенничество в электронных устройствах. В некоторых примерах электронное устройство включает в себя защищенную изолированную технологию, которая дает возможность процессору электронного устройства работать в защищенном режиме и сохранять данные и/или код в обеспечиваемой на аппаратном уровне защищенной изолированной области компьютерной памяти. Например, электронное устройство может сохранять первую часть приложения в компьютерной памяти и сохранять вторую часть приложения в аппаратно-обеспечиваемой защищенной изолированной области компьютерной памяти. Вторая часть приложения может включать в себя часть с открытым текстом и шифрованную часть. В некоторых примерах шифрованная часть включает в себя код для приложения, который является критическим по отношению к использованию приложения. Если шифрованная часть не расшифрована безошибочно и не исполнена, приложение ограничивается от функционирования корректно и, таким образом, ограничивается от пиратства.
[0003] Для исполнения приложения, электронное устройство может использовать часть приложения с открытым текстом для установления защищенного шифрованного канала связи с сервером через сеть. Электронное устройство может дополнительно использовать часть приложения с открытым текстом, чтобы посылать данные на сервер и принимать ключ расшифрования от сервера через защищенный шифрованный канал связи. В некоторых примерах данные включают в себя информацию аттестации, такую как идентификатор для микросхемы центрального процессора (CPU) в электронном устройстве, подтверждение, что код в электронном устройстве действительно исполняется в устройстве, которое поддерживает аппаратно-обеспечиваемую защищенную изолированную технологию, и/или дайджест защищенной изолированной области. Электронное устройство может затем использовать ключ расшифрования, чтобы расшифровывать шифрованную часть приложения в аппаратно-обеспечиваемой защищенной изолированной области. После расшифрования, электронное устройство может исполнять приложение, используя первую часть приложения и вторую часть приложения.
[0004] Путем использования защищенной изолированной технологии, которая дает возможность процессору работать в защищенном режиме и исполнять код в аппаратно-обеспечиваемой защищенной изолированной области компьютерной памяти, операционная система, гипервизор и/или микропрограммное обеспечение электронного устройства ограничиваются от доступа к данным в аппаратно-обеспечиваемой защищенной изолированной области компьютерной памяти. По существу, даже если пользователь манипулирует электронным устройством, части приложения (например, критический код приложения) внутри аппаратно-обеспечиваемой защищенной изолированной области все еще защищены от извлечения. Кроме того, используя манипулируемое электронное устройство, пользователь ограничивается от модифицирования порций приложения, которые находятся внутри аппаратно-обеспечиваемой защищенной изолированной области. Следовательно, пользователь электронного устройства ограничен от пиратства приложения и/или мошенничества, пока электронное устройство исполняет приложение.
Эта краткое описание сущности изобретения приведено, чтобы в упрощенной форме представить подборку концепций, которые дополнительно описаны ниже в подробном описании изобретения. Это краткое описание не предназначено для того, чтобы идентифицировать ключевые или существенные признаки заявленного изобретения, и при этом оно не предназначено, чтобы использоваться в качестве средства в определении объема заявленного изобретения. Термин "способы", например, может относиться к системе(ам), способу(ам), машиночитаемым командам, модулю(ям), алгоритмам, аппаратно-реализованной логике, и/или операции(ям), как допускается контекстом, описанным выше и по всему документу.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
[0005] Подробное описание излагается со ссылкой на сопроводительные чертежи. На фигурах чертежей самая левая цифра(ы) ссылочной позиции идентифицирует фигуру чертежа, на которой числовая ссылочная позиция появляется первый раз. Одинаковые числовые ссылочные позиции на различных фигурах обозначают подобные или идентичные элементы.
[0006] Фиг.1 - блок-схема, иллюстрирующая примерную среду, в которой могут работать способы для использования аппаратно-обеспечиваемой защищенной изолированной технологии, чтобы предотвращать пиратство и мошенничество в электронных устройствах.
[0007] Фиг.2 - блок-схема, иллюстрирующая примерное клиентское вычислительное устройство, сконфигурированное для использования аппаратно-обеспечиваемой защищенной изолированной технологии, чтобы предотвращать пиратство и мошенничество.
[0008] Фиг.3 - блок-схема, иллюстрирующая примерное вычислительное устройство, сконфигурированное для выполнения способов, связанных с предотвращением пиратства и мошенничества в электронном устройстве, которое использует аппаратно-обеспечиваемую защищенную изолированную технологию.
[0009] Фиг.4 - структурная схема примерного способа для электронного устройства, использующего аппаратно-обеспечиваемую защищенную изолированную технологию, чтобы предотвращать пиратство приложения.
[0010] Фиг.5 - структурная схема примерного способа для электронного устройства, исполняющего часть приложения внутри аппаратно-обеспечиваемой защищенной изолированной области компьютерной памяти.
[0011] Фиг.6 - структурная схема примерного способа использования аппаратно-обеспечиваемой защищенной изолированной технологии для обеспечения защиты ключа расшифрования.
[0012] Фиг.7 - структурная схема примерного способа для электронного устройства, использующего плавающее право, связанное с приложением.
[0013] Фиг.8 - структурная схема первого примерного способа для сервера, верифицирующего аппаратно-обеспечиваемую защищенную изолированную технологию на электронном устройстве.
[0014] Фиг.9 - структурная схема второго примерного способа для сервера, верифицирующего аппаратно-обеспечиваемую защищенную изолированную технологию на электронном устройстве.
[0015] Фиг.10 - структурная схема первого примерного способа использования аппаратно-обеспечиваемой защищенной изолированной технологии, чтобы предотвращать мошенничество.
[0016] Фиг.11 - структурная схема второго примерного способа использования аппаратно-обеспечиваемой защищенной изолированной технологии, чтобы предотвращать мошенничество.
ПОДРОБНОЕ ОПИСАНИЕ СУЩНОСТИ ИЗОБРЕТЕНИЯ
Общее представление
[0017] Описанные здесь примеры обеспечивают способы для использования защищенной изолированной технологии, чтобы предотвращать пиратство и мошенничество в электронных устройствах. В некоторых примерах электронное устройство включает в себя аппаратно-обеспечиваемую защищенную изолированную технологию, которая защищает данные и/или код в электронном устройстве. Защищенная изолированная технология защищает данные и/или код путем предоставления возможности процессору электронного устройства работать в защищенном режиме, и путем сохранения данных и/или кода в аппаратно-обеспечиваемой защищенной изолированной области компьютерной памяти. В некоторых примерах операционная система, гипервизор и/или микропрограммное обеспечение электронного устройства ограничены от осуществления доступа к данным и/или коду внутри защищенной изолированной области компьютерной памяти. По существу, даже если пользователь манипулирует электронным устройством (например, операционной системой, гипервизором и/или встроенным микропрограммным обеспечением электронного устройства), данные и/или код внутри аппаратно-обеспечиваемой защищенной изолированной области все еще защищены от извлечения и манипулирования. Примером аппаратно-обеспечиваемой технологии защищенной изоляции является технология Software Guard Extensions (Расширения программной защиты, SGX) корпорации Intel, но такие технологии также могут поступать от других изготовителей оборудования. Функциональность технологии защищенной изоляции включает в себя следующее:
- Способность сохранять код и данные в аппаратно-обеспечиваемой защищенной изолированной области секретными от остальной вычислительной системы, включая супервизор и гипервизор ОС.
- Способность обеспечивать аттестацию на сервер изнутри аппаратно-обеспечиваемой защищенной изолированной области, что область действительно исполняется на вычислительной машине с аппаратно-обеспечиваемой защищенной изолированной областью.
- Способность подтверждать на сервер изнутри аппаратно-обеспечиваемой защищенной изолированной области криптографический дайджест/параметр измерения аппаратно-обеспечиваемой области защищенной изоляции, исполняющейся в текущий момент.
- Способность подтверждать на сервер изнутри аппаратно-обеспечиваемой защищенной изолированной области уникальный идентификатор (ID), который однозначно идентифицирует это электронное устройство от других электронных устройств с аппаратно-обеспечиваемой технологией защищенной изоляции.
- Способность генерировать в аппаратно-обеспечиваемой защищенной изолированной области ключ, который может использоваться в качестве ключа запечатывания, который может повторно генерироваться, только если та же самая аппаратно-обеспечиваемая защищенная изолированная область исполняется на тех же самых аппаратных средствах снова.
[0018] В некоторых примерах электронное устройство сохраняет первую часть приложения (например, первую часть кода) в компьютерной памяти и вторую часть приложения (например, вторую часть кода) - в аппаратно-обеспечиваемой защищенной изолированной области компьютерной памяти. Вторая часть приложения может включать в себя часть с открытым текстом и шифрованную часть. В некоторых примерах часть с открытым текстом может включать в себя код, который электронное устройство использует, чтобы принимать ключ расшифрования от сервера. Например, часть с открытым текстом может включать в себя код лицензирования для приложения. В некоторых примерах шифрованная часть может включать в себя код, который является критическим для приложения, чтобы исполняться надлежащим образом. Например, шифрованная часть игры может включать в себя код для эвристических правил искусственного интеллекта (AI), физических вычислений в трех измерениях (3D), генерации пользовательских команд графического процессора или подобное, для приложения.
[0019] В некоторых примерах, чтобы исполнять приложение, электронное устройство использует часть с открытым текстом для установления защищенного шифрованного канала связи с сервером (например, сервером лицензирования). Электронное устройство может дополнительно использовать часть с открытым текстом, чтобы посылать данные на сервер через защищенный шифрованный канал связи. Например, электронное устройство может обеспечивать аттестацию на сервер путем посылки конкретных данных (например, информации аттестации) на сервер. В некоторых примерах данные могут включать в себя идентификатор микросхемы центрального процессора (CPU) электронного устройства (например, номер микросхемы CPU), подтверждение, что код в электронном устройстве действительно исполняется в устройстве, которое поддерживает аппаратно-обеспечиваемую технологию защищенной изоляции, и/или дайджест кода и данных в аппаратно-обеспечиваемой защищенной изолированной области. В таких примерах дайджест защищенной изолированной области может включать в себя и часть с открытым текстом, и шифрованную часть. Используя данные, сервер может верифицировать, что аппаратно-обеспечиваемая защищенная изолированная область работает на электронном устройстве, которое поддерживает аппаратно-обеспечиваемую защищенную изолированную технологию. Кроме того, в некоторых примерах, сервер может путем просмотра базы данных платежных записей дополнительно верифицировать, имеет ли электронное устройство и/или пользователь электронного устройства лицензию на приложение. Если приложение надлежаще лицензировано, сервер может затем посылать ключ расшифрования на электронное устройство через защищенный шифрованный канал связи.
[0020] В некоторых примерах электронное устройство использует ключ расшифрования, чтобы расшифровывать шифрованную часть в аппаратно-обеспечиваемой защищенной изолированной области. После расшифрования электронное устройство может использовать первую часть, часть с открытым текстом и расшифрованную часть, чтобы исполнять приложение. Например, электронное устройство может использовать CPU, чтобы выполнять первую часть приложения, сохраненную в компьютерной памяти. Электронное устройство может дополнительно использовать CPU, чтобы исполнять часть с открытым текстом и расшифрованную часть, сохраненную внутри аппаратно-обеспечиваемой защищенной изолированной области компьютерной памяти.
[0021] В некоторых примерах, когда электронное устройство завершает исполнение приложения, аппаратно-обеспечиваемая защищенная изолированная область может генерировать ключ запечатывания, который часть с открытым текстом может использовать, чтобы зашифровывать ключ расшифрования. Электронное устройство может сохранять зашифрованный ключ расшифрования в энергонезависимом машиночитаемом носителе данных. Это делает возможным, что ключ расшифрования будет восстановлен после перезапуска, и таким образом дает возможность приложению использоваться в офлайновом режиме (без доступа к серверу лицензирования) после того, как ключ расшифрования получен первоначально. В некоторых примерах точно такой же ключ запечатывания может быть восстановлен только с помощью той же самой аппаратно-обеспечиваемой защищенной изолированной области, исполняющейся на том же электронном устройстве снова, и таким образом предотвращает пиратство в других электронных устройствах.
[0022] Дополнительно или альтернативно, разработчик может предписать электронному устройству сохранять код в аппаратно-обеспечиваемой защищенной изолированной области, чем предотвращается мошенничество пользователя. Например, в некоторых примерах, шифрованная часть приложения может включать в себя код, который подтверждает, что другие части приложения (например, первая часть приложения) исполняются надлежащим образом и не были вредоносно модифицированы. Например, шифрованная часть может включать в себя код, который периодически проверяет и подтверждает, что не было вмешательства в первую часть приложения. Дополнительно или альтернативно, в некоторых примерах, шифрованная часть может включать в себя данные, которыми пользователи манипулировали бы для мошенничества. Например, если приложение включает в себя видеоигру, где каждый игрок включает в себя параметр «состояние здоровья», шифрованная часть может включать в себя динамические данные, которые отслеживают состояние здоровья игрока. Поскольку эти данные состояния здоровья теперь сохраняются в аппаратно-обеспечиваемой защищенной изолированной области, они ограничены от модифицирования пользователем, намеревающимся мошенничать в игре.
[0023] Различные примеры, сценарии и аспекты описываются дополнительно со ссылкой на Фиг. 1-10.
ИЛЛЮСТРАТИВНАЯ СРЕДА
[0024] Фиг.1 показывает примерную среду 100, в которой могут работать способы для использования аппаратно-обеспечиваемой защищенной изолированной технологии, чтобы препятствовать пиратству и мошенничеству в электронных устройствах. В некоторых примерах различные устройства и/или компоненты среды 100 включают в себя распределенные вычислительные ресурсы 102, которые могут осуществлять связь друг с другом и с внешними устройствами через одну или большее количество сетей 104.
[0025] Сеть(и) 104 может включать в себя, например, общедоступные сети, такие как сеть Интернет, частные сети, такие как учрежденческая и/или персональная внутренняя сеть, или некоторую комбинацию частных и общедоступных сетей. Сеть(и) 104 также может включать в себя любой тип проводной и/или беспроводной сети, включая, но без ограничения указанным, локальные сети (LAN), глобальные сети (WAN), спутниковые сети связи, кабельные сети связи, сети Wi-Fi, сети WiMax, сети мобильной связи (например, поколений 3G, 4G и т.д.) или любую комбинацию этого. Сеть(и) 104 может использовать протоколы связи, включая протоколы на основе передачи пакетов и/или дейтаграмм, такие как протокол Internet (IP), протокол управления передачей (TCP), протокол дейтаграмм пользователя (UDP), или другие типы протоколов. Кроме того, сеть(и) 104 также может включать в себя ряд устройств, которые содействуют связи по сети и/или образуют аппаратную основу для сетей, таких как коммутаторы, маршрутизаторы, шлюзы, точки доступа, брандмауэры, базовые станции, повторители, устройства базовой сети, и подобное.
[0026] В некоторых примерах сеть(и) 104 может дополнительно включать в себя устройства, которые делают возможным подключение к беспроводной сети, как например, точку беспроводного доступа (WAP). Примеры поддерживают возможность подключения через точки WAP, которые посылают и принимают данные поверх различных электромагнитных частот (например, радиочастот), включая точки WAP, которые поддерживают стандарты 802.11 Института инженеров по электротехнике и радиоэлектронике (ИИЭР, IEEE) (например, стандарты 802.11g, 802.11n и так далее), и другие стандарты.
[0027] В различных примерах распределенные вычислительные ресурсы 102 включают в себя устройства 106(1)-106(M). Примеры поддерживают сценарии, где устройство(а) 106 может включать в себя одно или большее количество вычислительных устройств, которые работают в кластере или другой групповой конфигурации, чтобы совместно использовать ресурсы, выравнивать нагрузку, улучшать рабочую характеристику, обеспечивать поддержку восстановления после отказа или резервирование, или для других целей. Устройство(а) 106 может принадлежать множеству категорий или классов устройств, таких как традиционные устройства типа «сервер», устройства типа «настольный компьютер», устройства мобильного типа, устройства специализированного типа, устройства встроенного типа и/или устройства носимого типа. Таким образом, хотя проиллюстрировано как один тип устройства, устройство(а) 106 может включать в себя различный ряд типов устройств и не ограничивается конкретным типом устройства. Устройство(а) 106 может представлять, но без ограничения указанным, настольные компьютеры, компьютеры серверов, компьютеры веб-серверов, персональные компьютеры, мобильные компьютеры, переносные компьютеры, планшетные компьютеры, носимые микрокомпьютеры, имплантированные вычислительные устройства, устройства связи, автомобильные компьютеры, телевизоры с сетевой поддержкой, тонкие клиенты, терминалы, персональные ассистенты данных (PDA), игровые приставки, игровые устройства, устройства с поддержкой Интернета вещей (IoT), рабочие станции, медиаплееры, персональные видеоплееры с функцией записи (PVR), телевизионные абонентские приставки, камеры, встраиваемые компоненты (то есть, периферийные устройства) для включения в состав вычислительного устройства, бытовые приборы, или любой другой вид вычислительного устройства.
[0028] Устройство(а) 106 может включать в себя любое вычислительное устройство с наличием одного или нескольких блоков 108 обработки, функционально связанных с машиночитаемым носителем 110, как например, через шину 112, которая в некоторых случаях может включать в себя одну или несколько шин из системной шины, шины данных, адресной шины, шины для подключения периферийных компонентов (PCI), шины Mini-PCI, и любой ряд локальных, периферийных и/или независимых шин. Исполнимые команды, сохраненные на машиночитаемом носителе 110, могут включать в себя, например, операционную систему 114, утилиты 116 верификации технологии защищенной изоляции (SIT) и другие модули, программы или приложения, которые являются загружаемыми и исполнимыми посредством блока(ов) 108 обработки. Альтернативно или вдобавок, функциональность, описанная здесь, может выполняться, по меньшей мере частично, посредством одного или большего количества компонентов аппаратно-реализованной логики, таких как ускорители. Например, и без ограничения, иллюстративные типы компонентов аппаратно-реализованной логики, которые могут использоваться, включают в себя базовые матричные кристаллы (FPGA), специализированные интегральные схемы (ASIC), стандартные части специализированных интегральных схем (ASSP), системы "система на кристалле" (SOC), сложные устройства с программируемой логикой (CPLD), и т.д. Например, ускоритель может представлять собой гибридное устройство, такое как одно из ZYLEX или ALTERA, которое включает в себя CPU, встроенный в изделие FPGA.
[0029] Устройство(а) 106 также может включать в себя один или более сетевых интерфейсов 118, чтобы делать возможной связь между вычислительным устройством(ами) 106 и другими устройствами сети, такими как клиентское вычислительное устройство(а) 120. Такой сетевой интерфейс(ы) 118 может включать в себя один или более контроллеров сетевого интерфейса (NIC) или другие типы устройств-приемопередатчиков, чтобы посылать и принимать передачи по сети. Для простоты другие компоненты из иллюстрируемых устройств(а) 106 опускаются.
[0030] Другие устройства, сконфигурированные для осуществления способов для использования защищенной изолированной технологии, чтобы предотвращать пиратство и мошенничество в электронных устройствах, могут включать в себя клиентские вычислительные устройства, например один или более клиентских вычислительных устройств 120(1) - 120(N). Клиентское вычислительное устройство(а) 120 может принадлежать ряду категорий или классов устройств, которые могут быть одинаковыми с устройством(ами) 106 или отличными от него, такими как традиционные устройства типа «клиент», устройства типа «настольный компьютер», устройства мобильного типа, устройства специализированного типа, устройства встроенного типа и/или устройства носимого типа. Клиентское вычислительное устройство(а) 120 может включать в себя, но без ограничения указанным, переносной компьютер 120(1), планшетный компьютер 120(2), устройства связи, такие как мобильный телефон 120(3), клиентские вычислительные устройства типа компьютерной навигации, такие как спутниковые навигационные системы, включая устройства глобальной системы определения местоположения (GPS) и другие устройства спутниковой навигационной системы, гибрид мобильного телефона/планшета, персональный ассистент данных (PDA), персональный компьютер, другие мобильные компьютеры, носимые микрокомпьютеры, имплантированные вычислительные устройства, настольные компьютеры, автомобильные компьютеры, телевизоры с сетевой поддержкой, тонкие клиенты, терминалы, игровые приставки, игровые устройства 120(4), подключенное к сети транспортное средство 120(5), устройства 120(N) с поддержкой Интернета вещей (IoT), рабочие станции, медиаплееры, персональные видеоплееры с функцией записи (PVR), цифровые приемники, камеры, встраиваемые компоненты (например, периферийные устройства) для включения в состав вычислительного устройства, бытовые приборы, или любой другой вид вычислительного устройства.
[0031] Клиентское вычислительное устройство(а) 120 для различных категорий или классов и типов устройств, такое как переносной компьютер 120(1), может представлять любой тип вычислительного устройства, имеющего один или более процессоров 122, функционально связанных с компьютерной памятью 124, как например через шину 126, которая в некоторых случаях может включать в себя одну или несколько шин из системной шины, шины данных, адресной шины, шины PCI, шины Mini-PCI, и любой ряд локальных, периферийных и/или независимых шин.
[0032] Исполнимые команды, сохраняемые в компьютерной памяти 124, могут включать в себя, например, операционную систему 128, первую часть приложения 130 и другие модули, программы, или приложения, которые являются загружаемыми и исполнимыми блоком(ами) 122 обработки.
[0033] Клиентское вычислительное устройство(а) 120 может также включать в себя один или более сетевых интерфейсов 132, чтобы сделать возможным обмен информацией по сети(ям) 104 между клиентским вычислительным устройством(ами) 120 и другими подключенными к сети устройствами, такими как другое клиентское вычислительное устройство(а) 120 или устройство(а) 106. Такой сетевой интерфейс(ы) 132 может включать в себя один или более контроллеров сетевого интерфейса (NIC) или другие типы устройств приемопередатчика, чтобы посылать и принимать передачи по сети.
[0034] В примерах по Фиг.1 клиентское вычислительное устройство(а) 120 может включать в себя аппаратно-обеспечиваемую защищенную изолированную технологию, которая защищает данные и/или код в клиентском вычислительном устройстве(ах) 120. Аппаратно-обеспечиваемая защищенная изолированная технология защищает данные и/или код путем предоставления возможности блокам(у) 122 обработки клиентского вычислительного устройства(устройств) 120 работать в защищенном режиме и путем сохранения данных и/или кода в аппаратно-обеспечиваемой защищенной изолированной области (HBSIR) 132 компьютерной памяти 124. В некоторых примерах операционная система 128, гипервизор и/или микропрограммное обеспечение клиентского вычислительного устройства(устройств) 120 ограничены от доступа к данным и/или коду в аппаратно-обеспечиваемой защищенной изолированной области 134 компьютерной памяти 124. По существу, даже если пользователь манипулирует клиентским вычислительным устройством(устройствами) 120 (например, операционной системой 128, гипервизором и/или микропрограммным обеспечением вычислительного устройства(устройств) 120), данные и/или код в аппаратно-обеспечиваемой защищенной изолированной области 134 все еще защищены от извлечения и манипулирования.
[0035] Например, в некоторых примерах, блок(и) 122 обработки клиентского вычислительного устройства(устройств) 120 может включать в себя микросхемы SKYLAKE CHIPS от корпорации INTEL, которые заключают в себе расширения SECURE GUARD EXTENSIONS (SGX). В таких примерах SGX может давать возможность блоку(ам) 122 обработки исполняться в режиме "анклав", где данные и/или код внутри АНКЛАВА, каковой может включать в себя аппаратно-обеспечиваемую защищенную изолированную область 134, могут сохраняться секретными несмотря на вредоносную операционную систему 128, гипервизор и/или микропрограммное обеспечение.
[0036] В примере по Фиг.1 аппаратно-обеспечиваемая защищенная изолированная область 134 сохраняет вторую часть приложения 136. Например, в примере по Фиг.1, первая часть приложения 130 и вторая часть приложения 136 могут включать в себя код для одного приложения. В некоторых примерах первая часть приложения 130 включает в себя открытой текст, и вторая часть приложения 136 включает в себя часть с открытым текстом и шифрованную часть. По существу, клиентское вычислительное устройство(а) 120 может исполнять приложение, используя первую часть приложения 130, сохраненную в компьютерной памяти 123, и вторую часть приложения 136, сохраненную в аппаратно-обеспечиваемой защищенной изолированной области 134.
[0037] Например, в некотором примере, клиентское вычислительное устройство(а) 120 может использовать вторую часть приложения (например, открытой текст), чтобы устанавливать защищенный шифрованный канал связи с устройством(ами) 106. Например, блок(и) 122 обработки может исполнять машиночитаемые команды, включенные в часть с открытым текстом, которые предписывают блоку(ам) 122 обработки устанавливать защищенный шифрованный канал связи. Используя защищенный шифрованный канал связи, аппаратно-обеспечиваемая защищенная изолированная область 134 может косвенно осуществлять связь с устройством(ами) 106 через клиентское вычислительное устройство(а) 120.
[0038] Например, клиентское вычислительное устройство(а) 120 может обеспечивать аттестацию на устройство(а) 106 путем посылки данных на устройство(а) 106 через защищенный шифрованный канал связи. В некоторых примерах данные могут включать в себя идентификационную информацию блока(ов) 122 обработки (например, номер микросхемы CPU), подтверждение, что код вычислительного устройства(устройств) 120 действительно исполняется в устройстве, которое поддерживает аппаратно-обеспечиваемую технологию защищенной изоляции, и/или дайджест аппаратно-обеспечиваемой защищенной изолированной области 134. В таких примерах дайджест аппаратно-обеспечиваемой защищенной изолированной области 134 включает в себя часть с открытым текстом и шифрованную часть. Используя данные, устройство(а) 106 может верифицировать, что аппаратно-обеспечиваемая защищенная изолированная область 134 работает в клиентском вычислительном устройстве(ах) 120, которое поддерживает аппаратно-обеспечиваемую защищенную изолированную технологию. Кроме того, в некоторых примерах, устройство(а) 106 может верифицировать, что клиентское вычислительное устройство(а) 120 и/или пользователь клиентского вычислительного устройства(устройств) 120 включает в себя лицензию на приложение. Устройство(а) 106 может затем посылать ключ 138 расшифрования на клиентское вычислительное устройство(а) 120 через защищенный шифрованный канал связи.
[0039] После приема ключа 138 расшифрования клиентское вычислительное устройство(а) 120 может использовать ключ 138 расшифрования, чтобы расшифровывать шифрованную часть приложения. Например, блок(и) 122 обработки может исполнять машиночитаемые команды, включенные в часть с открытым текстом, которые предписывают блоку(ам) 122 обработки расшифровывать шифрованную часть, используя ключ 138 расшифрования. Клиентское вычислительное устройство(а) 120 может затем исполнять шифрованную вторую часть приложения в аппаратно-обеспечиваемой защищенной изолированной области 134.
[0040] Фиг.2 является блок-схемой, иллюстрирующей примерное клиентское вычислительное устройство 200, сконфигурированное для использования аппаратно-обеспечиваемой защищенной изолированной технологии, чтобы предотвращать пиратство и мошенничество. Вычислительное устройство 200 может представлять клиентское вычислительное устройство(а) 120. Примерное вычислительное устройство 200 включает в себя один или более блоков 202 обработки, компьютерную память 204, интерфейс(ы) 206 ввода-вывода и сетевой интерфейс(ы) 208. Компоненты вычислительного устройства 200 функционально связаны, например, через шину 210, каковую может представлять шина 126.
[0041] В примерном вычислительном устройстве 200, блок(и) 202 обработки может соответствовать блоку(ам) 122 обработки и может представлять, например, блок обработки типа CPU, блок обработки типа GPU (графический процессор), базовый матричный кристалл (FPGA), другой класс цифрового процессора сигналов (DSP), или другие компоненты аппаратно-реализованной логики, которые могут, в некоторых случаях, управляться посредством CPU. Например, и без ограничения, иллюстративные типы компонентов аппаратно-реализованной логики, которые могут использоваться, включают в себя специализированные интегральные схемы (ASIC), стандартные части специализированных интегральных схем (ASSP), системы "система на кристалле" (SOC), сложные устройства с программируемой логикой (CPLD), и т.д.
[0042] Компьютерная память 204 может соответствовать компьютерной памяти 124 и может сохранять команды, исполнимые блоком(ами) 202 обработки. Компьютерная память 204 может также сохранять команды, исполнимые посредством внешних процессоров, как например, внешним CPU, внешним GPU, и/или исполнимые посредством внешнего ускорителя, такого как ускоритель типа FPGA, ускоритель типа DSP или любой другой внутренний или внешний ускоритель. В различных примерах, по меньшей мере, один CPU, GPU и/или ускоритель включен в состав вычислительного устройства 200, тогда как в некоторых примерах одно или несколько устройств из CPU, GPU, и/или ускорителя является внешним к вычислительному устройству 200.
[0043] Компьютерная память 204 может включать в себя носитель данных компьютера. Носитель данных компьютера может включать в себя одно или более из энергозависимой памяти, энергонезависимой памяти, и/или другой долговременный и/или вспомогательный носитель данных компьютера, съемную и несъемную компьютерную память, реализованную любым способом или технологией для хранения информации, такой как машиночитаемые команды, структуры данных, программные модули или другие данные. Таким образом, носитель данных компьютера включает в себя материальные и/или физические формы носителя, включенного в компонент устройства и/или аппаратных средств, который является частью устройства или внешним к устройству, включая, но без ограничения указанным, оперативную память (RAM), статическую оперативную память (SRAM), динамическую оперативную память (DRAM), память с записью методом фазового перехода (PRAM), постоянную память (ROM), стираемую программируемую постоянную память (EPROM), электрически-стираемую программируемую постоянную память (EEPROM), флэш-память, или любое другое запоминающее устройство, устройство хранения данных и/или носитель данных, который может использоваться, чтобы сохранять и поддерживать информацию для доступа вычислительным устройством.
[0044] Интерфейсы 206 ввода-вывода (I/O) позволяют вычислительному устройству 200 осуществлять связь с устройствами ввода-вывода, такими как устройства пользовательского ввода, включая периферийные устройства ввода (например, клавиатуру, мышь, перо, игровой контроллер, устройство речевого ввода, устройство сенсорного ввода, устройство жестового ввода, и подобное), и/или устройства вывода, включая периферийные устройства вывода (например, устройство отображения, принтер, динамики, тактильный вывод и подобное).
[0045] Сетевой интерфейс(ы) 208, который может соответствовать сетевому интерфейсу(ам) 132, может представлять, например, контроллеры сетевого интерфейса (NIC) или другие типы устройств приемопередатчиков для посылки и приема передач по сети.
[0046] В иллюстрируемом примере компьютерная память 204 включает в себя энергонезависимые носители 212 данных. Энергонезависимые носители 212 данных могут сохранять данные для операций процессов, приложений, компонентов и/или модулей, сохраняемых в компьютерной памяти 204 и/или исполняемых блоком(ами) 202 обработки и/или ускорителем(ями). Кроме того, в некоторых примерах, некоторые или все из вышеупомянутых данных могут сохраняться в отдельных блоках памяти 214 на плате одного или более блоков(а) 202 обработки, таких как память на плате процессора типа CPU, процессора типа GPU, ускорителя типа FPGA, ускорителя типа DSP, и/или другого ускорителя.
[0047] В иллюстрируемом примере по Фиг.2 компьютерная память 204 также включает в себя операционную систему 216, каковую может представлять операционная система 128. Кроме того, компьютерная память 204 включает в себя аппаратно-обеспечиваемую изолированную область 218 и первую часть приложения 220, каковое может представлять аппаратно-обеспечиваемая изолированная область 134 и первая часть приложения 130, соответственно. Кроме того, компьютерная память 204 включает в себя шифрованный ключ 222 расшифрования.
[0048] В примере по Фиг.2 аппаратно-обеспечиваемая изолированная область 218 сохраняет вторую часть приложения 224 (каковое может представлять вторая часть приложения 136), ключ 226 расшифрования и ключ 222 запечатывания. В некоторых примерах первая часть приложения 220, сохраненная в компьютерной памяти 204, и вторая часть приложения 224, сохраненная в аппаратно-обеспечиваемой защищенной изолированной области 218, включают в себя данные и код для программно-реализованного приложения. Например, первая часть приложения 220 может включать в себя открытой текст для приложения. Вторая часть приложения 224 может включать в себя часть 230 с открытым текстом приложения и шифрованную часть 232 приложения. В некоторых примерах часть 230 с открытым текстом включает в себя стандартный код лицензирования, который загружает по сети ключ 226 расшифрования, чтобы расшифровывать шифрованную часть 230. В некоторых примерах шифрованная часть 232 включает в себя код, который является критическим для надлежащего исполнения приложения. Например, шифрованная часть 232 для игры может включать в себя код для эвристических правил AI, физических вычислений, генерации команд специализированного графического процессора, или подобное.
[0049] Аппаратно-обеспечиваемая защищенная изолированная область 218 может дополнительно включать в себя один или более модулей, которые проиллюстрированы в виде блоков 234, 236, 238, 240, 242, хотя это является просто примером, и количество может изменяться в сторону выше или ниже. Функциональность, описанная связанной с блоками 234, 236, 238, 240, 242, может быть объединена, чтобы выполняться меньшим количеством модулей, или она может быть расщеплена и выполняться большим количеством модулей. Кроме того, в некоторых примерах, некоторые из функциональных возможностей, связанных с блоками 234, 236, 238, 240, 242, могут выполняться модулями, которые не включаются в аппаратно-обеспечиваемую защищенную изолированную область 218.
[0050] Блок 234 включает в себя логику, чтобы программировать блок(и) 202 обработки вычислительного устройства 200 для выполнения процессов аттестации, описанных здесь, для вычислительного устройства 200. Например, блок(и) 202 обработки может исполнять модуль 234 аттестации, чтобы обеспечивать аттестацию на сервер, такой как устройство(а) 106 по Фиг.1. В некоторых примерах, чтобы обеспечивать аттестацию на сервер, вычислительное устройство 200 использует часть 230 с открытым текстом внутри аппаратно-обеспечиваемой защищенной изолированной области 218, чтобы устанавливать защищенный шифрованный канал связи с сервером. Например, может использоваться алгоритм Диффи-Хеллмана обмена ключами, чтобы настраивать этот защищенный шифрованный канал связи. Например, блок(и) 202 обработки может исполнять код, включенный в часть 230 с открытым текстом, который предписывает блоку(ам) 202 обработки установить защищенный шифрованный канал связи с сервером через сетевой интерфейс(ы) 208.
[0051] В некоторых примерах вычислительное устройство 200 устанавливает защищенный шифрованный канал связи в ответ на использование пользователем вычислительного устройства 200 для исполнения приложения. После установления защищенного шифрованного канала связи, аппаратно-обеспечиваемая защищенная изолированная область 218 может косвенно осуществлять связь с серверами через вычислительное устройство 200. Например, через посредство защищенного шифрованного канала связи, вычислительное устройство 200 может использовать модуль 234 аттестации, чтобы посылать данные на сервер для выполнения аттестации. В некоторых примерах данные включают в себя идентификатор блока(ов) 202 обработки в электронном устройстве (например, номер микросхемы CPU), подтверждение, что код в электронном устройстве действительно исполняется в устройстве, которое поддерживает аппаратно-обеспечиваемую защищенную изолированную технологию, и/или дайджест аппаратно-обеспечиваемой защищенной изолированной области 218. В таких примерах дайджест аппаратно-обеспечиваемой защищенной изолированной области 218 включает в себя часть 230 с открытым текстом и шифрованную часть 232. Используя данные, сервер может верифицировать, что аппаратно-обеспечиваемая защищенная изолированная область 218 работает на вычислительном устройстве 200, которое поддерживает аппаратно-обеспечиваемую защищенную изолированную технологию. Кроме того, в некоторых примерах, сервер может верифицировать, что вычислительное устройство 200 и/или пользователь вычислительного устройства 200 включает в себя лицензию на приложение. Сервер может затем посылать ключ 226 расшифрования (каковой может представлять ключ 138 расшифрования) на вычислительное устройство 200 через защищенный шифрованный канал связи.
[0052] Блок 236 включает в себя логику, чтобы программировать блок(и) 202 обработки компьютерного устройства 200 для установления защищенного канала с сервером. Например, блок(и) 202 обработки может исполнять модуль 236 защищенной связи, который может использовать сетевой интерфейс(ы) 208, чтобы устанавливать защищенный шифрованный канал связи с сервером, таким как устройство(а) 106 по Фиг.1. В некоторых примерах модуль 236 защищенной связи может использовать алгоритм Диффи-Хеллмана обмена ключами, чтобы настраивать защищенный шифрованный канал связи с сервером. В некоторых примерах блок(и) 202 обработки исполняет модуль 236 защищенной связи, чтобы установить защищенный шифрованный канал связи в ответ на использование пользователем вычислительного устройства 200 для исполнения приложения.
[0053] Модуль 238 включает в себя логику, чтобы программировать блок(и) 202 обработки вычислительного устройства 200 для расшифровывания данных и/или кода, который находится внутри аппаратно-обеспечиваемой защищенной изолированной области 218. Например, вычислительное устройство 200 может использовать модуль 238 расшифрования защищенной изолированной области (SIR), чтобы расшифровывать шифрованную часть 232 приложения в аппаратно-обеспечиваемой защищенной изолированной области 218. Расшифровывание шифрованной части 232 может сгенерировать расшифрованную часть приложения. В некоторых примерах расшифрованная часть может включать в себя код, который блок(и) 202 обработки исполняет внутри аппаратно-обеспечиваемой защищенной изолированной области 218 в ходе исполнения приложения. В некоторых примерах вычислительное устройство 200 использует модуль 238 расшифрования SIR, чтобы расшифровывать шифрованную часть 232, используя ключ 226 расшифрования всякий раз, когда вычислительное устройство 200 осуществляет попытку исполнить приложение.
[0054] Вычислительное устройство 200 может дополнительно использовать модуль 238 расшифрования SIR, чтобы расшифровывать шифрованный ключ 222 расшифрования в аппаратно-обеспечиваемой защищенной изолированной области 218. Например, в некоторых примерах, вычислительное устройство 200 зашифровывает ключ 226 расшифрования, используя ключ 228 запечатывания, и сохраняет зашифрованный ключ 222 расшифрования в компьютерной памяти 204. В таких примерах вычислительное устройство 200 может использовать модуль 238 расшифрования SIR, чтобы расшифровывать зашифрованный ключ 222 расшифрования в аппаратно-обеспечиваемой защищенной изолированной области 218, используя ключ 228 запечатывания, чтобы получить обратно ключ 226 расшифрования.
[0055] Модуль 240 включает в себя логику, чтобы программировать блок(и) 202 обработки вычислительного устройства 200 для генерирования ключа 228 запечатывания. Например, вычислительное устройство 200 может использовать модуль 240 генерации ключа запечатывания, чтобы генерировать ключ 228 запечатывания. В некоторых примерах ключ 228 запечатывания должен быть специфическим для блока(ов) 202 обработки и/или аппаратно-обеспечиваемой защищенной изолированной области 218. Например, в таких примерах, только вычислительное устройство 200, которое включает в себя блок(и) 202 обработки и аппаратно-обеспечиваемую защищенную изолированную область 218, может генерировать ключ 228 запечатывания. В некоторых примерах вычислительное устройство 200 использует модуль 240 генерации ключа запечатывания, чтобы генерировать ключ 228 запечатывания всякий раз, когда вычислительному устройству 200 необходимо зашифровывать ключ 226 расшифрования, и/или всякий раз, когда вычислительному устройству 200 необходимо расшифровывать зашифрованный ключ 222 расшифрования.
[0056] Блок 242 включает в себя логику, чтобы программировать блок(и) 202 обработки вычислительного устройства 200 для шифрования ключа 226 расшифрования с использованием ключа 228 запечатывания. Например, вычислительное устройство 200 может использовать модуль 242 шифрования защищенной изолированной области, чтобы зашифровывать ключ 226 расшифрования, используя ключ 228 запечатывания, чтобы сгенерировать зашифрованный ключ 222 расшифрования. В некоторых примерах вычислительное устройство 200 затем может сохранять зашифрованный ключ 222 расшифрования в компьютерной памяти 204. Например, в некоторых примерах, вычислительное устройство 200 сохраняет зашифрованный ключ 222 расшифрования в энергонезависимых носителях 212 данных.
[0057] Следует отметить, что в некоторых примерах вычислительное устройство 200 может принимать от сервера плавающую лицензию. В таких примерах вычислительное устройство 200 не зашифровывает ключ 226 расшифрования, используя ключ 228 запечатывания, и никогда не сохраняет ключ расшифрования (зашифрованный, или нет) вне аппаратно-обеспечиваемой защищенной изолированной области 218. Вместо этого системе будет необходимо убедиться, что эта лицензия на использование приложения используется только одним электронным устройством в данный момент. Чтобы сделать это, когда вычислительное устройство 200 принимает плавающую лицензию, вычислительное устройство 200 и/или аппаратно-обеспечиваемая защищенная изолированная область 218 могут принимать команды от сервера, чтобы осуществлять связь с сервером периодически (например, с временным интервалом, таким как каждую минуту, каждые десять минут или подобное). Аппаратно-обеспечиваемая защищенная изолированная область 218 затем может предписать части 230 с открытым текстом и/или расшифрованной части приложения завершить исполнение, когда (1) вычислительное устройство 200 и/или аппаратно-обеспечиваемая защищенная изолированная область 218 не является способной осуществлять связь с сервером, или (2) пользователь вычислительного устройства 200 использует другое вычислительное устройство, чтобы лицензировать приложение с такой же лицензией, какую пользователь использовал на вычислительном устройстве 200.
[0058] Фиг.3 является блок-схемой, иллюстрирующей примерное серверное вычислительное устройство, сконфигурированное для выполнения способов, связанных с предотвращением пиратства и мошенничества в электронном устройстве, которое верифицирует аппаратно-обеспечиваемую защищенную изолированную технологию. Вычислительное устройство 300 может представлять устройство(а) 106. Примерное вычислительное устройство 300 включает в себя один или более блоков 302 обработки, машиночитаемые носители 304, интерфейс(ы) 306 ввода-вывода и сетевой интерфейс(ы) 308. Компоненты вычислительного устройства 300 функционально связаны, например, через шину 310, каковую может представлять шина 112.
[0059] В примерном вычислительном устройстве 300, блок(и) 302 обработки может соответствовать блоку(ам) 108 обработки и может представлять, например, блок обработки типа CPU, блок обработки типа GPU, базовый матричный кристалл (FPGA), другой класс цифровых процессоров сигналов (DSP) или другие компоненты аппаратно-реализованной логики, которые могут, в некоторых случаях, управляться посредством CPU. Например, и без ограничения, иллюстративные типы компонентов аппаратно-реализованной логики, которые могут использоваться, включают в себя специализированные интегральные схемы (ASIC), стандартные части специализированных интегральных схем (ASSP), системы "система на кристалле" (SOC), сложные устройства с программируемой логикой (CPLD), и т.д.
[0060] Машиночитаемый носитель 304 данных может соответствовать машиночитаемому носителю 110 данных и может сохранять команды, исполнимые блоком(ами) 302 обработки. Машиночитаемый носитель 304 данных может также сохранять команды, исполнимые посредством внешних процессоров, как например, внешним CPU, внешним GPU, и/или исполнимые посредством внешнего ускорителя, как например, ускорителем типа FPGA, ускорителем типа DSP, или любым другим внутренним или внешним ускорителем. В различных примерах, по меньшей мере, один CPU, GPU и/или ускоритель включен в состав вычислительного устройства 300, тогда как в некоторых примерах один или более CPU, GPU, и/или ускоритель является внешним по отношению к вычислительному устройству 300.
[0061] Машиночитаемый носитель 304 данных может включать в себя компьютерный носитель данных и/или среду для передачи данных. Компьютерный носитель компьютера может включать в себя одно или более из энергозависимой памяти, энергонезависимой памяти и/или другой долговременный и/или вспомогательный носитель данных компьютера, съемный и несъемный носитель данных компьютера, реализованный любым способом или технологией для хранения информации, такой как машиночитаемые команды, структуры данных, программные модули или другие данные. Таким образом, компьютерный носитель данных включает в себя материальную и/или физическую формы носителя, включенного в компонент устройства и/или аппаратных средств, который является частью устройства или внешним к устройству, включая, но без ограничения указанным, оперативную память (RAM), статическую оперативную память (SRAM), динамическую оперативную память (DRAM), память с записью методом фазового перехода (PRAM), постоянную память (ROM), стираемую программируемую постоянную память (EPROM), электрически стираемую программируемую постоянную память (EEPROM), флэш-память, оптические карточки или другие оптические носители, магнитные кассеты, магнитную ленту, накопитель на магнитном диске, магнитные карты или другие магнитные запоминающие устройства или носители, устройства твердотельной памяти, массивы устройств хранения данных, подключаемое к сети устройство хранения данных, сети устройств хранения данных, размещаемое в сети запоминающее устройство или любое другое запоминающее устройство, устройство хранения данных, и/или носитель данных, который может использоваться, чтобы сохранять и поддерживать информацию для доступа вычислительным устройством.
[0062] В отличие от компьютерного носителя данных, среда для передачи данных может воплощать машиночитаемые команды, структуры данных, программные модули или другие данные в модулированном сигнале данных, таком как несущая, или другом механизме передачи. Как определено здесь, компьютерной носитель данных не включает в себя среду для передачи данных. То есть, компьютерные носители данных не охватывают среды для передачи данных, состоящие, по сути, только из модулированного сигнала данных, несущей или распространяемого сигнала.
[0063] Интерфейсы 306 ввода-вывода (I/O) позволяют вычислительному устройству 300 осуществлять связь с устройствами ввода-вывода, такими как устройства пользовательского ввода, включая периферийные устройства ввода (например, клавиатуру, мышь, перо, игровой контроллер, устройство речевого ввода, устройство сенсорного ввода, устройство жестового ввода и подобное), и/или устройства вывода, включая периферийные устройства вывода (например, устройство отображения, принтер, динамики, тактильный вывод и подобное).
[0064] Сетевой интерфейс(ы) 308, который может соответствовать сетевому интерфейсу(ам) 118, может представлять, например, контроллеры сетевого интерфейса (NIC) или другие типы устройств приемопередатчика для посылки и приема передач по сети.
[0065] В иллюстрируемом примере блок(и) 302 обработки включает в себя отдельные блоки 312 памяти. В некоторых примерах некоторые или все вышеупомянутые данные могут сохраняться в отдельных блоках 312 памяти на плате одного или более блоков 302 обработки, таких как память на плате процессора типа CPU, процессора типа GPU, ускорителя типа FPGA, ускорителя типа DSP и/или другого ускорителя.
[0066] В иллюстрируемом примере по Фиг.3, машиночитаемый носитель 304 включает в себя операционную систему 314, каковую может представлять операционная система 114. Кроме того, машиночитаемые носители 304 включают в себя утилиты 316 верификации технологии защищенной изоляции. Утилиты 316 верификации защищенной изолированной технологии могут включать в себя один или более модулей, которые проиллюстрированы как блоки 318, 320, 322 и 324, хотя это является только примером, и количество может изменяться в сторону выше или ниже. Функциональность, описанная связанной с блоками 318, 320, 322 и 324, может быть объединена, чтобы выполняться меньшим количеством модулей, или она может быть расщеплена и выполняться большим количеством модулей. Кроме того, в некоторых примерах, некоторая функциональность, связанная с блоками 318, 320, 322 и 324, может выполняться модулями, которые не включены в утилиты 116 верификации технологии защищенной изоляции.
[0067] Блок 318 включает в себя логику, чтобы программировать блок(и) 302 обработки вычислительного устройства 300 для выполнения процессов аттестации, описанных в документе, для вычислительного устройства 300. Например, вычислительное устройство 300 может принимать данные (например, информацию аттестации) от электронного устройства, такого как клиентское вычислительное устройство 120 по Фиг.1, через защищенный шифрованный канал связи. Вычислительное устройство 300 может использовать модуль 318 верификации аттестации, чтобы выполнять верификацию аттестации для того, чтобы верифицировать исполнение электронным устройством аппаратно-обеспечиваемой защищенной изолированной технологии, используя данные. В некоторых примерах данные могут включать в себя идентификатор микросхемы центрального процессора (CPU) электронного устройства (например, номер микросхемы CPU), подтверждение, что код в электронном устройстве действительно исполняется в устройстве, которое поддерживает аппаратно-обеспечиваемую технологию защищенной изоляции, и/или значение дайджеста аппаратно-обеспечиваемой защищенной изолированной области.
[0068] Например, вычислительное устройство 300 может выполнять аттестацию путем верификации, что электронное устройство включает в себя микросхему CPU, которая является доверенной, и включает в себя аппаратно-обеспечиваемую защищенную изолированную технологию. Например, сервер может верифицировать идентификационную информацию микросхемы CPU и идентификационную информацию аппаратно-обеспечиваемой защищенной изолированной области, используя базу 326 данных технологии защищенной изоляции (SIT). База 326 данных SIT может включать в себя данные, которые связывают электронные устройства с аппаратно-обеспечиваемой технологией защищенной изоляции. По существу, вычислительное устройство 300 может использовать базу 326 данных SIT, чтобы верифицировать, что микросхема CPU электронного устройства соответствует аппаратно-обеспечиваемой защищенной изолированной технологии в электронном устройстве. В некоторых примерах, если вычислительное устройство 300 определяет, что микросхема CPU соответствует аппаратно-обеспечиваемой защищенной изолированной технологии в электронном устройстве, то вычислительное устройство 300 может верифицировать аппаратно-обеспечиваемую защищенную изолированную технологию в электронном устройстве. Однако если вычислительное устройство определяет, что микросхема CPU не соответствует аппаратно-обеспечиваемой защищенной изолированной технологии в электронном устройстве, то вычислительное устройство 300 не верифицирует аппаратно-обеспечиваемую защищенную изолированную технологию в электронном устройстве.
[0069] Блок 320 включает в себя логику, чтобы программировать блок(и) 302 обработки вычислительного устройства 300 для определения прав, связанных с приложением, относительно электронного устройства. Например, в некоторых примерах, после верификации электронного устройства, вычислительное устройство 300 может исполнять модуль 320 прав для определения того, включает ли электронное устройство права для исполнения приложения.
[0070] Например, в некоторых примерах, вычислительное устройство 300 может использовать базу 328 данных прав, чтобы определять, включает ли электронное устройство права для исполнения приложения. База 328 данных прав может включать данные, указывающие пользователей и/или электронные устройства, которые включают в себя права, связанные с различными приложениями. По существу, вычислительное устройство 300 может использовать базу 328 данных прав, чтобы определять, включает ли электронное устройство и/или пользователь электронного устройства права, связанные с приложением. В некоторых примерах вычислительное устройство 300 может использовать идентификационную информацию микросхемы CPU, чтобы определять, имеет ли электронное устройство права лицензирования, связанные с приложением. В некоторых примерах, если вычислительное устройство 300 принимает параметры доступа (например, информацию учетной записи пользователя) для пользователя вместе с данными, вычислительное устройство 300 может определить, имеет ли пользователь права лицензирования, связанные с приложением.
[0071] В некоторых примерах, связанные с приложением права могут включать в себя постоянную лицензию или плавающую лицензию на приложение. На основе включения пользователем и/или электронным устройством постоянной лицензии на приложение, вычислительное устройство 300 может посылать на электронное устройство ключ 330 расшифрования (каковой может представлять ключ 138 расшифрования) для приложения. На основе включения пользователем и/или электронным устройством плавающей лицензии на приложение, вычислительное устройство 300 может посылать на электронное устройство и ключ 330 расшифрования для приложения, и команды 332 плавающей лицензии, связанные с плавающей лицензией.
[0072] В некоторых примерах команды 332 плавающей лицензии могут предписывать аппаратно-обеспечиваемой защищенной изолированной технологии в электронном устройстве периодически верифицировать плавающую лицензию с вычислительным устройством 300. Например, команды 332 плавающей лицензии могут предписывать аппаратно-обеспечиваемой защищенной изолированной технологии осуществлять связь с вычислительным устройством 300 в заданные временные интервалы (например, каждые тридцать секунд, каждую минуту, каждый час или подобное), чтобы верифицировать, что плавающая лицензия на приложение в электронном устройстве еще является действительной. В некоторых примерах вычислительное устройство 300 может определять, что плавающая лицензия более не является действительной, на основе приема вычислительным устройством 300 аналогичных параметров доступа (например, информации учетной записи пользователя) от пользователя на дополнительном электронном устройстве. В таких примерах вычислительное устройство 300 может посылать на электронное устройство сообщение, указывающее, что плавающая лицензия более не является действительной в электронном устройстве.
[0073] Блок 322 включает в себя логику, чтобы программировать блок(и) 302 обработки вычислительного устройства 300 для шифрования передач между вычислительным устройством 300 и электронными устройствами. Кроме того, блок 324 включает в себя логику, чтобы программировать блок(и) 302 обработки вычислительного устройства 300 для расшифровывания передач между вычислительным устройством 300 и электронными устройствами. Например, в некоторых примерах, вычислительное устройство 300 осуществляет связь с электронными устройствами, используя защищенные шифрованные каналы связи. По существу, вычислительное устройство 300 может использовать модуль 322 шифрования, чтобы зашифровывать передачи до посылки передач на электронные устройства через защищенные шифрованные каналы связи. Кроме того, вычислительное устройство 300 может использовать модуль 324 расшифрования, чтобы расшифровывать передачи, которые принимают от электронных устройств через защищенные шифрованные каналы связи.
[0074] Следует отметить, что в некоторых примерах, утилиты 316 верификации защищенной изолированной технологии могут не включать в себя один или несколько модулей из модуля 322 шифрования или инструментального средства 324 расшифрования. Например, в некоторых примерах, вычислительное устройство 300 может сохранять модуль шифрования и/или модуль расшифрования в машиночитаемом носителе 304 вычислительного устройства 300. В таких примерах вычислительное устройство 300 может шифровать и/или расшифровывать передачи, используя модуль шифрования и модуль расшифрования в машиночитаемом носителе 304.
[0075] Фигуры Фиг. 4-10 иллюстрируют примерные процессы для использования аппаратно-обеспечиваемой защищенной изолированной технологии, чтобы предотвращать пиратство и мошенничество в электронных устройствах. Примерные процессы иллюстрируются в виде совокупности блоков в графе логической последовательности операций, которые представляют последовательность операций, которые могут быть реализованы в аппаратных средствах, программном обеспечении или их комбинации. Ссылки на блоки осуществляются по номерам. В контексте программного обеспечения блоки представляют машиноисполняемые команды, сохраняемые в одном или нескольких блоках компьютерной памяти, которые при исполнении одним или несколькими процессорами (такими как аппаратно-реализованные микропроцессоры), выполняют описанные операции. Обычно, машиноисполняемые команды включают в себя подпрограммы, программы, объекты, компоненты, структуры данных и подобное, которые выполняют конкретные функции или реализуют особые абстрактные типы данных. Порядок, в котором операции описываются, не подразумевает рассматриваться как ограничение, и любое количество описанных блоков можно объединять в любом порядке и/или параллельно, чтобы реализовывать процесс.
[0076] Фиг.4 является структурной схемой 400 примерного способа для электронного устройства, использующего аппаратно-реализуемую защищенную изолированную технологию, чтобы предотвращать пиратство в приложении. На этапе 402, электронное устройство может сохранять первую часть приложения в компьютерной памяти. Например, разработчик приложения может указывать, какие части приложения электронное устройство должно исполнять из компьютерной памяти электронного устройства, и какие части приложения электронное устройство должно исполнять из аппаратно-обеспечиваемой защищенной изолированной области компьютерной памяти электронного устройства. По существу, при подготовке к исполнению приложения, электронное устройство может сохранять первую часть приложения в компьютерной памяти (например, часть приложения, которую электронное устройство исполняет из компьютерной памяти). В некоторых примерах, первая часть приложения включает в себя открытой текст.
[0077] На этапе 404, электронное устройство может сохранять вторую часть приложения в аппаратно-обеспечиваемой защищенной изолированной области компьютерной памяти. Например, электронное устройство может сохранять вторую часть приложения в аппаратно-обеспечиваемой защищенной изолированной области, где вторая часть включает в себя часть с открытым текстом и шифрованную часть. В некоторых примерах часть с открытым текстом включает в себя код, который электронное устройство использует, чтобы получить ключ расшифрования от сервера. Например, часть с открытым текстом может включать в себя стандартный код лицензирования, который загружает по сети ключ расшифрования. В некоторых примерах шифрованная часть включает в себя код, который является критическим для приложения для исполнения надлежащим образом. Например, шифрованная часть может включать в себя код для эвристических правил AI, физических вычислений, генерации команд специализированного графического процессора, или подобное.
[0078] На этапе 406, электронное устройство может устанавливать, используя часть с открытым текстом, защищенный шифрованный канал связи с сервером. Например, электронное устройство (например, процессор) может исполнять машиночитаемые команды, включенные в часть с открытым текстом, которые предписывают электронному устройству устанавливать защищенный шифрованный канал связи с сервером. В некоторых примерах аппаратно-обеспечиваемая защищенная изолированная область может косвенно использовать защищенный шифрованный канал связи, для посылки и приема данных, с сервером через электронное устройство.
[0079] На этапе 408, электронное устройство может посылать данные на сервер через защищенный шифрованный канал связи. Например, электронное устройство (например, процессор) может исполнять машиночитаемые команды (например, код), включенные в аппаратно-обеспечиваемую защищенную изолированную область, которые предписывают электронному устройству посылать информацию аттестации на сервер через защищенный шифрованный канал связи. В некоторых примерах информация аттестации может включать в себя идентификатор процессора электронного устройства (например, номер микросхемы CPU), подтверждение, что код в электронном устройстве действительно исполняется в устройстве, которое поддерживает аппаратно-обеспечиваемую защищенную изолированную технологию, и/или значение дайджеста аппаратно-обеспечиваемой защищенной изолированной области. В некоторых примерах, сервер может выполнять аттестацию, используя информацию аттестации, чтобы верифицировать одно или более из электронного устройства, процессора, и/или аппаратно-обеспечиваемой защищенной изолированной области. Кроме того, в некоторых примерах, сервер может определить одно или несколько прав, которые электронное устройство и/или пользователь электронного устройства имеют относительно приложения. Например, сервер может определять, включает ли электронное устройство и/или пользователь электронного устройства постоянную лицензию или плавающую лицензию.
[0080] На этапе 410, электронное устройство может принимать ключ расшифрования от сервера через защищенный шифрованный канал связи, и на этапе 412 электронное устройство может расшифровывать шифрованную часть из второй части, используя ключ расшифрования. Например, на основе верификации и определения прав посредством сервера, электронное устройство может принимать ключ расшифрования от сервера через защищенный шифрованный канал связи. Электронное устройство может затем расшифровывать шифрованную часть в аппаратно-обеспечиваемой защищенной изолированной области, используя ключ расшифрования. Например, электронное устройство (например, процессор) может исполнять машиночитаемые команды, включенные в часть с открытым текстом, которые предписывают электронному устройству расшифровывать шифрованную часть, используя ключ расшифрования.
[0081] Следует отметить, что в некоторых примерах электронное устройство может затем исполнять приложение. Например, электронное устройство (например, процессор) может исполнять первую часть приложения из компьютерной памяти, и исполнять и часть с открытым текстом, и расшифрованную часть внутри аппаратно-обеспечиваемой защищенной изолированной области компьютерной памяти. В некоторых примерах первая часть приложения может делать вызовы во вторую часть приложения внутри аппаратно-обеспечиваемой защищенной изолированной области в ходе исполнения.
[0082] Следует дополнительно отметить, что в некоторых примерах вторая часть приложения может предотвращать мошенничество в ходе исполнения приложения. Например, вторая часть приложения (например, шифрованная часть) может включать в себя код, который периодически определяет, исполняется ли код первой части приложения корректно. Определение, исполняется ли код первой части корректно, может включать в себя определение, был ли код модифицирован пользователем электронного устройства. Кроме того или альтернативно, в некоторых примерах, вторая часть приложения (например, шифрованная часть) может включать в себя код, который злонамеренные пользователи приложения обычно модифицируют при совершении мошенничества. Путем помещения кода в аппаратно-обеспечиваемую защищенную изолированную область, злонамеренные пользователи ограничены от модифицирования кода, чтобы совершить мошенничество.
[0083] Фиг.5 является структурной схемой 500 примерного способа для электронного устройства, исполняющего часть приложения в аппаратно-обеспечиваемой защищенной изолированной области компьютерной памяти. На этапе 502, электронное устройство может устанавливать канал связи с сервером.
[0084] На этапе 504, электронное устройство может принимать ключ расшифрования от сервера через канал связи. Например, электронное устройство может использовать часть приложения, чтобы устанавливать канал связи с сервером. Часть приложения может включать в себя часть с открытым текстом, сохраненную в аппаратно-обеспечиваемой защищенной изолированной области компьютерной памяти. В некоторых примерах часть с открытым текстом включает в себя стандартный код лицензии, который электронное устройство использует, чтобы загрузить по сети с сервера ключ расшифрования.
[0085] На этапе 506, электронное устройство может расшифровывать, в аппаратно-обеспечиваемой защищенной изолированной области компьютерной памяти, шифрованную часть приложения, используя ключ расшифрования. Например, электронное устройство может сохранять шифрованную часть приложения в аппаратно-обеспечиваемой защищенной изолированной области. Электронное устройство может затем использовать ключ расшифрования, чтобы расшифровывать шифрованную часть в аппаратно-обеспечиваемой защищенной изолированной области. В некотором примере операционная система, гипервизор и/или микропрограммное обеспечение электронного устройства ограничены от доступа к расшифрованной части приложения в аппаратно-обеспечиваемой защищенной изолированной области компьютерной памяти.
[0086] Следует отметить, что в некоторых примерах электронное устройство может затем исполнять приложение. Например, после расшифрования шифрованной части, электронное устройство может исполнять часть приложения в аппаратно-обеспечиваемой защищенной изолированной области. Кроме того, электронное устройство может исполнять любые части приложения, которые сохраняются вне аппаратно-обеспечиваемой защищенной изолированной области.
[0087] Фиг.6 является структурной схемой 600 примерного способа использования аппаратно-обеспечиваемой защищенной изолированной технологии, чтобы обеспечивать безопасность ключа расшифрования. Электронное устройство может выполнять способ по Фиг.6, когда электронное устройство принимает постоянную лицензию от сервера. Путем сохранения безопасно ключа расшифрования, электронное устройство может исполнять приложение в офлайновом режиме.
[0088] На этапе 602, аппаратно-обеспечиваемая защищенная изолированная технология может предписывать электронному устройству генерировать ключ запечатывания внутри аппаратно-обеспечиваемой защищенной изолированной области компьютерной памяти. Например, процессор электронного устройства может исполнять машиночитаемые команды (например, код), включенные в аппаратно-обеспечиваемую защищенную изолированную область, которые предписывают процессору генерировать ключ запечатывания в аппаратно-обеспечиваемой защищенной изолированной области. В некоторых примерах электронное устройство генерирует ключ запечатывания на основе процессора электронного устройства и/или аппаратно-обеспечиваемой защищенной изолированной области. В таких примерах только электронное устройство, которое включает в себя процессор и аппаратно-обеспечиваемую защищенную изолированную область, может генерировать такой же ключ запечатывания.
[0089] На этапе 604, аппаратно-обеспечиваемая защищенная изолированная технология в электронном устройстве может зашифровывать ключ расшифрования, используя ключ запечатывания, и на этапе 606 аппаратно-обеспечиваемая защищенная изолированная технология может предписать электронному устройству сохранить зашифрованный ключ расшифрования в компьютерной памяти. Например, электронное устройство может исполнять машиночитаемые команды, включенные в часть приложения с открытым текстом, которые сохранены в аппаратно-обеспечиваемой защищенной изолированной области, где машиночитаемые команды предписывают электронному устройству шифровать ключ расшифрования в аппаратно-обеспечиваемой защищенной изолированной области. Электронное устройство может затем сохранять зашифрованный ключ расшифрования в компьютерной памяти. В некоторых примерах электронное устройство сохраняет зашифрованный ключ расшифрования в энергонезависимой памяти.
[0090] Следует отметить, что для того, чтобы исполнять приложение в офлайновом режиме, аппаратно-обеспечиваемая защищенная изолированная технология может получить сохраненный зашифрованный ключ расшифрования из компьютерной памяти. Электронное устройство затем может расшифровывать зашифрованный ключ расшифрования в аппаратно-обеспечиваемой защищенной изолированной области, используя ключ запечатывания, и использовать ключ расшифрования, чтобы расшифровывать шифрованную часть приложения.
[0091] Фиг.7 является структурной схемой 700 примерного способа для электронного устройства, использующего плавающее право, связанное с приложением. В некоторых примерах плавающее право может включать в себя плавающую лицензию, которая отслеживает пользователя электронного устройства. Например, всякий раз, когда, когда пользователь предоставляет параметры доступа (например, имя пользователя и пароль) на сервер, используя электронное устройство, сервер может посылать этому электронному устройству плавающую лицензию для прогона приложения.
[0092] На этапе 702, электронное устройство может принимать от сервера команды, связанные с плавающим правом на приложение. Например, электронное устройство может принимать от сервера команду наряду с ключом расшифрования для приложения. В некоторых примерах плавающее право включает в себя плавающую лицензию на приложение. В таких примерах команды могут предписывать аппаратно-обеспечиваемой изолированной области электронного устройства непрерывно и/или периодически осуществлять связь с сервером для определения, является ли плавающая лицензия еще действительной.
[0093] На этапе 704, электронное устройство может исполнять приложение, используя первую часть приложения, сохраненную в компьютерной памяти, и вторую часть приложения, сохраненную в аппаратно-обеспечиваемой защищенной изолированной области компьютерной памяти. В некоторых примерах первая часть приложения включает в себя открытой текст, и вторая часть приложения включает в себя часть с открытым текстом и шифрованную часть. В таких примерах часть с открытым текстом расшифровывает шифрованную часть, используя ключ расшифрования, так что электронное устройство может исполнять приложение.
[0094] На этапе 706, аппаратно-обеспечиваемая защищенная изолированная область может осуществлять связь с сервером, чтобы определять, является ли плавающее право еще действительным. Например, в некоторых примерах, плавающее право может указывать, что пользователь электронного устройства может исполнять приложение только на одном электронном устройстве в данный момент. В таких примерах аппаратно-обеспечиваемая защищенная изолированная область периодически может (например, каждую минуту, час или подобное) осуществлять связь с сервером, чтобы определять, использует ли пользователь другое электронное устройство, чтобы исполнять приложение. Если сервер определяет, что пользователь использует другое электронное устройство, чтобы исполнять приложение, то сервер может определить, что плавающее право для электронного устройства более не является действительным. Однако если пользователь не использует другое электронное устройство, чтобы исполнять приложение, то сервер может определить, что плавающее право для электронного устройства еще является действительным.
[0095] На этапе 708, аппаратно-обеспечиваемая защищенная изолированная область может предписать электронному устройству завершить исполнение второй части на основе не являющегося действительным плавающего права, или на этапе 710 аппаратно-обеспечиваемая защищенная изолированная область может позволить электронному устройству продолжить исполнение второй части приложения на основе плавающего права, все еще являющегося действительным.
[0096] Кроме того, когда плавающая лицензия еще является действительной, на этапе 712, аппаратно-обеспечиваемая защищенная изолированная область может продолжать осуществлять связь с сервером для определения, является ли плавающее право еще действительным после задержки. В некоторых примерах задержка может включать в себя периодическую задержку, такую как каждую минуту, час или подобное. При осуществлении связи с сервером, аппаратно-обеспечиваемая защищенная изолированная область может завершить исполнение приложения (этап 708) на основе более не являющегося действительным плавающего права или продолжить исполнение приложения (этап 710) на основе являющегося действительным плавающего права.
[0097] Фиг.8 является структурной схемой 800 первого примерного способа для сервера, верифицирующего аппаратно-обеспечиваемую защищенную изолированную технологию в электронном устройстве, как описано в документе. На этапе 802, сервер может принимать данные от электронного устройства. Например, в некоторых примерах, сервер может принимать информацию аттестации от электронного устройства, такую как идентификатор для микросхемы центрального процессора (CPU) электронного устройства, подтверждение, что код в электронном устройстве действительно исполняется в устройстве, которое поддерживает аппаратно-обеспечиваемую технологию защищенной изоляции, и/или дайджест аппаратно-обеспечиваемой защищенной изолированной области.
[0098] На этапе 804, сервер может определять, используя данные, что электронное устройство определяет, что электронное устройство сконфигурировано для выполнения аппаратно-обеспечиваемой защищенной изолированной технологии. Например, сервер может определять, что электронное устройство включает в себя доверенный CPU с защищенной изолированной технологией, используя идентификатор для CPU. В некоторых примерах сервер может использовать базу данных, которая сохраняет информацию, которая ассоциирует микросхемы CPU с аппаратно-обеспечиваемой защищенной изолированной технологией, чтобы определять, что электронное устройство включает в себя аппаратно-обеспечиваемую защищенную изолированную технологию.
[0099] На этапе 806, сервер может определять, используя данные, что аппаратно-обеспечиваемая защищенная изолированная область электронного устройства включает в себя, по меньшей мере, часть приложения. Например, сервер может определять, что дайджест аппаратно-обеспечиваемой защищенной изолированной области соответствует лицензированному приложению. В некоторых примерах сервер может использовать дайджест аппаратно-обеспечиваемой защищенной изолированной технологии (исходя из данных) для определения, что приложение (и/или часть приложения) фактически исполняется в аппаратно-обеспечиваемой защищенной изолированной технологии (например, аппаратно-обеспечиваемой защищенной изолированной области).
[0100] На этапе 808, сервер посылает на электронное устройство ключ расшифрования, связанный с приложением. В некоторых примерах сервер может дополнительно посылать электронному устройству команды, соответствующие приложению, если лицензия включает в себя плавающую лицензию.
[0101] Фиг.9 является структурной схемой 900 примерного способа сервера, верифицирующего аппаратно-обеспечиваемую защищенную изолированную технологию в электронном устройстве. На этапе 902, сервер может принимать данные от электронного устройства. Например, в некоторых примерах, сервер может принимать информацию аттестации от электронного устройства, такую как идентификатор для микросхемы центрального процессора (CPU) электронного устройства, подтверждение, что код в электронном устройстве действительно исполняется в устройстве, которое поддерживает аппаратно-обеспечиваемую защищенную изолированную технологию, и/или дайджест аппаратно-обеспечиваемой защищенной изолированной области.
[0102] На этапе 904, сервер определяет, включает ли электронное устройство в себя доверенный CPU с аппаратно-обеспечиваемой защищенной изолированной технологией. В некоторых примерах сервер определяет, включает ли электронное устройство в себя доверенный CPU с аппаратно-обеспечиваемой защищенной изолированной технологией, используя базу данных. База данных может сохранять информацию, которая ассоциирует микросхемы CPU с аппаратно-обеспечиваемой защищенной изолированной технологией в электронных устройствах. Если на этапе 904 сервер определяет «нет», то способ переходит на этап 906, где сервер не посылает на электронное устройство ключ расшифрования, связанный с приложением. Однако если на этапе 904 сервер определяет «да», то способ переходит на этап 908.
[0103] На этапе 908, сервер определяет, соответствует ли дайджест аппаратно-обеспечиваемой защищенной изолированной технологии в электронном устройстве лицензированному приложению. Например, сервер может использовать дайджест аппаратно-обеспечиваемой защищенной изолированной технологии (исходя из данных), чтобы определять, исполняется ли приложение (и/или часть приложения) фактически в аппаратно-обеспечиваемой защищенной изолированной технологии (например, аппаратно-обеспечиваемой защищенной изолированной области). Если на этапе 908 сервер определяет «нет», то способ переходит на этап 906, где сервер не посылает на электронное устройство ключ расшифрования, связанный с приложением. Однако если на этапе 908 сервер определяет «да», то способ переходит на этап 910.
[0104] На этапе 910, сервер определяет, что у пользователя электронного устройства и/или у электронного устройства имеется лицензия на использование приложения. Например, в некоторых примерах, сервер определяет, включает ли пользователь электронного устройства и/или электронное устройство лицензию на приложение. В некоторых примерах сервер может определить, что пользователь электронного устройства и/или электронное устройство включает в себя постоянную лицензию, тогда как в других примерах, сервер может определить, что пользователь электронного устройства и/или электронное устройство включает в себя плавающую лицензию. Если на этапе 910 сервер определяет «нет», то способ переходит на этап 906, где сервер не посылает на электронное устройство ключ расшифрования, связанный с приложением. Однако, если на этапе 910 сервер определяет «да», то способ переходит на этап 912.
[0105] На этапе 912, сервер посылает ключ расшифрования, связанный с приложением, на электронное устройство. В некоторых примерах сервер может дополнительно посылать команды электронного устройства, соответствующие приложению, если лицензия включает в себя плавающую лицензию.
[0106] Фиг.10 является структурной схемой 1000 первого примерного способа для использования аппаратно-обеспечиваемой защищенной изолированной технологии, чтобы предотвращать мошенничество. На этапе 1002, электронное устройство может сохранять защищаемый код внутри аппаратно-обеспечиваемой защищенной изолированной области электронного устройства. Например, электронное устройство может сохранять защищаемый код, который электронное устройство использует, чтобы осуществлять мониторинг кода приложения, которое исполняется на электронном устройстве. В некоторых примерах защищаемый код может включать в себя часть приложения, мониторинг которого осуществляет электронное устройство.
[0107] На этапе 1004 электронное устройство может исполнять приложение и на этапе 1006 электронное устройство может осуществлять мониторинг кода приложения, используя защищенный код. Например, электронное устройство может использовать защищенный код, чтобы (1) определять, является ли приложение не исполняющимся надлежащим образом, (2) проверять переменные кода, чтобы определять, являются ли переменные корректными, и/или (3) проверять различные части кода приложения. В некоторых примерах электронное устройство может осуществлять мониторинг приложения в ходе исполнения периодически. Например, электронное устройство может определять, исполняется ли приложение надлежащим образом, каждую секунду, минуту или подобное.
[0108] Фиг.11 является структурной схемой второго примерного способа для использования аппаратно-обеспечиваемой защищенной изолированной технологии, чтобы предотвращать мошенничество. На этапе 1102, электронное устройство и/или разработчик могут определять часть данных приложения для сохранения в аппаратно-обеспечиваемой защищенной изолированной области электронного устройства, и на этапе 1104 электронное устройство может сохранять часть данных приложения в аппаратно-обеспечиваемой защищенной изолированной области. Например, часть данных приложения может включать в себя данные, которыми возможно будут манипулировать злонамеренные пользователи, чтобы осуществить мошенничество. В некоторых примерах часть данных приложения может включать в себя динамические данные приложения. Например, если приложение включает в себя игру, где состояние игры включает в себя уровень состояния здоровья пользователя, электронное устройство может сохранять динамические данные, связанные с уровнем состояния здоровья, в аппаратно-обеспечиваемой защищенной изолированной области.
ПРИМЕРНЫЕ ПУНКТЫ ФОРМУЛЫ ИЗОБРЕТЕНИЯ
[0109] A: Способ, содержащий: сохранение первой части приложения в компьютерной памяти электронного устройства; сохранение второй части приложения в защищенной изолированной области компьютерной памяти электронного устройства, вторая часть приложения включает в себя шифрованную часть и часть с открытым текстом; установление, с использованием части с открытым текстом, защищенного шифрованного канала связи с сервером; посылку, с использованием защищенного шифрованного канала связи, данных на сервер; на основе, по меньшей мере отчасти, посылки данных, прием, с использованием защищенного шифрованного канала связи, ключа расшифрования от сервера; и расшифрование шифрованной части с использованием ключа расшифрования.
[0110] B: Способ по п.A, в котором данные включают в себя информацию аттестации, которая позволяет серверу верифицировать, что электронное устройство включает в себя микросхему доверенного центрального процессора (CPU) и защищенную изолированную область.
[0111] C: Способ по п.B, в котором информация аттестации включает в себя, по меньшей мере, одно из идентификатора для микросхемы CPU, подтверждения, что код в электронном устройстве действительно исполняется в устройстве, которое поддерживает аппаратно-обеспечиваемую технологию защищенной изоляции, или дайджеста защищенной изолированной области.
[0112] D: Способ по любому из п.п. A-C, дополнительно содержащий исполнение приложения с использованием первой части приложения, части с открытым текстом из второй части и расшифрованной части из второй части.
[0113] E: Способ по любому из п.п. A-D, дополнительно содержащий: генерирование, с использованием защищенной изолированной области, ключа запечатывания; и шифрование ключа расшифрования с использованием ключа запечатывания.
[0114] F: Способ по п.E, дополнительно содержащий сохранение зашифрованного ключа расшифрования в энергонезависимой памяти.
[0115] G: Способ по любому из п.п. A-F, в котором часть с открытым текстом включает в себя код лицензирования для получения ключа расшифрования от сервера.
[0116] H: Способ по любому из п.п. A-G, в котором шифрованная часть включает в себя код, который является критическим для использования приложения.
[0117] I: Способ по любому из п.п. A-H, дополнительно содержащий прием команд от сервера, команды предписывают защищенной изолированной области периодически осуществлять связь с сервером, чтобы определять, следует ли завершить защищенную изолированную область.
[0118] J: Память с наличием сохраняемых в ней машиноисполняемых команд, чтобы конфигурировать электронное устройство для выполнения способа по любому из п.п. A-J.
[0119] K: Устройство, содержащее: по меньшей мере, один блок обработки; и компьютерную память с наличием сохраняемых в ней машиноисполняемых команд, которые при их исполнении по меньшей мере одним блоком обработки конфигурируют устройство для выполнения способа по любому из п.п. A-J.
[0120] L: Электронное устройство, содержащее: по меньшей мере, один процессор; память, сохраняющую: первую часть приложения; и вторую часть приложения в защищенной изолированной области памяти, вторая часть включает в себя шифрованную часть для обеспечения защиты приложения от извлечения, и часть с открытым текстом для открытия канала связи с сервером, часть с открытым текстом включает в себя машиночитаемые команды, которые при исполнении, по меньшей мере, одним процессором, предписывают, по меньшей мере, одному процессору: устанавливать канал связи с сервером; принимать ключ расшифрования, связанный с приложением, от сервера через канал связи; и расшифровывать шифрованную часть, используя ключ расшифрования.
[0121] M: Устройство по п.L, в котором защищенная изолированная область включает в себя машиночитаемые команды, которые, при исполнении, по меньшей мере, одним процессором, предписывают, по меньшей мере, одному процессору посылать данные на сервер через канал связи, данные включают информацию аттестации, которая позволяет серверу верифицировать, что электронное устройство включает в себя защищенную изолированную технологию.
[0122] N: Устройство по п.M, в котором информация аттестации включает в себя, по меньшей мере, одно из идентификатора для процессора, подтверждения, что код в электронном устройстве действительно исполняется в устройстве, которое поддерживает аппаратно-обеспечиваемую технологию защищенной изоляции, и дайджеста защищенной изолированной области.
[0123] O: Устройство по любому из п.п. L-N, машиночитаемые команды при исполнении, по меньшей мере, одним процессором, дополнительно предписывают, по меньшей мере, одному процессору шифровать ключ расшифрования, используя ключ запечатывания, сгенерированный защищенной изолированной областью.
[0124] P: Устройство по п.O, машиночитаемые команды, при исполнении, по меньшей мере, одним процессором, дополнительно предписывают, по меньшей мере, одному процессу сохранять шифрованный ключ расшифрования в энергонезависимой памяти.
[0125] Q: Устройство по любому из п.п. L-P, машиночитаемые команды, при исполнении, по меньшей мере, одним процессором, дополнительно предписывают, по меньшей мере, одному процессору: принимать команды от сервера через канал связи, команды включают в себя временной интервал для осуществления связи с сервером; и на основе, по меньшей мере частично, временного интервала осуществлять связь с сервером для определения, что лицензия на приложение еще является действительной.
[0126] R: Система, содержащая: один или более процессоров; и память, сохраняющую машиноисполняемые команды, которые при исполнении одним или более процессорами, предписывают одному или более процессорам осуществлять: прием данных от электронного устройства, данные включают, по меньшей мере, идентификатор микросхемы центрального процессора (CPU) электронного устройства, подтверждение, что код в электронном устройстве действительно исполняется в устройстве, которое поддерживает аппаратно-обеспечиваемую технологию защищенной изоляции, и дайджест защищенной изолированной области; определение с использованием подтверждения, что код в электронном устройстве действительно исполняется в устройстве, которое поддерживает аппаратно-обеспечиваемую технологию защищенной изоляции, что электронное устройство сконфигурировано для исполнения защищенной изолированной технологии; определять, используя дайджест защищенной изолированной области, что защищенная изолированная область электронного устройства включает в себя, по меньшей мере, часть приложения; и посылать ключ расшифрования на электронное устройство.
[0127] S: Система по п.R, машиночитаемые команды, при исполнении одним или более процессорами дополнительно предписывают одному или более процессорам определять, что у электронного устройства имеется лицензия, чтобы исполнять приложение.
[0128] T: Система по п.S, операции дополнительно содержат посылку команды на электронное устройство, команды предписывают защищенной изолированной области периодически верифицировать, что лицензия еще является действительной в электронном устройстве.
[0129] U: Система по любому из п.п. R-T, в которой: прием данных содержит прием данных через защищенный шифрованный канал связи между защищенной изолированной областью и сервером; и посылка ключа расшифрования содержит посылку ключа расшифрования через защищенный шифрованный канал связи.
[0130] V: Система по любому из п.п. R-U, в которой дайджест защищенной изолированной области включает в себя часть приложения с открытым текстом и шифрованную часть приложения.
[0131] W: Способ, содержащий: генерирование ключа запечатывания в аппаратно-обеспечиваемой защищенной изолированной области компьютерной памяти; шифрование ключа расшифрования с использованием ключа запечатывания в аппаратно-обеспечиваемой защищенной изолированной области; и сохранение шифрованного ключа расшифрования в компьютерной памяти.
[0132] X: Память с наличием сохраняемых в ней машиноисполняемых команд, машиноисполняемые команды предназначены конфигурировать электронное устройство для выполнения п.W способа.
[0133] Y: Устройство, содержащее: по меньшей мере, один блок обработки; и память с наличием сохраняемых в ней машиноисполняемых команд, которые при их исполнении, по меньшей мере, одним блоком обработки, конфигурируют устройство для выполнения способа по п.W.
[0134] Z: Способ, содержащий: прием от сервера команд, связанных с плавающим правом на приложение; исполнение приложения с использованием первой части приложения, сохраненной в компьютерной памяти, и второй части приложения, сохраненной в аппаратно-обеспечиваемой защищенной изолированной области компьютерной памяти; осуществление связи с сервером, чтобы определять, является ли плавающее право все еще действительным; и выполнение, по меньшей мере, одного из: завершения исполнения второй части приложения на основе, по меньшей мере отчасти, не являющегося действительным плавающего права, или продолжения исполнения приложения на основе, по меньшей мере отчасти, являющегося действительным плавающего права.
[0135] AA: Память с наличием сохраняемых в ней машиноисполняемых команд, машиноисполняемые команды предназначены конфигурировать электронное устройство для выполнения п.Z способа.
[0136] AB: Устройство, содержащее: по меньшей мере, один блок обработки; и память с наличием сохраняемых в ней машиноисполняемых команд, которые при исполнении, по меньшей мере, одним блоком обработки, конфигурируют устройство для выполнения способа по п.Z.
[0137] AC: Способ, содержащий: сохранение защищаемого кода в аппаратно-обеспечиваемой защищенной изолированной области электронного устройства; исполнение приложения; и мониторинг кода приложения с использованием защищенного кода.
[0138] AD: Память с наличием сохраняемых в ней машиноисполняемых команд, машиноисполняемые команды, чтобы конфигурировать электронное устройство для выполнения способа по п.AC.
[0139] AE: Устройство, содержащее: по меньшей мере, один блок обработки; и память с наличием сохраняемых в ней машиноисполняемых команд, которые при исполнении, по меньшей мере, одним блоком обработки конфигурируют устройство для выполнения способа по п.AC.
ЗАКЛЮЧЕНИЕ
[0140] Хотя способы были описаны на языке, специфическом для структурных признаков и/или методологических действий, нужно понимать, что пункты прилагаемой формулы изобретения не обязательно ограничиваются описанными признаками или действиями. Предпочтительнее признаки и действия описываются в виде примерных реализаций таких способов.
[0141] Операции примерных процессов иллюстрируются в виде отдельных этапов и обобщаются со ссылкой на эти этапы. Процессы иллюстрируются как логические последовательности этапов, каждый этап которых может представлять одну или большее количество операций, которые могут быть реализованы в аппаратных средствах, программном обеспечении или их комбинации. В контексте программного обеспечения операции представляют машиноисполняемые команды, сохраняемые в одном или более блоках компьютерной памяти, которые, при исполнении одним или более процессорами, дают возможность одному или более процессорам выполнять описанные операции. Обычно, машиноисполняемые команды включают в себя подпрограммы, программы, объекты, модули, компоненты, структуры данных и т.п., которые выполняют конкретные функции или реализуют особые абстрактные типы данных. Порядок, в котором описаны операции, не подразумевает рассматриваться как ограничение, и любое количество описанных операций могут исполняться в любом порядке, объединяться в любом порядке, подразделяться на множество подопераций, и/или исполняться параллельно, чтобы реализовывать описанные процессы. Описанные процессы могут выполняться с помощью ресурсов, связанных с одним устройством или большим количеством устройств 106, 120, 200 и/или 300, таких как один или более внутренних или внешних CPU или GPU, и/или один или несколько компонентов аппаратно-реализованной логики, таких как FPGA, DSP, или другие типы ускорителей.
[0142] Все способы и процессы, описанные выше, могут быть осуществлены в виде, и полностью автоматизированы с помощью, программно-реализованных модулей кода, исполняемых одним или несколькими универсальными компьютерами или процессорами. Модули кода могут сохраняться в машиночитаемом носителе любого типа или другом компьютерном устройстве хранения данных. Некоторые или все способы альтернативно могут быть осуществлены в виде специализированного аппаратного обеспечения компьютера.
[0143] Условный язык, такой как, среди прочего, "являться способным", "являться реально возможным", "являться вероятным" или "являться возможным", если конкретно не указано иное, понимается в рамках контекста для представления, что некоторые примеры включают в себя, тогда как другие примеры не включают в себя, некоторые признаки, элементы и/или этапы. Таким образом, обычно не подразумевается, что такой условный язык означает, что некоторые признаки, элементы и/или этапы всегда требуются для одного или нескольких примеров, или что один или несколько примеров обязательно включают в себя логику для принятия решения, с помощью или без пользовательского ввода или подсказки, включены ли некоторые признаки, элементы и/или этапы, или подлежат ли выполнению в каком-либо конкретном примере. Соединительный язык, такой как фраза ʺпо меньшей мере, одно из X, Y или Zʺ, если конкретно не указано иное, должен пониматься, чтобы представлять, что элементом, термином, и т.д., может быть либо X, Y, или Z, либо комбинация этого.
[0144] Любые описания процедуры, элементы или блоки на структурных схемах, описанных в документе и/или изображенных на прилагаемых фигурах чертежей, следует понимать как потенциально представляющие модули, сегменты или части кода, которые включают в себя одну или более количество исполняемых команд для осуществления специфических логических функций или элементов в процедуре. Альтернативные реализации включаются в рамки объема примеров, описанных в документе, в котором элементы или функции могут удаляться или исполняться не в показанном или обсужденном порядке, включая по существу синхронно или в обратном порядке, в зависимости от рассматриваемой функциональности, как поймут специалисты в данной области техники. Следует подчеркнуть, что могут делаться многие изменения и модификации по отношению к вышеописанным примерам, элементы которых должны пониматься находящимися среди других приемлемых примеров. Все такие модификации и изменения подразумеваются подлежащими включению при этом в рамки этого раскрытия и защите последующей формулой изобретения.
название | год | авторы | номер документа |
---|---|---|---|
ЗАЩИТА ДВОИЧНЫХ ФАЙЛОВ ТИПОВЫХ КОММЕРЧЕСКИХ ПРОГРАММ ОТ ПИРАТСТВА С ИСПОЛЬЗОВАНИЕМ АППАРАТНЫХ АНКЛАВОВ | 2020 |
|
RU2812867C1 |
АДРЕСАЦИЯ ДОВЕРЕННОЙ СРЕДЫ ИСПОЛНЕНИЯ С ИСПОЛЬЗОВАНИЕМ КЛЮЧА ШИФРОВАНИЯ | 2017 |
|
RU2756048C2 |
РЕАЛИЗАЦИЯ ЗАЩИЩЕННОГО ОБМЕНА ИНФОРМАЦИЕЙ В ИСПОЛНЯЮЩЕЙ СИСТЕМЕ | 2012 |
|
RU2584570C2 |
СПОСОБ ОБМЕНА ЗАЩИЩЕННЫМИ ДАННЫМИ | 2017 |
|
RU2659730C1 |
БЕЗОПАСНАЯ ОБРАБОТКА ДАННЫХ ВИРТУАЛЬНОЙ МАШИНОЙ | 2013 |
|
RU2648941C2 |
СПОСОБЫ И СИСТЕМЫ ДЛЯ КРИПТОГРАФИЧЕСКОЙ ЗАЩИТЫ ОХРАНЯЕМОГО СОДЕРЖИМОГО | 2002 |
|
RU2308077C2 |
АДРЕСАЦИЯ ДОВЕРЕННОЙ СРЕДЫ ИСПОЛНЕНИЯ С ИСПОЛЬЗОВАНИЕМ КЛЮЧА ПОДПИСИ | 2017 |
|
RU2756040C2 |
СЕТЕВОЕ УПРАВЛЕНИЕ НАБОРАМИ ЗАЩИЩЕННЫХ ДАННЫХ | 2013 |
|
RU2640653C2 |
Система и способы для дешифрования сетевого трафика в виртуализированной среде | 2017 |
|
RU2738021C2 |
МЕХАНИЗМ ПРОТИВ МОШЕННИЧЕСТВА НА ОСНОВЕ ДОВЕРЕННОГО ОБЪЕКТА | 2010 |
|
RU2541879C2 |
Изобретение относится к вычислительной технике. Технический результат заключается в обеспечении защиты электронного устройства от пиратства и мошенничества. Разработан способ защиты электронного устройства от пиратства и мошенничества, в котором сохраняют первую часть приложения в компьютерной памяти электронного устройства; сохраняют вторую часть приложения в защищенной изолированной области компьютерной памяти электронного устройства, причем вторая часть приложения включает в себя шифрованную часть и часть с открытым текстом; устанавливают, с использованием части с открытым текстом, защищенный шифрованный канал связи с сервером; отправляют данные на сервер с использованием защищенного шифрованного канала связи; принимают ключ расшифрования от сервера через защищенный шифрованный канал связи; расшифровывают шифрованную часть с использованием ключа расшифрования; и исполняют первую часть приложения из компьютерной памяти электронного устройства и обе из части с открытым текстом и шифрованной части второй части приложения из защищенной изолированной области компьютерной памяти в качестве реакции на расшифровывание шифрованной части. 2 н. и 13 з.п. ф-лы, 11 ил.
1. Способ защиты электронного устройства от пиратства и мошенничества, содержащий этапы, на которых:
сохраняют первую часть приложения в компьютерной памяти электронного устройства, при этом приложение дополнительно включает в себя вторую часть, требующуюся для исполнения приложения;
сохраняют вторую часть приложения в защищенной изолированной области компьютерной памяти электронного устройства, причем вторая часть приложения включает в себя шифрованную часть и часть с открытым текстом, при этом шифрованная часть предотвращает корректное функционирование первой части и второй части приложения до тех пор, пока шифрованная часть не будет безошибочно расшифрована;
устанавливают, с использованием части с открытым текстом, защищенный шифрованный канал связи с сервером;
отправляют данные на сервер с использованием защищенного шифрованного канала связи;
в ответ на упомянутую отправку данных принимают с использованием защищенного шифрованного канала связи ключ расшифрования от сервера;
расшифровывают шифрованную часть с использованием ключа расшифрования; и
исполняют первую часть приложения из компьютерной памяти электронного устройства и обе из части с открытым текстом и шифрованной части второй части приложения из защищенной изолированной области компьютерной памяти в качестве реакции на расшифровывание шифрованной части.
2. Способ по п. 1, в котором упомянутые данные включают в себя информацию аттестации, которая позволяет серверу верифицировать, что электронное устройство включает в себя микросхему доверенного центрального процессора (CPU) и защищенную изолированную область.
3. Способ по п. 2, в котором информация аттестации включает в себя по меньшей мере одно из идентификатора для микросхемы CPU, подтверждения, что код в электронном устройстве действительно исполняется в устройстве, которое поддерживает аппаратно-обеспечиваемую технологию защищенной изоляции, и дайджеста защищенной изолированной области.
4. Способ по п. 1, дополнительно содержащий этапы, на которых:
генерируют, с использованием защищенной изолированной области, ключ запечатывания; и
зашифровывают ключ расшифрования с использованием ключа запечатывания.
5. Способ по п. 4, дополнительно содержащий этап, на котором сохраняют зашифрованный ключ расшифрования в энергонезависимой памяти.
6. Способ по п. 1, в котором часть с открытым текстом включает в себя код лицензирования для получения ключа расшифрования от сервера.
7. Способ по п. 1, в котором шифрованная часть включает в себя код, который является критическим для использования приложения.
8. Способ по п. 1, дополнительно содержащий этап, на котором принимают с сервера команды, которые предписывают защищенной изолированной области периодически осуществлять связь с сервером для определения того, должна ли защищенная изолированная область быть завершена.
9. Способ по п. 1, в котором первая часть приложения вызывает вторую часть приложения в защищенной изолированной области во время исполнения первой части приложения из компьютерной памяти электронного устройства и обеих из части с открытым текстом и шифрованной части второй части приложения из защищенной изолированной области компьютерной памяти.
10. Электронное устройство с защитой от пиратства и мошенничества, содержащее:
по меньшей мере один процессор;
память, хранящую первую часть приложения, при этом приложение дополнительно включает в себя вторую часть, требующуюся для исполнения приложения, причем вторая часть приложения находится в защищенной изолированной области памяти, при этом вторая часть включает в себя шифрованную часть для обеспечения защиты приложения от извлечения и часть с открытым текстом для открытия канала связи с сервером, причем шифрованная часть предотвращает корректное функционирование первой части и второй части приложения до тех пор, пока шифрованная часть не будет безошибочно расшифрована, при этом часть с открытым текстом включает в себя машиночитаемые команды, которые при их исполнении по меньшей мере одним процессором предписывают по меньшей мере одному процессору:
устанавливать канал связи с сервером;
принимать ключ расшифрования, связанный с приложением, от сервера через канал связи;
расшифровывать шифрованную часть, используя ключ расшифрования; и
исполнять первую часть приложения из компьютерной памяти электронного устройства и обе из части с открытым текстом и шифрованной части второй части приложения из защищенной изолированной области компьютерной памяти в качестве реакции на расшифровывание шифрованной части.
11. Устройство по п. 10, в котором защищенная изолированная область включает в себя машиночитаемые команды, которые при их исполнении по меньшей мере одним процессором предписывают по меньшей мере одному процессору посылать данные на сервер через канал связи, каковые данные включают в себя информацию аттестации, которая позволяет серверу верифицировать, что электронное устройство включает в себя защищенную изолированную технологию.
12. Устройство по п. 11, при этом информация аттестации включает в себя по меньшей мере одно из идентификатора для по меньшей мере одного процессора, подтверждения, что код в электронном устройстве действительно исполняется в устройстве, которое поддерживает аппаратно-обеспечиваемую технологию защищенной изоляции, и дайджеста защищенной изолированной области.
13. Устройство по п. 10, в котором машиночитаемые команды при их исполнении по меньшей мере одним процессором дополнительно предписывают по меньшей мере одному процессору шифровать ключ расшифрования, используя ключ запечатывания, сгенерированный защищенной изолированной областью.
14. Устройство по п. 13, в котором машиночитаемые команды при их исполнении по меньшей мере одним процессором дополнительно предписывают по меньшей мере одному процессору сохранять зашифрованный ключ расшифрования в энергонезависимой памяти.
15. Устройство по п. 10, в котором машиночитаемые команды при их исполнении по меньшей мере одним процессором дополнительно предписывают по меньшей мере одному процессору:
принимать с сервера через канал связи команды, которые включают в себя временной интервал для осуществления связи с сервером; и
на основе, по меньшей мере отчасти, этого временного интервала осуществлять связь с сервером для определения того, что лицензия для приложения по-прежнему является действительной.
Устройство для закрепления лыж на раме мотоциклов и велосипедов взамен переднего колеса | 1924 |
|
SU2015A1 |
ANDREW BAUMANN et al | |||
"Shielding Applications from an Untrusted Cloud with Haven" опубл | |||
Способ очистки нефти и нефтяных продуктов и уничтожения их флюоресценции | 1921 |
|
SU31A1 |
Устройство для закрепления лыж на раме мотоциклов и велосипедов взамен переднего колеса | 1924 |
|
SU2015A1 |
Изложница с суживающимся книзу сечением и с вертикально перемещающимся днищем | 1924 |
|
SU2012A1 |
Авторы
Даты
2021-03-16—Публикация
2017-05-18—Подача