СПОСОБ И СИСТЕМА ДЛЯ ОГРАНИЧЕНИЯ ОБНОВЛЕНИЙ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ Российский патент 2009 года по МПК G06F1/00 

Описание патента на изобретение RU2375739C2

Область техники, к которой относится изобретение

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

Предшествующий уровень техники

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

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

Сущность изобретения

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

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

Перечень чертежей

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

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

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

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

Подробное описание иллюстративных воплощений

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

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

Примерные варианты воплощения изобретения

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

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

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

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

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

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

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

Фиг.1 изображает конфигурацию 100 сети, где аспекты изобретения могут быть реализованы на практике. В этой конфигурации сеть 20 соединяет между собой компьютеры A, B и C клиентов (соответственно 30, 40 и 50) с сетевым сервером 10. Хотя показан только один сервер и только три клиента конфигурация по Фиг.1 является только примерной и возможно большее число серверов так же, как и меньшее или большее число компьютеров клиентов. В конфигурации сети сервер 10 может быть назначен в качестве сервера, который может обеспечивать обновления программного обеспечения для компьютеров 30, 40 и 50 клиентов по запросу.

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

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

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

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

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

При использовании либо пути через этап 231, либо через этап 240 обработка результатов теста (этап 250) может быть либо всесторонней, либо относительно прямолинейной. Всесторонняя обработка может состоять в обработке циклического избыточного кода (CRC), контрольных сумм, значений хэш-функций, цифровых подписей, скрытого исполняемого кода или других способов теста и сравнения их со стандартами и допусками, чтобы определить, был ли тест пройден успешно или неудачно. Также возможно, что тест, выполненный в отношении приложения программного обеспечения клиента, выдает статус неудачного прохождения или статус успешного прохождения, и статус и/или данные возвращаются на сервер. В любом случае, обработанные результаты могут быть проверены на успешное или неудачное прохождение на этапе 260.

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

В одном варианте воплощения тест, который обеспечивается клиенту сервером с целью тестирования целостности приложения программного обеспечения клиента, может включать в себя посылку информации о начале отсчета времени вместе с зашифрованным идентификатором продукта (PID) или комбинацией PID/Pkey с ключом продукта (Pkey) на сервер, такой как сервер обновлений Windows®, предоставляемый Корпорацией Microsoft®, Редмонд, Вашингтон. Если сервер получает другое начало отсчета времени для одной и той же комбинации PID/Pkey более, чем N раз, например при N<100, тогда может быть сделан вывод о том, что более чем одна машина использует одинаковую комбинацию PID/Pkey. При таких обстоятельствах приложение программного обеспечения клиента может считаться работающим без лицензии и в обновлении программного обеспечения будет отказано, как описано выше.

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

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

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

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

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

Примерное вычислительное устройство

Фиг.3 и следующее обсуждение предназначены для обеспечения краткого общего описания подходящей вычислительной среды, в которой могут быть реализованы варианты воплощения изобретения. Хотя ниже описан компьютер общего назначения он является лишь одним примером, и варианты воплощения изобретения могут быть реализованы другими вычислительными устройствами, такими как клиент, выполненный с возможностью взаимодействия и взаимосвязи через сеть/шину. Таким образом, варианты воплощения изобретения могут быть реализованы в среде размещенных в сети служб, в которую включены ресурсы клиента в очень малом количестве или минимальные ресурсы клиента, например сетевая среда, в которой устройство-клиент служит только в качестве интерфейса к сети/шине, например объект, помещенный в прибор, или другие вычислительные устройства, а также объекты. По существу, любое место, где могут быть сохранены данные или откуда данные могут быть извлечены, является желаемой или подходящей средой для работы.

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

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

Согласно Фиг.3 примерная система для реализации варианта воплощения изобретения включает в себя вычислительное устройство общего назначения в форме компьютерной системы 710. Компоненты компьютерной системы 710 могут включать в себя, но не в ограничительном смысле, устройство 720 обработки данных (процессор), системную память 730 и системную шину 721, которая соединяет различные компоненты системы, включая системную память, с устройством 720 обработки данных. Системная шина 721 может относиться к любому типу структур шин, включая шину памяти или контроллер памяти, периферийную шину и локальную шину, используя любую из множества шинных архитектур. В качестве примера, но не ограничения, такие архитектуры включают в себя шину архитектуры, соответствующей промышленному стандарту (ISA), шину микроканальной архитектуры (MCA), шину расширенной ISA (EISA), локальную шину Ассоциации по стандартам в области видеоэлектроники (VESA) и шину межсоединения периферийных компонент (PCI) (известную также как мезонинная шина).

