использование устройства флэш-памяти для препятствования несанкционированному использованию программного обеспечения

Классы МПК:G06F12/14 защита от обращений к памяти посторонних пользователей
Автор(ы):
Патентообладатель(и):МАЙКРОСОФТ КОРПОРЕЙШН (US)
Приоритеты:
подача заявки:
2008-08-04
публикация патента:

Изобретение относится к области использования устройства флэш-памяти для препятствования несанкционированному использованию программного обеспечения. Техническим результатом является обеспечение препятствования несанкционированному использованию приложения программного обеспечения. Идентификатор может быть закодирован в пределах конкретных секторов устройства флэш-памяти. Единичные биты этого идентификатора могут быть кодированы как неиспользуемые секторы из этих конкретных секторов, а нулевые биты этого идентификатора могут быть кодированы как используемые секторы из этих конкретных секторов. Альтернативно, нулевые биты этого идентификатора могут быть кодированы как неиспользуемые секторы из этих конкретных секторов, а единичные биты этого идентификатора могут быть кодированы как используемые секторы из этих конкретных секторов. Может быть разрешено использование приложения программного обеспечения на устройстве обработки, подключенном к этому устройству флэш-памяти, только когда идентификатор закодирован в пределах устройства флэш-памяти. 3 н. и 17 з.п. ф-лы, 14 ил. использование устройства флэш-памяти для препятствования несанкционированному   использованию программного обеспечения, патент № 2473116

использование устройства флэш-памяти для препятствования несанкционированному   использованию программного обеспечения, патент № 2473116 использование устройства флэш-памяти для препятствования несанкционированному   использованию программного обеспечения, патент № 2473116 использование устройства флэш-памяти для препятствования несанкционированному   использованию программного обеспечения, патент № 2473116 использование устройства флэш-памяти для препятствования несанкционированному   использованию программного обеспечения, патент № 2473116 использование устройства флэш-памяти для препятствования несанкционированному   использованию программного обеспечения, патент № 2473116 использование устройства флэш-памяти для препятствования несанкционированному   использованию программного обеспечения, патент № 2473116 использование устройства флэш-памяти для препятствования несанкционированному   использованию программного обеспечения, патент № 2473116 использование устройства флэш-памяти для препятствования несанкционированному   использованию программного обеспечения, патент № 2473116 использование устройства флэш-памяти для препятствования несанкционированному   использованию программного обеспечения, патент № 2473116 использование устройства флэш-памяти для препятствования несанкционированному   использованию программного обеспечения, патент № 2473116 использование устройства флэш-памяти для препятствования несанкционированному   использованию программного обеспечения, патент № 2473116 использование устройства флэш-памяти для препятствования несанкционированному   использованию программного обеспечения, патент № 2473116 использование устройства флэш-памяти для препятствования несанкционированному   использованию программного обеспечения, патент № 2473116 использование устройства флэш-памяти для препятствования несанкционированному   использованию программного обеспечения, патент № 2473116

Формула изобретения

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

осуществляют доступ к информации лицензии, касающейся использования программного обеспечения, причем информация лицензии включает в себя идентификатор (502, 510);

осуществляют доступ к конкретным секторам памяти устройства флэш-памяти для определения того, закодирован ли в них этот идентификатор, так что единичные биты представлены неиспользуемыми секторами из этих конкретных секторов, а нулевые биты представлены используемыми секторами из этих конкретных секторов или нулевые биты представлены неиспользуемыми секторами из этих конкретных секторов, а единичные биты представлены используемыми секторами из этих конкретных секторов (402, 512); и

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

2. Машинно-реализуемый способ по п.1, в котором:

информация лицензии цифровым образом подписана доверенным источником, и

причем способ дополнительно содержит этапы, на которых:

определяют, включает ли информация лицензии достоверную цифровую подпись доверенного источника; и

препятствуют использованию программного обеспечения, когда информация лицензии не включает в себя достоверную цифровую подпись доверенного источника.

3. Машинно-реализуемый способ по п.1, дополнительно содержащий этапы, на которых:

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

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

4. Машинно-реализуемый способ по п.1, в котором информация лицензии хранится в устройстве флэш-памяти.

5. Машинно-реализуемый способ по п.1, в котором информация лицензии хранится в некотором компоненте устройства обработки, причем это устройство обработки имеет устройство флэш-памяти, подключенное к нему.

6. Машинно-реализуемый способ по п.1, в котором:

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

