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

Иллюстрации

Показать все

Изобретение относится к средствам генерации аппаратной идентификации для заданной компьютерной системы. Техническим результатом является обеспечение безопасности и надежности аппаратной идентификации компьютерной системы при изменении ее конфигурации. В способе идентифицируют все экземпляры компонентов в пределах каждого из n классов компонентов, генерируют множество результатов хеширования, конкатенируют множество результатов хеширования для формирования части хеширования, причем часть хеширования формирует часть подробной аппаратной идентификации для первой компьютерной системы; и конкатенируют часть заголовка, часть счетчика и часть хеширования подробной аппаратной идентификации для формирования подробной аппаратной идентификации для первой компьютерной системы. 8 н. и 42 з.п. ф-лы, 7 ил.

Реферат

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

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

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

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

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

СУЩНОСТЬ ИЗОБРЕТЕНИЯ

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

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

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

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

Эти и другие признаки и преимущества настоящего изобретения станут очевидными после просмотра последующего подробного описания раскрытых вариантов осуществления и прилагаемой формулы изобретения.

КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ

Фиг.1 - структурная схема некоторых из первичных компонентов примерной рабочей среды для выполнения настоящего изобретения;

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

Фиг.3 изображает одну возможную подробную аппаратную идентификацию (ПАПИД) для примерной аппаратной конфигурации, показанной на фиг.2;

Фиг.4-6 - последовательность операций, показывающая примерные этапы определения подробной аппаратной идентификации (ПАПИД) для аппаратной конфигурации; и

Фиг.7 - последовательность операций, показывающая примерные этапы определения, может ли программный продукт использоваться в компьютерной аппаратной системе, с помощью сравнения недавно сгенерированной подробной аппаратной идентификации (ПАПИД) с предварительно сгенерированной подробной аппаратной идентификацией (ПАПИД).

ПОДРОБНОЕ ОПИСАНИЕ ИЗОБРЕТЕНИЯ

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

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

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

ПРИМЕРНАЯ РАБОЧАЯ СРЕДА

Примерные варианты осуществления настоящего изобретения описаны ниже со ссылкой на чертежи, на которых подобные цифры представляют подобные элементы на всех чертежах. Фиг.1 иллюстрирует примерную рабочую среду для воплощения настоящего изобретения. Примерная рабочая среда включает в себя универсальное вычислительное устройство в форме обычного персонального компьютера 20. В общем случае персональный компьютер 20 включает в себя процессор 21, системную память 22 и системную шину 23, которая связывает различные системные компоненты, которые включают в себя системную память 22, с процессором 21. Системная шина 23 может иметь любой из нескольких типов шинных структур, которые включают в себя шину памяти или контроллер памяти, периферийную шину и локальную шину, используя любое из разнообразия шинных архитектур. Системная память включает в себя постоянное запоминающее устройство (ПЗУ) 24 и оперативную память (ОП) 25. Базовая система ввода-вывода (BIOS) 26, содержащая основные подпрограммы, которые помогают перемещать информацию между элементами в пределах персонального компьютера 20, например, во время запуска, хранится в ПЗУ 24.

Персональный компьютер 20 дополнительно включает в себя накопитель 27 на жестком диске для считывания данных с жесткого диска, который не показан, и записи данных на него, магнитный дисковод 28 для считывания или записи данных на сменный магнитный диск 29 и оптический дисковод 30 для считывания или записи данных на сменный оптический диск 31, такой как компакт-диск или другой оптический носитель. Накопитель 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. Следует признать, что показанные сетевые подключения являются примерными и что могут использоваться другие средства установления линии связи между компьютерами.

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

ВОПЛОЩЕНИЯ ПРИМЕРНЫХ ВАРИАНТОВ ОСУЩЕСТВЛЕНИЯ НАСТОЯЩЕГО

ИЗОБРЕТЕНИЯ

Как описано выше, компьютерная система типично содержит многочисленные классы аппаратных компонентов. Дополнительно, компьютерная система может содержать многочисленные компоненты (например, два жестких диска) в пределах каждого класса аппаратных компонентов.

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

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

I. ГЕНЕРАЦИЯ ПОДРОБНОЙ АППАРАТНОЙ ИДЕНТИФИКАЦИИ (ПАПИД) ДЛЯ КОМПЬЮТЕРНОЙ СИСТЕМЫ

Описание компонентов примерной подробной аппаратной идентификации (ПАПИД) представлено ниже.

