Код документа: 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, в этом примере n равняется 4, и идентифицируемые классы аппаратных компонентов: (1) класс приводов компакт-диска; (2) класс накопителей на жестких магнитных дисках; (3) класс сетевых плат и (4) класс адаптеров дисплея.
После того как каждый класс компонентов идентифицирован на этапе 202, на этапе 203 идентифицируют все экземпляры в пределах каждого аппаратного класса компонентов. Желательно, чтобы каждый экземпляр в пределах определенного класса компонентов был представлен наиболее уникальной идентифицирующей строкой, связанной с данным экземпляром. Например, аппаратная конфигурация может содержать привод компакт-дисков, изготовленный фирмой NEC Corporation и имеющий идентифицирующую строку «NEC CDRW24 S15». Любой доступный способ определения наиболее уникальной идентифицирующей строки согласно приведенному примеру, который включает в себя опрос устройств и вызов функции API (интерфейса прикладного программирования) операционной системы, может использоваться в настоящем изобретении. Пример компьютерной аппаратной конфигурации и экземпляров в пределах каждого класса аппаратных компонентов показан в таблице 2.
Как показано в таблице 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 экземпляра для экземпляров компонентов примерной аппаратной конфигурации.
В данной работе простое число ip,q экземпляра используется для обозначения простого числа экземпляра для заданного экземпляра компонента q в пределах заданного класса p. Например, простое число i1,2 экземпляра используется для идентификации простого числа экземпляра для данного экземпляра компонента в классе компонентов 1 (например, p = 1), а более конкретно, второго экземпляра компонента в пределах класса 1 компонентов и в пределах компьютерной аппаратной конфигурации (например, q=2).
В одном из вариантов осуществления настоящего изобретения до генерации простого числа экземпляра для заданного экземпляра компонента к идентификатору экземпляра компонента можно добавить случайное число-модификатор («salt value»). В данном варианте осуществления добавление случайного числа-модификатора позволяет создавать различные SHWID, основанные на той же самой компьютерной аппаратной конфигурации. Модификаторы, полученные из кода прикладной программы или из идентификатора пользователя, допускают различные SHWID для различных пользователей или приложений, выполняющихся на одной и той же аппаратной конфигурации, что может быть выгодным при организации защиты данных для использования только конкретным приложением или пользователем.
Когда для каждого экземпляра компонента сгенерировано простое число экземпляра, на этапе 206 для каждого класса компонентов генерируют произведение cp класса. Произведение cp класса генерируют с помощью перемножения простых чисел экземпляров в пределах заданного класса друг с другом. Примерные произведения класса с c1 до c4 приведены в таблице 4.
Как показано в таблице 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
2
Примерный список простых чисел pp класса для каждого из n классов (например, n=4) примерной компьютерной системы показан в таблице 5.
Примерные выходные данные, отображающие зависимость между простыми числами класса для заданной аппаратной конфигурации, можно представить как:
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. На этапе 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. На этапе 502 идентифицируют все экземпляры в пределах каждого класса компонентов заданной аппаратной конфигурации. Как описано выше, любой известный способ может использоваться для идентификации каждого экземпляра компонента. Как правило, экземпляр компонента идентифицируют с помощью наиболее уникальной идентифицирующей строки для компонента. Примерные идентифицирующие строки для каждого экземпляра компонента в пределах типовых конфигураций H, H1 и H2 показаны в таблицах 8-10.
Примерные остатки классов для каждого класса компонентов
Примерные сильнозащищенные идентификаторы классов для аппаратной конфигурации
Примерные экземпляры компонентов для аппаратной конфигурации H
«TOSHIBA DVDR ASB-1425»}
Когда все экземпляры в пределах каждого класса компонентов заданной аппаратной конфигурации идентифицированы, извлекают наиболее уникальную идентифицирующую строку для каждого экземпляра, как показано на этапе 503. Идентифицирующие строки для каждого экземпляра используются для генерации простого числа экземпляра для каждого экземпляра компонента, используя функцию генерации простых чисел f(идентификатор экземпляра компонента), как показано на этапе 504. Функция генерации простых чисел f(идентификатор экземпляра компонента) может быть любой функцией генерации простых чисел, известной специалистам в данной области техники, как описано выше. Приведенные таблицы 11-13 обеспечивают примерные простые числа экземпляров для каждого из экземпляров компонентов в пределах примерных аппаратных конфигураций H, H1 и H2.
Следует отметить, что экземпляр {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.
Из каждого из возможных неполных секретов 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.
Когда на этапе 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, исходная аппаратная конфигурация 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 табл.