СПОСОБ ЗАГРУЗКИ КОДА ПО МЕНЬШЕЙ МЕРЕ ОДНОГО ПРОГРАММНОГО МОДУЛЯ Российский патент 2015 года по МПК G06F9/445 G06F12/14 G06F21/44 

Описание патента на изобретение RU2557459C2

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

Целью настоящего изобретения также является:

- способ приема скремблированного контента мультимедиа,

- носитель записи информации для реализации указанных способов,

- терминал для реализации указанных способов.

Главная память известна также как «запоминающее устройство с произвольной выборкой» ("random-access memory"), обозначаемое также сокращением ЗУПВ (RAM). Обычно это энергозависимая память, т.е. память, в которой происходит стирание элементов информации при выключении питания. Главная память обеспечивает быстрый доступ для считывания и записи информации. Именно поэтому команды программы, которую должен выполнить процессор системы безопасности, загружают в эту память из одного или более запоминающих устройств большой емкости, где эти команды первоначально записаны. Запоминающие устройства большой емкости обычно являются энергонезависимыми запоминающими устройствами, обладающими большой емкостью для хранения информации, но работающими медленно в режимах считывания и записи. Поэтому невозможно выполнять программу путем считывания команд прямо из запоминающих устройств большой емкости.

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

В настоящем описании термин «контент мультимедиа» ("multimedia content") более конкретно обозначает аудио- и/или видеоконтент, подлежащий отобразить в форме, непосредственно воспринимаемой и понятной для человека. Обычно контент мультимедиа соответствует последовательности изображений, составляющей кинофильм, программе телевизионного вещания или рекламе. Контент мультимедиа может также представлять собой интерактивный контент, такой как игра.

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

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

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

Здесь термины «скремблировать» и «шифровать» считаются синонимами. То же самое относится к терминам «дескремблировать» и «расшифровать».

Открытый контент мультимедиа соответствует контенту мультимедиа до его скремблирования. Этот контент может быть сделан непосредственно понятным для человека, не прибегая к операциям дескремблирования и не ограничивая просмотр определенными условиями.

Управляющие слова, необходимые для дескремблирования контентов мультимедиа, передают синхронно с этими контентами мультимедиа. Например, управляющие слова, необходимые для дескремблирования t-го криптопериода, каждый терминал принимает во время (t-1)-го криптопериода. С этой целью, например, управляющие слова мультиплексируют со скремблированным контентом мультимедиа.

Для защиты передачи управляющих слов эти слова передают терминалу в виде криптограмм, заключенных в сообщении управления правами (ЕСМ (entitlement control message)).

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

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

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

Для преодоления этого недостатка было предложено заменить терминалы, оснащенные смарт-картами, бескарточными терминалами.

В этих терминалах смарт-карта может быть заменена программным модулем, выполняемым процессором системы безопасности в составе терминала. Такие известные терминалы могут быть оснащены:

- главной памятью,

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

- кодом многозадачной операционной системы, способной планировать одновременное выполнение нескольких пользовательских программ, когда эта операционная система исполняется процессором,

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

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

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

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

Для этого в соответствии с известными технологиями процессор системы безопасности выполняет:

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

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

- операционную систему для планирования одновременного выполнения нескольких пользовательских программ указанным процессором.

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

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

Состояние дел в этой области известно из следующих документов-заявок на выдачу патентов: US 2009/257595 A1, ЕР 1868127 А1, US 2009/193230 A1, US 2007/113088 A1.

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

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

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

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

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

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

- перед запуском выполнения главного загрузчика код загрузки, исполняемый процессором, проверяет аутентичность кода главного загрузчика на основе сигнатуры этого кода и криптографического ключа и запускает выполнение этого главного загрузчика, только если код оказался аутентичным;

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

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

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

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

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

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

- главный загрузчик осуществляет загрузку кода программного модуля в непрерывный диапазон адресов главной памяти, не разбитый на страницы операционной системой;

- после запуска операционной системы исполнение кода главного загрузчика более не происходит, и это остается в силе до тех пор, пока не произойдет начальная установка (сброс) процессора системы безопасности;

- операционная система после запуска настраивает механизм виртуальной памяти для взаимодействия между используемой пользователем подсекцией главной памяти и одним или несколькими запоминающими устройствами большой емкости;

- программный модуль включает сегменты данных или код библиотеки условного доступа, так что эти сегменты данных или этот код позволяют расшифровать криптограмму управляющего слова, присутствующего в составе ЕСМ (сообщения управления правами).

Эти варианты способа загрузки обладают следующими преимуществами:

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

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

- то, что расшифровка команд кода программного модуля, записанного в главной памяти, происходит только внутри интегральной схемы процессора, защищает конфиденциальность этого кода;

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

- то, что сегменты данных, генерируемые программным модулем в процессе его выполнения, записывают в главной памяти в диапазоне адресов, скрываемом сопроцессором, защищает конфиденциальность этих данных;

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

- загрузка кода программного модуля в непрерывный диапазон адресов способствует проверке аутентичности этого кода и сокрытию кода программного модуля в главной памяти.

Целью настоящего изобретения является также способ приема контента мультимедиа, скремблированного с использованием управляющего слова CWi,t, этот способ содержит:

- прием сообщения ЕСМ (сообщение управления правами), содержащего криптограмму C W i , t управляющего слова CWi,t;

- загрузку программного модуля в главную память приемного терминала, причем приемный модуль выполнен с возможностью расшифровать C W i , t для получения управляющего слова, при выполнении этого программного модуля процессором, соединенным с главной памятью посредством шины данных;

- выполнение программного модуля процессором для расшифровки криптограммы C W i , t ;

- дескремблирование контентов мультимедиа, скремблированных с использованием управляющего слова CWi,t в открытой форме;

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

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

Целью настоящего изобретения является также терминал, снабженный:

- главной памятью,

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

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

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

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

- одним или несколькими энергонезависимыми запоминающими устройствами, содержащими код программного модуля,

при этом

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

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

Варианты исполнения такого терминала могут иметь следующие характеристики:

- терминал содержит приемник сообщений ЕСМ,

- программный модуль выполнен с возможностью, при выполнении программного модуля процессором, принимать сообщения ЕСМ, расшифровывать криптограмму C W i , t для получения управляющего слова CWi,t, содержащегося в сообщении ЕСМ, и

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

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

фиг.1 представляет упрощенную схему, иллюстрирующую систему для передачи и приема 1 скремблированного контента мультимедиа;

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

фиг.3 представляет логическую схему способа загрузки кода программного модуля в главную память блока центрального процессора, показанного на фиг.2;

фиг.4 представляет логическую схему способа приема скремблированного контента мультимедиа; и

фиг.5 представляет логическую схему варианта способа, показанного на фиг.3.

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

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

«Функциональная модель системы условного доступа» ("Functional Model of Conditional Access System", EBU Review, Technical European Broadcasting Union, Brussels, BE, n° 266, 21 December 1995).

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

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

Сеть 8 обычно представляет собой сеть передачи информации на большие расстояния, такую как Интернет или сеть спутниковой связи или какая-либо другая сеть вещания, такая как сеть, используемая для передачи сигналов цифрового наземного телевидения (digital terrestrial television (DTTV)).

На фиг.1 для простоты показаны только три приемных терминала с 10 по 12.

Устройство 6 содержит блок 16 кодирования, который сжимает получаемые им контенты мультимедиа. Этот блок 16 кодирования обрабатывает цифровые контенты мультимедиа. Например, такой блок кодирования работает в соответствии со стандартом MPEG2 (группа экспертов по кинематографии - 2) или стандартом UIT-T Н264.