А. ПОДРОБНАЯ. АППАРАТНАЯ ИДЕНТИФИКАЦИЯ (ПАПИД)

Подробная аппаратная идентификация (ПАПИД) заданной компьютерной системы желательно содержит три части: (1) компонент заголовка, (2) компонент счетчика и (3) компонент хеширования. Каждая часть возможной подробной аппаратной идентификации (ПАПИД) может быть получена из аппаратной конфигурации данной компьютерной системы. Пример компьютерной аппаратной конфигурации и экземпляров в пределах каждого класса компонентов показан на фиг.2.

Как показано на фиг.2, примерная компьютерная аппаратная конфигурация 20 содержит восемь отличающихся классов 21-28 компонентов, имеющих всего 19 экземпляров 200 компонентов, распределенных среди классов 21-28 компонентов. Класс 21 компонентов приводов компакт-дисков содержит четыре экземпляра компонентов; класс 22 устройств с интерфейсом IDE содержит два экземпляра компонентов; класс 23 дисководов содержит один экземпляр компонентов; класс 24 дисплеев содержит один экземпляр компонентов; класс 25 устройств с интерфейсом SCSI содержит два экземпляра компонентов; класс 26 дисков содержит шесть экземпляров компонентов; класс 27 сетевых плат содержит один экземпляр компонентов; и класс 28 процессоров (т.е. центральных процессоров) содержит два экземпляра компонентов. Ряд 29 на фиг.2 изображает строку чисел, которые представляют количества экземпляров компонентов в пределах каждого из восьми классов 21-28 компонентов.

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

Примерная подробная аппаратная идентификация (ПАПИД) показана на фиг.3. Примерная подробная аппаратная идентификация (ПАПИД) 33 на фиг.3 является одним возможным способом идентификации компьютерной аппаратной конфигурации, показанной на фиг.2. Как обсуждалось выше, подробная аппаратная идентификация (ПАПИД) 34 желательно содержит по меньшей мере три отдельных части: часть 31 заголовка, часть 32 счетчика и часть 33 хеширования. Каждая из трех отдельных частей подробной аппаратной идентификации (ПАПИД) 34 изображена на фиг.3. Желательно, чтобы часть 31 заголовка содержала компонент 310 версии и усеченную числовую часть 312.

Компонент 310 версии из части 31 заголовка идентифицирует конкретную версию подробной аппаратной идентификации (ПАПИД) 34, используемой для идентификации заданной компьютерной системы. Например, конкретная версия (например, версия "I") подробной аппаратной идентификации (ПАПИД) может отличаться от другой версии (например, версии "2") подробной аппаратной идентификации (ПАПИД), используя один набор параметров для создания версии 1 при использовании другого, отличающегося, набора параметров для создания версии 2. Различные параметры могут использоваться для создания заданной версии подробной аппаратной идентификации (ПАПИД). Соответствующие параметры включают в себя, но не ограничены ими: (1) количество классов компонентов, представленных в части 31 заголовка подробной аппаратной идентификации (ПАПИД) 34; (2) подвергается ли идентифицирующая строка для одного. или более экземпляров компонентов, используемая для формирования части 31 заголовка, хеш-функции или некоторому другому процессу обработки данных (например, усечению идентифицирующей строки); (3) максимальное и/или минимальное количество классов компонентов, используемых для создания подробной аппаратной идентификации (ПАПИД) 34; (4) максимальное и/или минимальное количество экземпляров компонентов, которые будут рассматриваться в пределах данного класса компонентов; (5) хеш-функция, используемая для создания значений хеш-функции для каждого экземпляра компонентов; (6) длина каждого результата хеширования, используемого для формирования подробной аппаратной идентификации (ПАПИД) 34; и (7) полная и/или максимальная длина подробной аппаратной идентификации (ПАПИД) 34.

Некоторые классы компонентов не могут иметь многочисленных экземпляров компонентов и известны как классы с единственным экземпляром. ОП всей системы - один пример класса с единственным экземпляром. Данные для класса с единственным экземпляром хешируют и усекают в случае необходимости, затем сохраняют в усеченной числовой части 312 в части 31 заголовка. Каждый класс с единственным экземпляром, представленный в заголовке, будет иметь связанную усеченную числовую часть 312.