машинно-реализуемый способ дополнительно содержит этапы, на которых:

подсчитывают каждое использование программного обеспечения посредством выполнения множества записей в по меньшей мере один сектор устройства флэш-памяти для того, чтобы тем самым сделать этот по меньшей мере один сектор неиспользуемым после подсчета этого заранее заданного числа использований программного обеспечения;

определяют, является ли упомянутый по меньшей мере один сектор неиспользуемым; и

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

7. Машинно-реализуемый способ по п.1, в котором:

информация лицензии включает в себя дату истечения срока пользования, и

машинно-реализуемый способ дополнительно содержит этапы, на которых:

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

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

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

8. Машинно-реализуемый способ по п.1, дополнительно содержащий этапы, на которых:

кодируют упомянутый идентификатор в упомянутые конкретные секторы памяти устройства флэш-памяти во время активации программного обеспечения на устройстве обработки.

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

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

выполняют проверку достоверности информации лицензии (504);

осуществляют доступ к конкретным секторам памяти устройства флэш-памяти для определения того, закодирован ли в них этот идентификатор, так что единичные биты представлены неиспользуемыми секторами из этих конкретных секторов, а нулевые биты представлены используемыми секторами из этих конкретных секторов или нулевые биты представлены неиспользуемыми секторами из этих конкретных секторов, а единичные биты представлены используемыми секторами из этих конкретных секторов (402, 502, 512); и

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

10. Машинно-реализуемый способ по п.9, дополнительно содержащий этапы, на которых:

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

11. Машинно-реализуемый способ по п.9, в котором:

упомянутый идентификатор включает в себя множество частей и

машинно-реализуемый способ дополнительно содержит этапы, на которых:

демаскируют каждую из этого множества частей данного идентификатора в конкретные периоды времени.

12. Машинно-реализуемый способ по п.9, в котором:

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

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

13. Машинно-реализуемый способ по п.9, в котором приложение программного обеспечения хранится на устройстве флэш-памяти.

14. Машинно-реализуемый способ по п.9, дополнительно содержащий этапы, на которых:

кодируют упомянутый идентификатор и цифровую подпись этого идентификатора в упомянутые конкретные секторы памяти устройства флэш-памяти во время активации упомянутого программного обеспечения.

15. Машинно-реализуемый способ по п.9, дополнительно содержащий этапы, на которых:

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

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

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

информацию лицензии, хранимую в нем, относительно упомянутого приложения программного обеспечения, причем информация лицензии включает в себя идентификатор (304, 402, 1414); и

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

17. Устройство флэш-памяти по п.16, дополнительно содержащее:

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

18. Устройство флэш-памяти по п.16, в котором:

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

неиспользуемые секторы из по меньшей мере одного сектора устройства флэш-памяти указывают, имело ли место это количество разрешенных использований.

19. Устройство флэш-памяти по п.16, дополнительно содержащее:

упомянутое приложение программного обеспечения, хранимое в пределах устройства флэш-памяти.

20. Устройство флэш-памяти по п.16, в котором:

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

неиспользуемые секторы из по меньшей мере одного сектора устройства флэш-памяти указывают, прошла ли эта дата истечения срока действия.

Описание изобретения к патенту

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

Одним стандартным способом для препятствования несанкционированному использованию программного обеспечения на устройстве обработки является требование подключения к устройству обработки специального устройства, такого как, например, электронный защитный ключ-заглушка или ключ памяти универсальной последовательной шины (USB). Программное обеспечение разрешается исполнять на устройстве обработки, только когда это специальное устройство подключено к устройству обработки.

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

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

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

В вариантах осуществления, соответствующих предмету данного раскрытия, предложены устройство флэш-памяти для препятствования несанкционированному использованию программного обеспечения и способ использования устройства флэш-памяти для препятствования несанкционированному использованию программного обеспечения. При попытке исполнения программного обеспечения на устройстве обработки, имеющем устройство флэш-памяти, подключенное к нему, устройство обработки может осуществить доступ к информации лицензии, которая может включать в себя идентификатор. Затем может быть осуществлен доступ к конкретным секторам устройства флэш-памяти для определения того, закодирован ли в них этот идентификатор. Единичные биты этого идентификатора могут быть кодированы как неиспользуемые секторы из этих конкретных секторов, а нулевые биты этого идентификатора могут быть кодированы как используемые секторы из этих конкретных секторов. Альтернативно, нулевые биты идентификатора могут быть кодированы как неиспользуемые секторы из этих конкретных секторов, а единичные биты идентификатора могут быть кодированы как используемые секторы из этих конкретных секторов. Устройству обработки может быть разрешено исполнять программное обеспечение с полной функциональностью, только когда определено, что этот идентификатор закодирован в устройстве флэш-памяти. В противном случае устройству обработки может быть не разрешено исполнять это программное обеспечение, или оно может исполнять это программное обеспечение с ограниченной функциональностью.

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

