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

Код документа: RU2348968C2

Чертежи

Описание

ОБЛАСТЬ ИЗОБРЕТЕНИЯ

Изобретение относится к системам и способам связывания секрета (числа, которое может быть известно только действительным участникам криптографической системы, но неизвестно кому-либо еще) с заданной компьютерной системой. Настоящее изобретение также относится к системам и способам генерации сильнозащищенных идентификационных данных аппаратных средств для заданной компьютерной системы, причем компонент сильнозащищенных идентификационных данных аппаратных средств связан с соответствующим секретом. Результирующие сильнозащищенные идентификационные данные аппаратных средств могут использоваться для управления использованием программного обеспечения в заданной компьютерной системе в зависимости от степени изменения аппаратных средств в компьютерной системе.

ПРЕДШЕСТВУЮЩИЙ УРОВЕНЬ ТЕХНИКИ

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

В попытке уменьшить случаи пиратства программного обеспечения и незаконного использования программного обеспечения вне контекста лицензионного соглашения были разработаны некоторые способы. Однако такие способы часто вызывают проблемы для законных покупателей и пользователей программного обеспечения в форме неудобства для потребителей. Например, пользователь, который модернизировал свой компьютер, должен иметь возможность законным образом повторно установить программный продукт на модернизированном компьютере. Однако доступные в настоящее время способы, возможно, или (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,14Адаптер дисплеяс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 p <2u (220=1 048 576)

2 p) <2V

Примерный список простых чисел pp класса для каждого из n классов (например, n=4) примерной компьютерной системы показан в таблице 5.

Таблица 5
Примерные простые числа класса для каждого класса компонентов
Номер класса компонентовОписание классаПростые числа класса для каждого класса компонентов1Привод компакт-дискаp1=g(r1):0 1 <2u2Накопитель на жестких магнитных дискахp2=g(r2):0 2 <2u3Сетевая платаp3=g(r3):0 3 <2u4Адаптер дисплеяp4=g(r4):0 4 <2u

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

2 2 3 1 < 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 p12Накопитель на жестких магнитных дискахd2=S mod p23Сетевая платаd3=S mod p34Адаптер дисплея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 будет требовать для кодирования значительно меньшее количество битов, чем v. Нападающий может сделать предположения о размере pp, основываясь на значениях dp. Добавление случайного шума для заполнения неиспользуемых [v - (размер (dp))] битов dp помогает скрыть размер pp.

C. SHWID ДЛЯ КОМПЬЮТЕРНОЙ СИСТЕМЫ

Сильнозащищенные идентификационные данные аппаратных средств (SHWID) теперь могут быть сконфигурированы, используя произведения cp класса, полученные на этапе 207, и неполный секрет Pp класса, полученный на этапе 310. Как показано на этапе 401 по фиг.5, сильнозащищенный идентификатор Cp класса создается для каждого класса компонентов, причем Cp=cp+Pp. На этапе 402 все сильнозащищенные идентификаторы Cp классов для классов компонентов объединяют для формирования сильнозащищенных идентификационных данных аппаратных средств (SHWID). Результирующие SHWID сохраняют для будущего извлечения. SHWID могут храниться локально (например, в регистре, файловой системе или безопасном запоминающем устройстве) или в доступном удаленном месте (например, в базе данных).

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

II. ВОССОЗДАНИЕ СЕКРЕТА ИЗ КОМПЬЮТЕРНОЙ СИСТЕМЫ, ИСПОЛЬЗУЯ СИЛЬНОЗАЩИЩЕННЫЕ ИДЕНТИФИКАЦИОННЫЕ ДАННЫЕ АППАРАТНЫХ СРЕДСТВ (SHWID)

Настоящее изобретение дополнительно направлено на способ воссоздания или попытки воссоздания связанного секрета S из заданной компьютерной аппаратной конфигурации. В одном из вариантов осуществления настоящего изобретения, способ попытки воссоздания связанного секрета S из заданной компьютерной аппаратной конфигурации инициируют (i) во время инсталляции программного продукта, (ii) во время загрузки программного приложения, уже существующего на компоненте аппаратной конфигурации, или (iii) в обоих случаях. Примерный способ воссоздания связанного секрета S из аппаратной конфигурации описан на фиг.6-7. Этапы примерного способа могут выполняться с помощью кода программы в программном продукте на компьютере клиента, подобном компьютеру 20, описанному выше со ссылкой на фиг.1.

