HASP HL - новая версия хорошо знакомых ключей


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

Вы никогда не задумывались, для чего может сгодиться обычная флешка? Многие сразу ответят: "… что за вопрос? Конечно для хранения информации…". Но, это если рассматривать с точки зрения обывателя. А если взлянуть на нее "глазами компьютера"? Очевидно, что этот процесс достаточно непрост, это и протокол обмена по USB, переходные процессы, идентификаторы и GUID (Globally Unique IDentifier)…

Немного теории...
HASP (Hardware Against Software Piracy) - это система защиты программы (ПО) и аппаратуры от нелегального использования. Основой большинства ключей HASP - обычно является заказной чип c уникальным ПО, как например в получивших сейчас широкое распространение в дверной автоматике таблетках iBUTTON от Dallas Semiconductor.

Принцип защиты состоит в том, что в процессе запуска программа опрашивает ключ, подключённый к компьютеру по I2C, LPT, PCMCIA или USB. Если ключ отвечает "правильно", то программа выполняется нормально. Иначе, она блокирует доступ к определенным функциям или просто не запускается. Таким образом, любая защищаемая программа состоит непосредственно из самой программы и механизмов проверки ключа. Задача этих механизмов - проверить наличие ключа, получить его уникальный идентификатор, прочитать или изменить содержимое встроенной памяти.

Предпосылки защиты ПО. Существующие решения
Основными критериями для использования аппаратных ключей являются:

  • цена используемых ключей должна быть неизмеримо меньше цены софта
  • длительный срок жизни программного продукта
  • индивидуальный алгоритм взаимодействия
Первый критерий обеспечивается довольно легко: с интенсивной разработкой новых видов памяти, таких как PRAM*, цены на SSD (Solid State Disk) носители уже составляют от 5 долларов. Таким образом разработчик без ущерба для бюджета может распространять продукт на самом ключе.

* PRAM (Phasechange Random Access Memory) - память с произвольным доступом, основанная на фазовых переходах вещества - халькогенида, обладающую скоростью доступа порядка 10 нс, что сравнимо с современными ОЗУ.


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

Существует множество вариаций ключей: без собственной памяти, с защищенной памятью, со встроенными REAL TIME часами, со встроенными сетевыми протоколами.

В то же время, кроме предлагаемого в статье встраиваемого решения в виде компонента, существуют такие продукты как StarForce и HASP Envelope от компании Alladin, позволяющие уже на этапе продажи добавлять защитные модули обмена с ключом в готовые программы, интегрируя их в код продукта. Но у них есть издержки, связанные с затратами на покупку самих HASP ключей, стоимость которых составляет от 25 до 50 долларов за штуку (в зависимости от модели ключа) и ПО для встраивания (от 200 долларов), при стоимости защищаемой программы от 20 долларов.

Разработка ПО и средства отладки
Как известно, метод защиты HASP основан на привязке программы к некоему или совокупности уникальных параметров ключа и даже оборудования. Так как мы будем использовать устройство USB, то априори достаточно считать серийник и ID флешки**, поскольку они не меняются при их форматировании.

** не все флеш-накопители имеют данный номер, к примеру некоторые чипы от LG


Для работы необходимо следующее:

  • среда Borland Delphi 5-7
  • утилита Dependency Walker из комплекта Visual C++ 6.0
В средах NT/XP информацию о устройствах предоставляет стандартная системная библиотека SetupApi.dll . Чем и воспользуемся... Рассмотрим экспортируемые ею функции с помощью Dependency Walker, и для удобства разработчика встроим в компонент (в дальнейшем он будет использоваться как базис механизма защиты)
... CM_Get_Device_IDA:function(dnDevInst: DWORD; Buffer: PChar; BufferLen: DWORD; ulFlags: DWORD): DWORD; stdcall; SetupDiGetClassDevsA:function(ClassGuid: PGUID; Enumerator: PChar; hwndParent: HWND; Flags: DWORD): HDEVINFO; stdcall; SetupDiEnumDeviceInfo:function(DeviceInfoSet: HDEVINFO; MemberIndex: DWORD; DeviceInfoData: PSP_DEVINFO_DATA): boolean; stdcall; SetupDiDestroyDeviceInfoList:function(DeviceInfoSet: HDEVINFO): boolean; stdcall; CM_Get_Device_ID_Size:function(pulLen: PDWORD; dnDevInst: DWORD; ulFlags: DWORD): DWORD; stdcall; SetupDiCallClassInstaller:function(InstallFunction: DWORD; DeviceInfoSet: DWORD; DeviceInfoData: PSP_DEVINFO_DATA): BOOL; stdcall; SetupDiGetDeviceRegistryPropertyA:function(DeviceInfoSet: DWORD; DeviceInfoData: PSP_DEVINFO_DATA; Propertys: DWORD; PropertyRegDataType: PWORD; PropertyBuffer: PByte; PropertyBufferSize: DWORD; RequiredSize: PWORD): BOOL; stdcall; SetupDiSetClassInstallParamsA:function(DeviceInfoSet: DWORD; DeviceInfoData: PSP_DEVINFO_DATA; ClassInstallParams: PSP_CLASSINSTALL_HEADER; ClassInstallParamsSize: DWORD): BOOL; stdcall; FLib: THandle; ...