ПЕРЕЧЕНЬ ЧЕРТЕЖЕЙ

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

Фиг.1 иллюстрирует примерное рабочее окружение для вариантов осуществления, соответствующих предмету данного раскрытия.

Фиг.2 является функциональной блок-схемой устройства обработки, которое может использоваться для реализации сервера или устройства обработки, показанного на фиг.1.

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

Фиг.5-14 являются логическими блок-схемами, иллюстрирующими примерные процессы, которые могут выполняться в вариантах осуществления, соответствующих предмету данного раскрытия.

ПОДРОБНОЕ ОПИСАНИЕ

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

Обзор

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

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

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

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

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

Примерное рабочее окружение

Фиг.1 иллюстрирует примерное рабочее окружение 100 для вариантов осуществления, соответствующих предмету данного раскрытия. Рабочее окружение 100 может включать в себя устройство 102 обработки, устройство 104 флэш-памяти, один или несколько серверов 106 и сеть 108.

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

Устройством 102 обработки может быть пользовательское устройство обработки, такое как, например, настольный персональный компьютер (PC), портативный PC, карманное устройство обработки или другое устройство обработки.

Устройством 104 флэш-памяти может быть перезаписываемое съемное устройство флэш-памяти, такое как, например, флэш-RAM устройство универсальной последовательной шины (USB), или другое устройство флэш-памяти, которое может быть съемным образом подключено к устройству 102 обработки. В вариантах осуществления, в которых устройство 104 флэш-памяти является USB флэш-RAM устройством, USB флэш-RAM устройство может быть съемным образом подключено к устройству 102 обработки через USB порт устройства 102 обработки.

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

Примерное устройство обработки

Фиг.2 является функциональной блок-схемой, которая иллюстрирует примерное устройство 200 обработки, которое может использоваться для реализации вариантов осуществления устройства 102 обработки и/или сервера 106, соответствующих предмету рассмотрения данного описания.

Устройство 200 обработки может включать в себя шину 210, устройство 220 ввода, память 230, ПЗУ (ROM) 240, устройство 250 вывода, процессор 260, порт 270 флэш-устройства и связной интерфейс 280. Шина 210 может позволить осуществлять связь среди компонентов устройства 200 обработки.

Процессор 260 может включать в себя по меньшей мере один стандартный процессор или микропроцессор, который интерпретирует и исполняет команды. Памятью 230 может быть ЗУПВ (RAM) или другой тип динамического ЗУ, которое сохраняет информацию и команды для исполнения посредством процессора 260. Память 230 может также хранить временные переменные или промежуточную информацию, используемую во время исполнения команд процессором 260. ROM 240 может включать в себя стандартное ROM устройство или другой тип статического ЗУ, которое хранит статическую информацию и команды для процессора 260. Порт 270 флэш-устройства может обеспечить средство для подключения устройства 104 флэш-памяти к устройству 200 обработки. Устройство 104 флэш-памяти может хранить данные и/или команды для процессора, такого как, например, процессор 260.

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

Связной интерфейс 280 может включать в себя приемопередатчик для передачи и приема информации для сети 108 или от нее. Связной интерфейс 280 может передавать и принимать информацию через беспроводное или проводное соединение.

Устройство 200 обработки может выполнять такие функции в ответ на выполнение процессором 260 последовательностей команд, содержащихся в материальном машиночитаемом носителе, таком как, например, память 230, ROM 240, устройство 104 флэш-памяти или другой носитель. Такие команды могут быть считаны в память 230 из другого машиночитаемого носителя или из отдельного устройства через связной интерфейс 280.

Устройство флэш-памяти