Сжатые контенты мультимедиа направляют на вход 20 блока 22 скремблирования. Этот блок 22 скремблирования осуществляет скремблирование каждого сжатого контента мультимедиа, чтобы сделать его просмотр обусловленным определенными условиями, такими как приобретение права доступа пользователями приемных терминалов. Полученные скремблированные контенты мультимедиа передают на выход 24, соединенный с входом мультиплексора 26.

Указанный блок 22 скремблирования осуществляет скремблирование каждого сжатого контента мультимедиа с применением управляющего слова CWi,t, предоставленного этому блоку, равно как и системе 28 условного доступа, генератором 32 ключа. Такая система 28 условного доступа известна также под сокращенным названием CAS. Здесь индекс i представляет собой идентификатор канала, в котором происходит вещание скремблированного контента мультимедиа, а индекс t представляет собой порядковый номер, идентифицирующий криптопериод, скремблированный с использованием этого управляющего слова.

Обычно этот блок скремблирования соответствует стандарту, такому как DVB-CSA (цифровое видеовещание - обобщенный алгоритм скремблирования), ISMA Cryp (Internet streaming media alliance Cryp (Альянс по разработке решений потоковой передачи данных в Интернет)), SRTP (secure real-time transport protocol (протокол защищенной передачи данных в реальном времени)), AES (передовой стандарт шифрования), … и т.п.

Для каждого канала i система 28 генерирует сообщения ЕСМ (сообщения управления правами), обозначенные ECMi,t и содержащие по меньшей мере одну предварительно вычисленную криптограмму C W i , t управляющего слова CWi,t, сформированного генератором 32 и используемого блоком 22 скремблирования для осуществления скремблирования криптопериода t в канале i. Эти сообщения и скремблированные контенты мультимедиа мультиплексируют посредством мультиплексора 26, получающего указанные входные данные от системы 28 условного доступа и от блока 22 скремблирования, и затем передают в сеть 8.

Система 28 вставляет также в каждое сообщение ЕСМ следующие данные:

- криптограммы C W i , t и C W i , t + 1 , вычисленные системой 28, для управляющих слов CWi,t и CWi,t+1, позволяющих дескремблировать следующие сразу один за другим криптопериоды t и t+1 в канале i,

- условия СА доступа для сравнения с правами доступа, приобретенными пользователем, и

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

Сообщение ЕСМ, содержащее пару управляющих слов CWi,t/CWi,t+1, в остальной части описания обозначено как сообщение ECMi,t.

Здесь индекс t идентифицирует также криптопериод CPi,t, который может быть дескремблирован посредством управляющего слова CWi,t, содержащегося в сообщении ECMi,t. Этот индекс t является уникальным для каждого криптопериода CPi,t.

В качестве иллюстрации, здесь скремблирование и мультиплексирование контентов мультимедиа осуществляется в соответствии с протоколом DVB-Simulcrypt (ETSI TS 103197).

В рассматриваемом примере терминалы с 10 по 12 идентичны. Поэтому здесь ниже только терминал 10 описан более подробно.

Терминал 10 здесь описан для конкретного случая, когда он может одновременно дескремблировать только один канал i. Для этой цели терминал 10 содержит:

- блок 60 центрального процессора для дескремблирования канала i и

- приемник 70 вещательных контентов мультимедиа.

Блок 60 дескремблирует сигнал канала i для представления его на экране дисплейного устройства 84.

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

На фиг.1 различные функции блока 60 представлены в виде функциональных блоков. Архитектура аппаратуры блока 60, используемая для реализации этих различных функциональных блоков, описана со ссылками на фиг.2. Блок 60 содержит демультиплексор 70, который передает, с одной стороны, контент мультимедиа в блок 74 дескремблирования и, с другой стороны, сообщения ECMi,t и EMM (сообщение о санкционировании приема (entitlement management message)) в блок 76 для обеспечения условного доступа к контенту мультимедиа.

Указанный блок 74 дескремблирования осуществляет дескремблирование скремблированного контента мультимедиа с использованием управляющего слова, переданного блоком 76. Полученный дескремблированный контент мультимедиа передают в декодер 80, который осуществляет декодирование контента. Расширенный или декодированный контент мультимедиа передают графической карте 82, которая управляет представлением этого контента мультимедиа на дисплейном устройстве 84, оснащенном экраном 86.

Дисплейное устройство 84 представляет контент мультимедиа в открытой форме на экране 86.

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

Блок 60 соединен с запоминающим устройством 78 большой емкости, в котором записаны, в энергонезависимой форме, конкретные данные и коды различных программ, которые необходимо выполнить, чтобы расшифровать криптограммы C W i , t .

На фиг.2 представлена более подробная схема блока 60. Здесь этот блок 60 содержит:

- электронный процессор 90 системы безопасности,

- главную память 92,

- энергонезависимое запоминающее устройство 94,

- шину 96 для передачи данных и адресов, соединяющую процессор 90 с запоминающими устройствами 78, 92, 94 и с приемником 70.

Указанный процессор 90 представляет собой программируемый процессор, способный выполнять команды, записанные в запоминающем устройстве 78. С этой целью процессор 90 содержит главный микропроцессор 19 и различные сопроцессоры, каждый из которых специально предназначен для решения своей конкретной задачи.

В рассматриваемом варианте в качестве иллюстрации процессор 90 содержит свой специальный сопроцессор для каждого из функциональных блоков 72, 74, 80 и 82, показанных на фиг.1. На фиг.2 каждый из сопроцессоров имеет такое же цифровое позиционное обозначение, как и соответствующий функциональный блок, показанный на фиг.1. Таким образом, процессор 90 содержит:

- сопроцессор 72 для мультиплексирования потоков мультимедиа, принимаемых посредством приемника 70,

- сопроцессор 74 для дескремблирования контентов мультимедиа,

- сопроцессор 80 для декодирования контентов мультимедиа и

- сопроцессор 82 для видеодисплея.

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

Здесь процессор 90 имеет вид одной интегральной схемы, в которой выполнены микропроцессор 99, равно как различные сопроцессоры. Эта интегральная схема смонтирована в одном корпусе. Обычно микропроцессор 99 и различные сопроцессоры формируют в одном и том же кремниевом кристалле. Такой сопроцессор известен также под названием «система на кристалле» ("system on chip") или SoC.

Рассматриваемый микропроцессор 99 имеет все элементы классического микропроцессора. В частности, микропроцессор 99 содержит арифметическо-логическое устройство и различные регистры для выполнения команд, записанных в главной памяти 92. Один из этих регистров содержит адрес следующей команды, которую нужно выполнить. Этот регистр известен также как порядковый счетчик.

Процессор 90 классифицирован здесь в качестве процессора системы безопасности, поскольку он содержит также сопроцессор 100 безопасности. Пример сопроцессора безопасности описан в заявке на выдачу патента США US 20050169468.

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

- своим собственным арифметическо-логическим устройством,

- энергонезависимым запоминающим устройством 102, доступным только в режиме считывания, и

- и запоминающим устройством 103 с произвольной выборкой.

Запоминающие устройства 102 и 103 доступны исключительно для сопроцессора 100. В частности, ни одна из выполняемых процессором 90 программ, код которой загружен из внешней памяти в процессор 90, не может получить доступ к содержимому этих запоминающих устройств 102 и 103.

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

Здесь запоминающее устройство 102 содержит, в частности, следующие криптографические ключи:

- ключи Koc1 и Koc2, используемые для сокрытия информации в первом диапазоне адресов и втором диапазоне адресов, соответственно, в памяти 92,