для их использования - осуществим динамическое их подключение в компоненте

Function LinkProc(ProcName: string):Pointer; begin try result:= GetProcAddress(FLib,PChar(ProcName)); Win32Check(Assigned(Result)) except end end; ... CM_Get_Device_IDA:= LinkProc("CM_Get_Device_IDA"); SetupDiGetClassDevsA:= LinkProc("SetupDiGetClassDevsA"); SetupDiEnumDeviceInfo:= LinkProc("SetupDiEnumDeviceInfo"); SetupDiDestroyDeviceInfoList:= LinkProc("SetupDiDestroyDeviceInfoList"); CM_Get_Device_ID_Size:= LinkProc("CM_Get_Device_ID_Size"); SetupDiCallClassInstaller:= LinkProc("SetupDiCallClassInstaller"); SetupDiGetDeviceRegistryPropertyA:= LinkProc("SetupDiGetDeviceRegistryPropertyA"); SetupDiSetClassInstallParamsA:= LinkProc("SetupDiSetClassInstallParamsA"); ...

при создании компонента инициализируем опрос USB:

Var Info: TDevBroadcastDeviceInterface; //интерфейс- ... Info.dbcc_size:= SizeOf(DEV_BROADCAST_DEVICEINTERFACE); Info.dbcc_devicetype:= DBT_DEVTYP_DEVICEINTERFACE; Info.dbcc_classguid:= FClassGUID; FNotifyHandle:= RegisterDeviceNotification(FWnd,@Info,DEVICE_NOTIFY_WINDOW_HANDLE); // таймер на CountDiskEnum ftimer:= ttimer.Create(self); ftimer.Enabled:= false; ftimer.interval:= FPoolingInterval; ftimer.ontimer:= tmr; ftimer.Enabled:= true ...

Покажем на практике как это работает. Встроим компонент в уже готовую программу и в меню осуществим активацию режима "мини HASP" (см. рис.)


после того как флешка будет вставлена, наступает событие DBT_DEVICEARRIVAL

... //--- читаем очередь сообщений и отлавливаем момент подключения-съема USB procedure TDUSB.WndProc(var Msg:TMessage); begin with Msg do if (Msg=WM_DEVICECHANGE)and ((wParam=DBT_DEVICEARRIVAL)or(wParam=DBT_DEVICEREMOVECOMPLETE)) then try DoDeviceChange(wParam,PDevBroadcastDeviceInterface(lParam)); except end else Result:= DefWindowProc(FWnd,Msg,wParam,lParam) end; ...

производим считывание серийного номера, ID и GUID

Var VID,PID: Word; Serial,GUID: string; const USBNameMask="\\?\USB#Vid_%x&Pid_%x#%s#%s"; begin if (Device.dbcc_devicetype=DBT_DEVTYP_DEVICEINTERFACE)and Assigned(FOnChange) and ParseDeviceName(USBNameMask,PChar(@Device.dbcc_name), [@VID,@PID,@Serial,@GUID]) then case Event of DBT_DEVICEARRIVAL: FOnChange(Self,VID,PID,Serial,GUID,doInsert); DBT_DEVICEREMOVECOMPLETE: FOnChange(Self,VID,PID,Serial,GUID,doRemove) end end; ...


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

Procedure TDUSB.CountDiskEnum; // вызов по таймеру ftimer- const GUID_DEVCLASS_DISKDRIVE: TGUID = (D1: $4D36E967; D2: $E325; D3: $11CE; D4: ($BF, $C1, $08, $00, $2B, $E1, $03, $18)); var hDevInfoSet: HDEVINFO; DevInfo: SP_DEVINFO_DATA; i: Integer; s: string; pp: boolean; begin DevInfo.cbSize:= sizeof(SP_DEVINFO_DATA); hDevInfoSet:= SetupDiGetClassDevsA(@GUID_DEVCLASS_DISKDRIVE, nil, 0, 2); i:= 0; list.Clear; // обнуляем stringlist // if hDevInfoSet INVALID_HANDLE_VALUE then begin while (SetupDiEnumDeviceInfo(hDevInfoSet, i, @DevInfo)) do begin s:= GetDevName(DevInfo.DevInst); //фильтрация строки вида- //USBSTOR\DISK&VEN_KINGSTON&PROD_DATATRAVELER_2.0&REV_PMAP\5B661B004102&0 //USBSTOR\DISK&VEN_SAMSUNG&PROD_MIGHTY_DRIVE&REV_PMAP\07521094081F&0 if pos("USB",s)=1 then // наполняем список подключенных- list.Add(sel_ser(s)); Inc(i) end; SetupDiDestroyDeviceInfoList(hDevInfoSet) end; ...