На этапе 501, как показано на фиг.6, сильнозащищенный идентификатор Cp класса сильнозащищенных идентификационных данных аппаратных средств (SHWID) идентифицируют для заданной компьютерной аппаратной конфигурации. Для целей иллюстрации настоящего изобретения будет описан способ воссоздания связанного секрета S из трех отдельных аппаратных конфигураций H, H1 и H2 с использованием предварительно сохраненных сильнозащищенных идентификационных данных аппаратных средств (SHWID), определенных на основе аппаратной конфигурации H. Эти три отличающиеся аппаратные конфигурации содержат (i) точную аппаратную конфигурацию H, для которой SHWID были созданы; (ii) аппаратную конфигурацию H1, которая содержит аппаратную конфигурацию H, имеющую одно или большее количество изменений компонентов в пределах приемлемого уровня допуска; и (iii) аппаратную конфигурацию H2, которая представляет аппаратную конфигурацию H, имеющую достаточное количество изменений компонентов, так что аппаратная конфигурация H2 находится вне допуска по сравнению с аппаратной конфигурацией H.

Примерный набор сильнозащищенных идентификаторов классов для аппаратных конфигураций H, H1 и H2 дается в таблице 7.

Таблица 7
Примерные сильнозащищенные идентификаторы классов для аппаратной конфигурации
Номер класса компонентовОписание классаСильнозащищенные идентификаторы классов1Привод компакт-дискаC12Накопитель на жестких магнитных дискахC23Сетевая платаC34Адаптер дисплеяC4

На этапе 502 идентифицируют все экземпляры в пределах каждого класса компонентов заданной аппаратной конфигурации. Как описано выше, любой известный способ может использоваться для идентификации каждого экземпляра компонента. Как правило, экземпляр компонента идентифицируют с помощью наиболее уникальной идентифицирующей строки для компонента. Примерные идентифицирующие строки для каждого экземпляра компонента в пределах типовых конфигураций H, H1 и H2 показаны в таблицах 8-10.

Таблица 8
Примерные экземпляры компонентов для аппаратной конфигурации H
Конфигурация HНомер класса компонентовОписание классаЭкземпляры компонентов1Привод компакт-диска{«NEC CDRW24 S15»,
«TOSHIBA DVDR ASB-1425»}
2Накопитель на жестких магнитных дисках{1bcdff19, 7da90024}3Сетевая плата{00b0c31b5923}4Адаптер дисплея{«NVidia GeForce2 DDR»}

Таблица 9
Примерные экземпляры компонентов для аппаратной конфигурации H1
Конфигурация H1Номер класса компонентовОписание классаЭкземпляры компонентов1Привод компакт-диска{«NEC CDRW24 S15»,
«SONY DVD 1221»}
2Накопитель на жестких магнитных дисках{8146af92}3Сетевая плата{00c0c21b5933}4Адаптер дисплея{«NVidia GeForce2 DDR»}

Таблица 10
Примерные экземпляры компонентов для аппаратной конфигурации H2
Конфигурация H2Номер класса компонентовОписание классаЭкземпляры компонентов1Привод компакт-диска{«SONY DVD 1221»}2Накопитель на жестких магнитных дисках{8146af92}3Сетевая плата{00c0c21b5933}4Адаптер дисплея{«NVidia GeForce2 DDR»}

Когда все экземпляры в пределах каждого класса компонентов заданной аппаратной конфигурации идентифицированы, извлекают наиболее уникальную идентифицирующую строку для каждого экземпляра, как показано на этапе 503. Идентифицирующие строки для каждого экземпляра используются для генерации простого числа экземпляра для каждого экземпляра компонента, используя функцию генерации простых чисел f(идентификатор экземпляра компонента), как показано на этапе 504. Функция генерации простых чисел f(идентификатор экземпляра компонента) может быть любой функцией генерации простых чисел, известной специалистам в данной области техники, как описано выше. Приведенные таблицы 11-13 обеспечивают примерные простые числа экземпляров для каждого из экземпляров компонентов в пределах примерных аппаратных конфигураций H, H1 и H2.

Таблица 11
Примерные простые числа ip,q экземпляров для примерной аппаратной конфигурации H
Конфигурация HНомер класса компонентовОписание классаПростые числа экземпляров1Привод компакт-диска{f(«фирма NEC CDRW24 S15»)=i1,1
«TOSHIBA DVDR ASB-1425»)=i1,2}
2Накопитель на жестких магнитных дисках{f(1bcdff19)=i2,1, f(7da90024)=i2,2}3Сетевая плата{f(00b0c31b5923)=i3,1}4Адаптер дисплея{f(«NVidia GeForce2 DDR»)=i4,1}Таблица 12
Примерные простые числа ip,q экземпляров для примерной аппаратной конфигурации H1
Конфигурация H1Номер класса компонентовОписание классаПростые числа экземпляров1Привод компакт-диска{f(«NEC CDRW24 S15»)=i1,1,
f(«SONY DVD 1221»)=i1,3}
2Накопитель на жестких магнитных дисках{f(8146af92)=i2,3}3Сетевая плата{f(00c0c21b5933)=i3,1}4Адаптер дисплея{f(«NVidia GeForce2 DDR»)=i4,1}