Компьютерная система 710 обычно включает в себя множество машиночитаемых носителей. Машиночитаемые носители могут быть любыми доступными носителями, к которым компьютерная система 710 может осуществить доступ, и включают в себя как энергозависимые, так и энергонезависимые носители, как съемные, так и несъемные носители. В качестве примера, но не ограничения, машиночитаемые носители могут включать в себя компьютерные носители информации и среды передачи. Компьютерные носители информации включают в себя энергозависимые и энергонезависимые, съемные и несъемные носители, реализованные любым способом или технологией для хранения информации, такой как машиночитаемые команды, структуры данных, программные модули или другие данные. Компьютерные носители информации включают в себя, но не в ограничительном смысле, оперативное запоминающее устройство (ОЗУ, RAM), постоянное запоминающее устройство (ПЗУ, ROM), электрически стираемое программируемое ПЗУ (EEPROM), флэш-память или память другой технологии, ПЗУ на компакт-диске (CDROM), перезаписываемый компакт-диск (CDRW), универсальный цифровой диск (DVD) или другое запоминающее устройство на оптическом диске, магнитные кассеты, магнитную ленту, запоминающее устройство на магнитном диске или другое магнитное устройство хранения данных, либо любой другой носитель, который может быть использован для хранения желаемой информации и к которому компьютерная система 710 может осуществить доступ.Среда передачи обычно воплощает машиночитаемые команды, структуры данных, программные модули или другие данные в модулированном информационном сигнале, таком как сигнал несущей или другой транспортный механизм, и включает в себя любую среду доставки информации. Термин «модулированный информационный сигнал» обозначает сигнал, одна или более характеристик которого установлены или изменены таким образом, чтобы обеспечить кодирование информации в этом сигнале. В качестве примера, но не ограничения, среды передачи включают в себя проводные среды, такие как проводная сеть или прямое проводное соединение, и беспроводные среды, такие как акустические, радиочастотные, инфракрасные и другие беспроводные среды. Комбинации любых из вышеупомянутых сред и носителей также охватываются понятием «машиночитаемый носитель».

Системная память 730 включает в себя компьютерные носители информации в форме энергозависимой и/или энергонезависимой памяти, такой как постоянное запоминающее устройство (ПЗУ) 731 и оперативное запоминающее устройство (ОЗУ) 732. Базовая система 733 ввода/вывода (BIOS), содержащая базовые процедуры, которые помогают передавать информацию между элементами в компьютерной системе 710, например, в течение запуска, обычно хранится в ПЗУ 731. ОЗУ 732 обычно содержит данные и/или программные модули, которые непосредственно доступны устройству 720 обработки данных и/или обрабатываются им в текущий момент. В качестве примера, но не ограничения, Фиг.3 иллюстрирует операционную систему 734, прикладные программы 735, другие программные модули 736 и данные 737 программ.

Компьютерная система 710 может также включать в себя другие съемные/несъемные, энергозависимые/энергонезависимые компьютерные носители информации. Только в качестве примера, Фиг.3 иллюстрирует накопитель 741 на жестких дисках, который читает с несъемного энергонезависимого магнитного носителя или записывает на него, магнитный дисковод 751, который читает со съемного энергонезависимого магнитного диска 752 или записывает на него, и оптический дисковод 755, который читает со съемного энергонезависимого оптического диска 756, такого как CD ROM, CDRW, DVD или другой оптический носитель, или записывает на него. Другие съемные/несъемные, энергозависимые/энергонезависимые компьютерные носители информации, которые могут использоваться в примерной рабочей среде, включают в себя, но не в ограничительном смысле, кассеты с магнитной лентой, карты флэш-памяти, цифровые универсальные диски, цифровые видеокассеты, твердотельное ОЗУ, твердотельное ПЗУ и тому подобное. Накопитель 741 на жестких дисках обычно подсоединен к системной шине 721 через интерфейс несъемной памяти, такой как интерфейс 740, а магнитный дисковод 751 и оптический дисковод 755 обычно подсоединены к системной шине 721 через интерфейс съемной памяти, такой как интерфейс 750.