- ключ KACS для расшифровки кода модуля ACS,

- открытые ключи KPubOS, KPubBL и KPubACS, ассоциированные соответственно с секретными ключами KPrivOS, KPrivBL и KPrivACS, используемыми для проверки сигнатур.

Запоминающее устройство 102 содержит, в частности, исполняемые коды для:

- аутентификации содержимого главной памяти 92 или запоминающих устройств 78 и 94 и

- сокрытия содержимого главной памяти 92.

Более конкретно, запоминающее устройство 102 содержит исполняемый код, позволяющий при его выполнении сопроцессором 100 загрузить систему и аутентифицировать содержимое страницы данных, сохраняемой в памяти 92 или запоминающем устройстве 94. Эта функция, именуемая здесь динамической проверкой целостности, использует, в частности, следующие данные в качестве входных параметров:

- физические адреса начала и конца диапазона адресов сегментов данных в запоминающем устройстве и

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

Процедура динамической проверки целостности дает в результате «истина» ("true"), если контент в диапазоне данных между начальным и конечным адресами эффективно соответствует указанной сигнатуре. Если не соответствует, эта функция дает в результате «ложь» ("false").

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

Запоминающее устройство 102 содержит исполняемый код функции сокрытия данных, содержащихся в непрерывном диапазоне адресов в главной памяти 92. Эта функция сокрытия данных принимает, в частности, в качестве входного параметра начальный и конечный адреса диапазона. Когда эта функция активизирована, то каждый раз, когда процессор 90 записывает сегмент данных в этот диапазон адресов, сопроцессор 100 выполняет эту функцию сокрытия данных, чтобы зашифровать рассматриваемый сегмент данных перед тем, как передать его в шину 96. Затем этот сегмент данных записывают в зашифрованном виде в память 92. Таким образом, вне процессора 90 циркулируют только зашифрованные данные. Аналогично, когда процессор 90 считывает сегмент данных из указанного диапазона адресов, сопроцессор 100 расшифровывает зашифрованные данные, принятые по шине 96 прежде, чем они будут переданы для обработки, например в микропроцессор 99 или в один из сопроцессоров 72, 74, 80 или 82.

В результате диапазон данных, сокрытый посредством сопроцессора 100, оказывается полностью прозрачен для микропроцессора 99 и для любого другого из сопроцессоров в составе процессора 90. Действительно, микропроцессор 99, как и другие сопроцессоры, полностью освобожден от этих операций шифрования и расшифровки данных, записываемых или считываемых из памяти 92. Сокрытие данных, содержащихся в главной памяти, делает возможным сохранение конфиденциальности эти данных, даже если какое-нибудь шпионское программное обеспечение сможет считывать данные из главной памяти.

Если сопроцессор 100 конфигурирован для сокрытия диапазона данных, этот диапазон или сектор памяти называется скрытым.

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

Запоминающее устройство 94 представляет собой энергонезависимое запоминающее устройство. Например, это флэш-память. Это запоминающее устройство 94 содержит код 104 главного загрузчика, равно как сигнатуру 106 этого главного загрузчика, полученную с применением секретного ключа KPrivBL. Этот главный загрузчик 104 описан более подробно со ссылками на фиг.3.

Главная память 92 обычно представляет собой ЗУПВ (RAM (запоминающее устройство с произвольной выборкой)). Эта память 92 обычно является энергозависимой.

Главная память 92 содержит команды и данные, исполняемые процессором 90.

На фиг.2 показано конкретное разбиение памяти 92. Более конкретно, память 92 разбита на:

- секцию 110, зарезервированную для операционной системы,

- секцию 112, зарезервированную для записи в ней кода модуля ACS, который описан более подробно ниже со ссылками на фиг.3 и 4.

- секцию 114, зарезервированную для сохранения данных, генерируемых модулем ACS в процессе его выполнения, и

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

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

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

Здесь это запоминающее устройство 78 содержит:

- код 126 модуля ACS,

- код 128 операционной системы,

- сигнатуру 130 кода 126 модуля ACS, полученную с применением секретного ключа KPrivACS, и

- сигнатуру 132 кода 128, полученную с применением секретного ключа KPrivOS.

В запоминающем устройстве 78 код 126 записан в зашифрованной с использованием ключа KACS форме.

В качестве операционной системы здесь использована система Linux® версии 2.6.23, объединяющая различные функции, которые будут далее описаны. Эти функции не требуют модификации всех существующих источников ядра Linux. Они могут быть добавлены к ядру посредством повторной компиляции или в виде модулей ядра Linux.

Операционная система Linux управляет механизмом виртуальной памяти. Такие механизмы хорошо известны, поэтому здесь будут даны лишь некоторые пояснения. Обычно этот механизм виртуальной памяти представляет собой в рассматриваемом случае механизм разбиения главной памяти 92 на страницы. Действительно, адреса данных пользователя программы кодируют в виде N бит, так что виртуальное адресное пространство программы простирается от 0 до 2N, где N - целое число. В общем случае N представляет собой целое число не меньше 16 или 32. Таким образом, число адресов в виртуальном адресном пространстве намного больше числа физических адресов, доступных в главной памяти 92. Для преодоления этого недостатка операционная система загружает из запоминающего устройства 78 в главную память 92 только те страницы, на которых находятся сегменты данных или команды, необходимые для выполняемой в текущий момент пользовательской программы. Другие страницы данных, образующих пользовательскую программу, остаются в запоминающем устройстве 78. Более конкретно, в системе Linux страницы программ загружают исключительно в пользовательскую подсекцию 120. Программы, выполняемые из пользовательской подсекции, здесь называются пользовательскими программами.

Механизм разбиения на страницы, таким образом, отвечает за:

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

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

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

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

В качестве иллюстрации, в системе Linux виртуальное адресное пространство пользовательской программы разбито на пять сегментов:

- «текстовый» сегмент, содержащий исполняемый код программы. Этот сегмент доступен только при выполнении или при считывании;

- сегмент «данных», содержащий инициализированные данные программы. Этот сегмент доступен при чтении и при записи;

- сегмент "bss", содержащий неинициализированные данные программы;

- имеющий переменный размер сегмент динамической области памяти ("heap"), используемый для назначения памяти программе, которую нужно выполнить; и

- «стековый» сегмент ("stack"), используемый для записи локальных переменных программы в стеке.

Операционная система содержит также планировщик, способный автоматически планировать выполнение различных пользовательских программ во времени. Например, в терминале 10 планировщик распределяет время использования микропроцессора 99 между различными пользовательскими программами, чтобы имитировать одновременное выполнение этих пользовательских программ.

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

Такая возможность используется здесь для определения конкретной файловой системы, именуемой здесь «файловая система VMAPPER», в дополнение к традиционным файловым системам, применяемым для доступа к содержимому запоминающего устройства 78. Код файловой системы VMAPPER интегрирован в код 128 операционной системы. В результате загрузка файловой системы происходит одновременно с загрузкой операционной системы в секцию памяти 92.

Эта файловая система VMAPPER ставит в соответствие следующее:

- путь доступа к файлу и имя файла «LibACS» в секции 112 памяти и

- адрес файла и имя файла «DataACS» в секции 114 памяти.

Эта файловая система VMAPPER управляет открытием и закрытием этих двух файлов LibACS и DataACS, а также записью данных в эти файлы и считыванием из этих файлов. Более того, файловая система VMAPPER может также управлять правами доступа к этим файлам. Пример варианта этой файловой системы описан более подробно со ссылками на фиг.3.