Устройство 104 флэш-памяти может включать в себя некоторое количество блоков или секторов. Каждый из этих секторов может включать в себя заранее заданное число битов. Например, каждый из этих секторов может включать в себя 16 килобитов, 2 килобита или другое число битов. Обычно устройство 104 флэш-памяти может первоначально иметь некоторое количество неиспользуемых секторов. Фиг.3 иллюстрирует информацию относительно секторов, а также другую информацию, которая может быть включена в некоторый вариант осуществления устройства 104 флэш-памяти. Устройство 104 флэш-памяти может включать в себя массив 302 плохих секторов, информацию лицензии 304 и массив 306 секторов для закодированной информации.

Массив 302 плохих секторов может включать в себя информацию относительно физических адресов плохих секторов, включенных в устройство 104 флэш-памяти.

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

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

Фиг.4 иллюстрирует массив секторов кодированной информации 306 более подробно в одном варианте осуществления устройства 104 флэш-памяти, соответствующем предмету данного раскрытия. Устройство 104 флэш-памяти может включать в себя массив 402 секторов для идентификатора, массив секторов 404 для цифровой подписи относительно этого идентификатора, массив 406 секторов для использования со счетчиками и массив 408 секторов для счетчиков периодов времени.

Массив 402 секторов для идентификатора может включать в себя информацию относительно конкретных секторов, в которых может быть закодирован некоторый идентификатор, такой как, например, идентификатор из информации лицензии 304 или другой идентификатор. Массив 404 секторов для цифровой подписи идентификатора может включать в себя информацию относительно конкретных секторов, в которых может быть закодирована цифровая подпись, вычисляемая по этому идентификатору. Цифровая подпись может быть вычислена по этому идентификатору с использованием частного ключа, такого как, например, частный ключ из доверенного источника. Массив 406 секторов для использования со счетчиками и массив 408 секторов для счетчиков периодов времени могут включать в себя информацию относительно конкретных секторов для кодирования счетчиков, так чтобы мог отслеживаться текущий статус относительно условий лицензии. Примерное использование этих счетчиков объясняется ниже со ссылкой на логические блок-схемы по фиг.5-10.

Примерная обработка

Фиг.5 и 6 иллюстрируют логические блок-схемы примерного процесса, который может быть выполнен в вариантах осуществления, соответствующих предмету данного раскрытия, когда делается попытка исполнить приложение программного обеспечения на устройстве обработки, таком как, например, устройство 102 обработки, имеющем устройство флэш-памяти, такое как, например, устройство 104 флэш-памяти, подключенное к нему.

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

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

Если во время действия 506 устройство обработки определяет, что информация лицензии является достоверной, то устройство обработки может получить идентификатор из информации лицензии или другого источника (действие 510). В некоторых вариантах осуществления этот идентификатор может быть уникальным идентификатором. Устройство обработки может затем определить, закодированы ли этот идентификатор и цифровая подпись относительно этого идентификатора в устройстве флэш-памяти (действие 512). Устройство обработки может осуществить это определение посредством обращения к массиву секторов для этого идентификатора, такому как, например, массив 402 секторов для идентификатора (фиг.4), и массиву секторов для цифровой подписи идентификатора, такому как, например, массив 404 секторов для цифровой подписи идентификатора (фиг.4).

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

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

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

использование устройства флэш-памяти для препятствования несанкционированному   использованию программного обеспечения, патент № 2473116

где max_writes - число циклов записи, которые ожидаются для того, чтобы сделать сектор неиспользуемым, а counting_number - максимальное значение счетчика, такое как, например, 10, при подсчете до 10. Поскольку сектор может не стать неиспользуемым после точного числа операций записи, может быть включен некоторый запас (margin) для лучшей гарантии того, что этот сектор становится неиспользуемым. Таким образом, например, если ожидается, что сектор станет неиспользуемым после 100000 операций записи (max_writes), используется счетчик для подсчета до 10 (counting_number) и margin равно 30%, то number_of_writes может быть равно 100000/10х(0,3+1), что равно 13000. Таким образом, в этом примере счетчик может быть приращен посредством записи в этот единственный сектор 13000 раз. После подсчета вплоть до counting_number этот сектор должен быть неиспользуемым.

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

Если во время действия 514 устройство обработки определяет, что число использований приложения программного обеспечения должно быть подсчитано, то устройство обработки может определить, имеются ли какие-либо остающиеся разрешенные использования (действие 602; фиг.6). Если нет остающихся разрешенных использований приложения программного обеспечения, то устройство обработки может ограничить или отключить функциональность приложения программного обеспечения (действие 604), как ранее обсуждалось относительно действия 508. В противном случае устройство обработки может подсчитать это число использований (действие 606). Как обсуждалось ранее, устройство обработки может подсчитать это число использований посредством записи в соответствующие секторы для того, чтобы сделать эти соответствующие секторы неиспользуемыми, или посредством выполнения некоторого количества записей в некоторый одиночный сектор таким образом, чтобы этот одиночный сектор стал неиспользуемым после подсчета заранее заданного числа использований.