Таблица 13
Примерные простые числа ip,q экземпляров для примерной аппаратной конфигурации H2
Конфигурация H2Номер класса компонентовОписание классаПростые числа экземпляров1Привод компакт-диска{f(«SONY DVD 1221»)=i1,3}2Накопитель на жестких магнитных дисках{f(8146af92)=i2,3}3Сетевая плата{f(00c0c21b5933)=i3,2}4Адаптер дисплея{f(«Nvidia GeForce2 DDR»)=i4,1}

Следует отметить, что экземпляр {f(«SONY DVD 1221»)} компонента обозначается i1,3, задавая, что этот тип привода компакт-диска является третьим типом привода компакт-диска, который рассматривают в приведенных выше аппаратных конфигурациях (т.е. H, H1 и H2).

На этапе 505 определяют все возможные неполные секреты Pp,q класса, причем Pp,q равняется Cp mod ip,q. Как описано выше, сильнозащищенный идентификатор Cp класса для каждого класса компонентов получают из суммы произведения cp класса и неполного секрета Pp класса для каждого класса. Если сильнозащищенный идентификатор Cp класса делят на простое число ip,q экземпляра, которое присутствовало в исходной аппаратной конфигурации H, на которой были основаны сильнозащищенные идентификационные данные аппаратных средств (SHWID), то остаток после операции (mod) обеспечивает возможный неполный секрет Pp,q класса. Примерные возможные неполные секреты Pp,q классов для примерных аппаратных конфигураций H, H1 и H2 даны в таблицах 14-16.

Таблица 14
Примерные возможные неполные секреты Pp,q классов для каждого экземпляра компонента в примерной аппаратной конфигурации H
Конфигурация HНомер класса компонентовОписание классаВозможные неполные секреты классов1Привод компакт-дискаP1,1=C1 mod i1,1, P1,2=C1 mod i1,22Накопитель на жестких магнитных дискахP2,1=C2 mod i2,1, P2,2=C2 mod i2,23Сетевая платаP3,1=C3 mod i3,14Адаптер дисплеяP4,1=C4mod i4,1Таблица 15
Примерные возможные неполные секреты Pp,q классов для каждого экземпляра компонента в примерной аппаратной конфигурации H1
Конфигурация H1Номер класса компонентовОписание классаВозможные неполные секреты классов1Привод компакт-дискаP1,1=C1 mod i1,1, P1,3=C1 mod i1,32Накопитель на жестких магнитных дискахP2,3=C2 mod i2,33Сетевая платаP3,2=C3 mod i3,24Адаптер дисплеяP4,1=C4 mod i4,1

Таблица 16
Примерные возможные неполные секреты Pp,q классов для каждого экземпляра компонента в примерной аппаратной конфигурации H2
Конфигурация H2Номер класса компонентовОписание классаВозможные неполные секреты классов1Привод компакт-дискаP1,3=C1 mod i1,32Накопитель на жестких магнитных дискахP2,3=C2 mod i2,33Сетевая платаP3,2=C3 mod i3,24Адаптер дисплеяP4,1=C4 mod i4,1

Из каждого из возможных неполных секретов Pp,q классов могут извлекаться случайные числа rp и остатки dp классов, как показано на этапе 506. Как обсуждалось выше, простые числа pp,q классов могут быть воссозданы, используя функцию g(rp), где rp - первые u битов возможного неполного секрета Pp,q класса. Остатки dp,q классов могут быть воссозданы из последних v битов неполного секрета Pp,q класса. Примерный список всех возможных простых чисел pp,q классов и остатков dp,q классов для примерных аппаратных конфигураций H, H1 и H2 приведен в таблицах 17-19.

Таблица 17
Примерные простые числа рp,q классов и остатки dp,q классов для каждого возможного неполного секрета Pp,q класса типовой аппаратной конфигурации H
Конфигурация HНомер класса компонентовОписание классаВозможные простые числа pp,q классов и остатки dp,q классов1Привод компакт-дискаP1,1=>p1,1, d1,1, P1,2=>p1,2,d1,22Накопитель на жестких магнитных дискахP2,1=>p2,1, d2,1, P2,2=>p2,2, d2,23Сетевая платаP3,1=>p3,1, d3,14Адаптер дисплеяP4,1=>p4,1, d4,1