введем алгоритм простейшей защиты на основе функции BlockInput из библиотеки - user32.dll

Procedure BlockInput; external "user32.dll"; ... //проверка на блокировку ПК- pp:= false; if (FActive)and(fblock"") then begin for i:= 0 to list.Count-1 do if list[i]= fblock then begin pp:= true; break end; if pp then UnBlock else block end; // FSerChange(Self,list) // возврат события компонента- ...

Полные исходные тексты компонента и тестовый монитор доступны по .


Рис. - Тестовый монитор USB
Рис. - Компонент мини HASP

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

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

  • Cайт Alladin http://www.alladin.ru
  • Dependency Walker из комплекта Visual C++ 6.0 http://ra-xp.narod.ru/zip/dll.zip
  • Модификация системы управления ПК http://ra-xp.narod.ru/zip/ram.zip
  • Компонент miniHASP for DELPHI и компиляция тестового проекта http://ra-xp.narod.ru/zip/hsp.zip

Контактная информация:

[email protected]

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

Хочу обратить внимание, что ошибка появилась на компьютере, на котором было 2 сетевые карты с 2мя разными сетями. Почему то сразу значения данному моменту не придал. Видимо, потому что монитор HASP обнаруживал данные ключи отлично, из-за чего искал проблему в 1С. В результате чего убил пол дня рабочего времени. Проблема действительно крылась в двух сетевых картах, а если сказать точнее, 2 разные сети, решение было в файле C:\Program Files\1cv81\bin\conf\nethasp.ini

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

Начну с маленького ликбеза:

1С:Предприятие 8 используется систему защиты с помощью аппаратных ключей HASP , скачать драйвер, программу мониторинга и службу HASP Loader можно на сайте http://www.aladdin-rd.ru/, а конкретно в разделе поддержки http://www.aladdin-rd.ru/support/downloads/hasp/.

Ключи защиты для 1С подразделяются на:

1. Однопользовательские (обязательно должны физически быть подключены к компьютеру, на котором запускается 1С)

модель HASP HL Basic (синего цвета ), данный ключ имеет маркировку H4 M1 ORGL8 , не имеет встроенной памяти и персонального ID, не хранит в себе никаких параметров и настроек. Поставляется продуктами имеющими лицензию на одно рабочее место.

Сетевой ключ HASP

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

Сетевые клиентские ключи включают серию (красного цвета ). Имеют внутреннюю память, в которой хранится количество лицензий, и уникальный ID. Существуют разновидности на 5, 10, 20, 50 и 100 пользователей. Имеет маркировку NETXX ORGL8 , где ХX - количество лицензий (например NET5 ORGL8 ). Существуют также ключи на 300 и 500 пользователей которые имеют маркировку NET250+ ORG8A и NET250+ ORG8B . Поставляются с продуктами имеющими лицензию на 5 рабочих мест, а также отдельно, в виде дополнительных клиентских лицензий.

Ключ для Сервера 1С

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

Ключи для сервера 1С Предприятие бывают только локальные . 32-битная версия имеет ключ защиты HASP HL Pro (фиолетового цвета ), который имеет внутреннюю память и уникальный ID. Имеет маркировку ENSR8 , поставляется вместе с лицензией на сервер 1С Предприятие.

Для 64-битного сервера используется ключ HASP HL Max (зеленого цвета ) с внутренней памятью и уникальным ID. Имеет маркировку EN8SA и поддерживает также 32-битный сервер. Т.е. имея лицензию на 64-битный сервер можно, не меняя ключа, использовать 32-битную версию, но не наоборот.

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

Для многопользовательского (сетевого) ключа защиты необходимо:
1. Установить драйвер ключа защиты на одну из машины в сети, которая будет являться сервером ключа - HASP4_driver_setup.zip
2. Установить сервер (службу) ключа защиты на эту же машину - HASP_LM_setup.zip
3. Вставить ключ защиты в сервер в USB порт
4. Установить 1С на клиентские машины

В общем случае, данных действий для работы 1С достаточно. В процессе запуска и дальнейшей работы 1С:Предприятие 8 на локальных машинах, система будет обращаться с помощью broadcast-запроса по порту 475 и искать ключ защиты. В случае не удачного поиска будет выдано сообщение „не обнаружен ключ защиты программы“ и работы 1С:Предприятие прервется.