Фиг.7 является логической блок-схемой, иллюстрирующей примерный процесс 606-1 для выполнения действия 606. Этот процесс может начаться с определения устройством обработки того, какой сектор следует использовать для подсчета числа использований (действие 702). В одном варианте осуществления устройство обработки может осуществить доступ к массиву 406 секторов для использования со счетчиками (фиг.4), который может включать в себя информацию относительно секторов, зарезервированных для счетчиков использований, и указатель на некоторый сектор для следующего счетчика использований. Таким образом, например, если секторы 1-20 должны быть использованы для счетчиков использований, и секторы 1-6 уже были использованы для подсчета и сделаны неиспользуемыми, то этот указатель может указывать на сектор 7 для использования для целей подсчета.

После определения сектора для использования для подсчета устройство обработки может выполнить множественные записи в этот сектор для того, чтобы сделать этот сектор неиспользуемым (действие 704). Устройство обработки может затем обновить информацию относительно указателя на сектор для следующего счетчика использований (действие 706). В отношении к вышеприведенному примеру, в котором секторы 1-20 могут использоваться для счетчиков использований, после использования сектора 7 для целей подсчета этот указатель может быть установлен для указания на сектор 8 таким образом, что сектор 8 может быть сделан неиспользуемым, когда подсчет должен быть выполнен в следующий раз.

Фиг.8 является логической блок-схемой, иллюстрирующей второй примерный процесс 606-2 для выполнения действия 606. Этот примерный процесс использует некоторый одиночный сектор как счетчик и выполняет подсчет согласно уравнению 1, обсужденному ранее. Этот процесс может начаться с определения устройством обработки сектора для использования для целей подсчета (действие 802). В одном варианте осуществления устройство обработки может осуществить доступ к массиву 406 для использования со счетчиками (фиг.4), который может включать в себя информацию относительно сектора, зарезервированного для использования в качестве счетчика использований. Устройство обработки может также получить информацию относительно количества записей для выполнения относительно этого сектора. Эта информация может быть включена в массив 406 секторов для использования со счетчиками или может быть сохранена в другом месте. Устройство обработки может затем выполнить это число записей в этот сектор таким образом, что этот сектор становится неиспользуемым после того, как было подсчитано заранее заданное число использований (действия 804).

Возвращаясь к фиг.6, после выполнения действия 606 или после определения того, что число использований приложения программного обеспечения не должно быть подсчитано (действие 514), устройство обработки может определить, должны ли быть подсчитаны периоды времени (действие 608). В одном варианте осуществления устройство обработки может осуществить это определение посредством доступа к массиву 408 секторов для счетчиков периодов времени (фиг.4), который может включать в себя информацию относительно секторов устройства флэш-памяти, подлежащих использованию в качестве счетчиков периодов времени. Обычно счетчик периодов времени может подсчитать количество периодов времени, таких как, например, дни, недели, месяцы, годы или другие периоды времени. Таким образом, например, если приложение программного обеспечения может использоваться в течение конкретного периода времени, такого как, например, 18 месяцев, то счетчик периодов времени может использоваться для подсчета количества месяцев. Если устройство обработки определяет, что счетчики периодов времени не используются, то устройство обработки может исполнить приложение программного обеспечения с полной функциональностью (действие 614).

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

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

Фиг.9 является логической блок-схемой, иллюстрирующей примерный процесс 612-1 для выполнения действия 612 в варианте осуществления, соответствующем предмету данного раскрытия. Этот процесс может начаться с определения устройством обработки того, прошел ли некоторый период времени (действие 902). Этим периодом времени могут быть дни, недели, месяцы, годы или другой интервал времени. Устройство обработки может осуществить это определение посредством обращения к системным часам и сравнения текущего значения системных часов со значением системных часов в начале этого периода времени.