Код 126 модуля ACS здесь специально написан таким образом, чтобы использовать файл DataACS для записи и считывания данных, генерируемых в процессе выполнения модуля. С этой целью в коде 126 модуля ACS функции записи и управления памятью перегружены или записаны заново. В качестве иллюстрации, если модуль ACS написан на языке С, функции "malloc" и "free" заменены соответственно собственными функциями VA-OS-alloc() и VA-OS-free(). Эти две последние функции могут сделать возможным выделение зоны памяти в файле DataACS для записи в ней сегментов данных и затем выдачи этих сегментов. Эти функции VA-OS-alloc() и VA-OS-free(), таким образом, делают возможным использование секции 114 памяти 92 для управления сегментом динамической памяти для модуля ACS. Таким образом, сегмент динамической памяти модуля ACS физически локализован в секции 114.

Загрузка кода 126 модуля ACS в память 92 теперь будет описана со ссылками на фиг.3.

Сначала на этапе 150 включают питание или осуществляют начальную установку (сброс) терминала 10.

В ответ на этапе 152 происходит инициализация порядкового счетчика в сопроцессоре 100. Будучи инициализирован, этот счетчик указывает на первую строку команды кода загрузки, записанного в запоминающем устройстве 102 этого сопроцессора. Таким образом, эта первая строка соответствует начальному значению по умолчанию в порядковом счетчике.

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

Выполнение кода загрузки сопроцессором 100 ведет к осуществлению следующих этапов.

На этапе 156 сопроцессор 100 загружает код 104 главного загрузчика и сигнатуру 106 в память 92.

Затем на этапе 158 он проверяет аутентичность кода 104, загруженного в память 92. С этой целью на этапе 158 код загрузки имеет заданный формат, что дает сопроцессору 100 начальный и конечный адреса диапазона адресов, в который был записан код 104 в памяти 92, а также адрес сигнатуры 106.

Проверка аутентичности диапазона данных осуществляется, например, следующим образом. Прежде всего, сопроцессор применяет заданную функцию хэширования к данным, содержащимся в рассматриваемом диапазоне адресов, для получения первого образа этих данных. Затем сопроцессор 100 с использованием открытого ключа расшифровывает рассматриваемую сигнатуру для получения второго образа. Далее, сопроцессор сравнивает первый и второй образы. Если образы идентичны, содержимое диапазона данных считается аутентифицированным. Если нет, содержание этого диапазона данных не было аутентифицировано точно. Для проверки аутентичности кода 104 сопроцессор 100 использует ключ KPubBL.

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

Затем на этапе 162, если код 104 был правильно аутентифицирован, сопроцессор 100 инициализирует микропроцессор 99, чтобы последний выполнил программу главного загрузчика, который только что был аутентифицирован в главной памяти. С этой целью, например, он помещает порядковый счетчик микропроцессора 99 на адрес в физической памяти, где находится первая команда главного загрузчика, и освобождает вход сигнала начальной установки (сброса) микропроцессора 99.

С этого момента начинается выполнение этапа 166, на котором происходит выполнение кода главного загрузчика микропроцессором 99.

Первоначально на этапе 168, главный загрузчик конфигурирует сопроцессор 100 для сокрытия данных в секциях 112 и 114 памяти 92. В этом конкретном случае алгоритм шифрования, выбранный для сокрытия данных в секции 112, является более надежным и устойчивым по сравнению с алгоритмом, выбранным для сокрытия данных в секции 114. Однако самый устойчивый и надежный алгоритм имеет также большее число команд, которые необходимо выполнить, чтобы зашифровать и расшифровать сегмент данных. Поэтому для выполнения такого алгоритма требуется больше времени. Здесь элементами шифрования, используемыми для сокрытия данных в секциях 112 и 114, являются соответственно ключи Koc1 и Koc2.

Затем на этапе 170 главный загрузчик осуществляет загрузку кода 126 модуля ACS в память 92.

На этапе 172 главный загрузчик расшифровывает код 126, загруженный в память 92, с использованием ключа KACS и копирует расшифрованный таким образом исполняемый код в секцию 112. Обычно операции расшифровки с применением ключа KACS выполняет сопроцессор 100.

Поскольку данные в секции 112 должны быть скрыты, сопроцессор 100 с использованием ключа Koc1 зашифровывает каждую команду, расшифрованную с применением ключа KACS, и затем копирует эту команду в секцию 112. Таким образом, в конце этапа 172 исполняемый код модуля ACS оказывается записан в секции 112 в зашифрованном с использованием ключа Koc1 виде.

На этапе 176 главный загрузчик конфигурирует сопроцессор 100, чтобы подвергнуть данные в секции 112 динамической проверке целостности. С этой целью в сопроцессор 100 направляют начальный и конечный адреса секции 112, а также адрес сигнатуры 130.

На этапе 178 конфигурированный таким образом сопроцессор 100 проверяет аутентичность кода модуля ACS, содержащегося в секции 112. В ходе каждой проверки сопроцессор 100:

- расшифровывает код модуля ACS с использованием ключа Koc1, затем

- применяет заданную функцию хэширования для получения первого образа кода 126 и, наконец,

- сравнивает этот первый образ кода модуля ACS со вторым образом, полученным посредством расшифровки сигнатуры 130 с использованием открытого ключа KPubACS.

Если код модуля ACS в секции 112 оказался неаутентичен, способ возвращается к этапу 150. В противном случае выполнение способа продолжается. Следует отметить, что выполнение этапа 178 автоматически повторяется через регулярные интервалы сопроцессором 100. Это обеспечивает аутентичность кода модуля ACS в течение всего времени, пока этот код остается загружен в память 92.

На этапе 180 главный загрузчик осуществляет загрузку кода 128 операционной системы в секцию 118. Эта секция 118 отлична от секций 112 и 114.

На этапе 182 главный загрузчик конфигурирует сопроцессор 100, чтобы подвергнуть данные в секции 118 динамической проверке целостности. С этой целью в сопроцессор 100 направляют начальный и конечный адреса этой секции, а также адрес сигнатуры 132.

На этапе 184 сопроцессор 100 проверяет аутентичность кода 128, загруженного в секцию 118, с использованием сигнатуры 132 и открытого ключа KPubOS, сохраняемых в запоминающем устройстве 102. Поскольку файловая система VMAPPER входит в состав указанного кода 128, этот этап проверки аутентичности кода 128 делает также возможной проверку аутентичности файловой системы VMAPPER. Сопроцессор 100 автоматически повторяет такую проверку через заданные интервалы, чтобы быть уверенным в целостности кода 128 в течение всего времени, пока этот код остается загружен в секцию 118.

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

В противном случае способ переходит к этапу 186. На этапе 186 главный загрузчик запускает выполнение операционной системы, передавая информацию о размерах и местонахождении секций 112, 114 и 120 в качестве параметров в главную память. Таким образом, операционная система определяет пользовательское пространство в секции 120, а также вне секций 112, 114 и 116. После этого главный загрузчик уже более не используется, пока не произойдет начальная установка (сброс) терминала, т.е. до тех пор, пока не произошел возврат к этапу 150. Таким образом, для освобождения пространства в памяти 92 предпочтительно стирают код главного загрузчика либо делают пространство, занятое кодом главного загрузчика, доступным в режиме записи, так что другие приложения могут записать информацию в этом пространстве и тем самым стереть весь или часть кода главного загрузчика.

Затем начинается новый этап 190, на котором происходит выполнение операционной системы.