Таблица 18
Примерные простые числа рp,q классов и остатки dp,q классов для каждого возможного неполного секрета Pp,q класса типовой аппаратной конфигурации H1
Конфигурация H1Номер класса компонентовОписание классаВозможные простые числа pp,q классов и остатки dp,q классов 1Привод компакт-дискаP1,1=>p1,1, d1,1, P1,3=>p1,3, d1,32Накопитель на жестких магнитных дискахP2,3 => p2,3, d2,33Сетевая платаP3,2 => p3,2, d3,24Адаптер дисплеяP4,1=>p4,1, d4,1

Таблица 19
Примерные простые числа рp,q классов и остатки dp,q классов для каждого возможного неполного секрета Pp,q класса типовой аппаратной конфигурации H2
Конфигурация H2Номер класса компонентовОписание классаВозможные простые числа pp,q классов и остатки dp,q классов1Привод компакт-дискаP1,3=>p1,3, d1,32Накопитель на жестких магнитных дискахP2,3=>p2,3, d2,33Сетевая платаP3,2=>p3,2, d3,24Адаптер дисплеяP4,1=>p4,1, d4,1

Когда на этапе 506 определены все возможные простые числа классов и остатки классов, они представляют некоторое количество наборов отношений сравнимости по модулю. S является большим числом, которое при делении на возможные простые числа pp,q классов приводит к остаткам dp,q классов для данного набора конгруэнций. Поскольку S является тщательно выбранным числом (т.е. S находится между M и N), и все его делители являются простыми числами, то решением набора отношений сравнимости по модулю, используя возможные простые числа классов и остатки классов, которое попадает между M и N, должно быть S. Тщательный выбор S на этапе 306 гарантирует, что только N совпадающих элементов набора отношений сравнимости по модулю требуется для создания правильного значения для S. Это является классической схемой совместного использования секрета на основе порогового значения, как описано в работе «The Mathematics of Ciphers», S.C. Coutinho, глава 7, раскрытие которой полностью включено в настоящее описание посредством ссылки.

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

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

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

Как показано на фиг.7, если известный открытый текст появляется при декодировании зашифрованного текста с использованием возможного секрета, то секрет S найден, и способ продолжается на этапе 510, на котором программа позволяет загрузить или установить заданный программный продукт на заданной компьютерной аппаратной конфигурации. В противном случае, способ продолжается на этапе 509. Если еще существуют перестановки, которые не были проверены, то способ возвращается на этап 507. В противном случае, SHWID не соответствует, и способ продолжается на этапе 511, который запрещает загрузку или инсталляцию программного продукта.

Примерные результаты для типовых конфигураций H, H1 и H2 даются в таблицах 20-22.

Таблица 20
Примерные результаты, показывающие количество соответствий между возможными секретами Sp,q и фактическим секретом S для примерной аппаратной конфигурации H
Конфигурация HНомер класса компонентовОписание классаВозможные соответствия между возможными секретами Sp,q и фактическим секретом S1Привод компакт-дискаS=d1,1 (mod p1,1) или
S=d1,2 (mod p1,2)
2Накопитель на жестких магнитных дискахS=d2,1 (mod p2,1) или
S=d2,2 (mod p2,2)
3Сетевая платаS=d3,1 (mod p3,1)4Адаптер дисплеяS=d4,1 (mod p4,1)Результат - единственное решение, 4 из 4 соответствий = S

Таблица 21
Примерные результаты, показывающие количество соответствий между возможными секретами Sp,q и фактическим секретом S для примерной аппаратной конфигурации H1
Конфигурация H1Номер класса компонентовОписание классаВозможные соответствия между возможными секретами Sp,q и фактическим секретом S1Привод компакт-дискаS=d1,1 (mod p1,1) или
S=d1,3 (mod p1,3)
2Накопитель на жестких магнитных дискахS=d2,3 (mod p2,3)3Сетевая платаS=d3,2 (mod p3,2)4Адаптер дисплеяS=d4,1 (mod p4,1)Результат - два возможных решения в зависимости от использования d1,1 (2 из 4 соответствий, найден S) или d1,3 (1 из 4 соответствий, найден Z1)