Если устройство обработки определяет, что период времени прошел, то устройство обработки может определить сектор для использования для подсчета периодов времени (действие 904). В одном варианте осуществления устройство обработки может осуществить доступ к массиву 408 секторов для счетчиков периодов времени (фиг.4), который может включать в себя информацию относительно секторов, зарезервированных для счетчиков периодов времени, и указатель на счетчик следующего периода времени. Таким образом, например, если секторы 1-24 должны быть использованы для счетчиков периодов времени и секторы 1-10 уже были использованы для подсчета и сделаны неиспользуемыми, то этот указатель может указывать на сектор 11 для использования для целей подсчета периодов времени.

После определения сектора для использования для подсчета периодов времени устройство обработки может выполнить множественные записи в этот сектор для того, чтобы сделать этот сектор неиспользуемым (действие 906). Устройство обработки может затем обновить информацию относительно этого указателя на сектор для счетчика следующего периода времени (действие 908). В отношении вышеприведенного примера, в котором секторы 1-24 могут использоваться как счетчики периодов времени, после использования сектора 10 для подсчета периода времени указатель может быть установлен для указания на сектор 11, так что сектор 11 может быть сделан неиспользуемым, когда подсчет периода времени должен быть выполнен следующим.

Фиг.10 является логической блок-схемой, иллюстрирующей второй примерный процесс 612-2 для выполнения действия 612. Этот примерный процесс использует некоторый одиночный сектор как счетчик периодов времени и может выполнить подсчет согласно уравнению 1, обсужденному ранее. Это процесс может начаться с определения устройством обработки того, прошел ли период времени (действие 1002). Если устройство обработки определяет, что период времени прошел, то устройство обработки может определить сектор для использования для целей подсчета периодов времени (действие 1004). В одном варианте осуществления устройство обработки может осуществить доступ к массиву 408 секторов для счетчиков периодов времени (фиг.4), который может включать в себя информацию относительно сектора, зарезервированного для использования в качестве счетчика периодов времени. Устройство обработки может также получить информацию относительно некоторого количества записей для выполнения относительно этого сектора. Эта информация может быть включена в массив 408 секторов для счетчиков периодов времени или может быть сохранена в другом месте. Устройство обработки может затем выполнить это число записей в этот сектор, так что сектор становится неиспользуемым после того, как было подсчитано заранее заданное число периодов времени (действие 1006).

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

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

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

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

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

Фиг.12-13 являются логическими блок-схемами, иллюстрирующими примерный процесс, который может быть выполнен в другом варианте осуществления, соответствующем предмету данного раскрытия. В этом варианте осуществления идентификатор может быть частично закодирован в секторы устройства флэш-памяти. Например, если максимальное число разрешенных циклов записи в некоторый сектор вызывает то, что этот сектор становится неиспользуемым, то биты «1» этого идентификатора могут быть частично кодированы в конкретные секторы устройства флэш-памяти посредством записи в эти конкретные секторы для максимального числа разрешенных циклов записи - W, где W - целое число, приблизительно равное проценту от максимального числа разрешенных циклов записи, такому как, например, 50% или другому значению. Таким образом, все эти конкретные секторы могут быть в используемом состоянии, так что закодированный идентификатор может быть спрятан. Для считывания закодированного идентификатора некоторое количество циклов записи может быть выполнено в эти конкретные секторы. Например, W циклов записи может быть выполнено в эти конкретные секторы для того, чтобы сделать эти конкретные секторы, представляющие биты «1» идентификатора, неиспользуемыми. В альтернативном варианте осуществления биты «0» идентификатора могут быть частично закодированы в конкретные секторы устройства флэш-памяти.

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

В отношении логической блок-схемы по фиг.12 этот процесс может начаться с доступа устройством обработки, таким как, например, устройство 102 обработки, к информации лицензии (действие 1202). Информация лицензии может храниться на некотором компоненте устройства обработки, таком как, например, память, ROM или другой компонент. Альтернативно, информация лицензии может храниться в устройстве флэш-памяти, как, например, информация лицензии 304. Информация лицензии может включать в себя данные, идентифицирующие продукт, включающий в себя это приложение программного обеспечения, идентификатор (например, идентификатор, связанный с лицензией для использования этого продукта) и время, в течение которого эта лицензия является достоверной. Идентификатор может включать в себя множественные части, по одной для каждого периода времени, составляющих общее время, в течение которого эта лицензия является достоверной. В некоторых вариантах осуществления информация лицензии может включать в себя цифровую подпись, подписанную частным ключом, таким как, например, частный ключ из доверенного источника, такого как, например, распространитель программного обеспечения, разработчик программного обеспечения или другой доверенный источник.

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

