КОМПОНЕНТА ЛИЦЕНЗИРОВАНИЯ КОМПЬЮТЕРНЫХ ПРИЛОЖЕНИЙ
COMPUTER APPLICATIONS LICENSING COMPONENT

Область техники
Изобретение относится к компьютерным системам, а именно системам противодействия многократному использованию лицензионного ключа к компьютерному приложению.
Уровень техники
В настоящее время активно развиваются всевозможные средства коммерции с использованием сети Интернет. Производители программных приложений являются обладателями интеллектуальных прав на свои произведения. При продаже разработок между производителем программного приложения и клиентом заключается лицензионный договор, регламентирующий права и обязанности каждой из сторон. Каждый производитель программных приложений желает продать приложение как можно большему числу потребителей, потому что от этого зависит выручка.
Недобросовестные пользователи программных приложений порой используют нелицензионные копии программных приложений. Для борьбы против незаконного использования разработчики применяют системы ограничения функциональности своих приложений, если есть основания полагать, что происходит нарушение их законных интеллектуальных прав.
Из уровня техники известны решения, такие как раскрытая в заявке EP 2112612 система учета количества используемых лицензий приложения в сети. Это решение наиболее близко по духу настоящему изобретению и является аналогом. Приложения распространяются по сети Интернет или иным образом устанавливаются на собственные компьютеры пользователей. Посредством сети Интернет опрашиваются лицензионные соглашения одного или нескольких программных приложений, установленных на компьютере. Поисковые системы собирают лицензионные теги, в результате создается список, оценивается количество одновременно используемых лицензионных ключей. Недостатком такой системы можно назвать использование для сбора информации прикладного протокола - протокола верхнего уровня эталонной модели взаимодействия открытых систем. Недостаток состоит в легкости доступа к передаваемым таким образом данным. Злоумышленник способен вмешаться в работу системы, нарушить логику работы и заблокировать обмен информацией между узлами системы. Кроме того, система не предусматривает каких-либо санкций в отношении нарушителей условий лицензионных договоров.
В заявке EP 2113838 раскрывается идея сбора информации о происходящих в окружающей сети изменениях. Информация собирается в таблицы на компьютере пользователя или на сервере через графический интерфейс пользователя представляется динамика изменения работы программных приложений по всей компьютерной сети в целом. Система не предусматривает ограничения работы программ в случае незаконного использования, поскольку ведется лишь сбор информации о ситуации в компьютерной сети и вывод на информационный дисплей.
В патенте US 7552341 описывается активация программного обеспечения с использованием хэша идентификаторов аппаратного обеспечения компьютера и идентификатора приложения, который является кодом активации. Преимущество такой системы заключается в том, что изначально компьютерное программный приложение находится в неактивированном состоянии и имеет ограниченный функционал, например, срок работы в несколько месяцев. Активация необходима для снятия всех ограничений с программного приложения на компьютере. В процессе активации ведется учет количества использованных лицензий. Однако система активации программных приложения не предусматривает законно используемую многократную активацию после переустановки операционной системы на одном и том же компьютере. Пользователь также может купить новую компьютерную систему и произвести повторную законную установку законно используемого программного приложения. Эти два случая подчеркивают недостаток этой системы учета лицензионных программных пприложений согласно упомянутому решению по патенту US 7552341.
Приведенные из уровня техники аналоги имеют свои недостатки и не способны оперативно отслеживать факты незаконного использования программных приложений.
Раскрытие изобретения
Настоящее решение предназначено для выявления незаконного использования копий программных приложений в компьютерной сети. Технический результат настоящего решения заключается в расширении арсенала технических средств защиты от незаконного использования программных приложений.
Система учета количества одновременно используемых лицензий компьютерного приложения, состоящая из компьютеров с установленным компьютерным приложением, вычислительной сети, файла лицензии, криптографических средств, модуля отправки данных, модуля приема данных, средства учета количества одновременного использования лицензий компьютерного приложения. Компьютеры с установленным компьютерным приложением организуют информационный обмен видоизмененными лицензионными ключами, что позволяет, в конечном счете, составить учетную таблицу, в которой отмечена каждая используемая в данной компьютерной сети лицензия и количество активных в данный момент компьютерных приложений, связанных с этой лицензией. Вычислительная сеть, объединяющая упомянутые компьютеры с установленным компьютерным приложением, позволяет производить упомянутый информационный обмен, при этом эта вычислительная сеть может быть локальной сетью, глобальной сетью, городской сетью и др. Файл лицензии необходим для полноценного функционирования компьютерного приложения на том компьютере, где установлено компьютерное приложение. Файл лицензии, содержащий лицензионный ключ, также имеет ограничение по количеству одновременно полноценно работающих компьютерных приложений по данному лицензионному ключу.
Криптографические средства в компьютере с компьютерным приложением предназначены для чтения файла лицензии и видоизменения данных о лицензионном ключе перед отправкой в сеть через модуль отправки данных в сетевом интерфейсе. Видоизменение необходимо для сокрытия действительного лицензионного ключа от посторонних. При этом сохраняется однозначная связь между оригинальным лицензионным ключом и видоизмененным лицензионным ключом. Такая связь обеспечивается механизмом хэширования. В нашем случае предполагается использовать хэширующие алгоритмы, такие как MD5, SHA-1, SHA-2 и другие. Зная видоизмененный лицензионный ключ, представляющий собой результат обработки хэширующим алгоритмом оригинального лицензионного ключа (называемый также хэш или дайджест), невозможно восстановить входное сообщение, так как одному образу могут соответствовать разные сообщения.
Модуль отправки данных связан с криптографическим средством и получает от криптографических средств видоизмененные данные о лицензионном ключе, формирует широковещательный запрос, содержащий видоизмененные данные о лицензионном ключе, и передает его в вычислительную сеть. Возможны несколько вариантов реализации многоадресной рассылки модулем отправки данных. Так реализация связи через сеть в виде драйвера операционной системы позволяет снизить время реакции и увеличить скорость работы системы. Дополнительно сохраняется высокая надежность доставки данных, поскольку работа драйвера операционной системы защищена дополнительно средствами безопасности самой операционной системы. Также предусмотрена реализация модуля отправки данных посредством протокола почтовых ячеек (mailslot), что имеет смысл в обширных корпоративных сетях с большим количеством подсетей. В такой модели нет необходимости дополнительно исследовать топологию сети, поскольку все настройки уже произведены администратором домена, и, просто воспользовавшись существующим протоколом почтовых ячеек (mailslot), будет можно получить объективную информацию о лицензионном ПО.
MailSlot - это файл, который находится в памяти, и доступный через стандартные файловые функции Win32. Данные в mailslot могут быть в любой форме, но общий размер не может быть больше 64К. В отличие от дисковых файлов файлы mailslot временные. Когда все указатели на MailSlot закрываются, mailslot и все данные, которые он содержит, удаляются. Есть два вида программ, использующих данную возможность: MailSlot сервер, MailSlot клиент.
MailSlot сервер является процессом, который создает и обладает mailslot. Когда сервер создает mailslot, он получает указатель. Этот указатель должен использоваться, когда процесс читает сообщения от mailslot. Только процесс, который создает mailslot или получил указатель некоторым другим механизмом, может прочитать данные из mailslot. Все mailslot локальные на процессе, который создает их; процесс не может создать дистанционный mailslot.
MailSlot Клиент является процессом, который пишет сообщение в mailslot. Любой процесс, который имеет имя mailslot, может записать в него информацию.
Для создания почтовых слотов используются имена. При создании имя должно быть в следующей форме: \\.\mailslot\[path]name. Создать почтовый слот возможно только на локальной системе. А вот использоваться могут любые почтовые слоты. Форма имени при открытии почтового слота: \\ComputerName\mailslot\[path]name или \\DomainName\mailslot\[path]name (материалы о протоколе mailslot опубликованы на сайте http://www.firststeps.ru/mfc/winapi/r.php?154 автор Каев Артем).
Модуль приема данных о лицензионном ключе в сетевом интерфейсе связан со средствами учета количества одновременного использования лицензий компьютерного приложения, при этом модуль приема данных о лицензионном ключе получает из вычислительной сети ответы других компьютеров с компьютерным приложением. При получении используется один из вариантов реализации взаимодействия с сетью: почтовые ячейки (mailslot) или драйвер ядра операционной системы. Средства учета количества одновременного использования лицензий компьютерного приложения содержат учетную таблицу, в которой отмечают данные, полученные модулем приема данных о лицензионном ключе, и отмечают количество совпадений таких ключей. В случае если из сети поступили ответы об использовании лицензионного ключа на других компьютерах с компьютерным приложением общим числом равным или более ограничения, указанного в файле лицензии, то компьютерному приложению отправляется сообщение о превышении допустимого количества используемых одновременно лицензий.
Иначе, если число поступивших ответов из вычислительной сети от компьютеров с установленным компьютерным приложением не превышает ограничения, средства учета количества одновременного использования лицензий, указанного в файле лицензии, инициируют криптографические средства для передачи видоизмененного лицензионного ключа через модуль отправки данных и обновляют содержание таблицы. Полученные модулем приема данных о лицензионном ключе данные о лицензионном ключе и количество совпадений ключей соответствующей строки таблицы актуализируют.
Дополнительно предусмотрен выделенный компьютер, обладающий средствами учета количества одновременного использования лицензий, т.е. общей сводной учетной таблицей, в которой отражены все изменения, связанные с лицензионными ключами, видоизмененная информация о которых передавалась через сеть. При этом сводка об используемых лицензионных ключах доступна заинтересованному лицу. Дополнительно предусмотрена возможность отправки через сеть команды отключения компьютерного приложения, или команды аннулирования файла лицензии, или команды удаления компьютерного приложения из компьютера, при этом команда выполняется компьютерным приложением на компьютере, которому была послана соответствующая команда. Заинтересованным лицом является администратор сети, директор компании или является ответственным за соблюдение законного использования компьютерного приложения в локальной сети работник. Также заинтересованным лицом может выступать продавец лицензий или поставщик компьютерного приложения.
Краткое описание чертежей
Достигаемые цели, детали реализации и преимущества использования настоящего изобретения будут раскрыты дальше в описании со ссылками на прилагаемые чертежи.
Фиг.1 показывает общую структуру компьютерной сети, в которой может возникнуть ситуация с несоблюдением интеллектуальных прав производителей программного обеспечения, когда один лицензионный ключ устанавливается на несколько компьютеров.
Фиг.2 показывает стек TCP/IP и точку входа для передачи информации с использованием драйвера-перехватчика сетевых пакетов.
Фиг.3 показывает стек TCP/IP и точку входа при использовании почтовой ячейки (mailslot) передачи данных.
Фиг.4 показывает режимы и состояния, через которые проходит система после начала работы.
Фиг.5 показывает пример компьютерной системы общего назначения, персональный компьютер или сервер.
Описание вариантов осуществления изобретения
Основной принцип работы изобретения разберем на примере, изображенном на Фиг.1. Локальная сеть (100) компании состоит из рабочих станций (110, 130) и серверов (120). Подмножество компьютеров (110, 120, 130) этой локальной сети защищено антивирусным компьютерным приложением. При этом компания обладает лицензией (файл лицензии 102) на антивирусное компьютерное приложение для N активный антивирусных компьютерных приложений. С одной стороны, руководство компании заинтересовано отслеживать законность использования программных приложений в своих локальных сетях, поскольку существует ответственность за использование незаконно используемых приложений. С другой стороны, поставщик программного приложения заинтересован не допускать установки большего, чем это оговорено в лицензионном договоре, количества копий антивирусного компьютерного приложения. Автоматизация такого рода проверки решает обе обозначенные задачи. Использование локальной сети (100), в которую объединены все компьютеры (110, 130) и серверы (120) компании, облегчает задачу координирования и сбора статистических данных о числе установленных антивирусных компьютерных приложений. Каждый компьютер при запуске антивирусного компьютерного приложения инициирует широковещательную рассылку запросов через локальную сеть. Упомянутые запросы содержат данные о хэше лицензионного ключа антивирусного компьютерного приложения. Собирая в учетную таблицу (106) ответы от соседних по локальной сети компьютерных узлов, компьютер, инициировавший сбор данных, делает вывод о количестве работающих в данный момент антивирусных компьютерных приложениях. Для этих целей применяется способ взаимодействия компьютеров через почтовую ячейку (mailslot) (см. Фиг.3). Дополнительно реализован альтернативный способ передачи информации с помощью драйвера-перехватчика сетевых пакетов (см. Фиг.2). Уровень драйвера используется как точка входа для приема и передачи сетевых пакетов. Преимущество драйвера-перехватчика ядра операционной системы (см. Фиг.2) состоит в том, что протокол реализации лежит на уровне ядра и вмешаться в этот протокол сложнее, чем перехватывать почтовую ячейку (mailslot).
Существует класс программных приложений для компьютера, который способен вмешаться в логику работы настоящего решения. Так механизм почтовых ячеек (mailslot) можно блокировать соответствующим правилом сетевого экрана. При использовании низкоуровневого драйвера ядра реализовать блокировку значительно сложнее. Дополнительно можно отметить высокую скорость ответа драйверной реализации изобретения, следовательно, и оперативность сбора данных о количестве установленных в компьютерной сети программных приложений.
Разберем логику работы одного компьютера (110) системы. После установки антивирусного компьютерного приложения (101) в компьютер (110) производится активация лицензионного ключа, что ведет к формированию файла лицензии (102), связанного с данным активированным антивирусным компьютерным приложением (101). Файл лицензии (102) содержит максимальное допустимое значение одновременно активированных антивирусных компьютерных приложений (101) этим лицензионным ключом и сам лицензионный ключ.
После того как антивирусное компьютерное приложение (101) было активировано, средства учета (105), используя криптографические средства (103), вычисляют хеш от лицензионного ключа, записывают видоизмененный лицензионный ключ в виде хеша в учетную таблицу (106), и создают широковещательный запрос в локальную сеть. При этом широковещательный запрос через сетевой интерфейс (104) и модуль отправки передается в локальную сеть, где модуль приема соответствующего компьютера 120 или 130 принимает широковещательный запрос и передает значения хеша лицензионного ключа в средства учета (105). Следует отметить, что работа системы полностью симметрична и, чтобы не перегружать схему на Фиг.1, упомянем, что аналогичный широковещательный запрос может быть принят компьютером (110) от другого компьютера (120 или 130). Получив широковещательный запрос в модуле приема сетевой интерфейс (104) передает хеш лицензионного ключа из запроса для сравнения средствами учета (105). Средства учета (105) сравнивают полученный хеш лицензионного ключа с собственным хешем лицензионного ключа из учетной таблицы (106). Если совпадения нет, то это значит, что компьютер, пославший запрос, использует другой лицензионный ключ, и нарушений условий его использования нет.
Если происходит совпадение хешей лицензионных ключей, то через модуль отправки сетевого интерфейса (104) отправляют сформированный ответ отправителю, с выставленным флагом совпадения ключей.
Если модуль приема сетевого интерфейса (104) получает ответ, с выставленным флагом совпадения ключей от другого компьютера из сети, то средства учета (105) увеличивают счетчик количества совпадений видоизмененного лицензионного ключа в учетной таблице (106) и после этого сравнивают с максимально допустимым количеством, согласно файлу лицензии, активированных антивирусных компьютерных приложений (101). Если счетчик количества совпадений видоизмененного лицензионного ключа меньше или равен максимально допустимому количеству активированных лицензий, то антивирусное компьютерное приложение (101) производит полный цикл необходимых действий для полноценной защиты компьютера от всех видов угроз.
Если счетчик количества совпадений видоизмененного лицензионного ключа превысил максимально допустимое количество активированных лицензий, то антивирусное компьютерное приложение (101) не может быть далее использовано в данной комбинации лицензионного ключа и файла лицензии (102).
Дополнительно предусмотрен вариант реализации системы, при котором ведется полный перечень использованных лицензионных ключей в локальной сети. Для этого получив широковещательный запрос в модуле приема сетевой интерфейс (104) передает хеш лицензионного ключа из запроса для сравнения средствами учета (105). Средства учета (105) параллельно добавляют в учетную таблицу (106) новый видоизмененный лицензионный ключ, или увеличивают счетчик соответствующей записи в учетной таблице (106), если видоизмененный лицензионный ключ (хеш) уже присутствует. Таким образом работают средства учета (105) на компьютере заинтересованного лица, например администратора компьютерной сети или поставщика антивирусного компьютерного приложения. Ознакомившись со статистикой используемых лицензионных ключей антивирусных компьютерных приложений, заинтересованное лицо производит действия, необходимые для пресечения незаконного использования антивирусного компьютерного приложения (101).
В процессе работы средства учета (105) переходят ряд состояний. Диаграмма переходов указана на рисунке Фиг.4.
Свободное состояние. Сразу после загрузки драйвера средства учета (105) находятся в неинициализированном, свободном состоянии. В этом состоянии они не отсылают и не принимают никаких пакетов.
Инициализированное состояние. В начале работы клиент выполняет инициализацию средств учета (105), тем самым переводя их в инициализированное состояние. В этом состоянии средства учета (105) отвечают на удаленные запросы, но сами при этом не отсылают запросов и не анализируют ответы.
Активированное состояние. После выполнения функции активации лицензионного ключа средства учета (105) переходят в активированное состояние. В этом состоянии клиент отправляет запросы и получает на них ответы. Помимо этого средства учета (105) по-прежнему отвечают на удаленные запросы.
После выполнения команды деинициализации средства учета (105) переходят в исходное свободное состояние, в котором не отсылают и не принимают никаких пакетов.
Попав в активированное состояние, локальный компьютер выполняет широковещательный запрос в локальной сети. Сразу после выполнения запроса локальный хост начинает прием ответов из локальной сети. При этом локальный хост ведет список удаленных хостов, которые прислали корректный ответ на запрос.
Фиг.5 представляет пример компьютерной системы общего назначения, персональный компьютер или сервер 20, содержащий центральный процессор 21, системную память 22 и системную шину 23, которая содержит разные системные компоненты, в том числе память, связанную с центральным процессором 21. Системная шина 23 реализована как любая известная из уровня техники шинная структура, содержащая в свою очередь память шины или контроллер памяти шины, периферийную шину и локальную шину, которая способна взаимодействовать с любой другой шинной архитектурой. Системная память содержит постоянное запоминающее устройство (ПЗУ) 24, память с произвольным доступом (ОЗУ) 25. Основную систему ввода/вывода (BIOS), содержащую основные процедуры, которые обеспечивают передачу информации между элементами персонального компьютера 20, например, в момент загрузки с использованием ПЗУ 24.
Персональный компьютер 20 в свою очередь содержит жесткий диск 27 для чтения и записи, привод магнитных дисков 28 для чтения и записи на сменные магнитные диски 29 и оптический привод 30 для чтения и записи на сменные оптические диски 31, такие как CD-ROM, DVD-ROM и иные оптические носители информации. Жесткий диск 27, привод магнитных дисков 28, оптический привод 30 соединены с системной шиной 23 через интерфейс жесткого диска 32, интерфейс привода магнитных дисков 33 и интерфейс оптического привода 34 соответственно. Приводы и соответствующие компьютерные носители информации представляют собой энергонезависимые средства хранения компьютерных инструкций, структур данных, программных модулей и прочих данных персонального компьютера 20. Настоящее описание раскрывает реализацию системы, которая использует жесткий диск, сменный магнитный диск 29 и сменный оптический диск 31, но следует понимать, что возможно применение иных типов компьютерных носителей информации, которые способны хранить данные в доступной для чтения компьютером форме (кассеты с магнитной лентой, флеш-карты памяти, цифровые диски, картриджи Бернулли, память с произвольным доступом (ОЗУ), постоянные запоминающие устройства (ПЗУ) и т.п.).
Некоторые из программных модулей, в том числе операционная система 35, хранятся на жестком диске, магнитном диске 29, оптическом диске 31, ПЗУ 24 или ОЗУ 25. Компьютер 20 имеет файловую систему 36, где хранится записанная операционная система 35 и дополнительные программные приложения 37, 37', другие программные модули 38 и программные данные 39. Пользователь имеет возможность вводить команды и информацию в персональный компьютер 20 посредством устройств ввода (клавиатуры 40, манипулятор «мышь» 42). Другие устройства ввода (не отображены): микрофон, джойстик, игровая консоль, спутниковая тарелка, сканнер и т.п. Подобные устройства ввода по своему обычаю подключают к центральному процессору 21 через последовательный порт 46, который в свою очередь подсоединен к системной шине, но могут быть подключены иным способом, например параллельный порт, игровой порт или универсальную последовательную шину (USB). Монитор 47 или иной тип устройства отображения также подсоединен к системной шине 23 через интерфейс, такой как видеоадаптер 48. В дополнение к монитору 47 персональный компьютер может быть оснащен иными периферийными устройствами вывода (не отображены), например колонки, принтер и т.п.
Персональный компьютер 20 способен работать в сетевом окружении, при этом используется логическое соединение с другим или несколькими удаленными компьютерами 49. Удаленные компьютеры (или компьютер) 49 являются такими же персональными компьютерами, серверами, роутерами, сетевыми станциями, пиринговыми устройствами или иным сетевым узлом и, по обыкновению, имеют большинство или все из упомянутых элементов, описанных ранее при объяснении существа персонального компьютера 20, представленного на фиг.5 лишь только как устройство хранения 50, в котором хранятся приложения 37'. Логические соединения подразумевают локальную вычислительную сеть (LAN) 51 и глобальную вычислительную сеть (WAN) 52. Такие сети являются обычным офисным оборудованием, а также применяются в корпоративных компьютерных сетях, внутренних сетях компаний и Интернет.
При использовании LAN сетей персональный компьютер 20 подсоединен к локальной сети 51 через сетевой адаптер или интерфейс 53. При использовании WAN сетей персональный компьютер 20 имеет модем 54 или иные средства установления связи с глобальной вычислительной сетью 52, такой как Интернет. Модем 54, который является внутренним или внешним, подключен к системной шине 23 посредством последовательного порта 46. В сетевом окружении программные модули раскрытых персональных компьютеров 20, или части таких программ, хранят в удаленных устройствах хранения данных. Следует уточнить, что сетевые соединения являются лишь примерными и не обязаны отображать точную сетевую конфигурацию сети, т.е. в действительности существуют иные способы установления логического соединения, иными техническими средствами связи одного компьютера с другим.
Настоящее описание излагает основной изобретательский замысел авторов, который не может быть ограничен теми аппаратными устройствами, которые упоминались ранее. Следует отметить, что аппаратные устройства, прежде всего, предназначены для решения узкой задачи. С течением времени и с развитием технического прогресса такая задача усложняется или эволюционирует. Появляются новые средства, которые способны выполнить новые требования. В этом смысле следует рассматривать данные аппаратные устройства с точки зрения класса решаемого ими технических задач, а не чисто технической реализации на некой элементной базе.