Система для связывания секретов с компьютерной системой, имеющей некоторый допуск на аппаратные изменения
Иллюстрации
Показать всеИзобретение относится к области защиты компьютерных систем от модификации, а именно способам для связывания программного обеспечения с заданной компьютерной системой. Технический результат, заключайщийся в предотвращении незаконного использования программного обеспечения, достигается путем генерации идентификационных данных аппаратных средств (SHWID) для заданной компьютерной системы. Идентификационные данные аппаратных средств (SHWID) связаны с соответствующим секретом. Идентификационные данные аппаратных средств (SHWID) могут использоваться для управления использованием программного обеспечения на заданной компьютерной системе в зависимости от степени изменения аппаратных средств в этой компьютерной системе. 3 н. и 11 з.п. ф-лы, 7 ил., 22 табл.
Реферат
ОБЛАСТЬ ИЗОБРЕТЕНИЯ
Изобретение относится к системам и способам связывания секрета (числа, которое может быть известно только действительным участникам криптографической системы, но неизвестно кому-либо еще) с заданной компьютерной системой. Настоящее изобретение также относится к системам и способам генерации сильнозащищенных идентификационных данных аппаратных средств для заданной компьютерной системы, причем компонент сильнозащищенных идентификационных данных аппаратных средств связан с соответствующим секретом. Результирующие сильнозащищенные идентификационные данные аппаратных средств могут использоваться для управления использованием программного обеспечения в заданной компьютерной системе в зависимости от степени изменения аппаратных средств в компьютерной системе.
ПРЕДШЕСТВУЮЩИЙ УРОВЕНЬ ТЕХНИКИ
В последние годы было предпринято значительное количество усилий для предотвращения или минимизации незаконного использования компьютерного программного обеспечения. Из-за возможности копирования и легкости распространения пиратство компьютерного программного обеспечения и незаконное использование компьютерного программного обеспечения вне контекста лицензионного соглашения является обычным явлением, что наносит значительный вред изготовителям программного обеспечения.
В попытке уменьшить случаи пиратства программного обеспечения и незаконного использования программного обеспечения вне контекста лицензионного соглашения были разработаны некоторые способы. Однако такие способы часто вызывают проблемы для законных покупателей и пользователей программного обеспечения в форме неудобства для потребителей. Например, пользователь, который модернизировал свой компьютер, должен иметь возможность законным образом повторно установить программный продукт на модернизированном компьютере. Однако доступные в настоящее время способы, возможно, или (i) не позволяют установить программное обеспечение, или (ii) вынуждают пользователя (который теперь рассержен) звонить изготовителю программного обеспечения для оказания помощи.
Соответственно, остается потребность в улучшенных технологических решениях для защиты от пиратства и незаконного использования, которые также учитывают потребности и действия законного покупателя и пользователя программного обеспечения и подстраиваются под них.
СУЩНОСТЬ ИЗОБРЕТЕНИЯ
Настоящее изобретение обращается к некоторым из обсуждаемых выше трудностей и проблем с помощью обеспечения способа связывания секрета с заданной компьютерной системой и усовершенствованных идентификационных данных аппаратных средств, связанных с упомянутым секретом. Идентификационные данные аппаратных средств настоящего изобретения обеспечивают способ для уменьшения или предотвращения пиратства в области программного обеспечения и незаконного использования программного обеспечения вне контекста лицензионного соглашения, допуская при этом модернизацию компьютеров законными пользователями программного обеспечения.
Идентификационные данные аппаратных средств, соответствующие настоящему изобретению, упоминаемые как «сильнозащищенные идентификационные данные аппаратных средств» (SHWID), содержат два отдельных компонента: (1) компонент, соответствующий идентификационным данным аппаратных средств, и (2) компонент, соответствующий неполному секрету (составляющей секрета, при этом секрет можно воссоздать только путем объединения вместе всех составляющих его неполных секретов в определенной последовательности). Объединяя (1) компонент, соответствующий идентификационным данным аппаратных средств, вместе с (2) компонентом, соответствующим неполному секрету, генерируют более безопасные и надежные сильнозащищенные идентификационные данные аппаратных средств (SHWID) для заданной компьютерной системы.
Сильнозащищенные идентификационные данные аппаратных средств (SHWID) могут использоваться для идентификации заданной аппаратной конфигурации при загрузке программного продукта в компьютер. Сильнозащищенные идентификационные данные аппаратных средств (SHWID) могут быть сохранены для будущего использования, например, (i) когда тот же самый программный продукт запускают на том же самом компьютере или разновидности того же самого компьютера, или (ii) когда тот же самый программный продукт повторно загружают на разновидности того же самого компьютера или на полностью другом компьютере. Например, когда тот же самый программный продукт запускают на том же самом компьютере или разновидности того же самого компьютера, выполняется определение относительно того, может ли быть сгенерирован секрет, связанный с исходными сильнозащищенными идентификационными данными аппаратных средств (SHWID). Если секрет может быть сгенерирован, то способ настоящего изобретения позволяет запустить программный продукт. Однако, если секрет не может быть сгенерирован, то способ настоящего изобретения не позволит запустить программный продукт из-за изменений в исходной аппаратной системе, выходящих за требуемые рамки.
Соответственно, настоящее изобретение направлено на способ связывания секрета с заданной компьютерной системой и на сильнозащищенные идентификационные данные аппаратных средств (SHWID), связанные с упомянутым секретом. Настоящее изобретение дополнительно направлено на способ предотвращения использования программного обеспечения в компьютерной системе, если секрет, связанный с исходными сильнозащищенными идентификационными данными аппаратных средств (SHWID), не может быть воссоздан в этой компьютерной системе.
Эти и другие признаки и преимущества настоящего изобретения станут очевидными после обзора нижеследующего подробного описания раскрытых вариантов осуществления и прилагаемой формулы изобретения.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
Фиг.1 - структурная схема некоторых основных компонентов примерной операционной среды для выполнения настоящего изобретения;
фиг.2 - последовательность операций, показывающая примерные этапы в определении компонента сильнозащищенных идентификационных данных аппаратных средств (SHWID), соответствующего идентификационным данным аппаратных средств;
фиг.3-4 - последовательность операций, показывающая примерные этапы определения компонента сильнозащищенных идентификационных данных аппаратных средств (SHWID), соответствующего неполному секрету;
фиг.5 - последовательность операций, показывающая примерные этапы объединения компонента, соответствующего идентификационным данным аппаратных средств, и компонента, соответствующего неполному секрету сильнозащищенных идентификационных данных аппаратных средств (SHWID); и
фиг.6-7 - последовательность операций, показывающая примерные этапы определения того, может ли программный продукт использоваться в компьютерной аппаратной системе, используя воссоздание связанного секрета в качестве фактора, разрешающего использование этого программного продукта.
ПОДРОБНОЕ ОПИСАНИЕ ИЗОБРЕТЕНИЯ
Чтобы содействовать пониманию принципов настоящего изобретения, далее следуют описания конкретных вариантов осуществления изобретения, и для описания этих конкретных вариантов осуществления используется специфический язык. Однако следует понимать, что никакого ограничения объема изобретения не подразумевается при помощи этого специфичного языка. При этом охватываются изменения, дополнительные модификации и другие подобные дополнительные применения обсуждаемых принципов настоящего изобретения, обычно совершаемые специалистами в данной области техники, для которых предназначено данное изобретение.
Настоящее изобретение направлено на способ связывания секрета с заданной компьютерной системой и на сильнозащищенные идентификационные данные аппаратных средств (SHWID), связанные с этим секретом. Секрет обычно представляет собой случайно выбранное целое число. Секрет имеет следующие характеристики:
(1) секрет S может быть вычислен на аппаратной конфигурации H;
(2) секрет S может быть вычислен на аппаратной конфигурации H1, которая является аппаратной конфигурацией H после того, как какое-то количество компонентов изменилось до необходимого порогового количества измененных компонентов; и
(3) секрет S фактически невозможно вычислить на любой другой аппаратной конфигурации H2.
Секрет может использоваться для генерации сильнозащищенных идентификационных данных аппаратных средств (SHWID) для заданной компьютерной системы, содержащей разнообразие аппаратных компонентов. Примерная компьютерная система может содержать множество классов аппаратных компонентов, которые включают в себя накопители на жестких магнитных дисках, оптические дисководы, такие как приводы компакт-дисков (CD-ROM), сетевые платы, адаптеры дисплея, постоянное запоминающее устройство (ПЗУ), оперативное запоминающее устройство (ОЗУ) и базовую систему ввода-вывода (BIOS), но не ограничены перечисленным. Примерная компьютерная система и примерная операционная среда для применения настоящего изобретения описаны ниже.
ПРИМЕРНАЯ ОПЕРАЦИОННАЯ СРЕДА
Примерные варианты осуществления настоящего изобретения будут в дальнейшем описаны со ссылкой на чертежи, на которых идентичные ссылочные номера представляют идентичные элементы на всех фигурах. Фиг.1 иллюстрирует примерную операционную среду для реализации настоящего изобретения. Примерная операционная среда включает в себя вычислительное устройство общего назначения в форме обычного персонального компьютера 20. В общем случае персональный компьютер 20 включает в себя процессор 21, системную память 22 и системную шину 23, которая связывает различные системные компоненты, включая системную память 22, с процессором 21. Системная шина 23 может иметь любой из нескольких типов шинных структур, которые включают в себя шину памяти или контроллер памяти, периферийную шину и локальную шину, использующих любую из разнообразия шинных архитектур. Системная память включает в себя постоянное запоминающее устройство (ПЗУ) 24 и оперативное запоминающее устройство (ОЗУ) 25. Базовая система ввода-вывода (BIOS) 26, содержащая основные процедуры, которые помогают перемещать информацию между элементами в пределах персонального компьютера 20, например, во время запуска, хранится в ПЗУ 24.
Персональный компьютер 20 дополнительно включает в себя накопитель 27 на жестких магнитных дисках для считывания данных с жесткого диска, который не показан, и записи данных на него, дисковод 28 для магнитного диска для считывания или записи данных на сменный магнитный диск 29 и дисковод 30 для оптического диска для считывания или записи данных на сменный оптический диск 31, такой как компакт-диск (CD-ROM) или другой оптический носитель. Накопитель 27 на жестких магнитных дисках, дисковод 28 для магнитного диска и дисковод 30 для оптического диска связаны с системной шиной 23 с помощью интерфейса 32 накопителя на жестких магнитных дисках, интерфейса 33 дисковода для магнитного диска и интерфейса 34 дисковода для оптического диска, соответственно. Хотя описанная примерная операционная среда использует жесткий диск 27, сменный магнитный диск 29 и сменный оптический диск 31, специалисты в данной области техники должны понимать, что другие типы машиночитаемых носителей, которые могут хранить данные и к которым компьютер может осуществить доступ, такие как магнитные кассеты, платы флэш-памяти, цифровые видео диски, картриджи Бернулли, ОЗУ, ПЗУ и т.п., могут также использоваться в примерной операционной среде. Устройства и соответствующие им машиночитаемые носители обеспечивают энергонезависимое хранение машиноисполняемых команд, структур данных, модулей программ и других данных для персонального компьютера 20. Например, один или более файлов 60 данных (не показаны) могут храниться в ОЗУ 25 и/или в накопителе 27 на жестких магнитных дисках персонального компьютера 20.
На жестком диске 27, магнитном диске 29, оптическом диске 31, в ПЗУ 24 или ОЗУ 25 может храниться множество модулей программ, которые включают в себя, но не в ограничительном смысле, операционную систему 35, модуль 36 прикладной программы, другие модули 37 программ и данные 38 программ. Модули программ включают в себя процедуры, подпрограммы, программы, объекты, компоненты, структуры данных и т.д., которые выполняют определенные задачи или воплощают определенные абстрактные типы данных. Аспекты настоящего изобретения могут быть реализованы как неотъемлемая часть модуля 36 прикладной программы или как часть другого модуля 37 программ.
Пользователь может вводить команды и информацию в персональный компьютер 20 через устройства ввода данных, такие как клавиатура 40 и указательное устройство 42. Другие устройства ввода данных (не показаны) могут включать в себя микрофон, джойстик, игровую клавиатуру, спутниковую антенну, сканер или подобные им устройства. Эти и другие устройства ввода данных часто соединяются с процессором 22 через интерфейс 46 последовательного порта, который присоединен к системной шине 23, но могут соединяться с помощью других интерфейсов, таких как параллельный порт, игровой порт, универсальная последовательная шина (USB) или подобные им. Монитор 47 или другой тип устройства отображения может также соединяться с системной шиной 23 через интерфейс, такой как видеоадаптер 48. В дополнение к монитору, персональные компьютеры обычно включают в себя другие периферийные устройства вывода (не показаны), такие как громкоговорители и принтеры.
Персональный компьютер 20 может работать в сетевой среде, используя логические соединения к одним или более удаленным компьютерам 49. Удаленный компьютер 49 может быть другим персональным компьютером, сервером, клиентом, маршрутизатором, сетевым ПК, одноранговым устройством сети или другим обычным сетевым узлом. Хотя удаленный компьютер 49 обычно включает в себя многие или все элементы, описанные выше относительно персонального компьютера 20, на фиг.1 показано только запоминающее устройство 50. Логические соединения, изображенные на фиг.1, включают в себя локальную сеть (ЛС, LAN) 51 и глобальную сеть (ГС, WAN) 52. Такие сетевые среды распространены в офисах, компьютерных сетях масштаба предприятия, корпоративных сетях (интрасетях) и Интернет.
При работе в сетевой среде ЛС персональный компьютер 20 соединен с локальной сетью 51 через сетевой интерфейс или адаптер 53. При работе в сетевой среде ГС персональный компьютер 20 обычно включает в себя модем 54 или другие средства для установления связи через ГС 52, такую как Интернет. Модем 54, который может быть внутренним или внешним, соединен с системной шиной 23 через интерфейс 46 последовательного порта. В сетевой среде модули программ, изображенные относительно персонального компьютера 20 или его частей, могут храниться в удаленном запоминающем устройстве 50. Следует понимать, что показанные сетевые соединения являются примерными и что могут использоваться другие средства установления линии связи между компьютерами.
Кроме того, специалисты в данной области техники должны признать, что настоящее изобретение может быть реализовано в других конфигурациях компьютерной системы, включая карманные устройства, многопроцессорные системы, программируемую или основанную на микропроцессоре бытовую электронику, сетевые компьютеры, миникомпьютеры, универсальные компьютеры и т.п. Настоящее изобретение может также использоваться в распределенных вычислительных средах, где задачи выполняются удаленными устройствами обработки, которые связаны через сеть связи. В распределенной вычислительной среде модули программ могут быть расположены и в локальных, и в удаленных запоминающих устройствах.
РЕАЛИЗАЦИЯ ПРИМЕРНЫХ ВАРИАНТОВ ОСУЩЕСТВЛЕНИЯ НАСТОЯЩЕГО ИЗОБРЕТЕНИЯ
Как описано выше, компьютерная система типично содержит многочисленные классы аппаратных компонентов. Дополнительно, компьютерная система может содержать многочисленные компоненты (например, два накопителя на жестких магнитных дисках) в пределах каждого класса аппаратных компонентов.
Сильнозащищенные идентификационные данные аппаратных средств (SHWID) настоящего изобретения учитывает каждый компонент (так же упоминаемый здесь как каждый «экземпляр») в пределах каждого класса аппаратных компонентов. Сильнозащищенные идентификационные данные аппаратных средств (SHWID) согласно настоящему изобретению также учитывают секрет S, который связан с заданной компьютерной аппаратной системой.
Примерный способ генерации сильнозащищенных идентификационных данных аппаратных средств (SHWID) согласно настоящему изобретению приведен ниже. Дополнительно способ использования сильнозащищенных идентификационных данных аппаратных средств (SHWID) в качестве инструмента противодействия пиратству также описан ниже.
I. ГЕНЕРАЦИЯ СИЛЬНОЗАЩИЩЕННЫХ ИДЕНТИФИКАЦИОННЫХ ДАННЫХ АППАРАТНЫХ СРЕДСТВ (SHWID) ДЛЯ КОМПЬЮТЕРНОЙ СИСТЕМЫ
Сильнозащищенные идентификационные данные аппаратных средств (SHWID) заданной компьютерной системы содержат два отличающихся компонента: (1) аппаратный компонент и (2) компонент, соответствующий неполному секрету. Примерные способы определения каждого из этих компонентов описаны ниже. Этапы примерных способов могут выполняться с помощью программного кода в программном продукте на компьютере клиента, подобном компьютеру 20, описанному выше со ссылкой к фиг.1.
A. ОПРЕДЕЛЕНИЕ АППАРАТНОГО КОМПОНЕНТА SHWID
SHWID настоящего изобретения содержит произведение класса для каждого класса аппаратных компонентов. Аппаратный компонент SHWID может определяться, как показано на фиг.2.
Как показано на фиг.2, примерное определение аппаратного компонента SHWID начинается с этапа 201, на котором определенное количество n классов компонентов выбирают для идентификации заданной компьютерной системы. Как обсуждалось выше, заданная компьютерная система может включать в себя разнообразие аппаратных компонентов и классов аппаратных компонентов. Примерные классы аппаратных компонентов включают в себя накопители на жестких магнитных дисках, дисководы для оптических дисков, сетевые платы, звуковые платы, адаптеры дисплея, постоянное запоминающее устройство (ПЗУ), оперативное запоминающее устройство (ОЗУ) и систему BIOS, но не ограничены ими. Желательно, чтобы n, количество классов аппаратных компонентов, было целым числом в пределах от приблизительно 2 до приблизительно 16. В общем случае желательно, чтобы n было как можно больше для того, чтобы (i) более точно идентифицировать данную компьютерную систему, (ii) более точно измерить степень допуска данной компьютерной системы и (iii) обеспечить более высокий уровень защиты для секрета S.
После выбора количества n классов компонентов на этапе 201, на этапе 202 идентифицируют каждый класс компонентов. Классы компонентов могут включать в себя любой из описанных выше классов компонентов, такой как класс накопителей на жестких магнитных дисках. Примерный список классов компонентов дается в таблице 1.
Таблица 1Примерный список классов аппаратных компонентов | ||
Номер класса компонентов | Описание класса | Идентификатор класса |
1 | Привод компакт-диска | Идентификатор привода компакт-дисков |
2 | Накопитель на жестких магнитных дисках | Серийный номер раздела диска |
3 | Сетевая плата | MAC-адрес (адрес протокола доступа к среде передачи) |
4 | Адаптер дисплея | Идентификатор |
Как показано в таблице 1, в этом примере n равняется 4, и идентифицируемые классы аппаратных компонентов: (1) класс приводов компакт-диска; (2) класс накопителей на жестких магнитных дисках; (3) класс сетевых плат и (4) класс адаптеров дисплея.
После того как каждый класс компонентов идентифицирован на этапе 202, на этапе 203 идентифицируют все экземпляры в пределах каждого аппаратного класса компонентов. Желательно, чтобы каждый экземпляр в пределах определенного класса компонентов был представлен наиболее уникальной идентифицирующей строкой, связанной с данным экземпляром. Например, аппаратная конфигурация может содержать привод компакт-дисков, изготовленный фирмой NEC Corporation и имеющий идентифицирующую строку «NEC CDRW24 S15». Любой доступный способ определения наиболее уникальной идентифицирующей строки согласно приведенному примеру, который включает в себя опрос устройств и вызов функции API (интерфейса прикладного программирования) операционной системы, может использоваться в настоящем изобретении. Пример компьютерной аппаратной конфигурации и экземпляров в пределах каждого класса аппаратных компонентов показан в таблице 2.
Таблица 2Примерные экземпляры компонентов для каждого класса компонентов | ||
Номер класса компонентов | Описание класса | Экземпляры класса компонентов |
1 | Привод компакт-диска | {«NEC CDRW24 S15»,«TOSHIBA DVDR ASK-1425»} |
2 | Накопитель на жестких магнитных дисках | {1bcdff1922, 7da90024} |
3 | Сетевая плата | {00b0c31b5923} |
4 | Адаптер дисплея | {«Nvidia GeForce2 DDR»} |
Как показано в таблице 2, класс 1, класс приводов компакт-диска, содержит два экземпляра компонентов; класс 2, класс накопителей на жестких магнитных дисках, содержит два экземпляра компонентов; класс 3, класс сетевых плат, содержит один экземпляр; и класс 4, класс адаптеров дисплея, содержит один экземпляр.
На этапе 205 простое число экземпляра генерируется для каждого экземпляра компонентов, используя функцию f(x) генерации простых чисел. Желательно, чтобы функция f(x) обладала следующими характеристиками:
(a) результат f(x) - положительное простое число;
(b) x может быть любыми данными с длиной до приблизительно 65000 символов;
(c) f(x)> 2t, где t - целое число, желательно большее, чем приблизительно 32. Желательно, чтобы t было больше или равно приблизительно 64. Однако нет никаких ограничений на значение t.
(d) результат f(x) является детерминированным на основании значения x.
Любая функция f(x) генерации простых чисел может использоваться в настоящем изобретении для генерации простого числа для каждого экземпляра компонента. Как обсуждалось выше, желательно, чтобы функция f(x) генерации простых чисел обладала указанными выше характеристиками. Соответствующие функции f(x) генерации простых чисел включают в себя функцию f(x) генерации простых чисел, основанную на алгоритме Рабина-Миллера, раскрытом в работе «Applied Cryptography», Second Edition, Bruce Schneier, страницы 259-260, раскрытие которой полностью включено в данное описание посредством ссылки, но не ограничены ею.
Таблица 3 обеспечивает список простых чисел ip,q экземпляра для экземпляров компонентов примерной аппаратной конфигурации.
Таблица 3Примерные простые числа экземпляра для экземпляров компонентов | ||
Номер класса компонентов | Описание класса | Простые числа экземпляра для экземпляров компонентов |
1 | Привод компакт-диска | {f(«NEC CDRW24 S15»)=i1,1,f(«TOSHIBA DVDR ASB-1425»)=i1,2} |
2 | Накопитель на жестких магнитных дисках | {f(1bcdff1922) = i2,1, f(7da90024)=i2,2} |
3 | Сетевая плата | {f(00b0c31b5923)=i3,1} |
4 | Адаптер дисплея | {f(«NVidia GeForce2 DDR»)=i4,1} |
В данной работе простое число ip,q экземпляра используется для обозначения простого числа экземпляра для заданного экземпляра компонента q в пределах заданного класса p. Например, простое число i1,2 экземпляра используется для идентификации простого числа экземпляра для данного экземпляра компонента в классе компонентов 1 (например, p = 1), а более конкретно, второго экземпляра компонента в пределах класса 1 компонентов и в пределах компьютерной аппаратной конфигурации (например, q=2).
В одном из вариантов осуществления настоящего изобретения до генерации простого числа экземпляра для заданного экземпляра компонента к идентификатору экземпляра компонента можно добавить случайное число-модификатор («salt value»). В данном варианте осуществления добавление случайного числа-модификатора позволяет создавать различные SHWID, основанные на той же самой компьютерной аппаратной конфигурации. Модификаторы, полученные из кода прикладной программы или из идентификатора пользователя, допускают различные SHWID для различных пользователей или приложений, выполняющихся на одной и той же аппаратной конфигурации, что может быть выгодным при организации защиты данных для использования только конкретным приложением или пользователем.
Когда для каждого экземпляра компонента сгенерировано простое число экземпляра, на этапе 206 для каждого класса компонентов генерируют произведение cp класса. Произведение cp класса генерируют с помощью перемножения простых чисел экземпляров в пределах заданного класса друг с другом. Примерные произведения класса с c1 до c4 приведены в таблице 4.
Таблица 4Примерные произведения класса для каждого класса компонентов | ||
Номер класса компонентов | Описание класса | Произведения класса для каждого класса компонентов |
1 | Привод компакт-диска | с1=(i1,1) х (i1,2) |
2 | Накопитель на жестких магнитных дисках | с2=(i2,1) x (i2,2) |
3 | Сетевая плата | с3=i3,1 |
4 | Адаптер дисплея | с4=i4,1 |
Как показано в таблице 4, произведение c1 класса для аппаратного класса компонентов приводов компакт-дисков равно произведению двух экземпляров i1,1 и i1,2. Следует отметить, что произведения класса, полученные из простого числа единственного экземпляра, например, произведение c3 класса, могут умножаться на дополнительные числа, которые не являются простыми числами экземпляра, для усложнения разложения на множители данного произведения класса. Это особенно полезно для произведений класса, состоящих из простого числа единственного экземпляра, например, произведение c3 класса или произведение c4 класса, показанные в таблице 4. Когда дополнительные числа, не являющиеся простыми числами экземпляра, используются для увеличения значения произведения класса, желательно, чтобы эти дополнительные простые числа находились в диапазоне от 2 до 2t, где t - произвольное целое число, описанное выше. Это уменьшает риск непреднамеренного конфликта с простыми числами экземпляров из другой аппаратной конфигурации.
На этапе 207 каждое произведение cp класса сохраняют для ввода в сильнозащищенный идентификатор cp класса для каждого класса компонентов, как описано ниже. Дополнительно, как описано ниже, объединение сильнозащищенных идентификаторов Cp классов, каждый из которых соответствует определенному классу, используется для создания сильнозащищенных идентификационных данных аппаратных средств (SHWID) для заданной компьютерной аппаратной системы. Произведения cp класса представляют аппаратный компонент сильнозащищенных идентификационных данных аппаратных средств (SHWID) для заданной компьютерной аппаратной системы.
B. ОПРЕДЕЛЕНИЕ КОМПОНЕНТА SHWID, СООТВЕТСТВУЮЩЕГО НЕПОЛНОМУ СЕКРЕТУ
Сильнозащищенные идентификационные данные аппаратных средств (SHWID) согласно настоящему изобретению также содержат компонент, соответствующий неполному секрету, для каждого класса аппаратных компонентов. Примерный способ определения компонента SHWID, соответствующего неполному секрету, показан на фиг.3-4. Этапы примерного способа могут выполняться с помощью кода программы в программном продукте на компьютере клиента, подобном компьютеру 20, описанному выше со ссылкой на фиг.1.
На этапе 301, показанном на фиг.3, для каждого класса компонентов генерируют случайное число rp, используя генератор случайных чисел. Любой обычный генератор случайных чисел может использоваться для генерации случайного числа rp. Соответствующие генераторы случайных чисел включают в себя генераторы случайных чисел, раскрытые в работе «Prime Numbers» Crandell and Pomerance, глава 8, раскрытие которой полностью включено в настоящее описание посредством ссылки, но не ограничены ими. Желательно, чтобы случайное число rp находилось в диапазоне от больше или равно 0 до меньше 2u, где u меньше t, описанного выше. Как правило, u приблизительно равно t, разделенному на 3.
Используя для каждого класса аппаратных компонентов случайное число rp, сгенерированное на этапе 301, на этапе 302 генерируют простое число pp класса, используя функцию g(rp) генерации простых чисел. Желательно, чтобы функция g(rp) генерации простых чисел имела следующие характеристики:
(a) результат g(rp) - положительное простое число;
(b) g(rp) <2V, где v - целое число, большее чем u; и
(c) u+v=t.
(d) результат g(rp) является детерминированным на основании значения rp.
Как в случае с описанной выше функцией f(x) генерации простых чисел, любая функция g(x) генерации простых чисел может использоваться в настоящем изобретении для генерации простого числа класса компонентов для каждого случайного числа rp. Как обсуждалось выше, желательно, чтобы функция g(x) генерации простых чисел обладала указанными выше характеристиками. Соответствующие функции g(x) генерации простых чисел включают в себя функцию g(x) генерации простых чисел, раскрытую в работе «Applied Cryptography», Second Edition, Bruce Schneier, страницы 259-260, раскрытие которой полностью включено в данное описание посредством ссылки, но не ограничены ею.
Один пример зависимости между g(rp), t, u и v дается ниже.
t=64
u=20
v=44
0 <rp <2u (220=1 048 576)
2 <g(rp) <2V
Примерный список простых чисел pp класса для каждого из n классов (например, n=4) примерной компьютерной системы показан в таблице 5.
Таблица 5Примерные простые числа класса для каждого класса компонентов | ||
Номер класса компонентов | Описание класса | Простые числа класса для каждого класса компонентов |
1 | Привод компакт-диска | p1=g(r1):0 <r1 <2u |
2 | Накопитель на жестких магнитных дисках | p2=g(r2):0 <r2 <2u |
3 | Сетевая плата | p3=g(r3):0 <r3 <2u |
4 | Адаптер дисплея | p4=g(r4):0 <r4 <2u |
Примерные выходные данные, отображающие зависимость между простыми числами класса для заданной аппаратной конфигурации, можно представить как:
2 <p2 <p3 <p1 < p4 <2V.
На этапе 303 требуемое количество m совпадений классов компонентов выбирают в зависимости от степени допуска, требуемого для изменений компонентов аппаратной конфигурации. Требуемое количество m совпадений классов компонентов может быть равно n, общему количеству классов компонентов, или может быть равно одному. Когда m увеличивается, степень допуска на изменения аппаратной конфигурации компьютера уменьшается. Например, если общее количество n классов компонентов равно 4, и m равно 3, то в 3 из общего количества 4 классов компонентов должен совпадать по меньшей мере один экземпляр компонента для того, чтобы секрет S был воссоздан, что разрешает загрузку или выполнение программного продукта. Если количество совпадений классов компонентов меньше 3, то секрет S не будет воссоздан, и программный продукт не будет работать или загружаться в данной компьютерной аппаратной конфигурации.
Требуемое количество m совпадений классов компонентов может быть предопределено изготовителем программного обеспечения и закодировано в способе генерации SHWID согласно настоящему изобретению. Когда m выбрано, определяют дополнительные параметры, как показано на этапах 304 и 305.
На этапе 304 определяют параметр N, где N равен произведению m наименьших простых чисел pp классов. Например, в описанном выше примере простых чисел классов два наименьших простых числа класса - это p2 и p3. Если m равно 2, то N равно (p2) x (p3).
На этапе 305 определяют параметр M, где M равно произведению (m-1) наибольших простых чисел pp классов. Например, в приведенном выше примере результирующих простых чисел классов p4 - наибольшее простое число класса. Если m равняется 2, то M равно произведению единственного наибольшего простого числа класса, p4 (т.е. (M-1)=1). Следует отметить, что M должно быть меньше N для того, чтобы гарантировать, что заданный набор простых чисел классов имеет пороговое значение m. Это является реализацией схемы совместно используемого секрета на основе порогового значения, как описано в работе «The Mathematics of Ciphers» S.C. Coutinho, глава 7, раскрытие которой полностью включено в настоящее описание посредством ссылки.
Когда параметры N и M определены, на этапе 306 выбирают секрет S. Секрет S больше M, но меньше N. Дополнительно, секрет S является любым случайным числом между M и N.
На этапе 307 рассчитывают остатки dp классов, используя следующее уравнение:
dp=S mod pp.
Примерный набор остатков dp классов показан в таблице 6.
Таблица 6Примерные остатки классов для каждого класса компонентов | ||
Номер класса компонентов | Описание класса | Остатки классов для каждого класса компонентов |
1 | Привод компакт-диска | d1=S mod p1 |
2 | Накопитель на жестких магнитных дисках | d2=S mod p2 |
3 | Сетевая плата | d3=S mod p3 |
4 | Адаптер дисплея | d4=S mod p4 |
На этапе 308, как показано на фиг.4, простые числа pp классов для каждого класса компонентов кодируются в первые двоичные значения для каждого класса компонентов. Каждое из первых двоичных значений имеет u бит. Следует отметить, что каждое простое число pp классов может быть представлено u битами на основе следующих зависимостей:
pp=g(rp), где 0 <=rp <2U,
pp может быть представлено с помощью rp, если g(rp) доступна во время извлечения,
rp может быть представлено u битами,
pp может быть представлен с помощью rp, если g(rp) доступна во время извлечения, если функция g() генерации простых чисел известна по следующей причине. Когда pp равно g(rp), и функция g() генерации простых чисел известна, то знание rp достаточно для повторной генерации pp с помощью выполнения g() с параметром rp. Кодирование rp требует u битов (или 20 битов в приведенном выше примере), хотя pp требует v битов (или 44 бита в приведенном выше примере). Экономия в требуемом количестве битов реализована с помощью представления pp как rp.
На этапе 309 каждый из остатков dp классов кодируют во вторые двоичные значения для каждого класса компонентов. Вторые двоичные значения могут быть представлены v битами. Следует отметить, что остатки dp классов могут быть представлены v битами в результате следующих зависимостей:
dp=S mod pp,
0 < pp <2v
Таким образом, dp <2v.
На этапе 310 первое двоичное значение, сгенерированное на этапе 308, соединяют со вторым двойным значением, полученным на этапе 309, для формирования закодированного неполного секрета Pp класса компонентов, имеющего общее количество битов, равное t (т.е. t=u+v). Неполный секрет Pp класса компонентов генерируют для каждого класса компонентов.
Следует отметить, что неполный секрет Pp класса для заданного класса компонентов может содержать неиспользуемые биты z из-за того, что второе двоичное значение имеет меньше чем v битов. В этом случае неиспользуемые биты z могут заполняться с помощью случайного шума для предотвращения оценки нападающим, который знает свойства g(rp), закодированного неполного секрета Pp класса в попытке определить неполный секрет Pp класса. Например, когда pp находится в диапазоне 2 - 2v, dp всегда меньше pp. Если pp значительно меньше 2v, то dp будет требовать для кодирования значительно меньшее количество