Если вы столкнулись с сообщением „не обнаружен ключ защиты программы “ необходимо проверить:
1. наличие ключа защиты в порту usb сервера ключа
2. проверить запущен ли сервер ключа на сервере (процесс с именем „Hasp loader“)
3. проверить командой telnet доступность сервера ключа с локальной машины по порту 475 (например: telnet 192.168.100.100 475)

Если все проверки прошли успешно, но ошибка осталась, переходим к более детальным настройкам. В папке установки 1С:Предприятие 8 (как правило, c:\program files\1cv81\bin\conf или c:\program files\1cv8\bin\) имеет файл nethasp.ini . Это файл настройки ключа защиты, он разбит на секции, нас интересует секция . При установке 1С, по умолчанию, в данной секции все параметры отделены двойными знаками ";", что означает игнорирование данных настроек. При этом драйвер ключа ведет себя следующим образом:
1. посылается пакет типа broadcast по локальной сети по порту 475 в поисках сервера ключа защиты
2. если ответ не получен - ошибка

Недостатки конфигурации по умолчанию:
1. на broadcast уходит какое-то время
2. не все сервера отвечают на подобные пакеты
3. broadcast какая-никакая, но нагрузка на сеть

Для решения данной проблемы необходимо сделать следующее:
1. укажем конкретный адрес где искать сервер ключа (например: NH_SERVER_ADDR = 192.168.100.100)
2. запретим broadcast поиск (NH_USE_BROADCAST = Disabled)
3. и ограничим типы пакетов только TCP-протоколом (NH_TCPIP_METHOD = TCP)

Как показывает практика, скорость запуска 1С:Предприятие 8 после такой настройки возрастает заметно!

Но есть и кое-какие недостатки данного метода:

необходимо следить за тем, чтобы адрес сервера ключа защиты не изменился, иначе придется на всех локальных машинах перенастраивать файл nethasp.ini!

Хотел бы так же уточнить несколько моментов по работе с ключами, с которыми пришлось сталкиваться при работе:

1. Monitor HASP не показывает ключ

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

2. Два ключа защиты 1С HASP на одном компьютере

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

  • Ключи, имеющие разные серии, будут работать нормально. (по отношению к 1С: 1 серверный и 1 сетевой будут работать нормально)
  • Ключи одной серии будут работать, если такая возможность была реализована разработчиком защищенного ПО. Если же разработчиком данная возможность не была реализована, то ключи, относящиеся к одной серии, не будут работать совместно на одном компьютере, будет виден только один из них: либо ближний к порту (в случае с LPT-ключами), либо размещенный на порту с младшим адресом (в случае с USB-ключами защиты программ HASP). (по отношению к 1С , - 2 локальный или 2 сетевых ключа на одном компьютере работать корректно, скорее всего не будут)
  • не рекомендуется ставить вместе локальный и сетевой ключ, это связано с особенностью защиты 1С Предприятия: находя локальный ключ программа никогда не будет искать сетевой.