Желательно, чтобы часть 31 заголовка подробной аппаратной идентификации (ПАПИД) 34 имела фиксированную длину, которая согласуется со всей подробной аппаратной идентификацией, имеющей определенный тип версии (например, версия 1 ПАПИД). Например, часть 31 заголовка подробной аппаратной идентификации (ПАПИД) 34 может иметь фиксированную длину от приблизительно 10 до приблизительно 24 байтов с общим количеством байтов, распределенным среди компонента 310 версии и усеченной числовой частью 312.

Часть 32 счетчика содержит строку чисел, которые представляют количество экземпляров компонентов в пределах каждого из классов компонентов, используемых для подготовки подробной аппаратной идентификации (ПАПИД) 34. Как показано на фиг.3, часть 32 счетчика содержит строку чисел: "42112612", которая соответствует экземплярам компонентов в пределах классов 21-28 компонентов, показанных на фиг.2. Следует отметить, что если класс компонентов не содержит экземпляра компонентов, то часть 32 счетчика содержит "0" для определенного класса компонентов.

Подобно описанной выше части 31 заголовка желательно, чтобы часть 32 счетчика из подробной аппаратной идентификации (ПАПИД) 34 имела фиксированную длину, которая соответствует всей подробной аппаратной идентификации, имеющей определенный тип версии. Часть 32 счетчика всегда имеет длину, равную n-количеству классов компонентов, используемых для создания подробной аппаратной идентификации (ПАПИД) 34. Как правило, часть 32 счетчика из подробной аппаратной идентификации (ПАПИД) 34 имеет фиксированную длину от приблизительно 6 до приблизительно 16 символов.

Часть 33 хеширования содержит составную строку значений хеш-функции, представляющих каждый из 19 экземпляров компонентов в пределах классов 21-28 компонентов, показанных на фиг.2. Каждый отдельный результат хеширования может иметь длину приблизительно до 160 битов. Желательно, чтобы каждый отдельный результат хеширования имел длину от приблизительно 10 до приблизительно 20 битов, более желательно приблизительно 16 битов. В данном примере результирующая часть 33 хеширования из подробной аппаратной идентификации (ПАПИД) 34 имеет требуемую полную длину 304 битов (т.е. 19х16=304).

Часть 33 хеширования подробной аппаратной идентификации (ПАПИД) 34 обычно имеют длину, которая изменяется в зависимости от количества экземпляров компонентов в пределах n классов компонентов данной аппаратной конфигурации. Полная длина части 33 хеширования равна количеству экземпляров компонентов, умноженному на необходимую длину результата хеширования для каждого результата хеширования экземпляра компонентов.

Как показано на фиг.3, подробная аппаратная идентификация (идентификационная информация) (ПАПИД) 34 представлена составной (конкатенированной) строкой части 31 заголовка, части 32 счетчика и части 33 хеширования. Примерный способ определения подробной аппаратной идентификации (ПАПИД) 34 для компьютерной аппаратной конфигурации описан ниже.

Следует отметить, что подробная аппаратная идентификация (ПАПИД) согласно настоящему изобретению может содержать только одну часть. В одном примерном варианте осуществления настоящего изобретения подробная аппаратная идентификация (ПАПИД) заданной компьютерной аппаратной конфигурации содержит одну часть 33 хеширования. В этом варианте осуществления подробная аппаратная идентификация (ПАПИД) не содержит часть 31 заголовка или часть 32 счетчика. В дополнительном варианте осуществления настоящего изобретения подробная аппаратная идентификация (ПАПИД) содержит только часть 32 счетчика в комбинации с частью 33 хеширования. В другом варианте осуществления настоящего изобретения подробная аппаратная идентификация (ПАПИД) содержит только часть 31 заголовка и часть 33 хеширования, она создана таким образом, что часть 32 счетчика скрыта.

В. ОПРЕДЕЛЕНИЕ ПОДРОБНОЙ АППАРАТНОЙ ИДЕНТИФИКАЦИИ (ПАПИД) ДЛЯ КОМПЬЮТЕРНОЙ СИСТЕМЫ