Таблица 22
Примерные результаты, показывающие количество соответствий между возможными секретами Sp,q и фактическим секретом S для примерной аппаратной конфигурации H2
Конфигурация H2Номер класса компонентовОписание классаВозможные соответствия между возможными секретами Sp,q и фактическим секретом S1Привод компакт-дискаS=d1,3 (mod p1,3)2Накопитель на жестких магнитных дискахS=d2,3 (mod p2,3)3Сетевая платаS=d3,2 (mod p3,2)4Адаптер дисплеяS=d4,1 (mod p4,1)Результат - единственное решение, 1 из 4 соответствий, найден Z1

Как показано в таблице 20, исходная аппаратная конфигурация H приводит к четырем из четырех соответствий между возможными секретами Sp,q и фактическим секретом S. Как показано в таблице 21, аппаратная конфигурация H1 имеет максимум два соответствия из четырех возможных соответствий, в зависимости от того, какой остаток dp,q класса используется для определения возможного секрета S. В этой примерной аппаратной конфигурации, если m равно 2, то программа позволяет воссоздавать связанный секрет S, и программный продукт будет загружен или установлен на аппаратной конфигурации H1. Однако в аппаратной конфигурации H2, как показано в таблице 22, имеет место только одно из четырех возможных соответствий. Если m равно 2, то создается ложное значение Z1, не являющееся секретом, и данный способ не допускает загрузку или установку конкретного программного продукта на аппаратной конфигурации H2.

Этапы способа, описанные выше и показанные на фиг.2, 3-4, 5 и 6-7, могут выполняться локально или удаленно. Как правило, клиент покупает программный продукт, который может работать на данном компьютере, таком как компьютер 20, показанный на фиг.1. Программный продукт может быть запакован в упаковку, содержащую программу на переносимом машиночитаемом носителе, таком как компакт-диск или гибкая дискета. Альтернативно, программный продукт может доставляться электронным способом по сети, такой как локальная сеть (ЛС) 51 или глобальная сеть (ГС) 52. Клиент загружает программный продукт в компьютер 20 как программу, хранящуюся в системной памяти 22.

Во время установки программного продукта клиента обычно просят ввести в компьютер 20 часть идентификатора программного продукта (PID) для данного программного продукта. PID может быть, например, ключом компакт-диска, напечатанным на этикетке упакованного комплекта. Клиент вводит PID, который связан с программой данного программного продукта. PID хранится локально на компьютере 20 и/или удаленно в доступном месте либо в локальной сети (ЛС) 51, либо в глобальной сети (ГС) 52 третьей стороной, такой как центр активации.

Как описано выше, во время установки программного продукта, сильнозащищенные идентификационные данные аппаратных средств (SHWID) также генерируются с использованием кода в программном продукте или активируются с помощью инсталляции программного продукта. Сильнозащищенные идентификационные данные аппаратных средств (SHWID), сгенерированные способом настоящего изобретения, связаны с идентификатором программного продукта (PID) и хранятся наряду с идентификатором программного продукта (PID) локально в компьютере 20 и/или удаленно в доступном месте либо в локальной сети (ЛС) 51, либо в глобальной сети (ГС) 52, например, в центре активации третьей стороны.

Как часть процесса установки, от клиента могут потребовать активировать программный продукт с помощью центра активации. Этим центром может быть, например, изготовитель продукта или уполномоченная третья сторона. Процесс активации предназначен для того, чтобы вынудить клиента активировать программный продукт (i) для установки и использования на определенном компьютере или (ii) для установки и использования согласно условиям лицензионного соглашения по данному продукту. Такой процесс активации подробно описан в патенте США № 6 243 468, правообладателем которого является Microsoft Corporation (Redmond, WA) и содержание которого полностью включено в настоящее описание посредством ссылки.

Сильнозащищенные идентификационные данные аппаратных средств (SHWID), сгенерированные способом настоящего изобретения, и идентификатор программного продукта (PID) могут храниться локально на компьютере 20 и/или удаленно в доступном месте либо в локальной сети (ЛС) 51, либо в глобальной сети (ГС) 52 центром активации. Желательно, чтобы программный продукт при первом запуске автоматически отображал окно диалога графического интерфейса пользователя (UI), которое приглашает пользователя инициировать соединение с сервером активации для собственной активации. Сервер активации поддерживает базу данных для хранения принятых сильнозащищенных идентификационных данных аппаратных средств (SHWID) и связанных с ними идентификаторов программных продуктов (PID).