Возможные решения данной проблемы:

  • Замена нескольких ключей защиты программ HASP на один, с бОльшим количеством лицензий (об этом хорошо написано тут: http://v8.1c.ru/predpriyatie/questions_licence.htm).
  • Установка ключей защиты на разные компьютеры с последующей установкой и настройкой менеджеров лицензий при каждом ключе.

3. Два и более менеджеров лицензий (License Manager) в сети

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

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

NHS_SERVERNAMES = NAME1

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

NH_TCPIP = Enabled NH_SERVER_ADDR = 192.168.0.10, 192.168.0.11 NH_SERVER_NAME = NAME1, NAME2

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

С Уважением, Mc.Sim!

Программные продукты «1С:Предприятие» версии 8 помимо могут быть защищены от копирования аппаратными LPT или USB ключами типа HASP4 Net от фирмы Aladdin . В данной статье приведена информации о типе, маркировке и назначении различных ключей HASP4 Net от «1С:Предприятие». А также обзор программных продуктов от фирмы Aladdin, служащих для установки, настройки и администрировании этих ключей (для ОС семейства Windows).

1. Маркировка и назначение ключей

Все ключи HASP4 Net условно можно разделить на 2 типа «Клиентские» и «Серверные»:

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

Таблица видов ключей HASP 1С:Предприятие 8
Тип / цвет Маркировка / серия Назначение
ОДНОПОЛЬЗОВАТЕЛЬСКИЕ ВЕРСИИ ОСНОВНЫХ ПОСТАВОК И КЛИЕНТСКИХ КЛЮЧЕЙ
H4 M1 ORGL8
  • 1C:Бухгалтерия 8 ПРОФ
  • 1С:Бухгалтерия 8 ПРОФ. Поставка для розничного распространения
  • 1С:Бухгалтерия 8 КОРП
  • 1С:Бухгалтерия бюджетного учреждения 8
  • 1С:Бухгалтерия автономного учреждения 8 ПРОФ
  • 1С:Бухгалтерия автономного учреждения 8 КОРП
  • 1С:Управление торговлей 8
  • 1С:Зарплата и Управление Персоналом 8
  • 1С:Зарплата и кадры бюджетного учреждения 8
  • 1С:Управление небольшой фирмой 8
  • 1С:Комплексная автоматизация 8
  • 1С:Предприятие 8. Управление производственным предприятием
  • 1С:Документооборот 8
  • 1С:Предприятие 8. Клиентская лицензия на 1 рабочее место
СЕТЕВЫЕ ВЕРСИИ ОСНОВНЫХ ПОСТАВОК И МНОГОПОЛЬЗОВАТЕЛЬСКИЕ КЛЮЧИ
H4 NET5 ORGL8
  • 1С:Бухгалтерия 8. Комплект на 5 пользователей
  • 1С:Бухгалтерия 8 ПРОФ на 5 пользователей. Поставка для розничного распространения
  • 1С:Предприятие 8. Комплект прикладных решений на 5 пользователей
H4 NET5 ORGL8
  • 1С:Предприятие 8. Клиентская лицензия на 5 рабочих мест
H4 NET10 ORGL8
  • 1С:Предприятие 8. Клиентская лицензия на 10 рабочих мест
H4 NET20 ORGL8
  • 1С:Предприятие 8. Клиентская лицензия на 20 рабочих мест
H4 NET50 ORGL8
  • 1С:Предприятие 8. Клиентская лицензия на 50 рабочих мест
H4 NET100 ORGL8
  • 1С:Предприятие 8. Клиентская лицензия на 100 рабочих мест
NET250+ ORG8A
  • 1С:Предприятие 8. Клиентская лицензия на 300 рабочих мест
NET250+ ORG8B
  • 1С:Предприятие 8. Клиентская лицензия на 500 рабочих мест
КЛЮЧИ НА СЕРВЕР 1С:ПРЕДПРИЯТИЕ 8.*
H4 M1 ENSR8
  • 1С:Предприятие 8. Лицензия на сервер (х32).
Max EN8SA
  • 1С:Предприятие 8. Лицензия на сервер (x86-64).
КОМПЛЕКТЫ
  • 1С:Предприятие 8. Управление производственным предприятием для 10 пользователей + клиент-сервер. В комплект поставки входит два ключа: Многопользовательский на 10 рабочих мест и на сервер 1С:Предприятия 8.* (х32)
  • 1С:Комплексная автоматизация 8 для 10 пользователей + клиент-сервер. В комплект поставки входит два ключа: Многопользовательский на 10 рабочих мест и на сервер 1С:Предприятия 8.* (х32)
  • 1С:Предприятие 8. Комплект для обучения в высших и средних учебных заведениях. В комплект поставки входит два ключа: Многопользовательский на 20 рабочих мест и на сервер 1С:Предприятия 8.* (х32)

Размер USB-ключей может отличаться от размера ключей изображенных на рисунках. Программные продукты системы «1С:Предприятие» выпускавшиеся до 2009 г. комплектовались USB-ключами в более длинном форм-факторе - 52 мм. Цветовая схема и маркировка ключей осталась без изменений.

2. Что нужно знать при установке ключей

Есть несколько особенностей, которые следует принять во внимание перед установкой ключей HASP, а именно:

  1. Общее число пользователей, которые могут работать с системой «1С:Предприятие» равно сумме лицензий, доступных в каждом из клиентских ключей.
  2. На одном физическом компьютере не могут работать 2 и более ключа одной Серии , т. к. эти ключи неразличимы и фактически будет задействован только один из них (выбранный произвольно). Серию ключа можно определить по последним 5 символов в маркировке (ORGL8, ORGL8A, ENSR8 и т.д.). Ключи разных серий без проблем могут быть установлены на один компьютер.
  3. Клиентские ключи могут быть установлены на любой компьютер в сети (если запущен HASP License Manager).
  4. При наличии нескольких ключей, лицензии выдаются в следующем порядке:
    • в ключе серии ORGL8
    • в ключе серии ORGL8A
    • в ключе серии ORGL8B
  5. Действует также «запоминание ключа», т. е. при повторном обращении сначала будет выполнена попытка получении лицензии из ключа, чья лицензия была получена пользователем при последнем подключении.
  6. Серверный ключ должен быть установлен непосредственно на тот же самый компьютер, который используется в качестве сервера кластера «1С:Предприятия» . По сети он работать не будет.
  7. Серверные 64-битные ключи также можно использовать и в 32-битных системах.
  8. Есть определенные проблемы с пробросом серверного ключа из физической среды в виртуальную на некоторых гипервизорах. Например, мне так и не удалось штатными средствами пробросить серверный ключ в виртуальную машину в .
  9. COM-соединение также требует лицензию.
  10. Для работы Web-сервисов не требуется клиентских лицензий.
  11. Полный алгоритм поиска лицензии при старте «1С:Предприятие» для версии 8.3 описан , для версии 8.2 — .

3. Особенности учета клиентских лицензий

Клиент «1С:Предприятие» при запуске может использовать для получения лицензий:

  • Локальный ключ — ключ установленный на физический компьютер, с которого запускается «1С:Предприятие». Дает право запуска на компьютере c ключом из под одной сессии Windows произвольного количества экземпляров системы в режиме 1С:Предприятие или Конфигуратор. При работе в терминальном режиме позволяет работать только одному пользователю, который подключился к терминальной сессии с идентификатором 0.
  • Многопользовательский ключ, доступный по сети через HASP License Manager — Обеспечивает одновременную работу стольких компьютеров, на сколько пользователей имеется ключ. Аналогично локальному ключу на одном компьютере в одной сессии Windows возможен запуск произвольного количества экземпляров системы в любом режиме в рамках одной лицензии. При работе в терминальном режиме также требуется установка HASP License Manager.
  • Сервер «1С:Предприятие» или модуль расширения веб-сервера — Помимо программы HASP License Manager лицензии также могут выдаваться и сервером «1С:Предприятие» или модулем расширения веб-сервера (только в случае работы с файловой базой через Web-клиент). При этом подсчетом лицензий занимается непосредственно сервер «1С:Предприятие» или модуль расширения веб-сервера. В этом случае, в отличии от двух предыдущих вариантов, лицензии расходуются из расчета «один сеанс — одна лицензия». Таким образом, если на одном компьютере запущено два экземпляра «1С:Предприятие», то будет затрачено две лицензии.

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

4. Программы для администрирования ключей HASP


4.1 HASP Device Driver

На момент написания статьи актуальной была версия 6.62.1. Скачать можно с официального сайта или с .

Это ничто иное как обычный драйвер для устройства. Он нужен для того, чтобы ключ HASP4 Net определился в системе. Устанавливать следуя инструкциям инсталлятора.


4.2 HASP HL License Manager

с официального сайта или с .

Менеджер лицензий — это утилита, которая служит связующим звеном между сетевым ключом и «1C», запускаемой на удаленной машине. При установке HASP License Manager автоматически создает . Однако, для работы защищенного приложения на удаленной рабочей станции необходимо проверить, что осуществляется беспрепятственный проход UDP- и TCP-пакетов по 475 порту в обе стороны. Устанавливать менеджер желательно как службу, выбрав «Service (nhsrvice.exe) » во время установки.

Ну а после установки должна появиться соответствующая служба.

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


4.3 Aladdin HASP Monitor

На момент написания статьи актуальной была версия 8.32.5. Скачать можно с официального сайта или с .

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

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

5. Просмотр полученной лицензии в 1С

Перечень всех видимых ключей, а также место получение текущей лицензии можно посмотреть и непосредственно из «1С:Предприятие». Достаточно запустить 1С в режиме 1С:Предприятие, в меню выбрать «Справка » — «О программе… » или нажать пиктограмму с изображением восклицательного знака на панели.

В открывшемся окне информацию о лицензиях можно просмотреть в пункте «Лицензия ».

Здесь мы увидим ключ выдавший лицензию данному пользователю, а также все видимые ключи сети. Информация о выданных лицензиях присутствует также и в Консоли Администрирования Серверов «1С:Предприятие» в списке сеансов информационной базы (начиная с версии платформы 8.2.15).

Помогла ли Вам данная статья?

ВведениеТехнология защиты программного обеспечения с помощью аппаратных ключей широко распространена по всему миру. Каждая компания сама решает, стоит ли защищать свой продукт с помощью привязки к аппаратному ключу или следует остановиться на другом механизме обеспечения лицензионной безопасности. Время от времени аппаратные ключи крупнейших мировых производителей взламываются, в сети Интернет появляются в свободном доступе программные эмуляторы аппаратных ключей... В ответ на это разработчики создают новые версии своих ключей, которые в течение какого-то времени сдерживают пиратов и т.д. Борьба "снаряда и брони" бесконечна... Данная статья расскажет о новой версии ключей HASP от компании Aladdin Software Security R. D.

Мы уже писали о технологии HASP и даже проводили некоторое сравнение с технологией Sentinel от компании Rainbow Technologies. Если вас, уважаемый читатель, интересует подробное описание технологии HASP, состав самого аппаратного ключа, базовые возможности утилит для его настройки и т.д., то советуем обратиться к нашей предыдущей статье, ссылка на которую дана выше. Далее мы постараемся сконцентрировать внимание именно на отличиях нового пятого поколения технологии HASP (пятое поколение называется HASP HL, и именно о нем далее пойдет речь) от HASP4.

Интервью с экспертом

О новой версии технологии защиты программного обеспечения на основе ключей HASP HL нам согласился рассказать Александр Гурин, менеджер отдела защиты ПО компании Aladdin Software Security R. D.


Александр Гурин, менеджер отдела защиты ПО компании Aladdin Software Security R. D.



Алексей Доля: Вы не могли бы кратко описать, чем HASP HL отличается от других версий электронных ключей HASP?

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

Но будем объективны: во всех аладдиновских ключах, включая HASP4, был один недостаток, вернее даже не недостаток, а уязвимость. Я говорю о так называемом "секретном" алгоритме шифрования данных.

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

В новых ключах HASP HL мы полностью отказались от использования секретных алгоритмов. Для шифрования данных используется публичный, аппаратно реализованный алгоритм AES с ключом шифрования 128 бит. Алгоритм опубликован, и с 2000 года является стандартом криптографии США (пришел на смену легендарного DES).

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

В прошлом нашем интервью , я сравнил защиту с помощью ключей HASP4 с обычным кухонным стулом. Можно сделать такой стул, который рассыплется при первом же использовании, а можно такой, который будет служить долгие годы. Если провести аналогию с HASP HL, то для того чтобы сломать хорошо построенный (с помощью HASP HL) стул - его надо, по меньшей мере, разобрать на атомы:).