На этапе 192 операционная система загружает файловую систему VMAPPER. Описание этой операции приведено для конкретного случая операционной системы Linux 2, версия 2.6.23. Описание дано со ссылками на функции и примитивы, известные в этой операционной системе. Эти примитивы и функции выделены ниже жирным шрифтом, а подробное описание их приведено не будет. В рассматриваемом примере, функции, выполняемые файловой системой VMAPPER, компилированы в ядре. Поэтому этап 192 активизируется посредством инициализации ядра.

Этап 192 начинается с записи файловой системы, определенной в файловой системе VMAPPER. Эту файловую систему записывают в операционной системе Linux путем обращения к функции register_filesystem().

Компоненту get_sb структуры file_system_type, передаваемому в качестве параметра функции register_filesystem() присваивают значение get_sb_single. Эта характеристическая функция системы Linux используется для декларирования, что файловая система может быть задана только один раз. Тем самым обеспечивается существование только одной реализации этой файловой системы в составе операционной системы.

Затем задают файловую систему. С этой целью функцию, определенную в коде файловой системы VMAPPER под названием V_fill_super(), передают в качестве параметра get_sb_single и затем вызывают.

Функция V_fill_super() заполняет структуру типа super_block, присваивает элементу s_flags этой структуры значение MS_RDONLY и присваивает элементу s_op этой структуры такое значение, чтобы обновленная настройка этой файловой системы поддерживала ее в режиме только для чтения.

Функция V_fill_super() создает новый индексный дескриптор mode с использованием функции new_inode. Этот дескриптор inode представляет корневой директорий.

Функция V_fill_super() создает новый код с использованием функции new_inode. Этот дескриптор inode соответствует секции 112 и, тем самым, модулю ACS. Здесь он несет имя "LibACS" файла. В этом файле даны только права чтения. Более того, только четыре операции авторизованы для выполнения в файле LibACS: открытие, чтение, применение функции ММАР и применение функции "release" (освободить).

Во время использования файла необходимо прочитать некоторые байты этого файла LibACS, содержащего модуль ACS. С этой целью функция "read" позволяет читать файл LibACS из операционной системы Linux. Во время этой операции считывания секцию 112 приводят в соответствие с диапазоном адресов секции операционной системы посредством функции ioremap. Содержимое первых байтов секции 112 копируют посредством функции memcpy_fromio. Затем устраняют ранее установленное соответствие адресов посредством вызова функции iounmap. Это дает возможность извлечь первые байты файла LibACS с целью получения информации, необходимой для загрузки модуля ACS.

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

На этапе 194 загружают пользовательскую программу посредством загрузчика программ. Этот загрузчик программ декларирует, что библиотека LibACS должна присутствовать в виртуальном пространстве программы, путем вызова функции mmap. Этот вызов осуществляется в файловой системе VMAPPER посредством функции remap_pfn_range. Таким образом, файловая система VMAPPER ассоциирует виртуальный диапазон адресов, зарезервированный загрузчиком программ для библиотеки LibACS, с диапазоном физических адресов в секции 112, куда скопирован модуль ACS. Таким образом, каждый раз, когда пользовательская программа вызывает модуль ACS module, этот модуль оказывается обозначен как находящийся в главной памяти. Такой подход поэтому не предполагает каких-либо дефектов страниц и, тем самым, каких-либо попыток со стороны операционной системы перезагрузить код 126 в страницу секции 120. Таким образом, хотя код 126 был загружен в главную память до выполнения операционной системы, пользовательские программы могут запускать выполнение этого модуля ACS, как если бы он был загружен самой операционной системой. С этой целью пользовательские программы вызывают файл LibACS.

Более того, здесь модуль ACS подвергается динамической проверке целостности, а его код скрыт. Поэтому безопасность терминала 10 оказывается усилена. Наконец, тот факт, что модуль ACS загружают прежде начала выполнения операционной системы, обеспечивает, что модуль ACS будет загружен даже при наличии брешей в системе безопасности операционной системы и что механизмы защиты кода 126 настроены правильно.

Функция V_fill_super() создает также новый дескриптор mode с использованием функции new_inode, соответствующей сегменту динамической памяти. Этот дескриптор inode несет имя файла "DataACS" и соответствует секции 114. В этом дескрипторе авторизованы только три операции, а именно открытие, закрытие и применение функции ММАР.

При выполнении модуля ACS сегменты конфиденциальных данных, генерируемые модулем ACS, записывают в динамическую память и считывают из нее посредством функций VA-OS-alloc() и VA-OS-free(). Эти функции VA-OS-Alloc() и VA-OS-free() позволяют назначать и освобождать блок памяти в файле DataACS. Таким образом, сегменты конфиденциальных данных, генерируемые модулем ACS, записывают в секции 114 и, тем самым, защищают, поскольку сопроцессор 100 автоматически скрывает эти данные.

На фиг.4 дано более подробное описание примера работы модуля ACS, выполняемого процессором 90.

На этапе 200 модуль ACS принимает сообщение ECMi,t. На этапе 202 он сравнивает права доступа, содержащиеся в этом сообщении ЕСМ, с предварительно записанными правами доступа, содержащимися, например, в коде 126 этого модуля. Если права доступа в сообщении не соответствуют правам доступа в составе модуля, способ возвращается к этапу 200 для приема нового сообщения ECMi,t. В противном случае способ переходит к этапу 204. На этапе 204 модуль ACS извлекает криптограмму C W i , t , содержащуюся в принятом сообщении ECMi,t. На этапе 206 модуль ACS расшифровывает эту криптограмму C W i , t для получения управляющего слова CWi,t в открытом виде. С этой целью модуль ACS использует, например, ключ, записанный в процессоре 90. На этапе 208 это управляющее слово CWi,t в открытом виде передают сопроцессору 74.

Далее, этот сопроцессор 74 использует полученное управляющее слово в открытом виде для дескремблирования рассматриваемого скремблированного контента мультимедиа. Это позволяет представить указанный скремблированный контент мультимедиа в открытом виде на экране 86.

На фиг.5 представлен альтернативный вариант способа, показанного на фиг.3. Для реализации способа, изображенного на фиг.5, применяется терминал 10, идентичный терминалу, описанному со ссылками на фиг.1 и 2, за исключением того, что операционная система содержит модифицированную файловую систему VMAPPER, а также новый загрузчик VBinLoader программ. Эти две функции интегрированы в исполняемый код ядра операционной системы. Таким образом, их загрузка происходит одновременно с загрузкой операционной системы в секцию 118.

Функция VBinLoader представляет собой загрузчик программ, предназначенный для загрузки программы, вызывающей модуль ACS, когда требуется его выполнить. Загрузчик программ предназначен для записи данных программы в главную память в правильный сегмент этой памяти. Такой загрузчик программ способен понять местонахождение в файле программы информации, которая указывает, где располагаются исполняемый код, данные и другие элементы. Он также способен копировать программу в главную память и инициализировать регистры и запустить выполнение этой программы.

Здесь загрузчик VBinLoader программ не копирует модуль ACS в главную память, но:

- ассоциирует виртуальный адрес исполняемого кода (сегмент «текст») в областях виртуальной памяти пользовательской программы, которая вызывает модуль ACS с адресом в секции 112, по которому находится исполняемый код модуля ACS,

- ассоциирует адрес сегмента "bss" в пространстве виртуальной памяти пользовательской программы с диапазоном физических адресов в секции 114 и

- ассоциирует адрес стека в пространстве виртуальной памяти пользовательской программы с диапазоном физических адресов в секции 114.