Сильнозащищенные идентификационные данные аппаратных средств (SHWID) и связанный с ними идентификатор программного продукта (PID) для заданного программного продукта могут храниться в течение неопределенного периода времени, пока этот программный продукт не будет повторно устанавливаться на другом компьютере или запускаться на первом компьютере (т.е. компьютере, используемом во время начальной инсталляции). Когда тот же самый программный продукт повторно устанавливают на другом компьютере или запускают на первом компьютере, код в этом программном продукте инициируется способ определения того, может ли данный программный продукт использоваться в данной компьютерной системе в соответствии с настоящим изобретением. Программный продукт воссоздает предварительно сохраненные сильнозащищенные идентификационные данные аппаратных средств (SHWID), связанные с идентификатором программного продукта (PID) для данного программного продукта, либо из локального компьютера 20, либо из удаленного места через локальную сеть (ЛС) 51 или через глобальную сеть (ГС) 52. Определяют, используя предварительно сохраненные сильнозащищенные идентификационные данные аппаратных средств (SHWID), может ли данный программный продукт использоваться на компьютерной аппаратной конфигурации, как описано выше.

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

III. ДРУГИЕ ВИДЫ ИСПОЛЬЗОВАНИЯ СИЛЬНОЗАЩИЩЕННЫХ ИДЕНТИФИКАЦИОННЫХ ДАННЫХ АППАРАТНЫХ СРЕДСТВ (SHWID)

В дополнение к описанным выше вариантам использования, сильнозащищенные идентификационные данные аппаратных средств (SHWID) согласно настоящему изобретению могут использоваться для шифрования/дешифрования данных для использования только на определенной аппаратной конфигурации.

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

Реферат

Изобретение относится к области защиты компьютерных систем от модификации, а именно способам для связывания программного обеспечения с заданной компьютерной системой. Технический результат, заключайщийся в предотвращении незаконного использования программного обеспечения, достигается путем генерации идентификационных данных аппаратных средств (SHWID) для заданной компьютерной системы. Идентификационные данные аппаратных средств (SHWID) связаны с соответствующим секретом. Идентификационные данные аппаратных средств (SHWID) могут использоваться для управления использованием программного обеспечения на заданной компьютерной системе в зависимости от степени изменения аппаратных средств в этой компьютерной системе. 3 н. и 11 з.п. ф-лы, 7 ил., 22 табл.

Формула