Если во время действия 1206 устройство обработки определяет, что информация лицензии достоверна, то устройство обработки может получить идентификатор из информации лицензии или другого источника (действие 1210). В некоторых вариантах осуществления этот идентификатор может быть уникальным идентификатором. Устройство обработки может затем определить, закодирован ли этот идентификатор в устройстве флэш-памяти (действие 1212). Устройство обработки может осуществить это определение посредством обращения к массиву секторов для этого идентификатора, такому как, например, массив 402 секторов для идентификатора (фиг.4).

Фиг.13 иллюстрирует примерную обработку относительно действия 1212 в одном варианте осуществления. Во-первых, устройство обработки может определить, начинается ли новый период времени (действие 1302). Если начинается новый период времени, то устройство обработки может определить, имеются ли дополнительные части идентификатора (действие 1304). Если нет дополнительных частей идентификатора, то устройство обработки может указать, что идентификатор не закодирован (действие 1316). Это может свидетельствовать о том, что сделана попытка исполнить приложение программного обеспечения вне периода времени, на который имеется санкция на исполнение этого приложения. В противном случае устройство обработки может определить конкретные секторы для следующей части идентификатора, соответствующей следующему периоду времени (действие 1306). Эти конкретные секторы для следующей части идентификатора могут быть определены посредством обращения к массиву секторов, такому как, например, массив 402 секторов для идентификатора, в некоторых вариантах осуществления. Устройство обработки может затем выполнить некоторое количество циклов записи в эти конкретные секторы, представляющие либо биты «1» следующей части (теперь текущей части) идентификатора, либо биты «0» следующей части идентификатора (действие 1308). Это число циклов записи может быть меньше, чем максимальное число разрешенных циклов записи, но больше, чем максимальное число разрешенных для записи циклов - W, где W - целое число. После выполнения действия 1308 следующая часть идентификатора может быть демаскирована посредством неиспользуемых секторов из этих конкретных секторов.

Если во время действия 1302 устройство обработки определяет, что новый период времени не начинается или во время действия 1308 выполнено это число циклов записи в эти конкретные секторы, то устройство обработки может определить, закодирована ли текущая часть идентификатора посредством неиспользуемых секторов (действие 1310). Если устройство обработки определяет, что текущая часть идентификатора не закодирована, то устройство обработки может указать, что идентификатор не закодирован (действие 1316). В противном случае устройство обработки может определить, закодированы ли какие-либо части идентификатора для будущих периодов времени (действие 1312). Если какие-либо части идентификатора для использования во время будущих периодов времени закодированы, то закодированные части идентификатора, соответствующие будущим периодам времени, могут указывать атаку хакера. Следовательно, если какие-либо части идентификатора, соответствующие каким-либо будущим периодам времени, закодированы, то устройство обработки может указать, что этот идентификатор не закодирован (действие 1316), что указывает на несанкционированное использование. Если все части идентификатора, соответствующие будущим периодам времени, не закодированы, то устройство обработки может указать, что этот идентификатор закодирован (действие 1314), для указания санкционированного использования.

Возвращаясь к фиг.12, если во время действия 1212 устройство обработки определяет, что текущая часть идентификатора закодирована в устройстве флэш-памяти, то устройство обработки может разрешить исполнить приложение программного обеспечения с полной функциональностью (действие 1214). В противном случае устройство обработки может ограничить или отключить функциональность приложения программного обеспечения (действие 1208).

В качестве примера варианта осуществления, описанного относительно фиг.12 и 13, предположим, что идентификатор имеет 36 частей, по 16 битов каждая, с общей длиной в 576 битов. Каждая из частей идентификатора может соответствовать одному месяцу использования приложения. В результате приложение может быть санкционировано на 36 месяцев использования. Далее, предположим, что один миллион циклов записи делает некоторый сектор флэш-памяти неиспользуемым. Когда приложение сначала стартует и активируется, это приложение может демаскировать первую 16-битовую часть идентификатора посредством выполнения некоторого количества записей в конкретные секторы, соответствующие либо битам «1», либо битам «0» первой 16-битовой части идентификатора, как описано относительно действия 1310. Это приложение может проверить достоверность того, что первая 16-битовая часть идентификатора совпадает с соответствующей 16-битовой частью идентификатора, включенного в информацию лицензии. Если приложение определяет, что 16-битовая часть, соответствующая одному из ряда будущих месяцев, демаскирована, то это приложение может быть заблокировано или может быть исполнено с ограниченной функциональностью. После одного месяца приложение может демаскировать следующую 16-битовую часть идентификатора и может проверить достоверность того, что эта следующая 16-битовая часть идентификатора совпадает с соответствующей 16-битовой частью идентификатора, включенного в информацию лицензии.

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