Накопители, дисководы и связанные с ними компьютерные носители информации, обсуждавшиеся выше и проиллюстрированные на Фиг.3, обеспечивают хранение машиночитаемых команд, структур данных, программных модулей и других данных для компьютерной системы 710. На Фиг.3, например, накопитель 741 на жестких дисках проиллюстрирован как хранящий операционную систему 744, прикладные программы 745, другие программные модули 746 и данные 747 программ. Заметим, что эти компоненты могут или быть такими же, или могут отличаться от операционной системы 734, прикладных программ 735, других программных модулей 736 и данных 737 программ. Операционная система 744, прикладные программы 745, другие программные модули 746 и данные 747 программ обозначены здесь другими номерами, чтобы проиллюстрировать, что они, как минимум, являются другими копиями. Пользователь может вводить команды и информацию в компьютерную систему 710 через устройства ввода, такие как клавиатура 762 и указательное устройство 761, обычно известное как мышь, шаровой манипулятор или сенсорная панель. Другие устройства ввода (не показаны) могут включать в себя микрофон, джойстик, игровую клавиатуру, спутниковую тарелку, сканер и тому подобное. Эти и другие устройства ввода часто подсоединены к устройству 720 обработки данных через интерфейс 760 ввода пользователя, который связан с системной шиной 721, но могут быть подсоединены через другие структуры интерфейсов шин, такие как параллельный порт, игровой порт или универсальная последовательная шина (USB). Монитор 791 или другой тип устройства отображения также подсоединен к системной шине 721 через интерфейс, такой как видеоинтерфейс 790, который может в свою очередь обмениваться данными с видеопамятью (не показана). Дополнительно к монитору 791 компьютерные системы могут также включать другие периферийные устройства вывода, такие как динамики 797 и принтер 796, которые могут быть подсоединены через периферийный интерфейс 795 вывода.

Компьютерная система 710 может работать в сетевой или распределенной среде, используя логические соединения с одним или более удаленными компьютерами, такими как удаленный компьютер 780. Удаленный компьютер 780 может быть персональным компьютером, сервером, маршрутизатором, сетевым ПК, одноранговым устройством или другим обычным сетевым узлом и в типичном случае включает в себя многие или все из элементов, описанных выше по отношению к компьютерной системе 710, хотя на Фиг.3 проиллюстрировано только запоминающее устройство 781. Логические соединения, изображенные на Фиг.3, включают в себя локальную сеть (LAN) 771 и глобальную сеть (WAN) 773, но могут также включать в себя другие сети/шины. Такие сетевые среды обычны в домах, офисах, компьютерных сетях масштаба предприятия, интрасетях и Интернете.

При использовании в сетевой среде LAN компьютерная система 710 соединена с LAN 771 через сетевой интерфейс или адаптер 770. При использовании в сетевой среде WAN компьютерная система 710 обычно включает в себя модем 772 или другое средство для установления связи через WAN 773, такую как Интернет. Модем 772, который может быть внутренним или внешним, может быть подсоединен к системной шине 721 через интерфейс 760 ввода пользователя или другой подходящий механизм. В сетевой среде программные модули, изображенные относительно компьютерной системы 710, или их части могут сохраниться в удаленном запоминающем устройстве. В качестве примера, но не ограничения, Фиг.3 иллюстрирует удаленные прикладные программы 785, постоянно хранящиеся в запоминающем устройстве 781. Следует понимать, что показанные сетевые соединения являются примерными, и может быть использовано другое средство установления линии связи между компьютерами.

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

Например, платформа .NETTM от MICROSOFT®, предоставляемая Корпорацией Microsoft, включает в себя серверы, службы компоновочных блоков, такие как основанное на Web хранилище данных, и загружаемое программное обеспечение устройства. Так как примерные варианты воплощения описываются здесь в связи с программным обеспечением, хранящимся в вычислительном устройстве, одна или более частей варианта воплощения изобретения могут быть также реализованы посредством операционной системы, интерфейса прикладного программирования (API) или объекта - «посредника» между любым из сопроцессора, устройства отображения и запрашиваемым объектом, так что операция может быть выполнена, поддержана или к ней может быть осуществлен доступ посредством всех языков и служб .NETTM, а также в других инфраструктурах распределенных вычислений.

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

Различные методики, описанные здесь, могут быть реализованы в связи с аппаратным или программным обеспечением или, когда требуется, их комбинацией. Таким образом, способы и устройство, соответствующие изобретению, или их определенные аспекты или части могут иметь форму программного кода (то есть команд), воплощенного в материальном носителе, таком как дискеты, диски CD-ROM, накопители на жестких дисках или любой другой машиночитаемый носитель, причем, когда программный код загружается в машину и исполняется машиной, такой как компьютер, эта машина становится устройством для практической реализации изобретения. В случае исполнения программного кода на программируемых компьютерах вычислительное устройство обычно включает в себя процессор, считываемый процессором носитель информации (включая энергозависимую и энергонезависимую память и/или элементы хранения), по меньшей мере, одно устройство ввода и, по меньшей мере, одно устройство вывода. Одна или более программ, которые могут использовать службы обработки сигнала согласно варианту воплощения настоящего изобретения, например, используя API обработки данных или тому подобное, предпочтительно реализуются на высокоуровневом процедурном или объектно-ориентированном языке программирования, чтобы взаимодействовать с компьютером. Тем не менее, программа(ы) может быть реализована на языке ассемблера или машинном языке, если требуется. В любом случае язык может быть транслируемым или интерпретируемым языком и может быть объединен с аппаратными реализациями.

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