1. Способ определения того, может ли программный продукт использоваться на второй компьютерной системе, имеющей вторую аппаратную конфигурацию, при этом способ содержит этапы, на которых идентифицируют n идентификаторов классов, Ср, из идентификационных данных аппаратных средств первой компьютерной системы, имеющей первую аппаратную конфигурацию, причем первая компьютерная система идентична или отличается от второй компьютерной системы, при этом упомянутые идентификационные данные аппаратных средств сгенерированы посредством идентификации каждого класса компонентов в пределах первой аппаратной конфигурации, определения произведения ср класса для каждого класса компонентов, которое представляет собой объединенную численную идентификацию экземпляров упомянутого класса компонентов, определения неполного секрета Рр для каждого класса компонентов с учетом степени допуска на изменения в первой аппаратной конфигурации, и суммирования произведения ср класса и неполного секрета Рр для каждого класса компонентов для формирования n идентификаторов классов,
идентифицируют все экземпляры в пределах каждого класса компонентов второй аппаратной конфигурации, воссоздают идентифицирующую строку, которая представляет каждый отдельный экземпляр компонента,
генерируют простое число ip,q экземпляра для каждого экземпляра компонента на основе соответствующей воссозданной идентифицирующей строки, причем каждое простое число экземпляра - положительное простое число, и р представляет номер заданного класса компонентов в пределах от 1 до n, и q представляет q-й тип компонента в пределах первой аппаратной конфигурации или второй аппаратной конфигурации, воссоздают возможные неполные секреты Pp,q классов, причем:
Pp,q=[Cp(mod ip,q)],
извлекают возможные простые числа рp,q классов и возможные остатки dp,qклассов из возможных неполных секретов Рp,q классов,
решают набор отношений сравнимости по модулю, полученных с помощью перестановки возможных простых чисел классов и возможных остатков классов, для генерации возможного секрета, и
проверяют возможный секрет, декодируя зашифрованный текст, закодированный из известного открытого текста, и проверяя результат проверки по отношению к упомянутому известному открытому тексту, причем:
если результирующий открытый текст соответствует известному открытому тексту, то загружают программный продукт на второй компьютерной системе, и
если результирующий открытый текст не соответствует известному открытому тексту, то препятствуют загрузке программного продукта на второй компьютерной системе.
2. Способ по п.1, в котором n - целое число до приблизительно 16.
3. Способ по п.1, в котором произведение ср класса для каждого класса компонентов определяют с помощью следующих этапов, на которых:
выбирают определенное количество n классов компонентов,
идентифицируют эти n классов компонентов,
идентифицируют все экземпляры в пределах каждого класса компонентов,
назначают идентифицирующую строку для каждого экземпляра компонента,
генерируют простое число рp,q экземпляра для каждого экземпляра компонента, причем каждое простое число экземпляра - положительное простое число, и р представляет номер заданного класса компонентов в пределах от 1 до n, и q представляет q-й тип компонента в пределах первой аппаратной конфигурации, и
перемножают простые числа экземпляров в пределах каждого класса компонентов для формирования произведения ср класса для каждого класса компонентов.
4. Способ по п.1, в котором этап генерации простых чисел экземпляров содержит ввод идентифицирующей строки, которая представляет каждый отдельный экземпляр компонента, в функцию f(x) генерации простых чисел, где х - идентифицирующая строка, имеющая длину до приблизительно 65000 символов.
5. Способ по п.4, в котором f(x) генерирует положительное простое число, имеющее значение большее 2t, где t - целое число в пределах от приблизительно 32 до приблизительно 2048.
6. Способ по п.1, в котором неполный секрет Рр для каждого класса компонентов определяют с помощью следующих этапов, на которых:
генерируют случайное число rр для каждого класса компонентов,
генерируют простое число рр класса для каждого класса компонентов,
причем каждое простое число класса - положительное простое число,
выбирают требуемое количество m совпадений классов компонентов, причем m меньше или равно n,
определяют N, где N равно произведению m наименьших простых чисел ррклассов,
определяют М, где М равно произведению (m-1) наибольших простых чисел рр классов, и М меньше N,
выбирают секретное число S, причем М
определяют остаток dp класса для каждого класса компонентов, причем dp равен [S (mod pp)],
формируют первое двоичное значение для каждого класса компонентов, причем первое двоичное значение - это простое число рр класса для каждого класса, закодированное в первое двоичное число, имеющее до и битов, где и меньше t, и как и, так и t - меньше приблизительно 2048,
формируют второе двоичное значение для каждого класса компонентов, причем второе двоичное значение - это остаток dp класса для каждого класса, закодированный во второе двоичное число, имеющее до v битов, где v меньше t, и (u+v=t), и
соединяют первое двоичное значение и второе двоичное значение для формирования неполного секрета Рр для каждого класса компонентов, имеющего общее количество битов равное t.
7. Способ по п.6, в котором каждое случайное число rр генерируют с использованием генератора случайных чисел, и оно имеет значение в пределах от 0 до меньше, чем 2u.
8. Способ по п.6, в котором этап генерации простых чисел рр классов для каждого класса компонентов содержит ввод случайного числа для каждого класса компонентов в функцию g(x) генерации простых чисел, где х - случайное число, имеющее длину до приблизительно 65000 символов.
9. Способ по п.8, в котором g(x) генерирует положительное простое число, имеющее значение в пределах от больше чем 2 до меньше, чем 2v.
10. Машиночитаемый носитель, хранящий машиноисполняемые команды для выполнения способа определения того, может ли программный продукт использоваться на второй компьютерной системе, имеющей вторую аппаратную конфигурацию, при этом способ содержит этапы, на которых идентифицируют n идентификаторов классов, Ср, из идентификационных данных аппаратных средств первой компьютерной системы, имеющей первую аппаратную конфигурацию, причем первая компьютерная система идентична или отличается от второй компьютерной системы, при этом упомянутые идентификационные данные аппаратных средств сгенерированы посредством идентификации каждого класса компонентов в пределах первой аппаратной конфигурации, определения произведения ср класса для каждого класса компонентов, которое представляет собой объединенную численную идентификацию экземпляров упомянутого класса компонентов, определения неполного секрета Рр для каждого класса компонентов с учетом степени допуска на изменения в первой аппаратной конфигурации, и суммирования произведения ср класса и неполного секрета Рр для каждого класса компонентов для
формирования n идентификаторов классов,
идентифицируют все экземпляры в пределах каждого класса компонентов второй аппаратной конфигурации,
воссоздают идентифицирующую строку, которая представляет каждый отдельный экземпляр компонента,
генерируют простое число ip,q экземпляра для каждого экземпляра компонента на основе соответствующей воссозданной идентифицирующей строки, причем каждое простое число экземпляра - положительное простое число, и р представляет номер заданного класса компонентов в пределах от 1 до n, и q представляет q-й тип компонента в пределах первой аппаратной конфигурации или второй аппаратной конфигурации, воссоздают возможные неполные секреты Рм классов, причем:
Pp,q=[Cp(mod ip,q)],
извлекают возможные простые числа рp,q классов и возможные остатки dp,qклассов из возможных неполных секретов Рp,q классов,
решают набор отношений сравнимости по модулю, полученных с помощью перестановки возможных простых чисел классов и возможных остатков классов, для генерации возможного секрета, и
проверяют возможный секрет, декодируя зашифрованный текст, закодированный из известного открытого текста, и проверяя результат проверки по отношению к упомянутому известному открытому тексту,
причем:
если результирующий открытый текст соответствует известному открытому тексту, то загружают программный продукт на второй компьютерной системе, и,
если результирующий открытый текст не соответствует известному открытому тексту, то препятствуют загрузке программного продукта на второй компьютерной системе.
11. Машиночитаемый носитель по п.10, в котором этап генерации простых чисел экземпляров содержит ввод идентифицирующей строки, которая представляет каждый отдельный экземпляр компонента, в функцию f(x) генерации простых чисел, где х - идентифицирующая строка, имеющая длину до приблизительно 65000 символов.
12. Машиночитаемый носитель по п.11, в котором f(x) генерирует положительное простое число, имеющее значение большее чем 2t, где t - целое число в пределах от приблизительно 32 до приблизительно 2048.
13. Вычислительная система, содержащая по меньшей мере один модуль приложения, пригодный для использования в этой вычислительной системе, причем упомянутый по меньшей мере один модуль приложения содержит код приложения для выполнения способа определения того, может ли программный продукт использоваться на второй компьютерной системе, имеющей вторую аппаратную конфигурацию, при этом способ содержит этапы, на которых
идентифицируют n идентификаторов классов, Ср, из идентификационных данных аппаратных средств первой компьютерной системы, имеющей первую аппаратную конфигурацию, причем первая компьютерная система идентична или отличается от второй компьютерной системы, при этом упомянутые идентификационные данные аппаратных средств сгенерированы посредством идентификации каждого класса компонентов в пределах первой
аппаратной конфигурации, определения произведения ср класса для каждого класса компонентов, которое представляет собой объединенную численную идентификацию экземпляров упомянутого класса компонентов, определения неполного секрета Рр для каждого класса компонентов с учетом степени допуска на изменения в первой аппаратной конфигурации, и суммирования произведения ср класса и неполного секрета Рр для каждого класса компонентов для формирования n идентификаторов классов,
идентифицируют все экземпляры в пределах каждого класса компонентов второй аппаратной конфигурации,
воссоздают идентифицирующую строку, которая представляет каждый отдельный экземпляр компонента,
генерируют простое число ip,q экземпляра для каждого экземпляра компонента на основе соответствующей воссозданной идентифицирующей строки, причем каждое простое число экземпляра - положительное простое число, и р представляет номер заданного класса компонентов в пределах от 1 до n, и q представляет q-й тип компонента в пределах первой аппаратной конфигурации или второй аппаратной конфигурации, воссоздают возможные неполные секреты Ppq классов, причем:
Pp,q=[Cp(mod ip,q)],
извлекают возможные простые числа рp,q классов и возможные остатки dq,qклассов из возможных неполных секретов Рp,q классов, решают набор отношений сравнимости по модулю, полученных с помощью перестановки возможных простых чисел классов и возможных остатков классов, для генерации возможного секрета, и
проверяют возможный секрет, декодируя зашифрованный текст,
закодированный из известного открытого текста, и проверяя результат проверки по отношению к упомянутому известному открытому тексту, причем:
если результирующий открытый текст соответствует известному открытому тексту, то загружают программный продукт на второй компьютерной системе, и
если результирующий открытый текст не соответствует известному открытому тексту, то препятствуют загрузке программного продукта на второй компьютерной системе.
14. Вычислительная система по п.13, в которой этап генерации простых чисел экземпляров содержит ввод идентифицирующей строки, которая представляет каждый отдельный экземпляр компонента, в функцию f(x) генерации простых чисел, где х - идентифицирующая строка, имеющая длину до приблизительно 65000 символов.
15. Вычислительная система по п.14, в которой g(x) генерирует положительное простое число, имеющее значение большее чем 2t, где t - целое число в пределах от приблизительно 32 до приблизительно 2048.

Патенты аналоги

Авторы

Патентообладатели

Заявители

СПК: A61P31/04 D01D1/106 G06F21/125

Публикация: 2009-03-10

Дата подачи заявки: 2004-03-02

0
0
0
0
Невозможно загрузить содержимое всплывающей подсказки.
Поиск по товарам