Алексей Доля: Есть ли какие-нибудь разновидности ключей HASP HL?

Александр Гурин: Модельный ряд HASP HL состоит из:

HASP HL Basic - самый простой ключ, не имеет внутренней памяти и уникального ID-номера;
HASP HL Pro - пришел на смену наиболее популярной модели HASP4 M1. Ключ содержит 112 байт защищенной памяти и уникальный ID-номер;
HASP HL Max - необходим в случае защиты нескольких программ при помощи одного ключа (до 112 программ). Содержит 4096 байт защищенной памяти и ID-номер;
HASP HL Time - содержит встроенные часы реального времени, 4096 байт защищенной памяти и ID-номер;
HASP HL Net - сетевой ключ, позволяющий ограничивать число одновременно работающих с защищенной программой пользователей. Выпускаются модификации на 10, 50 и 250 пользователей.


Кроме того, хотелось бы отметить, что все сетевые ключи работают как локальные, а локальные - как сетевые. За счет универсального HASP HL API теперь нет необходимости разрабатывать отдельно сетевую и локальную защиту.


Алексей Доля: Расскажите, пожалуйста, о возможностях, реализуемых с помощью технологии HASP HL.

Александр Гурин: Мы постарались сделать защиту с помощью ключей HASP HL максимально гибкой и удобной для разработчиков и менеджеров. Все новшества в ключах HASP HL направлены на то, чтобы сократить время построения защиты, сделать процесс внедрения и последующего сопровождения защищенных приложений легким и простым.