Похожие патенты RU2375739C2

название год авторы номер документа
Способ антипиратской авторизации доступа к компьютерной сети 2015
  • Прудников Эдуард Юрьевич
RU2637485C2
СИСТЕМА ЛИЦЕНЗИРОВАНИЯ, ОСНОВАННАЯ НА ГЕОГРАФИЧЕСКОМ ПОЛОЖЕНИИ 2005
  • Роннинг Джоэл А.
RU2344557C2
МЕХАНИЗМ ПРОТИВ МОШЕННИЧЕСТВА НА ОСНОВЕ ДОВЕРЕННОГО ОБЪЕКТА 2010
  • Рэй Кеннет Д.
  • Алкоув Джеймс М.
  • Макмайкл Лонни Дин
  • Льюис Натан Т.
  • Шнелль Патрик
RU2541879C2
СПОСОБ ЗАЩИТЫ МУЛЬТИМЕДИЙНЫХ ДАННЫХ 2006
  • Гримен Гисле
  • Менх Кристиан
RU2449494C2
ТЕЛЕКОММУНИКАЦИОННАЯ ЧИП-КАРТА 2013
  • Шрия Санджив
  • Фогат Викас
RU2628492C2
АВТОМАТИЧЕСКОЕ ОБНАРУЖЕНИЕ УЯЗВИМЫХ ФАЙЛОВ И УСТАНОВКА ЗАПЛАТОК НА НИХ 2004
  • Иванов Олег
  • Иванов Сергей
RU2358313C2
ПРОГРАММНАЯ ПЕРЕДАЧА ПРИЛОЖЕНИЙ МЕЖДУ ТЕЛЕФОННЫМИ ТРУБКАМИ НА ОСНОВЕ ЛИЦЕНЗИОННОЙ ИНФОРМАЦИИ 2007
  • Кумар Прем Дж.
  • Кван Шу-Леунг
  • Цай Хао
  • Холкер Рави
RU2439690C2
ПРОГРАММНЫЙ ИНТЕРФЕЙС ДЛЯ ЛИЦЕНЗИРОВАНИЯ 2004
  • Гуниакти Каглар
  • Чжан Нинг
  • Хсу Вен-Пин Скотт
RU2377634C2
СПОСОБЫ И СИСТЕМЫ ДЛЯ АУТЕНТИФИКАЦИИ КОМПОНЕНТОВ В ГРАФИЧЕСКОЙ СИСТЕМЕ 2003
  • Инглэнд Пол
  • Пейнадо Маркус
  • Уилт Николас П.
RU2310227C2
СОВМЕСТНЫЙ ВЫБОР МУЛЬТИМЕДИА С ИНТЕГРИРОВАННЫМИ ВИДЕООБРАЗАМИ 2010
  • Мэттингли Эндрю Лоуренс
  • Крэмп Брайан Чарльз
  • Соэмо Томас М.
  • Мэйс Эдди
RU2527199C2

Иллюстрации к изобретению RU 2 375 739 C2

Реферат патента 2009 года СПОСОБ И СИСТЕМА ДЛЯ ОГРАНИЧЕНИЯ ОБНОВЛЕНИЙ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ

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

Формула изобретения RU 2 375 739 C2

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

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

3. Способ по п.1, в котором тест выполняют на одном или более из компьютера клиента и компьютерного сервера.

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

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

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

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

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

9. Компьютерный сервер по п.6, в котором тест выполняется на одном или более из компьютера клиента и компьютерного сервера.

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

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

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

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

14. Система по п.13, в которой тест выполняется на одном или более из компьютера клиента и компьютерного сервера.

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

Документы, цитированные в отчете о поиске Патент 2009 года RU2375739C2

US 2001034712 A1, 25.10.2001
US 5754864 A, 19.05.1998
СПОСОБ КОНТАКТНОЙ МИКРОСОСУДИСТОЙ ДОППЛЕРОГРАФИИ 2001
  • Говоров Б.Б.
  • Асатурян Г.А.
  • Семенютин В.Б.
  • Панунцев В.С.
  • Алиев В.А.
  • Алексеев В.В.
RU2231978C2
ШЕСТИУГОЛЬНАЯ ПАНЕЛЬ ДЛЯ ДОРОЖНОГО ПОКРЫТИЯ 2002
  • Калисиак Ежи
  • Шульц Ежи
RU2310032C2
US 2003233547 A1, 18.12.2003.

RU 2 375 739 C2

Авторы

Гунякти Каглар

Хатлелид Кристьян Эрик

Даты

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

2005-03-23Подача