Донгл (от англ. dongle) — аппаратное средство, электронный ключ, предназначенный для защиты от нелицензионного использования и распространения программного обеспечения.
В этой статье мы рассмотрим основные принципы защиты программного обеспечения электронными ключами и попытаемся проанализировать эффективность такой защиты.
Электронный ключ представляет собой компактное устройство, подсоединяющееся к персональному компьютеру или мобильному устройству посредством портов ввода-вывода (порты USB, LPT, COM, BLUETOOTH, слоты PCMCIA, ISA,PCI).
На аппаратном уровне электронный ключ (донгл) обычно содержит в себе микроконтроллер и микросхему памяти. Иногда используется только микроконтроллер (для моделей ключей, не содержащих в себе памяти).
Функциями микроконтроллера являются:
— обеспечение выполнения программы, заложенной в память ключа (прошивки);
— работа с памятью ключа:
— выполнение внутреннего контроля состояния ключа;
Основным назначением большинства ключей является выполнения операций с памятью ключа EEPROM (чтение/запись) и выполнение шифрования данняых. Операции спамятью связаны с лицензированием програмного обеспечения и отдельных его модулей,ограничением работы защищенного ПО, а также с хранением некоторой информации впамяти ключа.
Операции шифрования чаще всего используются для аутентификации и проверкиработы системы защиты программы,а также используются в качестве основы дляреализации криптографических схем защиты на програмно-аппаратном уровне.
Какие же методы защиты предлагают нам разработчики электронных ключей?
1. Хранение в памяти ключа лицензий на програмного обеспечение как в целом, так и в разрезе отдельных его компонентов.
2. Ограничение работы защищенных приложений..по времени, количеству запускови т.п.
3. Криптографические функции:
— разработанные непосредственно производителями ключа (ASIC или собственные алгоритмы)
— публичные алгоритмы AES (Rijndael),DES, GOST, ECC, PGP, и прочие.
4. Функции контроля и предотвращения атак на защищенные приложения.
5. Сетевые функции лицензирования
6. Функции защищенного обновления памяти ключа (как локально, так иудаленно).
7. Средства выполнения кода защищаемого приложения внутри микроконтроллераключа.