Самым, пожалуй, важным нововведением в ключах HASP HL является наличие так называемой, системы автоматического лицензирования. Эта система позволяет полностью разделить процесс защиты и лицензирования продукта. Как это работает, поясню на примере. Ваше приложение состоит из трех модулей - А, В и С. Перед вами стоит задача выпуска нескольких версий, в которые будут входить упомянутые модули в различных комбинациях. При выпуске продукта вы можете еще и не знать, какие версии вам понадобятся в будущем. На первом этапе разработчики встраивают защиту для каждого модуля. На втором - менеджеры, несколькими кликами мыши в графическом интерфейсе определяют, что будет представлять собой та или иная версия продукта, какие модули будут в нее входить. Кроме того, менеджеры могут быстро сформировать обновление продукта. И все это совершенно независимо от разработчиков. Как я уже говорил, API в ключах HASP HL - универсально. Нет нужды в создании отдельной локальной и отдельной сетевой защиты. Таким образом, вы экономите время разработчиков по внедрению защиты, этому также способствует встроенный генератор исходных кодов HASP HL API.


Алексей Доля: Каков форм-фактор нового электронного ключа?

Александр Гурин: Все ключи HASP HL выпускаются только в USB форм-факторе. Наряду с поддержкой Windows Update - это обеспечивает автоматическую установку драйверов HASP HL, что на наш взгляд, должно существенно снизить нагрузку на техническую поддержку.


Алексей Доля: Каковы системные и аппаратные требования ключа HASP HL? Реализована ли поддержка платформ Unix и Macintosh?

