Способ и устройство для загрузки программного обеспечения
Иллюстрации
Показать всеИзобретение относится к области загрузки компьютерных программ в доверенные вычислительные платформы. Техническим результатом является повышение эффективности загрузки программного обеспечения. Раскрываются способ и устройство, позволяющие загружать компьютерные программы в доверенную вычислительную платформу путем выполнения первого программного загрузчика, запроса первым программным загрузчиком у сервера загрузки первого программного кода, включающего второй программный загрузчик, приема первого программного кода из сервера загрузки, измерения второго программного загрузчика, выполнения второго программного загрузчика и запроса вторым программным загрузчиком у сервера загрузки второго программного кода. 3 н. и 9 з.п. ф-лы, 2 ил.
Реферат
Область техники
Настоящее изобретение относится к области вычислительной техники, в частности, но не исключительно, к загрузке компьютерных программ в доверенные вычислительные платформы.
Уровень техники
Бездисковые устройства, которые загружаются с общего сервера начальной загрузки, могут использоваться, например, когда требуется обеспечить совместимую конфигурацию программного обеспечения для всех этих устройств. Совместимая конфигурация программного обеспечения может снизить затраты, связанные с администрированием и техническим обслуживанием системы. Использование бездисковых устройств также оправдано в тех случаях, когда информация не должна постоянно храниться в отдельных устройствах. В этих случаях локальные устройства постоянного хранения информации, такие как жесткие диски, представляют собой бесполезные затраты.
Передача образов начальной загрузки по сети из сервера начальной загрузки в устройство может быть сопряжена с угрозами безопасности системы; например, образы начальной загрузки могут быть подделаны так, что устройство станет уязвимым для злонамеренных атак. Таким образом, для улучшения защищенности системы может потребоваться защита целостности файлов начальной загрузки.
При использовании схемы автоматической начальной загрузки по сети защита целостности последовательности начальной загрузки может осуществляться таким образом, чтобы каждый из загружаемых и выполняемых в ходе начальной загрузки программных объектов проверял целостность следующего в этой последовательности программного объекта перед передачей ему управления. Если целостность каждого из объектов в последовательности начальной загрузки сохранена, то всю эту последовательность можно считать соответствующе защищенной.
Проверка целостности программного объекта, подлежащего загрузке и выполнению в течение последовательности начальной загрузки, может быть связана с состоянием вычислительной платформы, в которое она переходит в результате выполнения этого программного объекта. Другими словами, выполнение программного объекта переводит программную и аппаратную платформу в определенное состояние. Даже если загружаемые программные объекты одинаковы для устройств в сети, состояния вычислительной платформы могут отличаться в процессе выполнения последовательности начальной загрузки вследствие различий в аппаратных конфигурациях и комбинациях программного и аппаратного обеспечения. Это означает, что информацию, используемую для проверки целостности программных объектов в процессе выполнения последовательности начальной загрузки, может потребоваться определять отдельно для каждого устройства и каждого состояния, в то время как состояние зависит от программной и аппаратной конфигурации платформы. Такой процесс является затратным и требует много времени.
Сущность изобретения
Настоящее изобретение направлено на решение по меньшей мере некоторых из упомянутых выше проблем. В соответствии с первым аспектом настоящего изобретения предлагается способ, включающий шаги выполнения первого программного загрузчика, запроса первым программным загрузчиком у сервера начальной загрузки первого программного кода, содержащего второй программный загрузчик, приема первого программного кода из сервера начальной загрузки, измерения второго программного загрузчика, выполнения второго программного загрузчика и запроса вторым программным загрузчиком у сервера начальной загрузки второго программного кода.
В соответствии со вторым аспектом настоящего изобретения предлагается устройство, содержащее процессор, сконфигурированный для выполнения первого программного загрузчика, запроса у сервера начальной загрузки первого программного кода, содержащего второй программный загрузчик, приема первого программного кода из сервера начальной загрузки, измерения второго программного загрузчика, выполнения второго программного загрузчика и запроса вторым программным загрузчиком у сервера начальной загрузки второго программного кода, при этом устройство также содержит память для хранения первого программного загрузчика.
В соответствии с третьим аспектом настоящего изобретения предлагается компьютерная программа, хранимая на носителе информации, для управления устройством, при этом компьютерная программа содержит исполняемый программный код, сконфигурированный таким образом, что при выполнении компьютерной программы устройство осуществляет следующие действия:
выполнение первого программного загрузчика;
запрос у сервера начальной загрузки первого программного кода, содержащего второй программный загрузчик,
прием первого программного кода из сервера начальной загрузки,
измерение второго программного загрузчика,
выполнение второго программного загрузчика и
запрос у сервера начальной загрузки второго программного кода.
Ниже в разделе подробного описания изобретения, а также в зависимых пунктах прилагаемой формулы изобретения приводятся различные примеры осуществления настоящего изобретения. Варианты осуществления описываются со ссылкой на выбранные аспекты настоящего изобретения. Специалисту будет понятно, что любой вариант осуществления настоящего изобретения может в отдельности или в комбинации с другими вариантами осуществления применяться и к другим аспектам изобретения.
Краткое описание чертежей
Настоящее изобретение будет описано далее посредством приводимых примеров со ссылкой на прилагаемые чертежи.
На фиг.1 схематично показана структура устройства, которое может обеспечить платформу для реализации по меньшей мере одного варианта осуществления настоящего изобретения.
На фиг.2 показан пример способа в соответствии с вариантом осуществления настоящего изобретения.
Подробное описание изобретения
В последующем описании одинаковым номерам соответствуют одни и те же элементы.
На фиг.1 изображена структура устройства 10, в котором может быть реализован по меньшей мере один вариант осуществления настоящего изобретения. Устройство 10 содержит процессор 11 и память 12. В памяти 12 может храниться компьютерная программа 13, загружаемая в процессор 11 и исполняемая им.
Процессор 11 может быть, например, центральным процессором (CPU, central processing unit), микропроцессором, цифровым сигнальным процессором (DSP, digital signal processor), графическим процессором и т.п. На фиг.1 показан один процессор 11, однако устройство 10 может содержать несколько процессоров. Устройство 10 может содержать, например, процессор основной полосы частот (baseband processor) и процессор приложений.
Память 12 может являться, например, энергонезависимой или энергозависимой памятью, такой как постоянное запоминающее устройство (ROM, read-only memory), программируемое постоянное запоминающее устройство - (PROM, programmable read-only memory), стираемое программируемое постоянное запоминающее устройство (EPROM, erasable programmable read-only memory), оперативная память (RAM, random-access memory), флэш-память, диск для хранения данных, оптическое запоминающее устройство, магнитное запоминающее устройство, карта памяти или смарт-карта, например карта SIM или USIM, и т.п. Устройство 10 может содержать множество блоков 12 памяти. Память 12 может быть выполнена как часть устройства 10 или процессора 11 либо может вставляться в слот устройства 10 или подключаться к слоту, порту и т.п. Память 12 может использоваться или только для хранения данных или может быть выполнена как часть устройства, служащая для других целей, например для обработки данных.
На фиг.2 показан пример способа в соответствии с вариантом осуществления настоящего изобретения. Специалисту понятно, что некоторые шаги, показанные на фиг.2, могут не использоваться в некоторых вариантах осуществления настоящего изобретения, и необязательно выполнять шаги способа в том порядке, который показан на фиг.2. Способ в соответствии с вариантами осуществления настоящего изобретения может выполняться, например, устройством 10, изображенным на фиг.1.
На шаге 21 первый программный загрузчик может выполняться, например, процессором 11 устройства 10, показанного на фиг.1. Первый программный загрузчик может храниться в памяти 12 устройства 10 и загружаться в процессор 11 для выполнения. Первый программный загрузчик показан на фиг.1 как компьютерная программа 13.
Первый программный загрузчик может являться, например, компьютерной программой, соответствующей спецификации среды выполнения начальной загрузки (РХЕ, Preboot execution Environment).
На шаге 22 первый программный загрузчик может запросить у сервера начальной загрузки первый программный код. В том случае, если первый программный загрузчик является клиентом РХЕ, сервер начальной загрузки представляет собой сервер РХЕ. Запрашиваемый первый программный код может являться, например, программой автоматической загрузки по сети (NBP, Network Bootstrap Program).
Первый программный загрузчик может использовать подходящий протокол для получения параметров конфигурации и для загрузки первого программного кода. Например, клиент РХЕ может использовать протокол динамической конфигурации хоста (DHCP, Dynamic Host Configuration Protocol) для запроса и приема параметров конфигурации сети, таких как адрес Интернет-протокола (IP, Internet Protocol), и простейший протокол передачи файлов (TFTP, Tiny File Transfer Protocol) для получения программы NBP, соответствующей спецификации РХЕ. Первый программный код принимается из сервера начальной загрузки на шаге 23, как показано на фиг.2.
Согласно по меньшей мере одному варианту осуществления настоящего изобретения, первый программный код, принятый на шаге 23, может содержать второй программный загрузчик. На шаге 24 может быть выполнено измерение второго программного загрузчика. Второй программный загрузчик может измеряться, например, путем определения значения хеш-функции на основе кода второго программного загрузчика с использованием подходящего алгоритма хеширования. В некоторых вариантах осуществления настоящего изобретения такое измерение может являться предварительным условием для выполнения второго программного загрузчика.
Второй программный загрузчик может являться, например, защищенным загрузчиком (SL, Secure Loader) согласно схеме динамического корня доверия для измерения (DRTM, Dynamic Root of Trust for Measurement). Процессор 11 устройства 10 (см. фиг.1) может сохранять второй программный загрузчик в кэше или аналогичной памяти и передавать для измерения код второго программного загрузчика в доверенный платформенный модуль. Доверенный платформенный модуль может являться, например, модулем, соответствующим спецификациям группы доверенных вычислений (TCG, Trusted Computing Group). Согласно этим спецификациям доверенный платформенный модуль является сопроцессором, способным выполнять криптографические операции, такие как цифровая подпись и хеширование. Доверенный платформенный модуль может быть реализован в устройстве 10 или в устройстве, внешнем по отношению к устройству 10.
В доверенном платформенном модуле может храниться набор значений регистра конфигурации, например, значений регистра конфигурации платформы (PCR, Platform Configuration Register), соответствующих спецификациям TCG, причем значения регистра конфигурации могут быть связаны с конкретным состоянием вычислительной платформы, такой как устройство 10, изображенное на фиг.1. Процессор 11 может быть выполнен с возможностью сброса по меньшей мере одного из значений регистра конфигурации, например, в связи с инициализацией процессора 11 и загрузкой второго программного загрузчика в кэш процессора 11.
На шаге 25, как показано на фиг.2, второй программный загрузчик может выполняться, например, процессором 11 устройства 10. Второй программный загрузчик, такой как защищенный загрузчик, реализованной по схеме DRTM, может быть выполнен с возможностью принятия управления процессором 10, временной приостановки работы процессора 10 и выполнения проверки безопасности процессора и собственной безопасности.
Таким образом, второй программный загрузчик может служить начальным звеном в цепи доверия в доверенном и/или безопасном процессе начальной загрузки.
На шаге 26, как показано на фиг.2, второй программный загрузчик может запросить у сервера начальной загрузки второй программный код. Второй программный код может содержать, например, компьютерные программы, связанные с операционной системой устройства.
Способ согласно по меньшей мере одному варианту осуществления настоящего изобретения, показанный на фиг.2, может включать шаг расширения значения регистра конфигурации результатом измерения второго программного загрузчика. Значение регистра конфигурации может быть расширено, например, путем добавления нового значения в конец к предыдущему. Расширенное значение может также являться результатом операции хеширования, при этом новое значение соединяют с предшествующим значением, и полученные данные подвергают процессу хеширования. Новое значение регистра конфигурации получается в результате выполнения процесса хеширования.
Как было описано выше, доверенный платформенный модуль может сохранять набор значений регистра конфигурации, а процессор может быть выполнен с возможностью сброса по меньшей мере одного из значений регистра конфигурации. Доверенный платформенный модуль может быть также приспособлен для расширения по меньшей мере одного значения конфигурации результатом измерения программного кода. Например, значение хеш-функции может добавляться к предшествующему значению регистра конфигурации.
Например, доверенный платформенный модуль может сохранять набор значений регистра PCR, а процессор может быть выполнен с возможностью сброса конкретного значения регистра PCR, например PCR 17. Процессор может установить значение PCR 17 равным 0, и доверенный платформенный модуль может расширить PCR 17 значением хеш-функции, полученным из значения измерения второго программного загрузчика. Таким образом, значение PCR 17 может быть установлено так, чтобы оно соответствовало, например, текущему состоянию процесса начальной загрузки.
Первый программный код, принятый на шаге 23, показанном на фиг.2, может содержать эмулятор доверенного модуля, и способ согласно по меньшей мере одному варианту осуществления настоящего изобретения может включать шаг измерения эмулятора доверенного модуля с использованием второго программного загрузчика. Эмулятор доверенного модуля может являться, например, эмулятором мобильного доверенного модуля (МТМ, Mobile Trusted Module). Мобильный доверенный модуль подробно описан в спецификациях TCG.
Второй программный загрузчик может измерять эмулятор доверенного модуля или передавать код эмулятора доверенного модуля в доверенный платформенный модуль для измерения доверенным платформенным модулем. Доверенный платформенный модуль может расширять значение регистра конфигурации значением, полученным измерением кода эмулятора доверенного модуля. Например, эмулятор доверенного модуля может расширить то значение регистра конфигурации, которое было ранее расширено результатом измерения второго программного загрузчика. Доверенный платформенный модуль может расширить, например, значение PCR 17 значением измерения эмулятора доверенного модуля.
Эмулятор доверенного модуля может включать определенное состояние, то есть эмулятор может быть установлен в определенное состояние, и первый программный код, принятый на шаге 23, как показано на фиг.23, может содержать информацию об упомянутом определенном состоянии. В этом случае способ согласно по меньшей мере одному из вариантов осуществления настоящего изобретения может включать шаги получения упомянутой информации о состоянии и изменения по меньшей мере одного значения регистра конфигурации, связанного с упомянутым определенным состоянием, согласно упомянутой информации о состоянии. Информация о состоянии может включать, например, корневой ключ подтверждения (root verification key) и значения регистра конфигурации, соответствующие определенному состоянию.
Например, эмулятор доверенного модуля может содержать состояние, в котором соответствующие значения регистра конфигурации отличаются от начальных значений. Это состояние может, например, представлять ситуацию, в которой эмулятор доверенного модуля может начать обработку объектов компьютерной программы, загруженных после выполнения эмулятора доверенного модуля. Для случая регистров PCR по меньшей мере одно из значений PCR с 0 по 16 может быть ненулевым. В этом случае второй программный загрузчик может получить значения регистра конфигурации из первого программного кода и изменить соответствующие значения набора значений регистра конфигурации, сохраняемого доверенным платформенным модулем, для отражения текущего состояния эмулятора доверенного модуля. В этом случае значения регистра конфигурации, связанные с определенным состоянием, которое включено в эмулятор доверенного модуля, не расширяются, а устанавливаются равными значениям, полученным из первого программного кода.
Информация о состоянии может быть зашифрована с помощью ключа, хранимого доверенным платформенным модулем. Ключ шифрования может быть запечатан с привязкой к конкретному значению регистра конфигурации, так что он доступен только в тот момент, когда вычислительная платформа находится в ожидаемом состоянии. Такая «печать» (seal) может представлять собой, например, ожидаемое значение регистра конфигурации, соответствующее ожидаемому состоянию. Например, ключ шифрования может быть доступен только тогда, когда регистр PCR 17 имеет заранее заданное значение, после того как регистр PCR 17 был расширен значениями измерения второго программного загрузчика и/или эмулятора доверенного модуля.
Ключ шифрования после выпуска доверенным платформенным модулем может использоваться для дешифрования информации о состоянии, включенной в первый программный код.
Второй программный код, запрашиваемый на шаге 26, как показано на фиг.2, может содержать, например, компьютерные программы, связанные с операционной системой устройства. Способ согласно по меньшей мере одному из вариантов осуществления настоящего изобретения может включать шаги выполнения эмулятора доверенного модуля, например, процессором 11 устройства 10 (см. фиг.1), измерения компьютерных программ с использованием эмулятора доверенного модуля и проверки компьютерных программ на основе результатов измерения.
Например, эмулятор доверенного модуля может использоваться для проверки целостности последующих объектов компьютерной программы, которые загружаются после выполнения эмулятора доверенного модуля. Загружаемые объекты компьютерной программы могут сопровождаться сертификатами целостности, такими как сертификаты опорных показателей целостности (RIM, Reference Integrity Metrics) согласно спецификациям TCG, которые могут использоваться для проверки целостности объектов компьютерной программы. Сертификаты целостности могут содержать ожидаемое значение (значения) регистра (регистров) конфигурации, полученные в результате их расширения значениями измерения упомянутых объектов компьютерной программы. Другими словами, сертификаты целостности могут санкционировать определенное изменение значений регистра конфигурации и, следовательно, определенный переход состояний вычислительной платформы. Эмулятор доверенного модуля может проверять целостность загруженных объектов компьютерной программы путем сравнения результатов измерения этих объектов с ожидаемыми значениями, включенными в сертификаты целостности.
Эмулятор доверенного модуля может использовать для проверки доверенный платформенный модуль и, в частности, хранимый набор значений регистра конфигурации. Эмулятор доверенного модуля, например, может использовать обрабатывающие ресурсы доверенного платформенного модуля для измерения загруженного объекта компьютерной программы и разрешить выполнение объекта компьютерной программы, если это выполнение вызывает переход в состояние, санкционированное сертификатом целостности, таким как сертификат RIM, связанным с объектом компьютерной программы и результирующим изменением состояния. Если изменение состояния санкционировано, то эмулятор доверенного модуля может разрешить выполнение объекта компьютерной программы и расширить соответствующее значение (значения) регистра конфигурации, хранимое доверенным платформенным модулем. Эмулятор доверенного модуля может также измерять сами загруженные объекты компьютерной программы.
Описанные варианты осуществления способа и устройства могут применяться для разрешения выполнения доверенного и/или безопасного процесса начальной загрузки, например, в бездисковом устройстве. В вариантах осуществления настоящего изобретения используются ресурсы доверенного платформенного модуля, например модуля, соответствующего спецификациям TCG. В вариантах осуществления настоящего изобретения может устанавливаться цепь доверия для процесса начальной загрузки, начинающаяся с загрузчика программ, соответствующего схеме DRTM. В соответствии с вариантами осуществления настоящего изобретения множество устройств могут использовать общую программу автоматической загрузки по сети без необходимости определения отдельно для каждого устройства цепочки специфичных для устройства стадий начальной загрузки и соответствующей им санкционирующей информации.
Выше с помощью примеров конкретных вариантов осуществления, не ограничивающих изобретение, было приведено полное описание предпочтительного варианта осуществления изобретения, рассматриваемого в настоящее время авторами. Однако специалисту очевидно, что настоящее изобретение не ограничивается конкретными представленными выше вариантами его осуществления и может быть реализовано в других вариантах с использованием эквивалентных средств в пределах объема настоящего изобретения.
Кроме того, некоторые раскрытые выше признаки вариантов осуществления настоящего изобретения могут использоваться без соответствующего использования других признаков. Таким образом, настоящее описание должно рассматриваться как приведенное в качестве иллюстрации принципов предлагаемого изобретения и не ограничивающее его объем. Следовательно, объем изобретения ограничен только прилагаемой формулой изобретения.
1. Способ загрузки программ, включающий выполнение первого программного загрузчика;запрос первым программным загрузчиком первого программного кода у сервера начальной загрузки, при этом первый программный код включает второй программный загрузчик и эмулятор доверенного модуля;прием первого программного кода из сервера начальной загрузки;измерение второго программного загрузчика;расширение значения регистра конфигурации результатом измерения второго программного загрузчика;измерение эмулятора доверенного модуля с использованием второго программного загрузчика;расширение значения регистра конфигурации результатом измерения эмулятора доверенного модуля;выполнение второго программного загрузчика и запрос вторым программным загрузчиком второго программного кода у сервера начальной загрузки.
2. Способ по п.1, в котором эмулятор доверенного модуля содержит определенное состояние, и первый программный код содержит информацию об упомянутом определенном состоянии, при этом способ включаетполучение упомянутой информации о состоянии и изменение значения регистра конфигурации, связанного с упомянутым определенным состоянием, согласно упомянутой информации о состоянии.
3. Способ по п.2, в котором информация о состоянии включает корневой ключ подтверждения и значение регистра конфигурации.
4. Способ по п.2 или 3, в котором информация о состоянии зашифрована с помощью ключа шифрования, при этом способ включаетполучение ключа шифрования из доверенного платформенного модуля и дешифрование информации о состоянии с использованием ключа шифрования.
5. Способ по п.4, в котором ключ шифрования доступен только тогда, когда значение регистра конфигурации, расширенное результатом измерения эмулятора доверенного модуля, соответствует состоянию, хранимому в виде «печати» (seal) в доверенном платформенном модуле.
6. Способ по п.1, в котором второй программный код содержит компьютерную программу, при этом способ включаетвыполнение эмулятора доверенного модуля;измерение компьютерной программы эмулятором доверенного модуля и проверку компьютерной программы на основе результата этого измерения.
7. Способ по п.6, в котором проверка компьютерной программы включает сравнение результата упомянутого измерения со значением, включенным в сертификат целостности.
8. Устройство для загрузки программ, содержащее процессор, сконфигурированный для выполнения первого программного загрузчика;запроса у сервера начальной загрузки первого программного кода, который содержит второй программный загрузчик и эмулятор доверенного модуля;приема первого программного кода из сервера начальной загрузки;измерения второго программного загрузчика;расширения значения регистра конфигурации результатом измерения второго программного загрузчика;измерения эмулятора доверенного модуля с использованием второго программного загрузчика;расширения значения регистра конфигурации результатом измерения эмулятора доверенного модуля;выполнения второго программного загрузчика и запроса второго программного кода у сервера начальной загрузки, причем устройство также содержитпамять для хранения первого программного загрузчика.
9. Устройство по п.8, в котором эмулятор доверенного модуля содержит определенное состояние, и первый программный код содержит информацию об упомянутом определенном состоянии, при этом процессор выполнен с возможностьюполучения упомянутой информации о состоянии и изменения значения регистра конфигурации, связанного с упомянутым определенным состоянием, согласно упомянутой информации о состоянии.
10. Устройство по п.9, в котором информация о состоянии зашифрована с помощью ключа шифрования, и процессор выполнен с возможностьюполучения ключа шифрования из доверенного платформенного модуля и дешифрования информации о состоянии с использованием ключа шифрования.
11. Устройство по п.8, в котором второй программный код содержит компьютерную программу, при этом процессор сконфигурирован длявыполнения эмулятора доверенного модуля;измерения компьютерной программы эмулятором доверенного модуля и проверки компьютерной программы на основе результата упомянутого измерения.
12. Носитель информации для управления устройством, на котором хранится компьютерная программа, содержащая исполняемый программный код, такой, что при выполнении компьютерной программы устройство выполняет способ по любому из пп.1-7.