ПРОВЕРКА ДАННЫХ С ИСПОЛЬЗОВАНИЕМ АТТЕСТАЦИИ В АНКЛАВЕ
DATA CHECK BY USING VALIDATION IN AN ENCLAVE

Область техники, к которой относится изобретение
Данное раскрытие, в общем, относится к области информационной безопасности и, более конкретно, к проверке данных, используя аттестацию в анклаве.
Уровень техники
Область сетевой безопасности становится все более и более важной в современном обществе. Интернет обеспечил возможность взаимного соединения с разными компьютерными сетями во всем мире. В частности, Интернет обеспечивает среду для обмена данными между разными пользователями, соединенными с разными компьютерными сетями через разного типа устройства клиентов. В то время как использование Интернет преобразовало деловое общение и персональную передачу данных, злонамеренные операторы также используют его, как средство для получения несанкционированного доступа к компьютерам и компьютерным сетям и для намеренного или непреднамеренного раскрытия чувствительной информации.
Вредоносное программное обеспечение ("malware"), которое заражает главный компьютер, может быть выполнено с возможностью выполнения любого количества злонамеренных действий, таких как кража чувствительной информации у бизнеса или у отдельных лиц, имеющих дело с главным компьютером, распространение на другие главные компьютеры, и/или помощь при распределенном отказе в атаках на услугу, пересылая спам или злоумышленные послания по электронной почте из главного компьютера и т.д. Следовательно, остаются нерешенными существенные административные проблемы для защиты компьютеров и компьютерных сетей от злоумышленной и непреднамеренной эксплуатации со стороны вредоносного программного обеспечения.
Краткое описание чертежей
Для обеспечения более полного понимания настоящего раскрытия и его свойств, и преимуществ, ссылка будет сделана на следующее описание, которое следует рассматривать совместно с приложенными чертежами, на которых одинаковые номера ссылочных позиций представляют одинаковые части, на которых:
на фиг. 1 показана упрощенная блок-схема системы передачи данных для проверки данных, используя аттестацию в анклаве, в соответствии с вариантом осуществления настоящего раскрытия;
на фиг. 2 показана упрощенная блок-схема части системы передачи данных для проверки данных, используя аттестацию в анклаве, в соответствии с вариантом осуществления настоящего раскрытия;
на фиг. 3 показана упрощенная блок-схема последовательности операций, поясняющая потенциальные операции, которые могут быть ассоциированы с системой передачи данных, в соответствии с вариантом осуществления;
на фиг. 4 показана упрощенная блок-схема последовательности операций, поясняющая потенциальные операции, которые могут быть ассоциированы с системой передачи данных, в соответствии с вариантом осуществления;
на фиг. 5 показана упрощенная блок-схема последовательности операций, поясняющая потенциальные операции, которые могут быть ассоциированы с системой передачи данных, в соответствии с вариантом осуществления;
на фиг. 6 показана упрощенная блок-схема последовательности операций, поясняющая потенциальные операции, которые могут быть ассоциированы с системой передачи данных, в соответствии с вариантом осуществления;
на фиг. 7 показана блок-схема, поясняющая пример вычислительной системы, которая выполнена в конфигурации "из точки-в-точку" в соответствии с вариантом осуществления;
на фиг. 8 показана упрощенная блок-схема, ассоциированная с примером системы экосистемы ARM на кристалле (SOC), в соответствии с настоящим раскрытием; и
на фиг. 9 показана блок-схема, поясняющая пример ядра процессора, в соответствии с вариантом осуществления.
Фигуры не обязательно вычерчены в масштабе, поскольку их размеры могут значительно различаться, без выхода за пределы настоящего раскрытия.
Подробное описание изобретения
Примеры вариантов осуществления
На фиг. 1 показана упрощенная блок-схема системы передачи данных для проверки данных, используя аттестацию в анклаве, в соответствии с вариантом осуществления настоящего раскрытия. Система 10a передачи данных может включать в себя электронное устройство 12a, сервер 14 и облако 16. Электронное устройство 12a может включать в себя анклав 20a, ненадежное приложение 24 и модуль 26a проверки целостности. Анклав 20a может включать в себя доверенное приложение 22. Модуль 26a проверки целостности может включать в себя библиотеку 30 аттестации входных данных. Анклав 20a может быть соединен с модулем 26a проверки целостности, используя канал 28a аттестации. Сервер 14 может включать в себя модуль 26b проверки целостности. Анклав 20a может быть соединен с модулем 26b проверки целостности на сервере 14, используя канал 28b аттестации. Облако 16 может включать в себя модуль 26c проверки целостности. Анклав 20a может быть соединен с модулем 26c проверки целостности в облаке 16, используя канал 28c аттестации. Анклав 20a может представлять собой доверенную исполнительную среду (TEE). Каналы 28a, 28b, и 28c аттестации могут представлять собой защищенные каналы передачи данных.
В примерных вариантах осуществления система 10a передачи данных (и 10b, описанная ниже) может быть сконфигурирована так, что она будет включать в себя систему для обеспечения проверки данных, используя аттестацию в анклаве, и для выполнения аттестации значений данных, подаваемых в анклав. Удаленный сервер проверки в анклаве может применять политику целостности данных, которая может динамически обновляться для постоянного отслеживания атак в отношении входных данных. Система 10a (и 10b) передачи данных может использовать канал аттестации для выполнения функции аттестации целостности данных и для предоставления политики аттестации целостности данных, где политика является доступной для анклава. Ненадежные входные данные (например, данные из ненадежного приложения 24) могут быть изолированы до использования приложением в анклаве (например, доверенным приложением 22), и проверка целостности данных может быть выполнена либо локально, используя локальный модуль проверки целостности, или удаленно, используя удаленный модуль проверки целостности. Модуль проверки целостности может быть выполнен с возможностью использования библиотеки, которая может обеспечивать возможность проверок диапазона данных, проверок типа данных и сканирования данных для встроенного кода или другого вредоносного программного обеспечения и т.д.
Элементы на фиг. 1 могут быть соединены друг с другом через один или больше интерфейсов, использующих любые соответствующие соединения (проводные или беспроводные), которые обеспечивают разные пути к сетям (например, сети 18) передачи данных. Кроме того, любой один или больше из этих элементов по фиг. 1 может быть скомбинирован или удален из архитектуры на основе конкретных требований конфигурации. Система 10a (и 10b) передачи данных может включать в себя конфигурацию, позволяющую выполнять передачу данных, в соответствии с протоколом управления передачей/протоколом Internet (TCP/IP) для передачи или приема пакетов в сети. Система 10a (и 10b) передачи данных также может работать в связи с протоколом дейтаграмм пользователя/IP (UDP/IP) или любым другим соответствующим протоколом, тогда, когда это необходимо и основано на конкретной потребности.
С целью иллюстрации определенного примера технологий системы 10a (и 10b) передачи данных важно понять передачу данных, которая может происходить в сетевой среде. Следующую основополагающую информацию можно рассматривать, как основу, на которой можно правильно пояснить настоящее раскрытие. Термин "анклав" является инклюзивным и относится к доверенной исполнительной среде (TEE) и представляет ее защищенную область памяти, доступ к которой обычно осуществляется только в самом анклаве или через программный интерфейс доверенного приложения для предоставления услуг. В общем, другие процессы не могут считывать, записывать или по-другому осуществлять доступ к данным, сохраненным в анклаве, и анклав позволяет защищать доверенное приложение во время его исполнения.
В существующих системах ненадежный загрузчик может устанавливать код в анклав, и содержание анклава (например, загруженный код) может проверяться удаленно, используя аттестацию. Удаленное проверяющее устройство должно иметь белый список, в соответствии с которым выполняется оценка степени доверительности кода и назначается аттестационное значение. Однако анклав все еще может быть уязвимым перед атаками во время исполнения, когда данные, вводимые в анклав, используются для эксплуатации слабости кода, или приводят к нарушению целостности защищенных в анклаве данных. Разработчики анклава ожидали потенциал ненадежных источников входных данных, обеспечивая в анклаве возможность использования специфичного для анклава ключа, который может использоваться для установления надежного канала передачи данных со входным источником. Как правило, требуется способ, работающий вне полосы для установления доверия во входном источнике. Однако все еще возможно злоумышленное поведение входного источника, поскольку на практике анклавы развернуты в гетерогенных средах, содержащих смесь систем, осведомленных об анклаве и игнорирующих анклав. Требуются система и способ проверки целостности данных, используя аттестацию анклава и надежный канал аттестации при передаче данных.
Система передачи данных для проверки данных, используя аттестацию в анклаве, как представлено на фиг. 1, может решать эти проблемы (и другие). В системе 10a передачи данных по фиг. 1, для выполнения проверки данных, используя аттестацию в анклаве, система может быть выполнена с возможностью включения в себя модуля проверки целостности (например, модулей 26a, 26b или 26c проверки целостности) и API, как логики для предоставления инструмента для приложения анклава в виде услуг аттестации входных данных. Модуль проверки целостности может использовать канал TEE для исходной аттестации, где входные данные могут быть переданы в сервер (например, сервер 14) или в "облачные" услуги (например, облако 16) для анализа. Специфичные для приложения или специфичные для домена политики могут использоваться серверами или услугами "облака", как часть анализа. В качестве альтернативы, политика или часть политики могут быть предоставлены в локальный модуль проверки целостности, где целостность входных данных и проверку диапазона данных можно выполнять локально в пределах анклава.
Предоставление инструмента для входных данных может быть специфичным для приложения. Например, приложение может ожидать входных значений, которые имеют только четные номера. Политика аттестации данных может устанавливать это ограничение или другие аналогичные ограничения, специфичные для приложения. Проверка входных данных также может быть более обобщенной. Например, политика аттестации данных может требовать, чтобы входные данные находились в пределах диапазона от 32 бита или 64 битов целых чисел. Проверка входных данных также может вовлекать сложный анализ, разработанный для детектирования блоков кода, замаскированных, как данные. Например, простое приложение сценария Java может быть кодировано, как входная строка, такая, как имя человека или место его пребывания. Модуль проверки на целостность может анализировать строку для поиска структур, характеристик или кода, сценариев и т.д. В примерах, где было бы более эффективно обрабатывать проверку целостности данных в электронном устройстве, политика аттестации данных может быть предоставлена по каналу аттестации в электронное устройство. Локальная обработка может происходить, и может приводить к тому, что результаты обработки могут передавать обратно через канал аттестации.
Под приложением анклава может подразумеваться, что анклавы будут соединены только с доверенными входными источниками, используя зашифрованный канал или специально выделенный канал вне пределов полосы. Система 10a передачи данных может обеспечивать возникновение ненадежного входа, без нарушения целостности кода анклава. Например, приложения анклава могут быть записаны для выполнения локальной или удаленной проверки диапазона данных и других проверок целостности данных. Кроме того, электронное устройство может использовать канал аттестации, для выполнения проверок целостности данных для удаленного сервера, или облако, для выполнения проверок целостности для локального анклава, используя динамически предоставленную политику. Кроме того, результаты локальных проверок целостности можно передавать в виде отчета по каналу аттестации. Статический анализ приложения анклава может позволять устанавливать, используются или нет библиотеки входных данных. Обычная аттестация устанавливает, что в анклав загружено ненарушенное приложение. Предоставление инструмента для пути кода может использоваться, как услуга проверки целостности (например, модуль 26a, 26b или 26c проверки целостности) для помощи при конструировании политики, которая может использоваться для фокусирования на проверку входных данных.
В примерном варианте осуществления ненадежное приложение (например, ненадежное приложение 24) вводит ненадежные данные в приложение анклава. Ненадежные данные могут превышать пределы размера буфера, могут нарушать правила печати данных, могут содержать код атаки и т.д. Доверенное приложение (например, доверенное приложение 22) в анклаве, который включает в себя или имеет доступ к библиотекам аттестации входных данных, перехватывает ненадежные данные прежде, чем они могли бы достичь других частей анклава. Ненадежные данные перенаправляют в модуль проверки целостности, используя канал аттестации, где может выполняться проверка анализа целостности данных. Проверки анализа целостности данных могут включать в себя, но не ограничены этим, проверку диапазона данных и проверку типа, проверку значений данных и сканирование содержания данных, которые могут включать в себя сканирование для встроенного кода или сценария. Если ненадежные данные будут проверены, проверенные (и, возможно, обеззараженные) данные возвращаются в анклав для обработки.
В варианте осуществления политика проверки может быть предусмотрена в приложении анклава, которое включает в себя или которое имеет доступ к библиотеке аттестации данных, где могут применяться некоторые или все проверки целостности данных. Политика может предоставляться, используя канал аттестации. Результаты проверки могут быть переданы в сервер или в "облачные" услуги, где может выполняться проверка аудита, и результаты могут быть зарегистрированы для анализа.
Возвращаясь к инфраструктуре на фиг. 1, здесь показана система 10a (и 10b) передачи данных, в соответствии с примерным вариантом осуществления. В общем, система 10a (и 10b) передачи данных может быть воплощена в любом типе или топологии сетей. Сеть 18 представляет собой последовательность точек или узлов, взаимно соединенных путей передачи данных для приема и передачи пакетов информации, которые распространяются через систему 10a (и 10b) передачи данных. Сеть 18 предлагает создавать интерфейс передачи данных между узлами, и может быть выполнена, как любая локальная вычислительная сеть (LAN), виртуальная локальная вычислительная сеть (VLAN), широкополосная вычислительная сеть (WAN), беспроводная локальная вычислительная сеть (WLAN), городская вычислительная сеть (MAN), Интранет, Экстранет, виртуальная частная сеть (VPN), и любая другая соответствующая архитектура или система, которая способствует передаче данных в сетевой окружающей среде, или любая соответствующая ее комбинация, включая в себя проводную и/или беспроводную передачу данных.
В системе 10a (и 10b) передачи данных сетевой трафик, который включает в себя пакеты, фреймы, сигналы, данные и т.д., может быть передан и принят в соответствии с любыми соответствующими протоколами передачи коммуникационных сообщений. Соответствующие протоколы передачи коммуникационных сообщений могут включать в себя многоуровневую схему, такую как модель взаимного соединения открытых систем (OSI), или любые ее производные или варианты (например, протокол управления передачей/протокол Internet (TCP/IP), протокол датаграммы пользователя/IP (UDP/IP)). Кроме того, передача радиосигнала через сотовую сеть также может обеспечиваться в системе 10a (и 10b) передачи данных. Соответствующие интерфейсы и инфраструктура могут быть предусмотрены для обеспечения передачи данных в сотовой сети.
Термин "пакет", используемый здесь, относится к модулю данных, который может быть направлен между узлом источника и узлом назначения в сети переключения пакетов. Пакет включает в себя адрес сетевого источника и адрес сетевого назначения. Эти сетевые адреса могут представлять собой адреса соответствующего протокола Интернет (IP) и протокола передачи сообщений TCP/IP. Термин "данные", используемый здесь, относится к любому типу двоичных, цифровых, голосовых, видео данных, текстовых данных или данных сценария, или любому типу исходного или объектного кода, или любой другой соответствующей информации в любом соответствующем формате, которая может быть передана из одной точки в другую в электронных устройствах и/или сетях. Кроме того, сообщения, запросы, отклики и обращения представляют собой форму сетевого трафика и, поэтому, могут содержать пакеты, фреймы, сигналы, данные и т.д.
В примерном воплощении электронное устройство 12a, сервер 14 и облако 16 представляют собой сетевые элементы, которые предназначаются для охвата сетевых устройств, серверов, маршрутизаторов, коммутаторов, шлюзов, мостов, балансировщиков нагрузки, процессоров, модулей или любых соответствующих устройств, компонентов, элементов или объектов, работающих для обмена информацией в сетевой среде. Сетевые элементы могут включать в себя любые соответствующие аппаратные, программные модули, компоненты, модули или объекты, которые способствуют их работе, а также соответствующие интерфейсы для приема, передачи и/или другой передачи данных или информации в сетевой среде. Это может включать в себя соответствующие алгоритмы и протоколы передачи данных, которые позволяют выполнять эффективный обмен данными или информацией.
Что касается внутренней структуры, ассоциированной с системой 10a (и 10b) передачи данных, каждое электронное устройство 12a, сервер 14 и облако 16 может включать в себя элементы памяти для сохранения информации, предназначенной для использования в представленных здесь операциях. Каждое электронное устройство 12a, сервер 14 и облако 16 может содержать информацию в любом соответствующем элементе памяти (например, в оперативном запоминающем устройстве (RAM), постоянном запоминающем устройстве (ROM), стираемом программируемом ROM (EPROM), электрически стираемом программируемом ROM (EEPROM), специализированной интегральной схеме (ASIC) и т.д.), программном обеспечении, аппаратном обеспечении, встроенном программном обеспечении или в любом другом соответствующем компоненте, устройстве, элементе или объекте, в случае необходимости, и на основании определенных потребностей. Любой из элементов памяти, описанных здесь, следует рассматривать, как охватываемый широким термином "элемент памяти". Кроме того, используемая, отслеживаемая, передаваемая или принимаемая информация в системе 10a (и 10b) передачи данных может быть предусмотрена в любой базе данных, регистре, очереди, таблице, списке управления кэш или в другой структуре сохранения, все из которых могут называться любым соответствующим временным фреймом. Любые такие возможности сохранения также могут быть включены в пределах широкого термина "элемент памяти", используемого здесь.
В определенных примерных вариантах осуществления функции, представленные здесь, могут быть воплощены с помощью логики, кодированной на одном или больше материальных носителях информации (например, встроенная логика, предусмотренная в ASIC, инструкции цифрового сигнального процессора (DSP), программное обеспечение (потенциально включающее в себя объектный код и исходный код) для выполнения процессором или другим аналогичным устройством и т.д.), который может включать в себя непереходный, считываемый компьютером носитель информации. В некоторых из этих случаев элементы памяти могут сохранять данные, используемые для описанных здесь операций. Это включает в себя элементы памяти, которые позволяют сохранять программное обеспечение, логику, код или инструкции процессора, которые выполняются для выполнения действий, описанных здесь.
В примерном воплощении сетевые элементы системы 10a (и 10b) передачи данных, такие как электронное устройство 12a, сервер 14 и облако 16, могут включать в себя программные модули (например, модули 26a, 26b и 26c проверки целостности, соответственно) для достижения, или стимуляции описанных здесь операций. Такие модули могут быть соответствующим образом скомбинированы, используя любой соответствующий подход, который может быть основан на определенной конфигурации и/или потребностях предоставления. В примерных вариантах осуществления такие операции могут выполняться с помощью аппаратных средств, воплощенных во внешнем источнике для этих элементов, или включенных в некоторое другое сетевое устройство, для достижения предназначенной функции. Кроме того, модули могут быть воплощены, как программное обеспечение, аппаратное средство, встроенное программное обеспечение или любая их соответствующая комбинация. Эти элементы также могут включать в себя программное обеспечение (или рециркулирующее программное обеспечение), которое может координировать работу с другими сетевыми элементами для достижения описанных здесь операций.
Кроме того, каждое электронное устройство 12a, сервер 14 и облако 16 может включать в себя процессор, который может выполнять программное обеспечение или алгоритм для выполнения описанных здесь действий. Процессор может выполнять любой тип инструкций, ассоциированных с данными, для достижения представленных здесь детально операций. В одном примере процессор может преобразовывать элемент или изделие (например, данные) из одного состояния или вещи в другое состояние или вещь. В другом примере представленные здесь действия могут быть воплощены с фиксированной логикой или программируемой логикой (например, программное обеспечение/компьютерные инструкции, выполняемое процессором), и элементы, идентифицированные здесь, могут представлять собой определенный тип программируемого процессора, программируемой цифровой логики (например, программируемая пользователем вентильная матрица (FPGA), EPROM, EEPROM) или ASIC, которая включает в себя цифровую логику, программное обеспечение, код, электронные инструкции или любую их соответствующую комбинацию. Любой из этих потенциальных элементов обработки, модулей и устройств, описанных здесь, следует рассматривать, как охватываемый широким термином "процессор".
Электронное устройство 12a может представлять собой сетевой элемент и включает в себя, например, настольные компьютеры, переносные компьютеры, мобильные устройства, карманные персональные компьютеры, смартфоны, планшетные компьютеры или другие аналогичные устройства. Сервер 14 безопасности может представлять собой сетевой элемент, такой, как сервер или виртуальный сервер, и может быть ассоциирован с клиентами, потребителями, конечными точками или конечными пользователями, которые желают инициировать обмен данными в системе 10a (и 10b) передачи данных через некоторую сеть (например, сеть 18). Термин "сервер" включает устройства, используемые для обслуживания запросов клиентов и/или выполнения некоторых вычислительных задач от имени клиентов в системе 10a (и 10b) передачи данных. Хотя модули 26a, 26b и 26c проверки целостности представлены на фиг. 1, как расположенные в пределах электронного устройства 12a, сервера 14 безопасности и облака 16, соответственно, они представлены здесь только с целью иллюстрации. Модули 26a, 26b и 26c проверки целостности могут быть скомбинированы или разделены в любой соответствующей конфигурации. Кроме того, модули 26a, 26b и 26c проверки целостности могут быть интегрированы с или распределены в другой сети, доступ к которой осуществляется электронным устройством 12a. Облако 16 выполнено с возможностью предоставления услуг "облака" для электронного устройства 12a. Услуги "облака" могут быть, в общем, определены, как использование вычислительных ресурсов, которые предоставляют, как услугу через сеть, такую как Интернет. Как правило, расчет, сохранение и сетевые ресурсы предлагаются в инфраструктуре "облака", что эффективно сдвигает рабочую нагрузку из локальной вычислительной сети в сеть облака.
Возвращаясь к фиг. 2, на фиг. 2 показана упрощенная блок-схема системы 10b передачи данных для проверки данных, используя аттестацию в анклаве, в соответствии с вариантом осуществления настоящего раскрытия. Система 10b передачи данных может включать в себя электронное устройство 12b. Электронное устройство 12b может включать в себя анклав 20b. Анклав 20b может включать в себя модуль 32 проверки целостности анклава. Модуль 32 проверки целостности анклава может включать в себя библиотеку 30 аттестации входных данных. Модуль 32 проверки целостности анклава аналогично выполнен, как модуль 26a проверки целостности и позволяет для анклава 20b выполнять проверку данных в анклаве 20b и может рассматриваться, как анклав в анклаве. Каналы 28b и 28c аттестации могут использоваться для обновления библиотеки 30 аттестации входных данных в модуле 32 проверки целостности анклава.
Возвращаясь к фиг. 3, на фиг. 3 показан пример блок-схемы последовательности операций, иллюстрирующий возможные операции потока 300, который может быть ассоциирован с проверкой данных, используя аттестацию в анклаве, в соответствии с вариантом осуществления. В позиции 302 формируют приложение с флагом (или некоторым другим индикатором), который обозначает, что приложение должно использоваться при проверке целостности. Например, разработчик может формировать приложение, и разработчик может ожидать приложения, которое должно использоваться в анклаве для обеспечения проверки целостности. Вместо записи кода, для улучшения проверки целостности, разработчик может установить только флаг, и система распознает, что приложение должно использоваться при проверке целостности. В позиции 304, формируется белый список, ассоциированный с приложением. Белый список может включать в себя заверенные приложения, и обработку, ассоциированную с приложением. В позиции 306, приложение передают в анклав. В позиции 308 белый список передают в модуль проверки целостности. Например, белый список может быть сохранен в библиотеке 30 аттестации входных данных и может использоваться для проверки данных. Во время операции ненадежное приложение или услуга может подавать ненадежные данные в приложение. Анклав может использовать канал аттестации для проверки ненадежных данных перед использованием ненадежных данных анклавом.
Возвращаясь к фиг. 4, на фиг. 4 показан пример, с которым может быть ассоциирована блок-схема последовательности операций, иллюстрирующая возможные операции потока 400, который может быть ассоциирован с проверкой данных, используя аттестацию в анклаве, в соответствии с вариантом осуществления. В варианте осуществления одна или больше операций потока 400 могут быть выполнены модулем 26a, 26b, 26c проверки целостности или модулем 32 проверки целостности анклава. В позиции 402 приложение загружают в анклав. В позиции 404 система определяет, имеет ли приложение флаг (или некоторый другой индикатор), который обозначает, что приложение должно использоваться с проверкой целостности. Если приложение не имеет флага, который обозначает, что приложение должно использоваться с проверкой целостности, тогда обработка заканчивается. Если приложение имеет флаг, который обозначает, что приложение должно использоваться с проверкой целостности, тогда канал аттестации устанавливают между анклавом и модулем проверки целостности, как в позиции 406. В позиции 408 ненадежные данные принимают с помощью приложения в анклаве. В позиции 410, используя канал аттестации, анклав запрашивает проверку ненадежных данных из модуля проверки целостности. В позиции 412, система определяет, были ли проверены ненадежные данные. Если ненадежные данные были проверены (модулем проверки целостности), тогда разрешено использовать ненадежные данные, как в позиции 414. Если ненадежные данные не были проверены (модулем проверки целостности), тогда ненадежные данные не будут разрешены, как в позиции 418, и генерируется отчет в отношении ненадежных данных, как в позиции 416.
Возвращаясь к фиг. 5, на фиг. 5 показан пример блок-схемы последовательности операций, иллюстрирующий возможные операции потока 500, которые могут быть ассоциированы с проверкой данных, используя аттестацию в анклаве, в соответствии с вариантом осуществления. В варианте осуществления одна или больше операций потока 500 могут быть выполнены модулем 26a, 26b, 26c проверки целостности или модулем 32 проверки целостности анклава. В позиции 502, канал аттестации устанавливается между анклавом и модулем проверки целостности. В позиции 504 модуль проверки целостности принимает запрос проверки (ненадежных) данных из анклава. В позиции 506, система определяет, включены ли данные в белый список. Например, модуль проверки целостности может определить, включены ли данные в библиотеку аттестации входных данных. Если данные не включены в белый список, тогда данные не разрешены, как в 512, и генерируется отчет, как в 514. Если данные включены в белый список, тогда система определяет, удовлетворяют ли данные политике, относящейся к анклаву, как в 508. Например, система может определить, удовлетворяют ли данные одной или больше проверкам анализа целостности данных. Если данные не удовлетворяют политике, относящейся к анклаву, тогда данные не проверяют, как в 512. Если данные удовлетворяют политике, относящейся к анклаву, тогда данные проверяют, как в 510, и генерируют отчет, как в 514.
Возвращаясь к фиг. 6, на фиг. 6 показан пример блок-схемы последовательности операций, иллюстрирующий возможные операции потока 600, который может быть ассоциирован с проверкой данных, используя аттестацию в анклаве, в соответствии с вариантом осуществления. В варианте осуществления одна или больше операций потока 600 могут выполняться с помощью модуля 26a, 26b, 26c проверки целостности или модуля 32 проверки целостности анклава. В позиции 602, канал аттестации устанавливается между анклавом и модулем проверки целостности. В позиции 604, модуль проверки целостности формирует приложение проверки целостности, которое соответствует политике, ассоциированной с анклавом. В позиции 606, приложение проверки целостности передают в анклав, используя канал аттестации. Эта обработка позволяет выполнять проверку данных локально в электронном устройстве и позволяет легко обновлять проверку данных.
На фиг. 7 иллюстрируется вычислительная система 700, которая расположена в конфигурации из точки в точку (PtP), в соответствии с вариантом осуществления. В частности, на фиг. 7 показана система, где процессоры, память и устройства I/O взаимно соединены с помощью множества интерфейсов "из-точки-в-точку". В общем, один или больше сетевых элементов системы 10 передачи данных может быть выполнен таким же образом или аналогично, как и вычислительная система 700.
Как представлено на фиг. 7, система 700 может включать в себя несколько процессоров, из которых только два процессора 770 и 780, показаны, для ясности. В то время, как показаны два процессора 770 и 780, следует понимать, что вариант осуществления системы 700 также может включать в себя только один такой процессор. Процессоры 770 и 780 каждый может включать в себя набор ядер (то есть, ядер 774A и 774B процессора и ядер 784A и 784B процессора) для выполнения множества потоков программы. Ядра могут быть сконфигурированы для выполнения кода инструкции, используя подход, аналогичный описанному выше со ссылкой на фигуры 1-6. Каждый процессор 770, 780 может включать в себя, по меньшей мере, один совместно используемый кэш 771, 781. Совместно используемый кэш 771, 781 может сохранять данные (например, инструкции), которые используются одним или больше компонентами процессоров 770, 780, такими, как ядра 774 и 784 процессора.
Процессоры 770 и 780 также могут каждый включать в себя логику 772 и 782 интегрированного контроллера памяти (MC) для обмена данными с элементами 732 и 734 памяти. Элементы 732 и/или 734 памяти могут содержать различные данные, используемые процессорами 770 и 780. В альтернативных вариантах осуществления логика 772 и 782 контроллера памяти может представлять собой дискретную логику, отдельную от процессоров 770 и 780.
Процессоры 770 и 780 могут представлять собой процессор любого типа и могут выполнять обмен данными через интерфейс 750 из "точки-в-точку" (PtP), используя схемы 778 и 788 интерфейса из "точки-в-точку", соответственно. Процессоры 770 и 780 каждый может выполнять обмен данными с набором 790 микросхем через отдельные интерфейсы 752 и 754 из "точки-в-точку", используя схемы 776, 786, 794 и 798 интерфейса из "точки-в-точку". Набор 790 микросхем также может выполнять обмен данными с графической схемой 738 с высокой пропускной способностью через графический интерфейс 739 с высокой пропускной способностью, используя схему 792 интерфейса, которая может представлять собой схему интерфейса PtP. В альтернативных вариантах осуществления любые или все из соединений PtP, представленных на фиг. 7, могут быть воплощены, как многоточечная шина, а не как соединение PtP.
Набор 790 микросхем может находиться в режиме обмена данными с шиной 720 через схему 796 интерфейса. Шина 720 может иметь одно или больше устройств, которые связываются через нее, такие, как мост 718 шины и устройства 716 I/O. Через шину 710, мост 718 шины может связываться с другими устройствами, такими как клавиатура/мышь 712 (или другими устройствами ввода данных, такими, как сенсорный экран, шаровой указатель и т.д.), устройствами 726 передачи данных (такими как модемы, устройства сетевого интерфейса или другие типы устройств передачи данных, которые могут связываться через вычислительную сеть 760), устройствами 714 аудио I/O и/или устройством 728 сохранения данных. Устройство 728 сохранения данных может сохранять код 730, который может выполняться процессорами 770 и/или 780. В альтернативных вариантах осуществления любые части архитектур шины могут быть воплощены с использованием одного или больше соединений PtP.
Вычислительная система, представленная на фиг. 7, представляет собой схематичную иллюстрацию варианта осуществления вычислительной системы, которая может использоваться для воплощения различных вариантов осуществления, описанных здесь. Следует понимать, что различные компоненты представленной на фиг. 7 системы могут быть скомбинированы в виде архитектуры системы на кристалле (SoC) или в любой другой соответствующей конфигурации. Например, раскрытые здесь варианты осуществления могут быть внедрены в мобильные устройства, включающие в себя системы, такие, как сотовые смартфоны, планшетные компьютеры, карманные персональные компьютеры, портативные игровые устройства и т.д. Следует понимать, что в этих мобильных устройствах могут быть предусмотрены архитектуры SoC, по меньшей мере, в некоторых вариантах осуществления.
Возвращаясь к фиг. 8, на фиг. 8 представлена упрощенная блок-схема, ассоциированная с примером экосистемы SOC 800 ARM, в соответствии с настоящим раскрытием. По меньшей мере, один пример воплощения настоящего раскрытия может включать в себя свойства проверки данных, описанные здесь и компонента ARM. Например, пример фигуры 8 может быть ассоциирован с любым ядром ARM (например, A-9, A-15 и т.д.). Кроме того, архитектура может составлять часть любого типа планшетного устройства, смартфона (включая в себя телефоны Android™, iPhone™), iPad™, Google Nexus™, Microsoft Surface™, персональный компьютер, сервер, компоненты видеообработки, переносной компьютер (включая в себя любой тип ноутбуков), систему Ultra book™, любой тип входного устройства с сенсорным вводом и т.д.
В этом примере на фиг. 8 экосистема SOC 800 ARM может включать в себя множество ядер 806-807, управление 808 кэш L2, модуль 809 интерфейса шины, кэш 810 L2, модуль 815 графической обработки (GPU), взаимное соединение 802, видеокодек 820 и I/F 825 жидкокристаллического дисплея (LCD), который может быть ассоциирован с интерфейсом процессора мобильной отрасли (MIPI)/соединением мультимедийного интерфейса высокой четкости (HDMI), которые соединяются с LCD.
Экосистема SOC 800 ARM также может включать в себя I/F 830 модуля идентичности абонента (SIM), загрузочное постоянное запоминающее устройство (ROM) 835, контроллер 840 синхронного динамического оперативного запоминающего устройства (SDRAM), контроллер 845 памяти типа флэш, главный последовательный периферийный интерфейс (SPI) 850, соответствующее управление 855 питанием, динамическую RAM (DRAM) 860 и память флэш 865. Кроме того, один или больше примеров вариантов осуществления включают в себя одну или больше возможностей передачи данных, интерфейсов и свойств, таких, как примеры Bluetooth™ 870, 3G модем 875, Система 880 глобальной навигации (GPS) и 802.11 Wi-Fi 885.
Во время работы пример на фиг. 8 может предлагать возможности обработки, вместе с относительно низким потреблением энергии, для обеспечения выполнения расчетов различных типов (например, мобильных вычислений, высокопроизводительных вычислений для цифрового дома, сервера, беспроводной инфраструктуры и т.д.). Кроме того, такая архитектура может обеспечивать возможность работы любого количества программных приложений (например, Android™, Adobe Flash плейер, платформа Java Standard Edition (Java SE), JavaFX, Linux, Microsoft Windows Embedded, Symbian и Ubuntu и т.д.). По меньшей мере, в одном примерном варианте осуществления процессор ядра может воплощать суперскалярный магистральный конвейер, работающий не по порядку, с соединенным кэш уровня 2 с малой задержкой.
На фиг. 9 иллюстрируется ядро 900 процессора в соответствии с вариантом осуществления. Ядро 900 процессора может представлять собой ядро для процессора любого типа, такого как микропроцессор, встроенный процессор, цифровой сигнальный процессор (DSP), сетевой процессор или другое устройство, для выполнения кода. Хотя только одно ядро 900 процессора представлено на фиг. 9, процессор, в качестве альтернативы, может включать в себя больше чем одно ядро 900 процессора, представленное на фиг. 9. Например, ядро 900 процессора представляет один пример варианта осуществления ядер 774a, 774b, 774a и 774b процессоров, показанных и описанных со ссылкой на процессоры 770 и 780 на фиг. 7. Ядро 900 процессора может представлять собой однопотоковое ядро, или для, по меньшей мере, одного варианта осуществления, ядро 900 процессора может быть многопотоковым в том, что оно может включать в себя больше, чем один контекст аппаратного потока (или "логического процессора") на ядро.
На фиг. 9 также иллюстрируется запоминающее устройство 902, соединенное с ядром 900 процессора, в соответствии с вариантом осуществления. Запоминающее устройство 902 может представлять собой любое из широкого разнообразия запоминающих устройств (включая в себя различные уровни иерархии запоминающих устройств), как известно, или по-другому доступно для специалистов в данной области техники. Запоминающее устройство 902 может включать в себя код 904, который может представлять собой одну или больше инструкций, предназначенных для исполнения ядром 900 процессора. Ядро 900 процессора может следовать программной последовательности инструкций, обозначенных кодом 904. Каждая инструкция входит в предварительную логику 906 и обрабатывается одним или больше декодерами 908. Декодер может генерировать, на его выходе, микрооперацию, такую как фиксированной ширины микрооперация в заданном формате, или может генерировать другие инструкции, микроинструкции или сигналы управления, которые отражают инструкцию генерального кода. Предварительная логика 906 также включает в себя логику 910 переименования регистра и логику 912 планирования, которые, в общем, выделяют ресурсы и запрашивают операции, соответствующие инструкциям для исполнения.
Ядро 900 процессора также может включать в себя исполнительную логику 914, имеющую набор исполнительных модулей 916-1 - 916-N. Некоторые варианты осуществления могут включать в себя множество исполнительных модулей, специализированных для конкретных функций или наборов функций. Другие варианты осуществления могут включать в себя только один исполнительный модуль или один исполнительный модуль, который может выполнять определенную функцию. Исполнительная логика 914 выполняет операции, установленные инструкциями кода.
После завершения исполнения операций, установленных в инструкциях кода, логика 918 выходной обработки может завершать инструкции кода 904. В одном варианте осуществления ядро 900 процессора позволяет выполнять операции не по порядку, но требует завершения инструкций по порядку. Логика 920 завершения может принимать множество известных форм (например, буферы изменения порядка и т.п.). Таким образом, ядро 900 процессора преобразуется во время выполнения кода 904, по меньшей мере, с точки зрения выхода, генерируемого декодером, аппаратными регистрами и таблицами, используемыми логикой 910 переименования регистра, и любыми регистрами (не показаны), модифицированными исполнительной логикой 914.
Хотя это не представлено на фиг. 9, процессор может включать в себя другие элементы на кристалле с ядром 900 процессора, по меньшей мере, некоторые из которых были показаны и описаны здесь со ссылкой на фиг. 7. Например, как показано на фиг. 7, процессор может включать в себя логику управления запоминающим устройством вместе с ядром 900 процессора. Процессор может включать в себя логику управления I/O и/или может включать в себя логику управления I/O, интегрированную с логикой управления памятью.
Следует отметить, что на основании примеров, представленных здесь, может быть описано взаимодействие с точки зрения двух, трех или больше сетевых элементов. Однако это было выполнено только с целью ясности и для примера. В определенных случаях было бы проще описать одну или больше функций из заданного набора потоков, со ссылкой только на ограниченное количество сетевых элементов. Следует понимать, что система 10a и 10b передачи данных и их описания могут быть непосредственно масштабированными, и в них может размещаться большое количество компонентов, а также в них могут применяться более сложные/высокотехнологичные компоновки и конфигурации. В соответствии с этим, представленные примеры не должны ограничивать объем или сдерживать широкое описание системы 10a и 10b передачи данных и потенциально могут применяться для множества других архитектур.
Также важно отметить, что среди операций на предшествующих блок-схемах последовательности операций (то есть на фиг. 3-6) иллюстрируются только некоторые из возможных сценариев корреляции, и структуры могут быть выполнены системами 10a и 10b передачи данных или в пределах этих систем. Некоторые из этих операций могут быть удалены или могут быть устранены, когда это соответствует, или эти операции могут быть модифицированы или существенно изменены без выхода за пределы объема настоящего раскрытия. Кроме того, множество таких операций были описаны, как исполняемые одновременно с, или параллельно с, одной или больше дополнительными операциями. Однако временные характеристики этих операций могут существенно изменяться. Предшествующие потоки операций были предложены с целью примера и обсуждения. Существенная гибкость обеспечивается системой 10a и 10b передачи данных в том, что любые соответствующие компоновки, хронологии, конфигурации и механизмы временной синхронизации могут быть обеспечены без выхода за пределы описания настоящего раскрытия.
Хотя настоящее раскрытие было подробно описано со ссылкой на конкретные компоновки и конфигурации, эти примеры конфигурации и компоновок могут существенно изменяться, без выхода за пределы объема настоящего раскрытия. Кроме того, некоторые компоненты могут быть скомбинированы, разделены, устранены или добавлены на основе конкретных потребностей и вариантов осуществления. Кроме того, хотя система 10a и 10b передачи данных была представлена со ссылкой на конкретные элементы и операции, которые способствуют обработке передачи данных, эти элементы и операции могут быть заменены любой соответствующей архитектурой, протоколами и/или процессами, которые достигают предназначенной функциональности системы 10a или 10b передачи данных.
Множество других изменений, замен, вариаций и модификаций могут быть выполнены специалистом в данной области техники, и при этом предполагается, что настоящее раскрытие охватывает все такие изменения, замены, вариации и модификации, как попадающие в пределы объема приложенной формулы изобретения. Для помощи Офису по регистрации патентов и товарных знаков США (USPTO) и, кроме того, любым читателям любого патента, выданного по данной заявке, при интерпретации приложенной здесь формулы изобретения, Заявитель желает отметить, что Заявитель: (a) не стремится, чтобы любые из приложенных пунктов формулы изобретения ссылались на шестой параграф (6) 35 USC, параграф 112, в том виде, как она существует на дату ее подачи, если только слова "средство для" или "этап для" не будут, в частности, использоваться в определенных пунктах формулы изобретения; и (b) не предполагает ни одним из заявлений в описании ограничение данного раскрытия каким-либо образом, которое не отражено по-другому в приложенной формуле изобретения.
ДРУГИЕ ЗАМЕЧАНИЯ И ПРИМЕРЫ
Пример С1 представляет собой, по меньшей мере, один считываемый устройством накопитель информации, на котором содержится одна или больше инструкций, которые при их исполнении, по меньшей мере, одним процессором обеспечивают прием, по меньшей мере, одним процессором ненадежных данных в анклаве в электронном устройстве, изоляцию ненадежных данных из, по меньшей мере, части анклава, передачу, по меньшей мере, части ненадежных данных в модуль проверки целостности, используя канал аттестации, и прием показателя проверки целостности данных для ненадежных данных из модуля проверки целостности.
В Примере C2 предмет изобретения по примеру С1, в случае необходимости, может включать в себя, где модуль проверки целостности выполняет функции аттестации целостности данных для проверки ненадежных данных.
В Примере C3 предмет изобретения по любому одному из Примеров C1-C2, в случае необходимости, может включать в себя, где функции аттестации целостности данных включают в себя политику аттестации данных.
В Примере C4 предмет изобретения по любому одному из Примеров C1-C3, в случае необходимости, может включать в себя, где функции аттестации целостности данных включают в себя белый список.
В Примере C5 предмет изобретения по любому одному из Примеров C1-C4, в случае необходимости, может включать в себя, где модуль проверки целостности расположен в электронном устройстве.
В Примере C6 предмет изобретения по любому одному из Примеров C1-C5, в случае необходимости, может включать в себя, где модуль проверки целостности расположен в анклаве.
В Примере C7, предмет изобретения по любому одному из Примеров C1-C6, в случае необходимости, может включать в себя, где модуль проверки целостности расположен в сервере, который удален от электронного устройства.
В Примере C8, предмет изобретения по любому одному из Примеров C1-C7, в случае необходимости, может включать в себя, где модуль проверки целостности расположен в облаке, которое расположено удаленно от электронного устройства.
В Примере A1 устройство может включать в себя модуль проверки целостности, где модуль проверки целостности выполнен с возможностью приема ненадежных данных из анклава в электронном устройстве, где ненадежные данные изолированы от, по меньшей мере, части анклава, где ненадежные данные передают, используя канал аттестации, выполнения проверки целостности данных для ненадежных входных данных и возвращают результаты проверки целостности данных в анклав.
В Примере A2 предмет изобретения по Примеру A1, в случае необходимости, может включать в себя, в случае, когда модуль проверки целостности дополнительно выполнен с возможностью выполнения функции аттестации целостности данных, проверять ненадежные данные.
В Примере A3 предмет изобретения по любому одному из Примеров A1-A2, в случае необходимости, может включать в себя, когда функции аттестации целостности данных включают в себя политику аттестации данных.
В Примере A4 предмет изобретения по любому одному из Примеров A1-A3, в случае необходимости, может включать в себя, когда функции аттестации целостности данных включают в себя белый список.
В Примере A5 предмет изобретения по любому одному из Примеров A1-A4, в случае необходимости, может включать в себя, когда модуль проверки целостности расположен в электронном устройстве.
В Примере A6 предмет изобретения по любому одному из Примеров A1-A5, в случае необходимости, может включать в себя, когда модуль проверки целостности расположен в анклаве.
В Примере A7 предмет изобретения по любому одному из Примеров A1-A6, в случае необходимости, может включать в себя, когда модуль проверки целостности расположен в сервере, который расположен удаленно от электронного устройства.
В Примере A8 предмет изобретения по любому одному из Примеров A1-A7, в случае необходимости, может включать в себя, когда модуль проверки целостности расположен в облаке, которое расположено удаленно от электронного устройства.
Пример M1 представляет собой способ, включающий в себя: принимают ненадежные входные данные в анклаве, в электронном устройстве, изолируют ненадежные входные данные от, по меньшей мере, части анклава, передают, по меньшей мере, часть ненадежных данных в модуль проверки целостности, используя канал аттестации, и принимают проверку целостности данных ненадежных входных данных из модуля проверки целостности.
В Примере M2 предмет изобретения по примеру М1, в случае необходимости, может включать в себя, когда модуль проверки целостности выполняет функции аттестации целостности данных для проверки ненадежных данных.
В Примере M3 предмет изобретения по любому одному из Примеров M1-M2, в случае необходимости, может включать в себя, когда функции аттестации целостности данных включают в себя политику аттестации данных.
В Примере M4 предмет изобретения по любому одному из Примеров M1-M3, в случае необходимости, может включать в себя, когда функции аттестации целостности данных включают в себя белый список.
В Примере M5 предмет изобретения по любому одному из Примеров M1-M4 может, в случае необходимости, включать в себя, когда модуль проверки целостности расположен в электронном устройстве.
В Примере M6 предмет изобретения по любому одному из Примеров M1-M5 может, в случае необходимости, включать в себя, когда модуль проверки целостности расположен в сервере, который расположен удаленно от электронного устройства.
В Примере M7 предмет изобретения по любому одному из Примеров M1-M6, в случае необходимости, может включать в себя, когда модуль проверки целостности расположен в облаке, которое расположено удаленно от электронного устройства.
Пример S1 представляет собой систему для проверки данных, используя аттестацию в анклаве, систему, включающую в себя модуль проверки целостности, выполненный с возможностью приема ненадежных входных данных в анклаве, в электронном устройстве, изоляции ненадежных входных данных от, по меньшей мере, части анклава, передачи, по меньшей мере, части ненадежных данных в модуль проверки целостности, используя канал аттестации, и приема проверки целостности данных для ненадежных входных данных из модуля проверки целостности.
В Примере S2 предмет изобретения по примеру S1, в случае необходимости, может включать в себя, когда модуль проверки целостности выполняет функции аттестации целостности данных для проверки ненадежных данных, и функции аттестации целостности данных включают в себя политику аттестации данных.
Пример X1 представляет собой считываемый компьютером носитель информации, включающий в себя считываемые устройством инструкции, для воплощения способа или реализации устройства, как в любом одном из Примеров A1-A8, или M1-M7. Пример Y1 представляет собой устройство, содержащее средство для выполнения любого одного из примеров способов M1-M7. В Примере Y2 предмет изобретения по Примеру Y1, в случае необходимости, может включать в себя средство для выполнения способа, содержащего процессор и запоминающее устройство. В Примере Y3 предмет изобретения по Примеру Y2, в случае необходимости, может включать в себя запоминающее устройство, содержащее считываемые устройством инструкции.