ПАПИД согласно настоящему изобретению может определяться примерным способом, который показан на фиг.4-6. Этапы примерного способа могут выполняться с помощью кода программы в программном продукте на компьютере клиента, подобном компьютеру 20, описанному выше по отношению к фиг.1. Как показано на фиг.4-6, примерное определение ПАПИД для заданной компьютерной аппаратной конфигурации (указанной как "HW1") начинается с этапа 401, на котором выбирают количество n классов компонентов для идентификации данной компьютерной аппаратной конфигурации HW1. Как обсуждалось выше, данная компьютерная система может включать в себя разные аппаратные компоненты и классы аппаратных компонентов. Примерные классы аппаратных компонентов включают в себя жесткие диски, логические диски, оптические диски, сетевые платы, адаптеры дисплея, постоянное запоминающее устройство (ПЗУ), оперативную память (ОП), устройства с интерфейсом IDE, звуковые платы, видеоплаты, процессоры, устройства с интерфейсом SCSI и систему BIOS, но не ограничены ими. Желательно, чтобы количество n аппаратных классов компонентов было целым числом в пределах от приблизительно 2 до приблизительно 16. В общем случае желательно, чтобы n было как можно больше для того, (i) чтобы более точно идентифицировать заданную компьютерную систему, и (ii) чтобы более точно измерить степень допуска заданной компьютерной системы.

После выбора количества n классов компонентов на этапе 401 на этапе 402 идентифицируют каждый класс компонентов. Классы компонентов могут включать в себя любой из описанных выше классов компонентов, например класс жестких дисков. Примерный список классов компонентов, используемых для идентификации примерной аппаратной конфигурации HW1, приведен ниже в таблице 1.

Таблица 1Примерный список классов аппаратных компонентов, используемых для идентификации примерной аппаратной конфигурации HW1
Номер класса компонентовОписание классаИдентификатор класса
1Привод компакт-дисковИдентификатор привода компакт-диска
2Устройства с интерфейсом IDEИдентификатор устройства с интерфейсом IDE
3Жесткий дискСерийный номер диска
4Адаптер дисплеяИдентификатор
5Устройства с интерфейсом SCSIИдентификатор устройства с интерфейсом SCSI
6ДисководИдентификатор дисковода
7Сетевая платаМАС-адрес
8ПроцессорыИдентификатор процессора

Как показано в таблице 1, в данном примере, n равняется 8, и идентифицированные аппаратные классы компонентов включают в себя: (1) класс приводов компакт-диска; (2) класс устройств с интерфейсом IDE; (3) класс жестких дисков; (4) класс адаптеров дисплея; (5) класс устройств с интерфейсом SCSI; (6) класс дисководов; (7) класс сетевых плат и (8) класс центральных процессоров.

После того как каждый класс компонентов идентифицирован на этапе 402, на этапе 403 идентифицируют все устройства, или экземпляры, в пределах каждого класса аппаратных компонентов. На этапе 403 также определяют "счетчик" (т.е. количество компонентов, или экземпляров, в пределах каждого класса компонентов). Желательно, чтобы каждый экземпляр в пределах конкретного класса компонентов был идентифицирован наиболее уникальной идентифицирующей строкой, связанной с данным экземпляром. Например, аппаратная конфигурация может содержать привод компакт диска, изготовленный NEC Corporation и имеющий идентифицирующую строку "NEC CDRW24 315". Любой доступный способ определения наиболее уникальной идентифицирующей строки в заданном экземпляре может использоваться в настоящем изобретении. Этап назначения идентифицирующей строки для каждого экземпляра компонентов показан на этапе 404.

Когда идентифицирующая строка для каждого экземпляра компонентов назначена, на этапе 405 готовится часть заголовка подробной аппаратной идентификации (ПАПИД). На этапе 406 конкретная версия ПАПИД вводится в заголовок для формирования части 310 заголовка, как показано на фиг.3. Как описано выше, номер версии может представлять один или более параметров, используемых для определения подробной аппаратной идентификации (ПАПИД).

На этапе 407 идентифицируют класс компонентов, который должен быть представлен в заголовке. Как правило, классы компонентов, имеющие только единственный экземпляр компонентов, или классы с единственным экземпляром компонентов, представлены в части заголовка ПАПИД. Соответствующие классы компонентов, которые могут быть представлены в части заголовка ПАПИД, включают в себя класс компонентов памяти, класс возможности подключать компьютер к установочному модулю (т.е. можно ли устанавливать в компьютер в установочный модуль или нет), систему BIOS или их комбинацию, но не ограничены ими. В одном из примерных вариантов осуществления настоящего изобретения часть заголовка ПАПИД содержит информацию класса с единственным компонентом аппаратной конфигурации.

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

