We want to write few notes about hardware keys, dongle emulators and reverse engineering to make them clear for everybody.
We can split all dongles types to groups
- Dinosaurs. They all dead and only separate wires you can find in recycle.
- Old dongles people invented in 80’s-90’s. Also known as fixed-algorithm dongles or first generation dongles. They often are printer port (LPT) or serial port (COM) hardware devices. Usually such dongles have identification number (ID) or small amount of static memory which software may read to check if license presents or not. Also, most of them have custom fixed data transformation function, developers use to make secret checks. Aladdin HASP3, HASP4, HardLock, Rainbow SentinelPro, Sentinel SuperPro, WIBU Wibu-Box, Dinkey, Marx CryptoBox, DesKey, Maxim iButtons are most known dongles in this group.
Protection of these hardware keys relies on the secret data transformation functions. Most of those functions were restored to source code and are used in so-called “universal” emulators.
- Dongles with a fixed data transformation function in the form of strong crypto-algorithms like AES, FEAL-32 etc. They are also known as second generation keys and are widely spread nowadays. Most probable you have one of such hardware keys in your hands or plugged to your PC or server. Usually, they are USB devices, but they also may be in other forms, like LPT, PCMCIA, PCI-card. Some of the USB keys can work in the driverless mode as Human Interface Devices (HID) or as removable disks.
Besides the changed transformation functions a communication channel protection and software automatic protection (envelope) were improved. All these changes make reverse engineering time and resource consuming. Therefore, solutions for these dongles are more expensive.
Aladdin HASP HL, Sentinel HASP SRM, Sentinel UltraPro, Sentinel Hardware Key (SHK), WIBU WIBU-BOX, WIBU CodeMeter (CmStick), Marx CryptoBox, Eutron SmartKey are the members of this group.
Since the strong crypto-algorithms have a proven security, their emulation is possible only in the input-output table form. So, all “table”-based emulators are version specific. It means they work only with certain version of software.
- Smart-card based dongles allow to execute custom user code inside protected chip. They are also known as third generation dongles. “Code inside” technology makes it possible for software vendors to hide and execute a part of a software logic in a highly protected device. Software just sends some data to dongle and gets result back. It is nightmare for reverse engineer. Each software product must be researched from the scratch. If secret module logic is not trivial, it is impossible to build table which covers all inputs-outputs. So, nobody can guarantee that your software will work correctly with dongle emulator.
SenseLock EL (Elite), Feitian Rockey are the keys which can make your software really protected. It does not mean that using SenseLock nobody can break your software. For sure, there is nothing impossible in special labs, but if you design your protection well, its research would be extremely expensive.