RU2356169C2 - Привязка программного обеспечения к аппаратным средствам с использованием криптографии - Google Patents

Привязка программного обеспечения к аппаратным средствам с использованием криптографии Download PDF

Info

Publication number
RU2356169C2
RU2356169C2 RU2005134362/09A RU2005134362A RU2356169C2 RU 2356169 C2 RU2356169 C2 RU 2356169C2 RU 2005134362/09 A RU2005134362/09 A RU 2005134362/09A RU 2005134362 A RU2005134362 A RU 2005134362A RU 2356169 C2 RU2356169 C2 RU 2356169C2
Authority
RU
Russia
Prior art keywords
software
signature
hardware
identifier
profile
Prior art date
Application number
RU2005134362/09A
Other languages
English (en)
Other versions
RU2005134362A (ru
Inventor
Оливер МИХАЭЛИС (US)
Оливер МИХАЭЛИС
Энтони МОРО (US)
Энтони МОРО
Original Assignee
Квэлкомм Инкорпорейтед
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Квэлкомм Инкорпорейтед filed Critical Квэлкомм Инкорпорейтед
Publication of RU2005134362A publication Critical patent/RU2005134362A/ru
Application granted granted Critical
Publication of RU2356169C2 publication Critical patent/RU2356169C2/ru

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/121Restricting unauthorised execution of programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/51Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems at application loading time, e.g. accepting, rejecting, starting or inhibiting executable software based on integrity or source reliability

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Technology Law (AREA)
  • Mobile Radio Communication Systems (AREA)
  • Storage Device Security (AREA)

Abstract

Программное обеспечение идентифицируют посредством идентификатора (ID) программного обеспечения (ИПО), а аппаратные средства идентифицируют посредством идентификатора (ID) аппаратных средств (ИАС). Программное обеспечение хэшируют для получения профиля кода. Подпись кода создают для профиля кода, ИПО и ИАС. Образ кода формируют с программным обеспечением, ИПО, подписью кода и сертификатом. Сертификат содержит криптографическую информацию, используемую для аутентификации сертификата и подтверждения правильности подписи кода. Образ кода загружают в устройство. Устройство подтверждает правильность программного обеспечения для привязки к аппаратным средствам до выполнения программного обеспечения. Для подтверждения правильности устройство аутентифицирует сертификат с открытым ключом центра сертификации, встроенным в устройство. Устройство также подтверждает правильность подписи кода с использованием криптографической информации, содержащейся в сертификате, информации в образе кода и идентификаторе аппаратных средств, встроенном в устройство. 7 н. и 19 з.п. ф-лы, 10 ил.

Description

Область техники, к которой относится изобретение
Данное изобретение относится, в целом, к электронике (электронному оборудованию) и, более конкретно, к способам привязки программного обеспечения к аппаратным средствам.
Уровень техники
Электронные устройства широко доступны для различных областей применений, таких как радиосвязь, вычислений на персональном компьютере и так далее. Поскольку аппаратные средства становятся более мощными, то эти устройства могут поддерживать большее количество функций и/или более сложные функции. Например, современный сотовый телефон может обеспечивать радиосвязь, а также может дополнительно служить в качестве игрового устройства, "карманного" компьютера, предназначенного для выполнения некоторых специальных функций (PDA), цифровой камеры и так далее.
Сложное электронное устройство (например, сотовый телефон) обычно требует, чтобы программное обеспечение управляло аппаратными средствами и поддерживало различные исполнительные функции. Программное обеспечение может быть загружено в энергонезависимую память, внедренную в устройство в течение производства, и/или загружено в устройство в течение активации. Независимо от того, как программное обеспечение было загружено в устройство, оно может быть желательным или необходимым для выяснения того, действительно ли загруженное программное обеспечение является "подходящим" для аппаратных средств, причем эта пригодность может быть количественно определена посредством различных факторов как, например, описано ниже. Например, может быть желательно выяснить, что загруженное программное обеспечение является версией, которая была санкционирована изготовителем, и не допустить выполнения программного обеспечения в том случае, если это несанкционированная версия.
Поэтому в данном уровне техники существует потребность в способах привязки программного обеспечения к аппаратным средствам для электронного устройства.
Сущность изобретения
Здесь описаны способы привязки программного обеспечения к аппаратным средствам с использованием криптографии. Программное обеспечение идентифицируют посредством идентификатора (ID) программного обеспечения, который может быть номером версии выпуска программного обеспечения. Аппаратные средства идентифицируют посредством идентификатора (ID) аппаратных средств, который может быть номером модели (серийным номером) или номером компонента.
В одной конкретной схеме привязки программного обеспечения к аппаратным средствам программное обеспечение сначала хэшируют для получения профиля кода. Затем создают подпись (сигнатуру) кода для профиля кода, идентификатор программного обеспечения и идентификатор аппаратных средств. После этого образ кода формируют с программным обеспечением, идентификатором программного обеспечения, подписью кода и сертификатом. Сертификат содержит криптографическую информацию, используемую для (1) аутентификации центра сертификации, который создает подпись кода, и (2) подтверждения правильности подписи кода. Образ кода обеспечивают в устройство, а затем сохраняют в нем, например, в беспроводном устройстве, таком как сотовый телефон.
Устройство подтверждает правильность привязки программного обеспечения к аппаратным средствам до выполнения программного обеспечения. При включении устройство может каждый раз выполнять подтверждение правильности. Для подтверждения правильности устройство сначала аутентифицирует сертификат с открытым ключом для центра сертификации, который встроен в устройство. Затем устройство подтверждает правильность подписи кода, используя (1) криптографическую информацию, содержащуюся в сертификате, (2) информацию в образе кода и (3) идентификатор аппаратных средств, встроенный в устройство. Также подтверждение правильности может быть выполнено в другом порядке (например, сначала подтвердить правильность подписи, а затем аутентифицировать сертификат).
Далее подробно описаны различные аспекты и варианты осуществления изобретения.
Краткое описание чертежей
Признаки и сущность данного изобретения станут более очевидными из подробного описания, изложенного ниже, взятого совместно с чертежами, на которых ссылочные номера идентифицируют соответствующие элементы, и на которых изображено следующее:
Фиг.1 изображает схему с различными объектами, предназначенными для привязки программного обеспечения к аппаратным средствам;
Фиг.2 иллюстрирует образ кода, который посылают в беспроводное устройство, а затем сохраняют в нем;
Фиг.3 изображает обработку для создания образа кода для программного обеспечения;
Фиг.4 изображает блок, предназначенный для создания подписи кода;
Фиг.5 изображает блок, предназначенный для создания профиля, используемого для подписи кода;
Фиг.6 изображает процесс создания образа кода для программного обеспечения;
Фиг.7 изображает процесс создания подписи кода;
Фиг.8 изображает блок-схему логического объекта генератора кода, центра сертификации и беспроводного устройства;
Фиг.9 изображает блок, предназначенный для подтверждения правильности программного обеспечения на основании подписи кода; и
Фиг.10 изображает процесс подтверждения правильности программного обеспечения посредством беспроводного устройства.
Подробное описание изобретения
Слово «иллюстративный» используется здесь в значении «служить примером, частным случаем или иллюстрацией». Любой вариант осуществления или конструкция, описанные здесь, также являются «иллюстративными» и не должны быть рассмотрены в обязательном порядке, как предпочтительно или выгодно, согласно другим вариантам осуществления или конструкциям.
Описанные здесь способы привязки программного обеспечения к аппаратным средствам с использованием криптографии могут быть использованы в различных электронных устройствах, таких как беспроводное устройство, сотовый телефон, телефонная трубка, вычислительное устройство, «карманный» компьютер, предназначенный для выполнения некоторых специальных функций (PDA), и так далее. Для ясности, эти способы описаны конкретно для беспроводного устройства (например, сотового телефона).
Привязка программного обеспечения к аппаратным средствам достигается посредством использования способов криптографии. В целом, для привязки может быть использована как криптография с симметричными шифрами, так и криптография с асимметричными шифрами. В криптографии с асимметричными шифрами (которая также известна как криптография с открытым ключом) для функций секретности, таких как идентификация, кодирование и расшифровка, используется пара ключей, состоящая из личного ключа и открытого ключа. Личный ключ сохраняется тайно, а при необходимости обеспечивается открытый ключ. Другие функции секретности могут быть достигнуты на основании того, как ключи используются для обработки данных. В криптографии с симметричными шифрами (которая также известна как криптография с секретным ключом) и ведущим логическим объектом секретный ключ известен заранее (априори), и ключ сохраняется в тайне от других объектов. Криптография с асимметричными шифрами является более подходящей для областей применений, в которых данные подписей одного логического объекта и несколько логических объектов аутентифицируют подписи для подтверждения правильности данных. В связи с этим для следующего описания используется криптография с асимметричными шифрами.
Фиг.1 изображает схему 100 с различными логическими объектами, служащими для привязки программного обеспечения к аппаратным средствам. Логический объект 110 генератора кода создает код 112 программного обеспечения для конкретной платформы аппаратных средств (или просто «аппаратных средств»). Код программного обеспечения предназначен для его выполнения посредством аппаратных средств, для осуществления желательных функций. Код программного обеспечения определяет идентификатор (ID) программного обеспечения, который может быть номером версии выпуска программного обеспечения, ключом защиты программного продукта или любой другой информацией идентификации. Аппаратные средства могут быть интегральной схемой, набором микросхем, модулем, устройством и так далее. Подобным образом аппаратные средства определяются идентификатором аппаратных средств, который может быть номером модели, номером продукта и так далее. Каждая из различных платформ аппаратных средств определяется различным идентификатором аппаратных средств, но все экземпляры класса или модули той же самой платформы аппаратных средств имеют тот же самый идентификатор аппаратных средств. Точно так же каждый выпуск программного обеспечения определяется различным программным идентификатором, но все экземпляры или копии того же самого выпуска программного обеспечения имеют тот же самый идентификатор программного обеспечения. Таким образом, идентификатор программного обеспечения и идентификатор аппаратных средств идентифицируют выпуск программного обеспечения и платформу аппаратных средств, соответственно, и неопределенные экземпляры программного обеспечения и аппаратных средств.
Логический объект 110 генератора кода обрабатывает (например, хэширует) код программного обеспечения для получения профиля кода, который в результате хэширования является профилем сообщения. Хэширование преобразовывает потенциально большой файл переменного размера для кода программного обеспечения, с целью получить короткий профиль постоянного размера, который может быть более удобен для передачи и управления. Логический объект 110 генератора кода посылает в центр 120 сертификации (СА) запрос о подписи для кода программного обеспечения. Запрос включает в себя: (1) профиль кода, (2) идентификатор программного обеспечения для кода программного обеспечения и (3) идентификатор аппаратных средств для аппаратных средств, на которых код программного обеспечения предназначен для выполнения. Запрос может включать в себя эквивалентную информацию. Например, логический объект 110 генератора кода может послать код программного обеспечения вместо профиля кода, некой другой информации, идентифицирующей код программного обеспечения и намеченные аппаратные средства, и так далее.
Центр 120 сертификации представляет собой доверенный объект, который проверяет, действительно ли программное обеспечение может быть связано с аппаратными средствами. Центр 120 сертификации может сначала аутентифицировать логический объект 110 генератора кода на основании сертификата, посланного наряду с запросом посредством логического объекта 110 генератора кода. Для простоты этот сертификат не показан на Фиг.1. Проверка правильности для требуемой привязки может быть достигнута посредством сопоставления идентификатора программного обеспечения и идентификатора аппаратных средств, принятых от логического объекта 110 генератора кода, с информацией, сохраненной в таблице-конфигураторе 122. Например, таблица 122 может сохранить список привязок программного обеспечения к аппаратным средствам, который разрешен для логического объекта 110 генератора кода. Требуемая привязка может быть разрешена в случае, если она соответствует одной из разрешенных привязок, сохраненных в таблице. Как только требуемая привязка была подтверждена, центр 120 сертификации осуществляет привязку программного обеспечения к аппаратным средствам, используя криптографию и криптографические ключи 124. Криптографические ключи 124 включают в себя два набора ключей: (1) набор личных и открытых ключей, используемых для подписи и аутентификации кода программного обеспечения (которые упоминаются в настоящем описании как «код» личных и открытых ключей) и (2) набор личных и открытых ключей, используемых для идентификации и аутентификации центра 120 сертификации (который упоминает в настоящем описании как «СА» личных и открытых ключей). Центр 120 сертификации создает подпись согласно профилю кода, идентификатору программного обеспечения и идентификатору аппаратных средств, используя код личного ключа. Эта подпись упоминается в настоящем описании как «подпись кода». Затем центр 120 сертификации посылает подпись кода и сертификат 126 логическому объекту 110 генератора кода. Сертификат содержит (1) код открытого ключа, соответствующий коду личного ключа, используемый для создания подписи кода, (2) подпись, созданную согласно коду открытого ключа, используя СА личный ключ (который упоминается в настоящем описании как «СА подпись») и (3), возможно, другую информацию.
Логический объект 110 генератора кода принимает от центра 120 сертификации подпись кода и сертификат, и затем формирует образ кода с кодом программного обеспечения, идентификатором программного обеспечения, подписью кода и сертификатом. Затем логический объект 110 генератора кода посылает образ кода беспроводному устройству 130, который сохраняет его в энергонезависимой памяти 132. Устройство 130 содержит код 134 начальной загрузки, который выполняется, например, каждый раз при включении устройства. Код начальной загрузки подтверждает правильность кода программного обеспечения для выполнения посредством устройства 130 на основании (1) идентификатора программного обеспечения, подписи кода и сертификата, включенных в образ кода, (2) идентификатора 136 аппаратных средств и (3) СА открытого ключа 138, как описано ниже. Код начальной загрузки, идентификатор аппаратных средств и СА открытый ключ встроены в устройство 130 и являются устойчивыми к подделкам (искажениям). Устройство 130 выполняет только код программного обеспечения, если это подтверждено кодом начальной загрузки.
Логический объект 110 генератора кода может быть производителем беспроводных устройств 130, сетевым оператором или поставщиком услуг для сети радиосвязи, в которой используется беспроводное устройство 130, продавцом программного обеспечения третьего лица, оригинальным производителем комплексного оборудования (ОЕМ), лицом, обладающим патентом логического объекта с правами интеллектуальной собственности на аппаратные средства и/или технологию, используемую для сети связи, или неким другим объектом. Центр 120 сертификации может быть независимым доверенным логическим объектом (например, Geotrust, Verisign и так далее), служащим для выполнения привязок программного обеспечения к аппаратным средствам. А также центр 120 сертификации и логический объект 110 генератора кода могут быть частями того же самого объекта (например, сетевого оператора).
Фиг.2 иллюстрирует образ кода, который посылается в беспроводное устройство 130, а затем сохраняется в нем. Образ кода содержит поле 212 для кода программного обеспечения, поле 214 (SW ID) для идентификатора программного обеспечения, поле 216 для подписи кода, созданной посредством центра 120 сертификации, и поле 218 для сертификата, обеспеченного посредством центра 120 сертификации. Образ кода может быть сохранен в различных форматах, таких как, например, формат, определенный документом RFC 2315 «PKCS #7: Cryptographic Message Syntax Version 1.5», который является публично доступным. Образ кода может также содержать дополнительную информацию и/или информацию отличную от информации, представленной на Фиг.2. Например, идентификатор программного обеспечения может быть включен в код программного обеспечения и может не быть сохранен отдельно, как показано на Фиг.2.
Фиг.3 изображает обработку для создания образа кода для кода программного обеспечения. Хэш-функция 310 принимает и хэширует код программного обеспечения и обеспечивает профиль кода. Так как код программного обеспечения может быть большим файлом, размером в несколько мегабайт, то хэширование создает короткий профиль фиксированного размера, который можно более удобно посылать и управлять им. Хэш-функция 310 преобразовывает код программного обеспечения в соответствующий профиль кода. Важным свойством хэш-функции 310 должно быть сопротивление столкновениям, это означает то, что должно быть недопустимо нахождение двух сообщений x и x', соответствующих тому же самому профилю. Хэш-функция 310 может быть реализована с различными криптографическими хэш-функциями, такими как SHA-1 (алгоритм аутентификации и проверки целостности информации), MD-5 (алгоритм MD (профиля сообщения)) и другими алгоритмами хэширования, известными в данной области техники. SHA-1 обеспечивает 160-битовый профиль сообщения и описан в Федеральном стандарте обработки информации (FIPS) PUB 180-1 «Secure Hash Standard», который является публично доступным. MD-5 обеспечивает 128-битовый профиль сообщения и описан в документе RFC 1321 «The MD5 Message-Digest Algorithm», который также является публично доступным.
Функция 320 подписи (знаковая функция) принимает профиль кода, идентификатор программного обеспечения, идентификатор аппаратных средств и код личного ключа. Функция 320 подписи создает подпись кода на основании профиля кода, идентификатора программного обеспечения и идентификатора аппаратных средств, используя код личного ключа. Функция 320 подписи может быть осуществлена описанным ниже способом.
Генератор 330 сертификатов принимает код открытого ключа, соответствующий коду личного ключа, СА личный ключ и другую подходящую информацию (например, информацию, идентифицирующую логический объект, создающий сертификат, криптографические алгоритмы, используемые для сертификата, и так далее). Генератор 330 сертификатов создает подпись согласно коду открытого ключа и другой подходящей информации с СА личным ключом. Эта подпись упомянута в настоящем описании как «СА подпись». Затем генератор 330 сертификатов создает сертификат с кодом открытого ключа, СА подписью и другой информацией. Сертификат может быть сохранен в различных форматах, таких как, например, формат, определенный документом RFC 2459 «Internet X.509 Public Key Infrastructure Certificate and CRL Profile», который является публично доступным. Сертификат используется для аутентификации центра 120 сертификации так же, как код открытого ключа, описанным ниже способом.
Блок 340 объединения принимает и объединяет код программного обеспечения, идентификатор программного обеспечения, подпись кода и сертификат для получения образа кода (например, в формате PKCS #7).
Хэш-функция 310 и блок 340 объединения могут постоянно находиться в логическом объекте 110 генератора кода, изображенном на Фиг.1. Функция 320 подписи и генератор 330 сертификатов могут постоянно находиться в центре 120 сертификации. Альтернативно хэш-функция 310, функция 320 подписи, генератор 330 сертификатов и блок 340 объединения могут совместно постоянно находиться в том же самом логическом объекте.
Фиг.4 изображает блок 320a обработки данных (процессор), служащий для создания подписи кода. Блок 320a обработки данных может быть использован для функции 320 подписи, изображенной на Фиг.3.
В блоке 320a блок 410 хэширования выполняет конкатенацию и хэширование профиля кода, идентификатора программного обеспечения и идентификатора аппаратных средств. В варианте осуществления, изображенного на Фиг.4, находящийся в блоке 410 хэширования блок 412 конкатенации принимает и связывает профиль кода, идентификатор программного обеспечения и идентификатор аппаратных средств, для получения сообщения (M). Хэш-функция 414 хэширует сообщение (M) и обеспечивает профиль (D) сообщения. Профиль (D) содержит информацию, связывающую программное обеспечение с аппаратными средствами, и упоминается в настоящем описании как «профиль подписи». Затем блок 420 кодирования кодирует профиль (D) подписи с кодом личного ключа для создания подписи (S) кода.
Как правило, для создания профиля (D), который также посылается наряду с подписью (S) кода, используется целое сообщение. Однако для данной области применения используются три части информации для получения подписи кода, доступной для беспроводного устройства через другие средства. В частности, беспроводное устройство может получить профиль кода и идентификатор программного обеспечения из образа кода, а идентификатор аппаратных средств является встроенным в беспроводное устройство.
Блок 320a может выполнить RSA (Рон Райвест, Ади Шамир и Леонард Эйдельман) алгоритм. Для этого выполнения хэш-функция 414 может выполнить SHA-1, MD-5 или некую другую хэш-функцию, а блок 420 кодирования кодирует профиль (D) с кодом личного ключа. Блок 320a также может выполнить стандарт цифровой подписи (DSS), описанный в FIPS PUB 186 «Digital Signature Standard (DSS)», который является публично доступным. Для этого выполнения хэш-функция 414 выполняет SHA-1, а блок 420 кодирования выполняет алгоритм цифровой подписи (DSA). Блок 320a обработки данных также может выполнить некий другой криптографический (цифровая подпись или кодирование) алгоритм, и это находится в рамках объема изобретения.
Фиг.5 изображает блок 410a обработки данных, служащий для создания профиля подписи (D), используемого для подписи кода. Блок 410а обработки данных может быть использован для блока 410 хэширования, изображенного на Фиг.4. Блок 410a выполняет код аутентичности сообщения на основе хэширования (HMAC). HMAC описан в документе RFC 2104 «HMAC: Keyed-Hashing for Message Authentication» и в документе FIPS PUB 198 «The Keyed-Hash Message Authentication Code (HMAC)», каждый из которых публично доступен.
В блоке 410а обработки данных блок 512 принимает идентификатор программного обеспечения и выполняет операцию исключающее ИЛИ идентификатора программного обеспечения и значения «ipad». Это значение «ipad» может быть значением, определенным в RFC2401, которое является шестнадцатиричным байтом 0x36, повторяющимся 64 раза. Однако значение «ipad» может быть определено с некоторым другим базовым значением вместо 0x36, и базовое значение может быть повторено различное число раз вместо 64. Значение «ipad» также может быть определено как единственное значение без повторений. Нулевое заполнение выполняется в программном идентификаторе и идентификаторе аппаратных средств по мере необходимости, чтобы получить желательную длину, которая не показана на Фиг.5 для простоты. Операция исключающее ИЛИ может быть выполнена с добавкой поразрядного модуля-2. Блок 514 конкатенации принимает и связывает профиль кода с выходом блока 512 операции исключающей ИЛИ и обеспечивает первое сообщение (М1). Хэш-функция 516 принимает, хэширует первое сообщение и обеспечивает первый профиль (D1).
Блок 522 выполняет операцию исключающее ИЛИ идентификатора аппаратных средств и значения «opad». Это значение «opad» может быть значением, определенным в RFC2401, которое является шестнадцатиричным байтом Ox5c, повторяющимся 64 раза. Однако значение «opad» может быть определено с некоторым другим базовым значением вместо Ox5c, и базовое значение может быть повторено различное число раз вместо 64. Значение «opad» также может быть определено как единственное значение без повторений. Блок 518 конкатенации принимает и связывает первый профиль (Dl) хэш-функции 516 с выходом блока 522 операции исключающее ИЛИ и обеспечивает второе сообщение (M2). Хэш-функция 520 принимает и хэширует второе сообщение (M2) и обеспечивает второй профиль, который используется в качестве профиля (D) подписи. Хэш-функции 516 и 520 могут быть выполнены с различными криптографическими хэш-функциями, такими как SHA-1, MD-5, или неким другим алгоритмом хэширования.
Фиг.5 изображает использование HMAC определенным способом для создания профиля подписи. Структура HMAC также может быть использована другими способами для создания профиля подписи, и это находится в рамках изобретения. Например, идентификатор программного обеспечения и идентификатор аппаратных средств могут быть сцеплены, а затем обеспечены блоку 512 и выполнены командой исключающее ИЛИ со значением «ipad», а также профиль кода можно обеспечить блоку 522 и выполнить команду исключающее ИЛИ со значением «opad».
Фиг.4 и 5 изображают две иллюстративных схемы для создания профиля подписи. Блок 410а обработки данных, изображенный на Фиг.5, использует эти три элемента (то есть профиль кода, идентификатор программного обеспечения и идентификатор аппаратных средств) в качестве ключей к HMAC, для создания профиля подписи. Блок 410, изображенный на Фиг.4, связывает эти три элемента в одно сообщение (M) и выполняет хэширование каждого сообщения (M) для создания профиля подписи. Профиль подписи также может быть создан другими способами, и это находится в рамках изобретения.
Фиг.6 изображает блок-схему процесса 600 создания образа кода для кода программного обеспечения. Процесс 600 выполняется посредством логического объекта 110 генератора кода и центра 120 сертификации.
Первоначально логический объект 110 генератора кода хэширует код программного обеспечения для получения профиля кода (блок 612). Затем логический объект 110 генератора кода посылает профиль кода, идентификатор программного обеспечения и идентификатор аппаратных средств в запросе для подписи кода (блок 614), который принят центром 120 сертификации (блок 622). Центр 120 сертификации создает подпись кода (если подпись санкционирована) для профиля кода, идентификатор программного обеспечения и идентификатор аппаратных средств, используя код личного ключа (блок 624). Затем центр сертификации возвращает подпись кода и сертификат (блок 626), которые приняты логическим объектом 110 генератора кода (блок 632). Затем логический объект 110 генератора кода формирует образ кода с кодом программного обеспечения, идентификатором программного обеспечения, подписью кода и сертификатом, как изображено на Фиг.2 (блок 634). После этого логический объект 110 генератора кода может послать образ кода беспроводному устройству 130 (блок 636). Затем процесс заканчивается.
Фиг.7 изображает блок-схему процесса 700 создания подписи кода. Процесс 700 включает в себя блоки 622, 624 и 626, изображенные на Фиг.6, а также включает в себя блок 710 для аутентификации логического объекта 110 генератора кода и определения того, действительно ли код программного обеспечения может быть связан с аппаратными средствами. Процесс 700 может быть выполнен посредством центра 120 сертификации.
Центр 120 сертификации принимает запрос для подписи кода от логического объекта 110 генератора кода (блок 622). Этот запрос включает в себя профиль кода, идентификатор программного обеспечения, идентификатор аппаратных средств и сертификат для логического объекта 110 генератора кода (который упомянут в настоящем описании как «CG сертификат»). Центр 120 сертификации аутентифицирует логический объект 110 генератора кода на основании CG сертификата (блок 712). Если логический объект 110 генератора кода не аутентифицирован на основании CG сертификата (то есть ответ «Нет» для блока 714), то сообщение об ошибке отсылается назад (блок 720), и процесс заканчивается.
Если логический объект 110 генератора кода аутентифицирован (то есть ответ «Да» для блока 714), то осуществляется определение того, действительно ли программное обеспечение, представленное профилем программного обеспечения и идентификатором программного обеспечения, может быть связано с аппаратными средствами, указанными посредством идентификатора аппаратных средств (блок 716). Это может быть достигнуто на основании таблицы-конфигуратора, обслуживаемой центром 120 сертификации, как описано выше. Если привязка программного обеспечения к аппаратным средствам не разрешена (то есть ответ «Нет» для блока 718), то сообщение об ошибке отсылается назад (блок 720), и процесс заканчивается. В противном случае, центр 120 сертификации создает подпись кода, согласно требованиям, на основании профиля кода, идентификатора программного обеспечения и идентификатора аппаратных средств (блок 624). Затем центр 120 сертификации посылает подпись кода и сертификат логическому объекту 110 генератора кода (блок 626). После этого процесс заканчивается.
Фиг.8 изображает блок-схему логического объекта 110 генератора, центра 120 сертификации и беспроводного устройства 130. Логический объект 110 генератора кода включает в себя контроллер 810, блок 812 памяти и блок 814 связи. Контроллер 810 выполняет обработку для создания профиля кода и образа кода. Блок 812 памяти сохраняет код программного обеспечения так же, как код программы и данные, используемые контроллером 810. Блок 814 связи предоставляет связь между центром 120 сертификации и беспроводным устройством 130.
Центр 120 сертификации включает в себя контроллер 820, блок 822 памяти и блок 824 связи. Контроллер 820 выполняет обработку для создания подписи кода и сертификата. Блок 822 памяти сохраняет таблицу-конфигуратор 122, криптографические ключи 124, сертификат 126, код программы и данные, используемые контроллером 820. Блок 824 связи предоставляет связь с логическим объектом 110 генератора кода.
Устройство 130 может обмениваться информацией с одной или несколькими беспроводными системами связи, такими как система связи с множественным доступом с кодовым разделением каналов (CDMA), глобальная система мобильной связи (GSM), система с технологией Bluetooth, система со многими входами и многими выходами (MIMO), система множественного доступа с ортогональным частотным разделением каналов (OFDMA) и так далее. Система связи с множественным доступом с кодовым разделением каналов (CDMA) может реализовать один или несколько стандартов множественного доступа с кодовым разделением каналов, таких как IS-2000 (также известный как «CDMA 1x-EV»), IS-856 (также известный как «CDMA 1x-EVDO»), IS-95, Широкополосный CDMA (W-CDMA) и так далее. Устройство 130 выполнено с возможностью обеспечения двухсторонней связи по пути приема и пути передачи.
Для пути передачи модемный процессор 850 обрабатывает (например, кодирует и модулирует) данные, которые будут переданы посредством устройства 130, и обеспечивает кадры данных блоку 852 передатчика (TMTR). Блок 852 передатчика обрабатывает (например, преобразует в аналоговый сигнал, фильтрует, усиливает и преобразует с повышением частоты) кадры данных и формирует модулированный сигнал, который передается через антенну 854. Для пути приема сигналы, переданные посредством базовых станций в одну или несколько систем, принимаются посредством антенны 854 и обеспечиваются блоку 856 приемника (RCVR). Блок 856 приемника обрабатывает (например, фильтрует, усиливает и преобразовывает с понижением частоты) принятый сигнал, оцифровывает обработанный сигнал и предоставляет выборку данных модемному процессору 850 для демодуляции и декодирования.
Блок 830 обеспечения секретности выполняет безопасную обработку и обеспечивает безопасное сохранение для устройства 130. Для варианта осуществления, изображенного на Фиг.8, блок 830 обеспечения секретности включает в себя процессор 832, выполняющий безопасную обработку и, возможно, другую обработку, постоянное запоминающее устройство 834 (ROM), сохраняющее код начальной загрузки, блок 836, сохраняющий идентификатор аппаратных средств для устройства 130, и блок 838, сохраняющий открытый ключ для центра 120 сертификации. Блоки 836 и 838 могут быть реализованы c постоянным запоминающим устройством (ROM), плавкими предохранителями и так далее. Код начальной загрузки, находящийся в постоянном запоминающем устройстве 834 (ROM), идентификатор аппаратных средств, находящийся в блоке 836, и СА открытый ключ, находящийся в блоке 838, соответствуют коду 134 начальной загрузки, идентификатору 136 аппаратных средств и СА открытому ключу 138, соответственно, как изображено на Фиг.1.
Код начальной загрузки, идентификатор аппаратных средств и СА открытый ключ составляют защищенные данные для устройства 130 и сохранены безопасным способом (например, внедрены) в одном или нескольких защищенных блоках памяти, находящихся в блоке 830 обеспечения секретности. Таким путем, защищенные данные защищены от атак и объектов имитации соединения (спуфинга) (например, взломы кодов программного обеспечения, вирусы и так далее), которые могут совершить попытку проникновения в блок 830 обеспечения секретности, с целью умышленной порчи защищенных данных. Блок 830 обеспечения секретности может быть реализован в отдельной интегральной схеме (ИС). Также блок 830 обеспечения секретности может быть реализован в качестве блока или модуля обеспечения секретности и/или сопротивления вмешательству.
Блок 830 обеспечения секретности может быть частью специализированной интегральной схемы (ASIC), которая выполняет различные функции для беспроводного устройства 130. Например, специализированная интегральная схема может включать в себя блок 830 обеспечения секретности, модемный процессор 850 и так далее. Процессор 832 выполняет безопасную обработку, для подтверждения правильности кода программного обеспечения при начальной загрузке. Процессор 832 также может выполнять другие функции в течение нормальной работы. Таким образом, процессор 832 не должен быть специализированным (выделенным) блоком, выполняющим только безопасную обработку. Например, процессор 832 может самостоятельно быть аппаратными средствами, которые выполняют весь или части кода программного обеспечения, и с которыми связан код программного обеспечения.
Контроллер 840 выполняет различные функции, а также координирует и управляет работой различных процессоров в устройстве 130. Например, контроллер 840 может предписать модемному процессору 850 обработать данные для путей приема и передачи. Блок 842 памяти сохраняет код программы и данные, используемые различными процессорами в устройстве 130. Например, блок 842 памяти может сохранить образ кода с кодом программного обеспечения, идентификатор программного обеспечения, подпись кода и сертификат. Блок 844 ввода/вывода (I/O) обеспечивает интерфейс внешним блокам. Например, блок 844 ввода/вывода (I/O) может обеспечить механизм (например, порт, такой как Универсальной Последовательной Шины (USB)) для загрузки образа кода в устройство 130. Шина 862 соединяет различные блоки в устройстве 130.
Устройство 130 подтверждает правильность кода программного обеспечения в образе кода каждый раз при включении устройства для гарантии того, что код программного обеспечения является правильной версией. Процессор 832 выполняет подтверждение правильности на основании кода начальной загрузки, сохраненного в ROM 834, и использует идентификатор аппаратных средств и СА открытый ключ, встроенные в блок 830 обеспечения секретности, как описано ниже. Это позволяет процессору 832 устанавливать доверие в беспроводном устройстве 130 от известного состояния, которое определено кодом начальной загрузки, идентификатором аппаратных средств и СА открытым ключом. Процессор 832 санкционирует выполнение кода программного обеспечения только после подтверждения правильности программного обеспечения.
Фиг.9 изображает блок 900 обработки данных, служащий для подтверждения правильности кода программного обеспечения в образе кода на основании подписи кода. Блок 900 обработки данных может быть реализован посредством процессора 832, изображенного на Фиг.8. В блоке 900 хэш-функция 910 принимает и хэширует код программного обеспечения из образа кода и обеспечивает профиль кода. Хэш-функция 910 выполняет тот же самый алгоритм хэширования, который используется для хэш-функции 310, изображенной на Фиг.3. Хэш-функция 920 принимает и хэширует профиль кода из хэш-функции 910, идентификатор программного обеспечения из образа кода и идентификатор аппаратных средств из блока 830 обеспечения секретности, и обеспечивает «восстановленный» профиль (D') подписи. Хэш-функция 920 выполняет тот же самый алгоритм хэширования, который используется для блока 410 хэширования, изображенного на Фиг.4.
Блок 930 декодирования принимает и декодирует подпись кода из образа кода с кодом открытого ключа из сертификата и обеспечивает «принятый» профиль (D) подписи. Затем блок 940 сравнения сравнивает восстановленный профиль (D') подписи с принятым профилем (D) подписи и обеспечивает флажок подтверждения правильности, который устанавливает значение «истина», если эти два профиля соответствуют друг другу, а в противном случае устанавливает значение «ложь».
Фиг.10 изображает блок-схему процесса 1000 подтверждения правильности кода программного обеспечения в образе кода посредством беспроводного устройства 130. Процесс 1000 может быть выполнен посредством процессора 832 на основании кода начальной загрузки, он также упоминается в настоящем описании как процесс начальной загрузки.
Первоначально сертификат получают из образа кода и подтверждают его правильность, используя СА открытый ключ, который сохранен в устройстве 130 (блок 1012). Сертификат содержит СА подпись, которая была создана с СА личным ключом центра 120 сертификации. Эта СА подпись может быть аутентифицирована с использованием соответствующего СА открытого ключа, который встроен в модуль 830 обеспечения секретности. Затем осуществляется определение того, действительно ли подтверждена СА подпись (блок 1014). Если ответ «Нет», то создается сообщение об ошибке (блок 1016), и процесс начальной загрузки заканчивается.
Если СА подпись подтверждена, то подпись кода подтверждает правильность в блоке 1020. Для подтверждения правильности подписи кода код программного обеспечения получают из образа кода, а затем хэшируют, используя ту же самую хэш-функцию 310, используемую логическим объектом 110 генератора кода для получения профиля кода (блок 1022). Идентификатор программного обеспечения получают из образа кода, а идентификатор аппаратных средств получают из блока 830 обеспечения секретности. Профиль кода из блока 1022, идентификатор программного обеспечения и идентификатор аппаратных средств затем хэшируют, используя ту же самую хэш-функцию 410, используемую центром 120 сертификации для получения восстановленного профиля (D') подписи (блок 1024).
Код открытого ключа получают из сертификата, а подпись кода получают из образа кода. Так как СА подпись создана согласно коду открытого ключа, код открытого ключа аутентифицирован, если СА подпись аутентифицирована посредством СА открытого ключа. Затем подпись кода декодируется с кодом открытого ключа, для получения «принятого» профиля (D) подписи, который используется центром 120 сертификации для создания подписи кода (блок 1026). Затем принятый профиль (D) подписи сравнивается с восстановленным профилем (D') подписи (блок 1028).
Затем осуществляется определение, действительно ли принятый профиль подписи соответствует восстановленному профилю подписи (блок 1030). Если ответ «Нет», то создается сообщение об ошибке (блок 1016), и процесс начальной загрузки заканчивается. В противном случае, код программного обеспечения указывается как подтвержденный и может в дальнейшем быть выполнен (блок 1032), затем процесс начальной загрузки заканчивается.
Описанные здесь способы привязки программного обеспечения к аппаратным средствам могут быть использованы для различных областей применений. Некоторые иллюстративные области применения описаны ниже.
Одна область применения служит для загрузки программного обеспечения в беспроводное устройство через незащищенную линию связи. Может быть желательным обновление программного обеспечения для беспроводного устройства, например, для фиксирования ошибок, обеспечения новых возможностей и выполняемых функций и так далее. Описанные здесь способы могут быть использованы для посылки новых версий программного обеспечения через незащищенную линию связи (например, беспроводную линию связи) на беспроводное устройство. Беспроводное устройство может утвердить принятое программное обеспечение в качестве исходящих из легального источника и немодифицированных, используя криптографические способы, как описано выше. После подтверждения правильности беспроводное устройство выполняет только программное обеспечение.
Другая область применения служит для принудительного санкционирования (например, лицензирования) использования различных платформ аппаратных средств. Первый объект может иметь различные платформы аппаратных средств, причем каждой платформе назначается различный идентификатор аппаратных средств. Первый объект может предоставить второй объект лицензий для некоторых платформ аппаратных средств и не предоставить лицензий для некоторых других платформ аппаратных средств. Информация о лицензировании может быть сохранена в таблице-конфигураторе, поддерживаемой центром 120 сертификации. Всякий раз, когда второй объект запрашивает подпись кода для конкретного программного обеспечения и конкретной платформы аппаратных средств, центр 120 сертификации создает подпись кода только в случае, если второй объект лицензирован для требуемой платформы аппаратных средств. Этим путем, обладатель лицензии не может удалить лицензию для базовой платформы аппаратных средств, а затем осуществить попытку установить и использовать программное обеспечение на более сложной платформе аппаратных средств.
В этой же области применения, служащей для принудительного санкционирования (например, лицензирования) использования данной платформы аппаратных средств, аппаратные средства для беспроводного устройства могут быть сконструированы с возможностью выполнения широкого набора функций. Эти функции можно выборочно разрешить или запретить посредством программного обеспечения. Можно предоставить различные лицензии для различных наборов функций. Каждый из этих наборов функций может быть связан с другой программной версией. Центр сертификации может обслуживать список обладателей лицензий, их определенные лицензии и разрешенную программную версию(и) для каждого обладателя лицензии. Затем центр сертификации создает подписи только для лицензированной версии(й) кода программного обеспечения. Таким образом, обладатель лицензии не может удалить лицензию для базового набора функций, а затем осуществить попытку установить и использовать программное обеспечение для более сложного набора функций.
Описанные здесь способы привязки программного обеспечения к аппаратным средствам могут быть реализованы различными средствами в различных объектах. Например, эти способы могут быть реализованы с аппаратными средствами, встроенным программным обеспечением, программным обеспечением или с их комбинациями. В реализации аппаратных средств используются процессоры для достижения привязки программного обеспечения к аппаратным средствам (в логическом объекте 110 генератора кода и центре 120 сертификации), а подтверждение правильности привязки (в устройстве 130) может быть реализовано в специализированных интегральных схемах (ASIC), цифровых процессорах обработки сигналов (DSP), устройствах цифровой обработки сигналов (DSPD), программируемых логических устройствах (PLD), программируемых вентильных матрицах (FPGA), процессорах, контроллерах, микроконтроллерах, микропроцессорах, других электронных блоках, сконструированных для выполнения описанных здесь функций или их комбинаций.
Описанные здесь способы для реализации программного обеспечения могут быть реализованы с модулями (например, процедурами, функциями и так далее), выполняющими описанные здесь функции. Коды программного обеспечения могут быть сохранены в блоках памяти (например, блоках 812, 822 и 842 памяти, изображенных на Фиг.8) и выполняться посредством процессоров (например, контроллерами 810, 820 и 840 и процессором 832). Блоки памяти могут быть реализованы в процессорах или внешним способом на процессоры, в этом случае они могут быть коммуникабельно соединены с процессорами через различные средства, как известно в данной области техники.
Предыдущее описание раскрытых вариантов осуществления обеспечивается для того, чтобы дать возможность любому специалисту в данной области техники создать или использовать данное изобретение. Различные модификации этих вариантов осуществления будут очевидны специалистам в данной области техники, и общие принципы, определенные здесь, могут быть применены к другим вариантам осуществления, не отступая от сущности или объема изобретения. Таким образом, данное изобретение не предназначено, чтобы быть ограниченным раскрытыми здесь вариантами осуществления, но в то же время должно получить самые широкие возможности, в соответствии с раскрытыми здесь принципами и новыми признаками.

Claims (26)

1. Способ подтверждения правильности программного обеспечения для аппаратных средств, заключающийся в том, что аутентифицируют сертификат с первым открытым ключом; получают подпись, созданную для программного обеспечения, первый идентификатор для программного обеспечения и второй идентификатор для аппаратных средств, причем подпись создают с использованием криптографии и используют для подтверждения правильности привязки программного обеспечения к аппаратным средствам; и подтверждают правильность подписи со вторым открытым ключом из сертификата, причем привязку программного обеспечения к аппаратным средствам подтверждают лишь в том случае, если подпись подтверждена.
2. Способ по п.1, в котором программное обеспечение выполняют посредством аппаратных средств только лишь в том случае, если привязка подтверждена.
3. Способ по п.1, в котором подтверждение правильности подписи включает в себя этапы, на которых хэшируют информацию для программного обеспечения, первый идентификатор и второй идентификатор для получения первого профиля, декодируют подпись со вторым открытым ключом для получения второго профиля, и сравнивают первый профиль со вторым профилем, причем подпись подтверждают лишь в том случае, если первый профиль соответствует второму профилю.
4. Способ по п.3, в котором подтверждение правильности подписи дополнительно включает в себя этап, на котором хэшируют программное обеспечение для получения третьего профиля, используемого в качестве информации для программного обеспечения.
5. Способ по п.1, в котором подпись создают с использованием схемы криптографии, которая включает в себя код аутентичности сообщения на основе хэширования (НМАС).
6. Способ по п.1, в котором первый идентификатор представляет собой номер версии выпуска программного обеспечения.
7. Способ по п.1, в котором аппаратные средства представляют собой интегральную схему конкретной конструкции.
8. Способ по п.1, в котором второй идентификатор представляет собой серийный номер или номер компонента аппаратных средств.
9. Устройство, для подтверждения правильности программного обеспечения для аппаратных средств, содержащее первый блок памяти, сконфигурированный с возможностью сохранения первого открытого ключа; и процессор, выполненный с возможностью аутентификации сертификата с первым открытым ключом, получения подписи, созданной для программного обеспечения, первого идентификатора для программного обеспечения и второго идентификатора для аппаратных средств, причем подпись создают с использованием криптографии и используют для подтверждения правильности привязки программного обеспечения к аппаратным средствам, и подтверждения правильности подписи со вторым открытым ключом из сертификата, причем привязка программного обеспечения к аппаратным средствам является подтвержденной в том случае, если подпись подтверждена.
10. Устройство по п.9, в котором первый блок памяти дополнительно сконфигурирован с возможностью сохранения второго идентификатора для аппаратных средств, и в котором процессор дополнительно выполнен с возможностью хэширования информации для программного обеспечения, первого идентификатора и второго идентификатора из первого блока памяти для получения первого профиля, декодирования подписи со вторым открытым ключом для получения второго профиля, и сравнения первого профиля со вторым профилем, причем подпись является подтвержденной лишь в том случае, если первый профиль соответствует второму профилю.
11. Устройство по п.9, дополнительно содержащее второй блок памяти, сконфигурированный с возможностью сохранения кода начальной загрузки, выполняемого процессором для аутентификации сертификата и подтверждения правильности подписи.
12. Устройство по п.11, в котором первый и второй блоки памяти и процессор реализованы в интегральной схеме.
13. Устройство по п.9, реализованное в устройстве радиосвязи.
14. Устройство для подтверждения правильности программного обеспечения для аппаратных средств, содержащее средство для аутентификации сертификата с первым открытым ключом; средство для получения подписи, созданной для программного обеспечения, первого идентификатора для программного обеспечения и второго идентификатора для аппаратных средств, причем подпись создают с использованием криптографии и используют для подтверждения правильности привязки программного обеспечения к аппаратным средствам; и средство для подтверждения правильности подписи со вторым открытым ключом из сертификата, причем привязка программного обеспечения к аппаратным средствам является подтвержденной лишь в том случае, если подпись подтверждена.
15. Устройство по п.14, в котором средство для подтверждения правильности подписи включает в себя средство для хэширования информации для программного обеспечения, первого идентификатора и второго идентификатора для получения первого профиля, средство для декодирования подписи со вторым открытым ключом для получения второго профиля, и средство для сравнения первого профиля со вторым профилем, причем подпись является подтвержденной лишь в том случае, если первый профиль соответствует второму профилю.
16. Устройство для привязки программного обеспечения к аппаратным средствам, содержащее блок связи, выполненный с возможностью получения информации от логического объекта генератора кода для кода программного обеспечения, первого идентификатора для программного обеспечения и второго идентификатора для аппаратных средств; и контроллер, выполненный с возможностью создания подписи для программного обеспечения, первого идентификатора и второго идентификатора с использованием криптографии, причем подпись используют для подтверждения правильности привязки программного обеспечения к аппаратным средствам.
17. Устройство по п.16, в котором контроллер дополнительно выполнен с возможностью определения, действительно ли разрешена привязка программного обеспечения к аппаратным средствам, и создания подписи только лишь в том случае, если привязка разрешена.
18. Устройство по п.16, в котором контроллер дополнительно выполнен с возможностью аутентификации логического объекта генератора кода до создания подписи.
19. Устройство по п.16, дополнительно содержащее блок памяти, выполненный с возможностью сохранения таблицы-конфигуратора разрешенных привязок, по меньшей мере, между одной версией программного обеспечения и, по меньшей мере, одной платформой аппаратных средств, при этом контроллер дополнительно выполнен с возможностью определения, действительно ли разрешена привязка программного обеспечения к аппаратным средствам, на основании таблицы-конфигуратора.
20. Способ привязки программного обеспечения к аппаратным средствам, заключающийся в том, что обеспечивают информацию для программного обеспечения; обеспечивают первый идентификатор для программного обеспечения; обеспечивают второй идентификатор для аппаратных средств; принимают подпись, созданную для программного обеспечения, первый идентификатор и второй идентификатор, причем подпись создают с использованием криптографии и используют для подтверждения правильности привязки программного обеспечения к аппаратным средствам; принимают сертификат, содержащий криптографическую информацию, используемую для подтверждения правильности подписи; и формируют образ, содержащий программное обеспечение, подпись и сертификат.
21. Способ по п.20, в котором дополнительно хэшируют программное обеспечение для получения первого профиля, причем первый профиль обеспечивают в качестве информации для программного обеспечения.
22. Способ по п.21, в котором подпись создают с использованием схемы криптографии, которая включает в себя код аутентичности сообщения на основе хэширования (НМАС), причем НМАС принимает первый профиль, первый идентификатор и второй идентификатор в качестве входных сигналов и обеспечивает второй профиль, используемый для создания подписи.
23. Устройство для привязки программного обеспечения к аппаратным средствам, содержащее блок связи, выполненный с возможностью обеспечения информации для программного обеспечения, первого идентификатора для программного обеспечения и второго идентификатора для аппаратных средств, приема подписи, созданной для программного обеспечения, первого идентификатора и второго идентификатора, причем подпись создают с использованием криптографии и используют для подтверждения правильности привязки программного обеспечения к аппаратным средствам, и приема сертификата, содержащего криптографическую информацию, используемую для подтверждения правильности подписи; и контроллер, выполненный с возможностью формирования образа, содержащего программное обеспечение, подпись, и сертификат.
24. Устройство по п.23, в котором контроллер дополнительно выполнен с возможностью хэширования программного обеспечения для получения профиля, который обеспечивают в качестве информации для программного обеспечения.
25. Устройство для привязки программного обеспечения к аппаратным средствам, содержащее средство для обеспечения информации для программного обеспечения; средство для обеспечения первого идентификатора для программного обеспечения; средство для обеспечения второго идентификатора для аппаратных средств; средство для приема подписи, созданной для программного обеспечения, первого идентификатора и второго идентификатора, причем подпись создают с использованием криптографии и используют для подтверждения правильности привязки программного обеспечения к аппаратным средствам; средство для приема сертификата, содержащего криптографическую информацию, используемую для подтверждения правильности подписи; и средство для формирования образа, содержащего программное обеспечение, подпись, и сертификат.
26. Устройство по п.25, дополнительно содержащее средство для хэширования программного обеспечения для получения первого профиля, причем первый профиль обеспечивают в качестве информации для программного обеспечения.
RU2005134362/09A 2003-04-08 2004-04-08 Привязка программного обеспечения к аппаратным средствам с использованием криптографии RU2356169C2 (ru)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US46134103P 2003-04-08 2003-04-08
US60/461,341 2003-04-08
US10/815,256 2004-03-31
US10/815,256 US8041957B2 (en) 2003-04-08 2004-03-31 Associating software with hardware using cryptography

Publications (2)

Publication Number Publication Date
RU2005134362A RU2005134362A (ru) 2006-05-27
RU2356169C2 true RU2356169C2 (ru) 2009-05-20

Family

ID=33555123

Family Applications (1)

Application Number Title Priority Date Filing Date
RU2005134362/09A RU2356169C2 (ru) 2003-04-08 2004-04-08 Привязка программного обеспечения к аппаратным средствам с использованием криптографии

Country Status (6)

Country Link
US (1) US8041957B2 (ru)
EP (1) EP1618451B1 (ru)
JP (1) JP4814083B2 (ru)
CA (1) CA2521821A1 (ru)
RU (1) RU2356169C2 (ru)
WO (1) WO2004092886A2 (ru)

Families Citing this family (110)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7885896B2 (en) 2002-07-09 2011-02-08 Avaya Inc. Method for authorizing a substitute software license server
US8041642B2 (en) 2002-07-10 2011-10-18 Avaya Inc. Predictive software license balancing
US7707116B2 (en) * 2002-08-30 2010-04-27 Avaya Inc. Flexible license file feature controls
US7698225B2 (en) * 2002-08-30 2010-04-13 Avaya Inc. License modes in call processing
US7681245B2 (en) 2002-08-30 2010-03-16 Avaya Inc. Remote feature activator feature extraction
US7966520B2 (en) * 2002-08-30 2011-06-21 Avaya Inc. Software licensing for spare processors
US7890997B2 (en) * 2002-12-26 2011-02-15 Avaya Inc. Remote feature activation authentication file system
US7260557B2 (en) * 2003-02-27 2007-08-21 Avaya Technology Corp. Method and apparatus for license distribution
US20040250073A1 (en) * 2003-06-03 2004-12-09 Cukier Johnas I. Protocol for hybrid authenticated key establishment
US20050171961A1 (en) * 2004-01-30 2005-08-04 Microsoft Corporation Fingerprinting software applications
US7836121B2 (en) * 2004-04-14 2010-11-16 Ipass Inc. Dynamic executable
US20050235357A1 (en) * 2004-04-19 2005-10-20 Securemedia International Preventing cloning of high value software using embedded hardware and software functionality
US8554889B2 (en) * 2004-04-21 2013-10-08 Microsoft Corporation Method, system and apparatus for managing computer identity
US20060242406A1 (en) 2005-04-22 2006-10-26 Microsoft Corporation Protected computing environment
GB2414138B (en) * 2004-05-12 2006-11-22 Nec Technologies Software update apparatus and method
US7818574B2 (en) * 2004-09-10 2010-10-19 International Business Machines Corporation System and method for providing dynamically authorized access to functionality present on an integrated circuit chip
US7707405B1 (en) 2004-09-21 2010-04-27 Avaya Inc. Secure installation activation
US8229858B1 (en) 2004-09-30 2012-07-24 Avaya Inc. Generation of enterprise-wide licenses in a customer environment
US7747851B1 (en) * 2004-09-30 2010-06-29 Avaya Inc. Certificate distribution via license files
US10477151B2 (en) 2004-10-18 2019-11-12 Inside Secure Method and apparatus for supporting multiple broadcasters independently using a single conditional access system
US8347078B2 (en) 2004-10-18 2013-01-01 Microsoft Corporation Device certificate individualization
US8243925B2 (en) * 2004-10-18 2012-08-14 Syphermedia International, Inc. Method and apparatus for supporting multiple broadcasters independently using a single conditional access system
US8336085B2 (en) 2004-11-15 2012-12-18 Microsoft Corporation Tuning product policy using observed evidence of customer behavior
US20060106920A1 (en) * 2004-11-15 2006-05-18 Microsoft Corporation Method and apparatus for dynamically activating/deactivating an operating system
US20060107327A1 (en) * 2004-11-16 2006-05-18 Sprigg Stephen A Methods and apparatus for enforcing application level restrictions on local and remote content
US8108691B2 (en) 2005-02-07 2012-01-31 Sandisk Technologies Inc. Methods used in a secure memory card with life cycle phases
US8321686B2 (en) 2005-02-07 2012-11-27 Sandisk Technologies Inc. Secure memory card with life cycle phases
US8423788B2 (en) 2005-02-07 2013-04-16 Sandisk Technologies Inc. Secure memory card with life cycle phases
US8666900B1 (en) * 2005-03-30 2014-03-04 Intuit Inc. Secure product enablement over channels with narrow bandwidth
US9363481B2 (en) 2005-04-22 2016-06-07 Microsoft Technology Licensing, Llc Protected media pipeline
US7743409B2 (en) 2005-07-08 2010-06-22 Sandisk Corporation Methods used in a mass storage device with automated credentials loading
US7814023B1 (en) 2005-09-08 2010-10-12 Avaya Inc. Secure download manager
JP5089593B2 (ja) * 2005-09-14 2012-12-05 サンディスク テクノロジィース インコーポレイテッド メモリカードコントローラファームウェアのハードウェアドライバ完全性チェック
US20070061597A1 (en) 2005-09-14 2007-03-15 Micky Holtzman Secure yet flexible system architecture for secure devices with flash mass storage memory
US8966284B2 (en) 2005-09-14 2015-02-24 Sandisk Technologies Inc. Hardware driver integrity check of memory card controller firmware
US7921303B2 (en) 2005-11-18 2011-04-05 Qualcomm Incorporated Mobile security system and method
DE602005019307D1 (de) * 2005-11-29 2010-03-25 Research In Motion Ltd Überprüfung von drahtloser Zugangssoftware mittels Hashing von Kennungen
US7389426B2 (en) * 2005-11-29 2008-06-17 Research In Motion Limited Mobile software terminal identifier
US20070162964A1 (en) * 2006-01-12 2007-07-12 Wang Liang-Yun Embedded system insuring security and integrity, and method of increasing security thereof
US7970138B2 (en) 2006-05-26 2011-06-28 Syphermedia International Method and apparatus for supporting broadcast efficiency and security enhancements
US20080008321A1 (en) * 2006-07-10 2008-01-10 Syphermedia International, Inc. Conditional access enhancements using an always-on satellite backchannel link
US20080080711A1 (en) * 2006-09-28 2008-04-03 Syphermedia International, Inc. Dual conditional access module architecture and method and apparatus for controlling same
US7900032B2 (en) * 2006-10-06 2011-03-01 Broadcom Corporation Method and system for NAND flash support in autonomously loaded secure reprogrammable system
US9277259B2 (en) 2006-10-13 2016-03-01 Syphermedia International, Inc. Method and apparatus for providing secure internet protocol media services
US8761393B2 (en) * 2006-10-13 2014-06-24 Syphermedia International, Inc. Method and apparatus for providing secure internet protocol media services
US9135413B2 (en) * 2006-11-02 2015-09-15 Bally Gaming, Inc. Data protection in a wagering game machine
US9509512B1 (en) * 2006-12-22 2016-11-29 Marvell International Ltd. Message digest generator
US8423794B2 (en) 2006-12-28 2013-04-16 Sandisk Technologies Inc. Method and apparatus for upgrading a memory card that has security mechanisms for preventing copying of secure content and applications
US8254568B2 (en) 2007-01-07 2012-08-28 Apple Inc. Secure booting a computing device
US8239688B2 (en) 2007-01-07 2012-08-07 Apple Inc. Securely recovering a computing device
US8307411B2 (en) * 2007-02-09 2012-11-06 Microsoft Corporation Generic framework for EAP
US9319418B2 (en) 2007-04-23 2016-04-19 Thomson Licensing Method and apparatus for software downloads in a network
US8560823B1 (en) 2007-04-24 2013-10-15 Marvell International Ltd. Trusted modular firmware update using digital certificate
US9112681B2 (en) * 2007-06-22 2015-08-18 Fujitsu Limited Method and apparatus for secure information transfer to support migration
US8620818B2 (en) * 2007-06-25 2013-12-31 Microsoft Corporation Activation system architecture
US8528109B2 (en) * 2007-10-09 2013-09-03 Microsoft Corporation Optimizing amount of data passed during software license activation
US20090119744A1 (en) * 2007-11-01 2009-05-07 Microsoft Corporation Device component roll back protection scheme
AU2009222009B2 (en) * 2008-03-04 2013-02-07 Apple Inc. System and method of authorizing execution of software code in a device based on entitlements granted to a carrier
US8150039B2 (en) 2008-04-15 2012-04-03 Apple Inc. Single security model in booting a computing device
US20090259855A1 (en) * 2008-04-15 2009-10-15 Apple Inc. Code Image Personalization For A Computing Device
US20090262926A1 (en) * 2008-04-16 2009-10-22 Infineon Technologies Ag Method and apparatus for generating a cryptographic key
JP2009260688A (ja) * 2008-04-17 2009-11-05 Dialogue Technology Corp ワイヤレス広域通信網におけるリモート端末装置のセキュリティシステムとその方法
US9256728B2 (en) * 2008-11-26 2016-02-09 Nokia Technologies Oy Method, apparatus, and computer program product for managing software versions
US8442218B2 (en) * 2009-02-27 2013-05-14 Red Hat, Inc. Method and apparatus for compound hashing via iteration
US8984296B1 (en) * 2009-03-29 2015-03-17 Cypress Semiconductor Corporation Device driver self authentication method and system
US20110099423A1 (en) * 2009-10-27 2011-04-28 Chih-Ang Chen Unified Boot Code with Signature
EP2341459A1 (en) * 2010-01-04 2011-07-06 Thomson Licensing Method and device for detecting if a computer file has been copied and method and device for enabling such detection
US8955152B1 (en) 2010-09-07 2015-02-10 Symantec Corporation Systems and methods to manage an application
US9043863B1 (en) 2010-09-07 2015-05-26 Symantec Corporation Policy enforcing browser
US8832855B1 (en) 2010-09-07 2014-09-09 Symantec Corporation System for the distribution and deployment of applications with provisions for security and policy conformance
US20120158415A1 (en) * 2010-12-17 2012-06-21 Flexera Software Inc. method and system for license server synchronization
WO2012122994A1 (en) * 2011-03-11 2012-09-20 Kreft Heinz Off-line transfer of electronic tokens between peer-devices
WO2012152979A1 (en) * 2011-05-06 2012-11-15 Nokia Corporation Determination of apparatus configuration and programming data
US20130031371A1 (en) * 2011-07-25 2013-01-31 Alcatel-Lucent Usa Inc. Software Run-Time Provenance
US9183393B2 (en) * 2012-01-12 2015-11-10 Facebook, Inc. Multiple system images for over-the-air updates
US8631239B2 (en) * 2012-01-12 2014-01-14 Facebook, Inc. Multiple system images for over-the-air updates
US9760939B2 (en) 2012-03-23 2017-09-12 The Toronto-Dominion Bank System and method for downloading an electronic product to a pin-pad terminal using a directly-transmitted electronic shopping basket entry
US9842335B2 (en) 2012-03-23 2017-12-12 The Toronto-Dominion Bank System and method for authenticating a payment terminal
US9152957B2 (en) 2012-03-23 2015-10-06 The Toronto-Dominion Bank System and method for downloading an electronic product to a pin-pad terminal after validating an electronic shopping basket entry
US8954732B1 (en) 2012-06-27 2015-02-10 Juniper Networks, Inc. Authenticating third-party programs for platforms
GB2508052A (en) 2012-11-18 2014-05-21 Nds Ltd Glitch resistant device
US9116841B2 (en) * 2012-11-28 2015-08-25 Infineon Technologies Ag Methods and systems for securely transferring embedded code and/or data designed for a device to a customer
EP2750065A1 (en) * 2012-12-27 2014-07-02 Telefonica S.A. Method, system and computer program product for managing operations of service terminals
US9609080B2 (en) * 2013-03-12 2017-03-28 Cyberlink Corp. Systems and methods for device identity delegation for application software
US9088574B2 (en) * 2013-07-18 2015-07-21 International Business Machines Corporation Subscriber identity module-based authentication of a wireless device and applications stored thereon
EP3025235B1 (en) 2013-07-25 2020-10-28 Siemens Healthcare Diagnostics Inc. Anti-piracy protection for software
EP2854066B1 (en) * 2013-08-21 2018-02-28 Nxp B.V. System and method for firmware integrity verification using multiple keys and OTP memory
CN103455401B (zh) * 2013-08-25 2015-11-04 浙江大学 一种dsp和fpga紧耦合架构的协同验证方法
US9390246B2 (en) * 2013-09-25 2016-07-12 Intel Corporation Creating secure original equipment manufacturer (OEM) identification
US9961073B2 (en) * 2013-09-30 2018-05-01 Digicert, Inc. Dynamic certificate generation on a certificate authority cloud
US9760501B2 (en) * 2014-11-05 2017-09-12 Google Inc. In-field smart device updates
EP3197089B1 (en) * 2014-11-06 2019-08-07 Huawei Technologies Co., Ltd. Secure information configuration method, secure authentication method and related chip
US10149159B1 (en) * 2015-03-19 2018-12-04 Proxidyne, Inc. Trusted beacon system and method
US9887842B2 (en) 2015-06-30 2018-02-06 International Business Machines Corporation Binding software application bundles to a physical execution medium
EP3378190A4 (en) * 2015-11-22 2019-06-26 Unbound Tech Ltd METHOD OF IMPLEMENTING KEY MESSAGE AUTHENTICATION CODE (HMAC) USING A MULTIPARTITE CALCULATION WITHOUT BOOLEAN DOORS
DE102015225651A1 (de) * 2015-12-17 2017-06-22 Robert Bosch Gmbh Verfahren und Vorrichtung zum Übertragen einer Software
US10484181B2 (en) * 2016-12-12 2019-11-19 Datiphy Inc. Streaming non-repudiation for data access and data transaction
US10491401B2 (en) * 2017-02-21 2019-11-26 Google Llc Verification of code signature with flexible constraints
US10938560B2 (en) 2017-06-21 2021-03-02 Microsoft Technology Licensing, Llc Authorization key escrow
US10558812B2 (en) 2017-06-21 2020-02-11 Microsoft Technology Licensing, Llc Mutual authentication with integrity attestation
US10440006B2 (en) 2017-06-21 2019-10-08 Microsoft Technology Licensing, Llc Device with embedded certificate authority
US11374760B2 (en) 2017-09-13 2022-06-28 Microsoft Technology Licensing, Llc Cyber physical key
US10638313B2 (en) * 2017-10-26 2020-04-28 Robert Bosch Gmbh Systems and methods for confirming a cryptographic key
TWI716918B (zh) * 2019-06-27 2021-01-21 旺宏電子股份有限公司 電子裝置、記憶體裝置及其記憶資料的讀取方法
US10897361B1 (en) * 2019-09-04 2021-01-19 Garantir LLC Automated hash validation
JP2022025599A (ja) * 2020-07-29 2022-02-10 キヤノン株式会社 情報処理装置、アプリケーションの起動方法及びプログラム
US20220222348A1 (en) * 2021-01-13 2022-07-14 Microsoft Technology Licensing, Llc Attesting update of a firmware layer
US11057215B1 (en) 2021-01-27 2021-07-06 Garantir LLC Automated hash validation
EP4037284A1 (de) * 2021-02-02 2022-08-03 Siemens Mobility GmbH Verfahren, vorrichtungen und computerprogrammprodukt zum ausführen einer software auf einem rechner für eine steuerung eines technischen systems, insbesondere eines systems zur bahnsteuerung
US11451402B1 (en) 2021-07-29 2022-09-20 IPAssets Technology Holdings Inc. Cold storage cryptographic authentication apparatus and system

Family Cites Families (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4658093A (en) 1983-07-11 1987-04-14 Hellman Martin E Software distribution system
US5398285A (en) * 1993-12-30 1995-03-14 Motorola, Inc. Method for generating a password using public key cryptography
US5473692A (en) 1994-09-07 1995-12-05 Intel Corporation Roving software license for a hardware agent
US5638446A (en) * 1995-08-28 1997-06-10 Bell Communications Research, Inc. Method for the secure distribution of electronic files in a distributed environment
US5805699A (en) 1996-05-20 1998-09-08 Fujitsu Limited Software copying system
JP3540543B2 (ja) 1996-05-20 2004-07-07 富士通株式会社 ソフトウェアコピー処理装置、ソフトウェアコピー処理方法およびソフトウェアをコピーするプログラムを記録したコンピュータ読み取り可能な記録媒体
JPH10301773A (ja) 1997-04-30 1998-11-13 Sony Corp 情報処理装置および情報処理方法、並びに記録媒体
JPH10311773A (ja) 1997-05-09 1998-11-24 Natl Aerospace Lab 衝撃波位置推定方法および衝撃波位置推定装置
JP2001517822A (ja) 1997-09-19 2001-10-09 パク,ヒョ,ジョーン 独立的ソフトウェア登録サーバを利用したソフトウェア使用権管理システム
US6243468B1 (en) * 1998-04-29 2001-06-05 Microsoft Corporation Software anti-piracy system that adapts to hardware upgrades
JP3713141B2 (ja) 1998-05-19 2005-11-02 インターナショナル・ビジネス・マシーンズ・コーポレーション プログラムの不正実行防止方法
US6510236B1 (en) * 1998-12-11 2003-01-21 International Business Machines Corporation Authentication framework for managing authentication requests from multiple authentication devices
US6711684B1 (en) 1999-06-08 2004-03-23 General Instrument Corporation Variable security code download for an embedded processor
US6460023B1 (en) 1999-06-16 2002-10-01 Pulse Entertainment, Inc. Software authorization system and method
US6728880B1 (en) * 1999-09-17 2004-04-27 Adobe Systems Incorporated Secure time on computers with insecure clocks
JP3740931B2 (ja) 2000-03-01 2006-02-01 日本電信電話株式会社 アプリケーションプログラム管理方法及びシステム及びコンピュータ読み取り可能な記録媒体
US7177421B2 (en) * 2000-04-13 2007-02-13 Broadcom Corporation Authentication engine architecture and method
JP4681105B2 (ja) 2000-07-07 2011-05-11 パナソニック電工株式会社 電子機器組み込みソフトウェアの保護方法及び電子機器
US20020136401A1 (en) * 2000-07-25 2002-09-26 Jeffrey Hoffstein Digital signature and authentication method and apparatus
US6931545B1 (en) 2000-08-28 2005-08-16 Contentguard Holdings, Inc. Systems and methods for integrity certification and verification of content consumption environments
US20020150253A1 (en) * 2001-04-12 2002-10-17 Brezak John E. Methods and arrangements for protecting information in forwarded authentication messages
JP2002312052A (ja) 2001-04-13 2002-10-25 Nippon Telegraph & Telephone West Corp コンピュータプログラム、コンピュータプログラムの生成方法、コンピュータプログラムの提供方法
JP2003084984A (ja) 2001-09-12 2003-03-20 Canon Inc 情報処理装置、及び、情報処理方法、及び、制御プログラム、及び、制御プログラムを記憶した記憶媒体
US7114051B2 (en) * 2002-06-01 2006-09-26 Solid State System Co., Ltd. Method for partitioning memory mass storage device
GB2405007A (en) 2002-07-19 2005-02-16 Ritech Internat Ltd Process of encryption and decryption of data in a portable data storage device with layered memory architecture
WO2004075525A1 (en) 2003-02-20 2004-09-02 Ase R & D Europe Method for offering time on smart card and method for time registration by means of mobile communication device
TW200502758A (en) * 2003-07-07 2005-01-16 Yuen Foong Paper Co Ltd Portable secure information accessing system and method thereof
US7321957B2 (en) * 2003-10-24 2008-01-22 Intel Corporation Debugging a trusted component in a system
TWI234979B (en) 2003-12-19 2005-06-21 Inst Information Industry Digital content protection method
US20050138409A1 (en) * 2003-12-22 2005-06-23 Tayib Sheriff Securing an electronic device

Also Published As

Publication number Publication date
US20050005098A1 (en) 2005-01-06
US8041957B2 (en) 2011-10-18
WO2004092886A3 (en) 2005-12-01
RU2005134362A (ru) 2006-05-27
CA2521821A1 (en) 2004-10-28
JP4814083B2 (ja) 2011-11-09
EP1618451A2 (en) 2006-01-25
EP1618451A4 (en) 2009-05-13
WO2004092886A2 (en) 2004-10-28
JP2006522988A (ja) 2006-10-05
EP1618451B1 (en) 2014-05-07

Similar Documents

Publication Publication Date Title
RU2356169C2 (ru) Привязка программного обеспечения к аппаратным средствам с использованием криптографии
JP4912879B2 (ja) プロセッサの保護された資源へのアクセスに対するセキュリティ保護方法
CN108809646B (zh) 安全共享密钥共享系统
US9281949B2 (en) Device using secure processing zone to establish trust for digital rights management
JP6509197B2 (ja) セキュリティパラメータに基づくワーキングセキュリティキーの生成
US7886355B2 (en) Subsidy lock enabled handset device with asymmetric verification unlocking control and method thereof
US7506381B2 (en) Method for securing an electronic device, a security system and an electronic device
CN101018125B (zh) 一种基于椭圆曲线公钥密码的无线终端安全锁网锁卡方法
US7299358B2 (en) Indirect data protection using random key encryption
CN101145906B (zh) 对单向网络中的接收终端进行合法性认证的方法及系统
US8775812B2 (en) Received message verification
US20080077592A1 (en) method and apparatus for device authentication
WO2012109640A2 (en) System and method for secure software update
JP2007512787A (ja) トラステッド・モバイル・プラットフォーム・アーキテクチャ
US20130019110A1 (en) Apparatus and method for preventing copying of terminal unique information in portable terminal
CN117436043A (zh) 待执行文件的来源验证方法、设备以及可读存储介质
KR20130100032A (ko) 코드 서명 기법을 이용한 스마트폰 어플리케이션 배포 방법
CN117335991A (zh) 可执行程序的无证书认证
KR20070017455A (ko) 프로세서 내에서의 보호된 리소스들로의 억세스에 대한안전한 보호 방법

Legal Events

Date Code Title Description
MM4A The patent is invalid due to non-payment of fees

Effective date: 20110409