Александр Гурин: Как и прежде, ключи HASP HL являются межплатформенным решением. HASP HL работает под Windows 98SE/ME/2000/XP/Server 2003, Mac OS 10.2.x и выше, а так же под основными дистрибутивами Linux (SuSЕ, RedHat, Alt и др.).


Алексей Доля: Какую техническую поддержку вы оказываете пользователям HASP HL?

Александр Гурин: Политика Aladdin в области технической поддержки HASP остается прежней: "Неважно, разработчик вы или просто пользователь программного обеспечения защищенного с помощью HASP, Aladdin всегда и бесплатно окажет вам техническую поддержку своего продукта".


Алексей Доля: Хорошая позиция. Сколько стоит ключ HASP HL и где его можно купить?

Александр Гурин: Ценовая политика для ключей HASP HL такова: локальные ключи на 10% дороже соответствующих моделей HASP4, а сетевые ключи - на 15% дешевле. Полная информация по ценам на ключи HASP HL представлена на нашем сайте . Приобрести наши ключи можно, оформив заявку на сайте, либо через обширную сеть наших партнеров по России, а так же в странах Ближнего Зарубежья.


Алексей Доля: Хотите сказать что-нибудь нашим читателям напоследок?

Александр Гурин: Хотелось бы поздравить всех с новогодними праздниками и пожелать удачи в 2005 году. Огромное спасибо за внимание. Если возникли какие-либо вопросы - буду рад ответить.

Алексей Доля: Вам тоже спасибо, что уделили нам время. Мы и дальше будем следить за развитием технологий компании Aladdin. Удачи вам и вашей компании!

Некоторые комментарии

Как отметил Александр Гурин, все ключи HASP HL теперь поставляются в форм-факторе USB. К этому следует добавить, что инженеры компании Aladdin смогли уменьшить сам аппаратный ключ в полтора раза, теперь максимальный размер ключа составляет 38 мм. Как утверждают менеджеры Aladdin Software Security R. D., это "самый компактный ключ на рынке". Взглянем несколько подробнее на то, какие виды ключей HASP HL бывают.


Ключ HASP HL Basic. Это недорогое решение. Ключи не имеют памяти и уникального ID-номера.




Ключ HASP HL Pro. Самый популярный и универсальный ключ, содержит 112 байт защищенной перезаписываемой памяти и уникальный ID-номер. С помощью одного ключа HASP HL Pro можно защитить до 16 различных приложений.




Ключ HASP HL Max. Оптимален для случаев, когда необходимо обеспечить защиту нескольких приложений одним ключом. Данная модель содержит 4096 байт защищенной перезаписываемой памяти и уникальный ID-номер и может использоваться для защиты до 112 приложений.




Ключ HASP HL Time. Содержит встроенные часы реального времени, показывающие текущую дату и время. HASP HL Time позволяет передавать защищенное приложение во временное использование (на ознакомление или тестирование), организовать сдачу в аренду, лизинг, а также использовать какие-либо ресурсы приложения в течение заданного промежутка времени. HASP HL Time содержит 4096 байт защищенной перезаписываемой памяти и уникальный ID-номер.




Ключ HASP HL Net. Сетевые ключи позволяют защищать приложения в сети и ограничивать количество пользователей (лицензий). С помощью одного ключа HASP HL Net можно защитить до 112 различных приложений или модулей программы и ограничить число одновременных пользователей. Данная модель содержит 4096 байт защищенной перезаписываемой памяти и уникальный ID-номер.




Ключ HASP HL Master Key. Ключ содержит уникальные коды и идентификаторы, используемые системой HASP HL, которые присваиваются разработчику компанией Аладдин. Пароли для каждой серии HASP HL хранятся в защищенной памяти HASP HL Master Key. Этот ключ нужен разработчику для построения защиты приложения как с помощью HASP API, так и с помощью утилиты автоматической защиты HASP Envelope.



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

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

Следует также отметить, что ключи HASP HL полностью совместимы с HASP4 и HASP3. Таким образом, ключи HASP HL могут работать с программами, защищенными с помощью ключей HASP4 и HASP3, без внесения каких-либо изменений в исходный код. Но ключи HASP HL выпускаются только в USB форм-факторе. В случае отсутствия USB порта, необходимо использовать LPT ключи HASP4.

Итоговая таблица

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

Возможности ключей HASP

Возможности HASP HL HASP4
Автоматическая защита (Envelope) + +
Автоматическая система лицензирования + -
Аппаратно реализованный в ключе алгоритм кодирования данных AES секретный
Генератор исходных кодов модулей защиты + -
Дистанционное перепрограммирование + +
Кросс-платформенность + +
Размер памяти до 4096 байт до 512 байт
USB интерфейс + +
LPT интерфейс - +
Автоматическая установка драйверов (Windows Update) + только USB

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