Таким образом, при выполнении модуля ACS все сегменты данных, которые должны быть записаны в сегменте "bss" или в стеке, оказываются автоматически записаны в секции 114 и вследствие этого сокрыты.

Файловая система VMAPPER является упрощенной, чтобы поставить в соответствии имя файла LibACS только с секцией 112. В этом варианте нет необходимости ставить имя файла DataACS в соответствие с секцией 114 памяти.

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

Код 126 также модифицирован, что бы назначить переменные большого размера, именуемые здесь VTas, в сегмент "bss". Более того, все функции назначения и освобождения памяти в области динамической памяти, такие как функции malloc, free и другие, используемые в коде модуля ACS, заменены функциями, осуществляющими распределение памяти в области памяти, зарезервированной для переменных VTas. Таким образом, даже сегменты данных, записываемые в области динамической памяти модулем ACS, оказываются защищены, поскольку их записывают в область переменных VTas в секции 114. Такие модификации используют, чтобы защитить динамическую память без необходимости модифицировать операционную систему с целью управления динамической памятью отлично от того, как это делается обычно.

Способ, представленный на фиг.5, идентичен способу, показанному на фиг.3, за исключением того, что этапы 192 и 194 заменены этапами 220 и 222 соответственно.

На этапе 220 операционная система инициализирует и модифицированную файловую систему VMAPPER, и загрузчик VBinLoader программ.

На этапе 222, когда пользовательская программа вызвала выполнение модуля ACS, загрузчик VBinLoader программ ассоциирует диапазоны виртуальных адресов, зарезервированные для сегмента "bss" и для стека в пространстве виртуальной памяти пользовательской программы, с диапазонами адресов в секции 114. Таким образом, в ходе выполнения модуля ACS сегменты данных, генерируемые этим модулем, записывают в секции 114, вследствие чего они оказываются автоматически сокрыты сопроцессором 100. В результате обеспечивается сохранение конфиденциальности этих данных.

Загрузчик VBinLoader программ ассоциирует также адреса модуля ACS в пространстве виртуальных адресов пользовательской программы с адресами в секции 112.

Возможно множество других вариантов. Например, в одном из вариантов код 126 записывают в энергонезависимое запоминающее устройство в зашифрованном с использованием ключа Koc1 виде. В результате главный загрузчик может непосредственно копировать зашифрованный таким способом код в секцию 112. Тем самым, можно исключить этапы расшифровки кода 126 с применением ключа KACS перед записью этого кода в рассматриваемую секцию 112. Действительно, поскольку код 126 непосредственно зашифрован с применением ключа Koc1, этот код уже сокрыт и в том числе - в запоминающем устройстве 78.

Операционную систему также можно хранить в зашифрованном виде и затем расшифровывать с применением главного загрузчика.

Операционная система может содержать в составе своего кода данные о размерах и местонахождении секций 112 и 114. Таким образом, нет необходимости передавать эти сегменты информации в качестве параметров при запуске операционной системы.

Запоминающее устройство 102 может быть заменено несколькими энергонезависимыми запоминающими устройствами, распределенными в пределах интегральной схемы, образующей процессор 90.

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

В другом варианте все функции или по меньшей мере часть функций сопроцессора 100 выполняют с использованием арифметическо-логического устройства микропроцессора 99. В этом варианте именно микропроцессор 99 выполняет функции динамической проверки целостности и/или сокрытия данных. С этой целью код соответствующей функции загружают в память 92. Если код загружают в память 92, необходимо проверить аутентичность этого кода. Проверку аутентичности кода осуществляют:

- посредством кода загрузки или

- посредством функций, которые сами аутентифицируются кодом загрузки.

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

Секции 112 и 114 необязательно должны располагаться в главной памяти одна вплотную к другой. Аналогично, секции 112, 114, 118, 120 и 116 необязательно должны находиться одна вплотную к другой. Эти секции могут также располагаться в памяти 92 порядке, отличном от порядка, показанного на фиг.2.

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

Открытые ключи, используемые для проверки сигнатур, могут быть записаны в любом запоминающем устройстве, а не только в запоминающем устройстве 102. Например, эти открытые ключи могут быть записаны в запоминающем устройстве 78. В последнем случае открытые ключи должны быть предпочтительно защищены секретным ключом, соответствующий которому открытый ключ записан в запоминающем устройстве 102.

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

Код 104 также может быть записан в запоминающем устройстве 78, а не в запоминающем устройстве 94. Напротив, код 126 может быть записан в запоминающем устройстве 94 вместо запоминающего устройства 78. Эти коды 104 и 126 также могут быть при необходимости записаны в запоминающем устройстве 102. Код 104 или 126 также может быть выполнен прямо из запоминающего устройства 94.

Согласно способу, представленному на фиг.5, нет необходимости перезагружать или перезаписывать код модуля ACS, чтобы использовать область динамической памяти, расположенную в секции 114. Действительно, в качестве варианта, код модуля ACS записан таким образом, чтобы запись конфиденциальных данных, генерируемых модулем ACS во время его выполнения, происходила исключительно либо в стек, либо в сегмент "bss".

То, что было описано выше применительно к конкретному случаю модуля ACS, может быть применено к любому программному модулю, для которого требуется, чтобы:

- быть уверенным, что модуль правильно загружен в главную память,

- быть уверенным в аутентичности модуля,

- быть уверенным, что процессор реально выполняет аутентичный код, а не копию этого кода и/или

- сохранять конфиденциальность кода модуля.

Таким образом, предлагаемый способ загрузки программного модуля может быть также применен в других областях техники, таких как область управления цифровыми правами (digital rights management (DRM)) или антивирусные программы.

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

Похожие патенты RU2557459C2

название год авторы номер документа
ЗАЩИЩЕННАЯ ЗАГРУЗКА И КОНФИГУРИРОВАНИЕ ПОДСИСТЕМЫ С НЕЛОКАЛЬНОГО ЗАПОМИНАЮЩЕГО УСТРОЙСТВА 2011
  • Мухтаба Аон
  • Чжан Хайнин
  • Сиваситамбарезан Архуна
  • Хо Алекс
  • Матиас Арун
  • Шелл Стивен
  • Эндрюс Джонатан
  • Госнел Джейсон
  • Де Атлей Даллас Б.
  • Хок Джерри
RU2542930C2
СИСТЕМА И СПОСОБ АВТОМАТИЧЕСКОЙ ОБРАБОТКИ СИСТЕМНЫХ ОШИБОК ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ 2012
  • Антух Александр Эдуардович
  • Маланов Алексей Владимирович
RU2521265C2
ЗАГРУЗКА ПАРЦИАЛЬНОЙ ШИРИНЫ, ЗАВИСЯЩАЯ ОТ РЕЖИМА, В ПРОЦЕССОРАХ С РЕГИСТРАМИ С БОЛЬШИМ ЧИСЛОМ РАЗРЯДОВ, СПОСОБЫ И СИСТЕМЫ 2014
  • Раш Уильям К.
  • Сантиаго Язмин А.
  • Диксон Мартин Гай
RU2638641C2
СПОСОБ ВЫЯВЛЕНИЯ НЕИЗВЕСТНЫХ ПРОГРАММ С ИСПОЛЬЗОВАНИЕМ ЭМУЛЯЦИИ ПРОЦЕССА ЗАГРУЗКИ 2011
  • Паршин Юрий Геннадьевич
  • Пинтийский Владислав Валерьевич
RU2472215C1
СПОСОБ ВЫПОЛНЕНИЯ ОБРАЩЕНИЯ К ПРОЦЕДУРАМ ЗАГРУЗОЧНОГО ДРАЙВЕРА 2014
  • Русаков Вячеслав Евгеньевич
  • Киржеманов Андрей Леонидович
  • Паршин Юрий Геннадьевич