Этот процесс может начаться с посылки устройством обработки информации о продукте ко второму устройству обработки, такому как, например, сервер 106 (действие 1402). Эта информация о продукте может включать в себя информацию, идентифицирующую продукт, включающий в себя приложение программного обеспечения. Устройство обработки может принять от второго устройства обработки в ответ на посылку информации о продукте информацию лицензии и информацию идентификатора (действие 1404). В некоторых вариантах осуществления информация лицензии может включать в себя такой идентификатор и информацию относительно одного или нескольких условий лицензии. Информация лицензии может быть дополнительно подписана цифровым образом с использованием частного ключа из доверенного источника. В некоторых вариантах осуществления идентификатор может иметь отдельную цифровую подпись, использующую частный ключ из доверенного источника.

Устройство обработки может затем проверить достоверность информации лицензии и информации идентификатора (действие 1406). В некоторых вариантах осуществления устройство обработки может проверить достоверность информации лицензии и информации идентификатора с использованием открытого ключа, соответствующего частному ключу из доверенного источника. Устройство обработки может на основе результата этой проверки достоверности определить, достоверны ли информация лицензии и информация идентификатора (действие 1408). Если определено, что информация лицензии и информация идентификатора не достоверны, то устройство обработки может выдать сообщение об ошибке для пользователя (действие 1410). В противном случае устройство обработки может кодировать этот идентификатор и соответствующую цифровую подпись в устройство флэш-памяти, подключенное к устройству обработки (действие 1412). Устройство обработки может выполнить такое кодирование посредством записи в конкретные секторы флэш-памяти для того, чтобы сделать эти конкретные секторы неиспользуемыми, или, как описано выше, эти конкретные секторы могут оставаться используемыми, но это кодирование может быть демаскировано позже посредством выполнения некоторого количества циклов записи в эти конкретные секторы для того, чтобы сделать их неиспользуемыми. Например, идентификатор и цифровая подпись могут быть закодированы посредством представления единичных битов через неиспользуемые секторы и представления нулевых битов через используемые секторы. В некоторых вариантах осуществления эта информация может быть закодирована посредством представления нулевых битов через неиспользуемые секторы и представления единичных битов через используемые секторы. Информация лицензии может быть сохранена либо в устройстве флэш-памяти, либо в устройстве обработки (действие 1414).

Далее, устройство обработки может определить из информации лицензии, должны ли быть использованы счетчики использований и/или счетчики периодов времени (действие 1416). Например, если информация лицензии указывает, что приложение программного обеспечения может быть исполнено заранее заданное число раз, то могут использоваться счетчики использований. Если информация лицензии указывает, что срок действия санкции на исполнение приложения программного обеспечения истекает после конкретного периода времени или даты истечения срока, то могут использоваться счетчики периодов времени.

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

Заключение

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

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

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

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

Класс G06F12/14 защита от обращений к памяти посторонних пользователей

способ скрытного хранения конфиденциальных данных в защищенной энергонезависимой памяти и устройство для его реализации -  патент 2527758 (10.09.2014)
способ разрушения интегральных схем памяти носителей информации -  патент 2527241 (27.08.2014)
система контроля доступа к файлам на основе их автоматической разметки -  патент 2524566 (27.07.2014)
устройство для внедрения водяного знака в информационное представление, детектор для обнаружения водяного знака в информационном представлении, способ и компьютерная программа и информационный сигнал -  патент 2510937 (10.04.2014)
способ обнаружения вредоносного программного обеспечения в ядре операционной системы -  патент 2510075 (20.03.2014)
система и способ проверки исполняемого кода перед его выполнением -  патент 2510074 (20.03.2014)
устройство хранения данных (варианты) -  патент 2506633 (10.02.2014)
система защиты информации от несанкционированного доступа к информации, содержащей сведения, составляющие государственную тайну -  патент 2504835 (20.01.2014)
система и способ для обнаружения вредоносных программ -  патент 2497189 (27.10.2013)
использование защищенного устройства для обеспечения безопасной передачи данных в небезопасных сетях -  патент 2494448 (27.09.2013)
Наверх