Если идентифицирующая строка должна быть подвергнута хешированию, то способ продолжается на этапе 411, на котором выполняют хеширование идентифицирующей строки экземпляра компонентов. Желательно, чтобы результат хеширования усекался до длины приблизительно 16 битов. На этапе 412 результат хеширования вводят в усеченную числовую часть 312 части 31 заголовка (как показано на фиг.3). Если идентифицирующая строка не подвергается хешированию, то способ продолжается на этапе 410, где идентифицирующую строку усекают до необходимой длины и вводят в усеченную числовую часть 312 части 31 заголовка. Желательно, чтобы идентифицирующая строка усекалась до длины, меньше чем приблизительно 16 битов.

Когда усеченный результат хеширования с этапа 412 или усеченную идентифицирующую строку с этапа 410 вводят в усеченную числовую часть 312 части 31 заголовка, способ продолжается на этапе 413 принятия решения. На этапе 413 принятия решения принимают решение, добавить ли дополнительную информацию о другом классе компонентов к части 31 заголовка ПАПИД. Если дополнительную информацию о другом классе компонентов нужно добавить к части 31 заголовка ПАПИД, то способ возвращается на этап 407 и выполняется, как описано выше. Если дополнительную информацию не нужно добавлять к части 31 заголовка ПАПИД, то способ продолжается на этапе 414, где подготавливается часть счетчика 32 для ПАПИД. Как обсуждалось выше, часть 32 счетчика ПАПИД содержит числовую строку из n чисел, которые представляют количество экземпляров компонентов в пределах каждого из п классов компонентов, используемых для формирования ПАПИД. (См. часть 32 счетчика на фиг.3.)

На этапе 415 выполняют хеширование идентифицирующих строк для каждого экземпляра компонентов, представленного в части 32 счетчика ПАПИД. Если данный класс компонентов не содержит экземпляра компонентов, то специальный результат хеширования может быть сгенерирован для использования в ПАПИД, причем специальный результат хеширования указывает, что данный класс компонентов не содержал экземпляра компонентов. Альтернативно, значение хеш-функции может не сохраняться и часть 32 счетчика, соответствующая отсутствующему классу компонентов, будет установлена в ноль, указывая, что данный класс компонентов отсутствует. Результаты хеширования для каждого экземпляра компонентов могут усекаться до необходимой длины. В одном из примерных вариантов осуществления настоящего изобретения каждый из результатов хеширования усекают до длины от приблизительно 10 до приблизительно 20 битов, более желательно приблизительно до 16 битов.

В настоящем изобретении могут использоваться любые известные хеш-функции, которые способны принимать идентифицирующие строки произвольной длины и создавать выходное значение, или результат, хэш-функции, имеющий фиксированную длину, меньшую или равную приблизительно 160 битам. Примеры соответствующих хеш-функций включают в себя алгоритмы хеширования HAVAL, MD2, MD4, MD5 и SHA-1, которые известны специалистам, но не ограничены ими. Другие соответствующие хеш-функции для использования в настоящем изобретении раскрыты в работе "Applied Cryptography", Bruce Schneier, опубликованной John Wiley & Sons (ISBN #0471117099), раскрытие которой полностью представлено для справки.

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

Например, если пользователь активизирует многочисленные пакеты программ от одного и того же поставщика, то можно использовать ПАПИД для соотнесения отдельных записей активации для формирования картины тенденций покупки программного обеспечения пользователя. Чтобы предпринять меры против этого, могут создаваться различные ПАПИД для одного и того же компьютера, чтобы они казались несвязанными, с помощью создания каждого отдельного результата хеширования, используя хеш-функцию, такую как hash х=MD5 [(модификатор) х+строка ИД], где значение модификатора отличается для каждого пакета программ.

На этапе 416 результаты хеширования для каждого экземпляра компонентов соединяют для формирования части 33 хеширования для подробной аппаратной идентификации (ПАПИД) 34, как показано на фиг.3. На этапе 217 собирают окончательную подробную аппаратную идентификацию (ПАПИД) 34, соединяя часть 31 заголовка, часть 32 счетчика и часть 33 хеширования.

На этапе 418 результирующую подробную аппаратную идентификацию (идентификационную информацию) (ПАПИД) для аппаратной конфигурации HW1 сохраняют для будущего использования. Подробная аппаратная идентификация (ПАПИД) для аппаратной конфигурации HW1 может храниться локально (например, в регистре, файловой системе или защищенном запоминающе