RU2586576C1
СИСТЕМА И СПОСОБ ДЛЯ ЗАЩИЩЕННОЙ НАЧАЛЬНОЙ ЗАГРУЗКИ ОПЕРАЦИОННОЙ СИСТЕМЫ С ИСПОЛЬЗОВАНИЕМ ПРОВЕРКИ СОСТОЯНИЯ 2005
  • Уиллмэн Брайан Марк
  • Инглэнд Пол
  • Рэй Кеннет Д.
  • Хантер Джеми
  • Макмайкл Лонни Дин
  • Ласалл Дерек Норман
  • Жакомет Пьер
  • Пэли Марк Элиот
  • Куриен Теккталакал Варугис
  • Кросс Дэвид Б.
RU2413295C2
Способ выполнения кода в режиме гипервизора 2015
  • Иготти Николай Николаевич
  • Ершов Михаил Александрович
RU2609761C1
СПОСОБ ОБНАРУЖЕНИЯ ВРЕДОНОСНОГО ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ В ЯДРЕ ОПЕРАЦИОННОЙ СИСТЕМЫ 2012
  • Тумоян Евгений Петрович
  • Ольшанов Константин Дмитриевич
  • Череменцев Сергей Николаевич
RU2510075C2
СПОСОБ ПРИЕМА КОНТЕНТА МУЛЬТИМЕДИА, СКРЕМБЛИРОВАННОГО С ПРИМЕНЕНИЕМ УПРАВЛЯЮЩИХ СЛОВ 2011
  • Гадача Хайтем
RU2547230C2
АРХИТЕКТУРА ОПЕРАЦИОННОЙ СИСТЕМЫ ДЛЯ ОБЕСПЕЧЕНИЯ ПОДДЕРЖКИ ПОКОЛЕНИЙ МИКРОЯДЕР 2019
  • Ильин Николай Олегович
  • Башев Владимир Николаевич
RU2718235C1

Иллюстрации к изобретению RU 2 557 459 C2

Реферат патента 2015 года СПОСОБ ЗАГРУЗКИ КОДА ПО МЕНЬШЕЙ МЕРЕ ОДНОГО ПРОГРАММНОГО МОДУЛЯ

Изобретение относится к вычислительной технике. Технический результат заключается в устранении нарушений в работе операционной системы за счет загрузки кода по меньшей мере одного программного модуля в главную память посредством процессора системы безопасности. Способ загрузки кода программного модуля в главную память посредством процессора системы безопасности, в котором главный загрузчик осуществляет загрузку в главную память кода указанного программного модуля до запуска исполнения операционной системы в диапазон адресов главной памяти, находящийся вне диапазона адресов, используемого операционной системой, и после запуска операционная система переадресует обращение к указанному программному модулю от пользовательской программы по адресу в главной памяти, по которому был загружен код программного модуля до запуска исполнения операционной системы, с использованием файловой системы операционной системы, которая автоматически ассоциирует адрес программного модуля в пространстве виртуальной памяти пользовательской программы с физическим адресом программного модуля в главной памяти. 4 н. и 11 з.п. ф-лы, 5 ил.

Формула изобретения RU 2 557 459 C2

1. Способ загрузки кода по меньшей мере одного программного модуля в главную память посредством процессора системы безопасности, характеризующийся тем, что исполняют посредством процессора системы безопасности:
код загрузки, осуществляющий загрузку (156) кода главного загрузчика в главную память и затем запускающий (162) исполнение этого главного загрузчика из главной памяти, причем код загрузки записан в энергонезависимом постоянном запоминающем устройстве процессора, начиная с первого адреса, на который указывает порядковый счетчик процессора сразу же после сброса процессора,
код главного загрузчика для загрузки (180) в главную память кода многозадачной операционной системы, выполненной с возможностью использования только одного уменьшенного диапазона адресов в главной памяти, и для последующего запуска исполнения операционной системы из главной памяти,
операционную систему для планирования одновременного исполнения нескольких пользовательских программ указанным процессором,
при этом
главный загрузчик также осуществляет загрузку (170) в главную память кода указанного программного модуля перед запуском исполнения операционной системы в диапазон адресов главной памяти, находящийся вне диапазона адресов главной памяти, используемого операционной системой, а
после запуска операционная система переадресует (194) обращение к этому программному модулю из пользовательской программы по адресу в главной памяти, по которому был загружен код программного модуля перед запуском исполнения операционной системы, с использованием особой файловой системы операционной системы, которая автоматически ассоциирует адрес программного модуля в пространстве виртуальной памяти пользовательской программы с физическим адресом программного модуля в главной памяти.

2. Способ по п. 1, в котором перед запуском исполнения главного загрузчика код загрузки, исполняемый процессором, проверяет (158) аутентичность кода главного загрузчика на основе сигнатуры кода и криптографического ключа и запускает исполнение главного загрузчика только в случае аутентичности кода.

3. Способ по п. 2, в котором:
в процессе исполнения главный загрузчик конфигурирует (176) сопроцессор безопасности, имеющийся в составе интегральной схемы процессора, причем сопроцессор проверяет аутентичность кода программного модуля на основе сигнатуры, предоставляемой вместе с кодом указанного модуля, и криптографического ключа,
после запуска исполнения операционной системы сопроцессор безопасности автоматически проверяет (178) через заданные интервалы аутентичность загруженного кода программного модуля, так что исполнение программного модуля не допускается в случае его неаутентичности, при этом указанный сопроцессор использует для этой цели собственное энергонезависимое запоминающее устройство и собственное запоминающее устройство с произвольной выборкой для исполнения без обращения к главной памяти проверки аутентичности кода программного модуля, причем указанные энергонезависимое запоминающее устройство и запоминающее устройство с произвольной выборкой доступны исключительно для сопроцессора безопасности.

4. Способ по п. 2, в котором:
главный загрузчик конфигурирует (168) сопроцессор безопасности, имеющийся в интегральной схеме, составляющей процессор, для сокрытия команд, записанных в первом диапазоне адресов главной памяти, куда загружен код программного модуля, причем указанное сокрытие состоит в сохранении в зашифрованном виде, с использованием криптографического ключа Koc1, команд кода программного модуля, записанного в указанном диапазоне адресов, и
после запуска исполнения операционной системы указанный сопроцессор безопасности автоматически расшифровывает с использованием ключа Koc1 каждую команду, считанную из указанного первого диапазона адресов, перед исполнением команды процессором, причем указанный сопроцессор использует для этой цели собственное энергонезависимое запоминающее устройство и собственное запоминающее устройство с произвольной выборкой для исполнения без обращения к главной памяти указанной расшифровки с использованием ключа Koc1, причем указанное энергонезависимое запоминающее устройство и указанное запоминающее устройство с произвольной выборкой доступны исключительно для указанного сопроцессора безопасности.

5. Способ по п. 4, в котором записывают исполняемый код программного модуля в зашифрованном с использованием ключа Koc1 виде в энергонезависимое запоминающее устройство, а главный загрузчик осуществляет загрузку указанного кода программного модуля, зашифрованного с применением ключа Koc1, непосредственно в главную память.

6. Способ по п. 2, в котором:
главный загрузчик конфигурирует (168) сопроцессор безопасности, имеющийся в интегральной схеме процессора, для сокрытия данных, записанных во втором диапазоне адресов главной памяти, причем указанное сокрытие заключается в шифровании указанных данных, а затем
в процессе выполнения (194), после запуска операционной системы, программный модуль записывает данные во второй диапазон адресов и
в ответ на это сопроцессор безопасности шифрует каждый сегмент данных, подлежащий записи во второй диапазон адресов, перед передачей указанного сегмента данных в шину данных, соединяющую процессор с главной памятью, и расшифровывает каждый сегмент данных, считанный процессором из второго диапазона адресов, при получении указанного сегмента данных процессором из шины данных перед использованием указанного сегмента данных процессором, так что каждый сегмент данных, записанный во втором диапазоне адресов главной памяти, находится вне интегральной схемы, составляющей процессор, исключительно в зашифрованном виде, при этом указанный сопроцессор использует для этой цели собственное энергонезависимое запоминающее устройство и собственное запоминающее устройство с произвольной выборкой для исполнения без обращения к главной памяти указанного шифрования и указанной расшифровки, причем указанное энергонезависимое запоминающее устройство и указанное запоминающее устройство с произвольной выборкой доступны исключительно для указанного сопроцессора безопасности.

7. Способ по п. 2, в котором:
в процессе исполнения главный загрузчик конфигурирует (182) сопроцессор безопасности, имеющийся в интегральной схеме процессора, с тем чтобы сопроцессор проверил аутентичность загруженного кода операционной системы на основе сигнатуры, предоставленной вместе с кодом этой операционной системы, и криптографического ключа,
при этом после запуска исполнения операционной системы сопроцессор безопасности автоматически и через заданные промежутки времени проверяет аутентичность кода операционной системы и не допускает выполнения операционной системы в случае неаутентичности кода, причем сопроцессор использует для этой цели собственное энергонезависимое запоминающее устройство и собственное запоминающее устройство с произвольной выборкой для выполнения без обращения к главной памяти указанной проверки аутентичности кода операционной системы, при этом указанное энергонезависимое запоминающее устройство и указанное запоминающее устройство с произвольной выборкой доступны исключительно для указанного сопроцессора безопасности.

8. Способ по любому из пп. 1-7, в котором главный загрузчик осуществляет загрузку (170) кода программного модуля в непрерывный диапазон адресов главной памяти, не разбитый операционной системой на страницы.

9. Способ по любому из пп. 1-7, в котором код главного загрузчика прекращает выполняться после запуска операционной системы и не выполняется до тех пор, пока не произойдет сброс процессора системы безопасности.

10. Способ по любому из пп. 1-7, в котором запущенная операционная система устанавливает механизм виртуальной памяти между выделенной пользователю подсекцией главной памяти и одним или более запоминающими устройствами большой емкости.

11. Способ по любому из пп. 1-7, в котором программный модуль включает в себя сегменты данных или код библиотеки условного доступа, причем указанные сегменты данных или указанный код позволяют расшифровать криптограмму управляющего слова, имеющуюся в сообщении ЕСМ (сообщение управления правами).

12. Способ приема контента мультимедиа, скремблированного с использованием управляющих слов CWi,t, содержащий этапы, на которых:
принимают (200) сообщение ЕСМ (сообщение управления правами), содержащее криптограмму CW*i,t управляющего слова CWi,t;
загружают программный модуль в главную память приемного терминала, причем программный модуль выполнен с возможностью расшифровки криптограммы CW*i,t для получения управляющего слова CWi,t при исполнении программного модуля процессором, соединенным с главной памятью посредством шины данных;
исполняют указанный программный модуль процессором для расшифровки (200) криптограммы CW*i,t;
дескремблируют контенты мультимедиа, скремблированные с использованием управляющего слова CWi,t в открытой форме;
при этом загрузку указанного программного модуля осуществляют в соответствии со способом по любому из пп. 1-7.

13. Носитель записи информации (78, 94, 102), содержащий команды для реализации способа по любому из пп. 1-7 при исполнении указанных команд электронным процессором системы безопасности.

14. Терминал, оснащенный:
главной памятью (92)
процессором системы безопасности (90), имеющим вид интегральной схемы, в которой реализованы микропроцессор (99), выполненный с возможностью исполнять команды, записанные в главной памяти, сопроцессор безопасности (100), энергонезависимое запоминающее устройство (102) и запоминающее устройство с произвольной выборкой (103), доступные исключительно для указанного сопроцессора безопасности, причем указанный процессор соединен с главной памятью посредством шины данных,
кодом (128) многозадачной операционной системы, выполненной с возможностью при исполнении процессором операционной системы планировать одновременное выполнение нескольких пользовательских программ,
кодом (104) главного загрузчика, выполненного с возможностью при исполнении процессором главного загрузчика загружать в главную память код многозадачной операционной системы, выполненной с возможностью использования только одного уменьшенного диапазона адресов в главной памяти, и затем запускать выполнение операционной системы из главной памяти,
командами кода загрузки, который при исполнении указанных команд процессором выполнен с возможностью загружать код главного загрузчика в главную память, причем указанные команды записаны в энергонезависимое запоминающее устройство (102) сопроцессора, начиная с первого адреса, на который указывает порядковый счетчик процессора сразу после каждого сброса процессора,
одним или несколькими энергонезависимыми запоминающими устройствами (73, 74), содержащими код (125) программного модуля,
при этом главный загрузчик (104) дополнительно выполнен с возможностью при исполнении процессором загружать код программного модуля в главную память прежде запуска исполнения операционной системы в диапазон адресов главной памяти, расположенный вне диапазона адресов, используемого операционной системой, и
после запуска операционная система (128) выполнена с возможностью при исполнении микропроцессором переадресовывать обращение к указанному программному модулю от пользовательской программы по адресу в главной памяти, по которому был загружен код программного модуля до запуска выполнения операционной системы, с использованием особой файловой системы операционной системы, причем указанная файловая система автоматически ассоциирует адрес программного модуля в пространстве виртуальной памяти пользовательской программы с физическим адресом программного модуля в главной памяти.

15. Терминал по п. 14, характеризующийся тем, что:
содержит приемник (70) сообщений ЕСМ,
причем программный модуль (126) выполнен с возможностью при его исполнении процессором принимать сообщение ЕСМ, расшифровывать криптограмму CW*i,t для получения управляющего слова CWi,t, содержащегося в сообщении ЕСМ,
при этом терминал содержит блок дескремблирования, выполненный с возможностью дескремблировать контент мультимедиа, скремблированный с использованием управляющего слова CWi,t, расшифрованного программным модулем.

Документы, цитированные в отчете о поиске Патент 2015 года RU2557459C2

Способ и приспособление для нагревания хлебопекарных камер 1923
  • Иссерлис И.Л.
SU2003A1
EP 1826694 A2, 29.08.2007
Формирователь импульсов считывания для блоков памяти 1985
  • Максимов Владимир Алексеевич
  • Петричкович Ярослав Ярославович
  • Филатов Валерий Николаевич
  • Заболотный Алексей Ефимович
  • Косоусов Сергей Николаевич
SU1273996A1
Пломбировальные щипцы 1923
  • Громов И.С.
SU2006A1
СПОСОБ ОБЕСПЕЧЕНИЯ БЕЗОПАСНОСТИ ИГРОВЫХ УСТРОЙСТВ И ИГРОВОЕ УСТРОЙСТВО ДЛЯ ЕГО ОСУЩЕСТВЛЕНИЯ 2006
  • Фалвей Грэхем М.
  • Коллер Кристиан
  • Коперски Грегор
  • Тюхлер Герхард
RU2310907C1

RU 2 557 459 C2

Авторы

Амон Венсан

Даты

2015-07-20Публикация

2011-12-16Подача