A history of dongles
Copy protection technologies for computer software fall into two categories: the digital (software) and the physical.
No matter how diligently you attempt to protect your computer software from piracy, protecting it using software algorithms will always introduce an element of vulnerability.
Because software can be manipulated, hackers with enough skill can neutralise the detection algorithms or circumnavigate encryption mechanisms designed to keep your intellectual property under lock and key. Physical protection is by no means foolproof, and can be hacked by determined software crackers, but it represents another level of protection for software. This is why protecting software physically has always appealed to software developers.
Getting physical
Physical copy protection emerged in the early 1980s, and came in the form of a dongle. A dongle is a hardware device designed to plug into a computer's I/O port. The dongle provides verification that the software is valid, because it ships with the product and is very difficult to duplicate.
A dongle solution normally consists of three separate components:
- A custom processor containing the intelligence in the system along with the license credentials necessary to activate the software.
- A physical interface to the main board (either a serial port, parallel port or USB port).
- A device driver designed for installation on the PC that will talk to the dongle hardware.
The critical thing here is the specialist processor on the physical device. This is what makes a USB dongle different from a standard USB flash drive.
Ideally, the software program using the dongle to authenticate itself would perform multiple checks by querying the dongle through the I/O port. Badly implemented dongles may only reference the dongle when they start up, setting a single reference variable that will allow the program to run. Such devices leave themselves open to code tampering, and properly implemented dongle/software solutions will involve multiple reference checks to the dongle from different parts of the program, making it much more difficult for hackers to fake the dongle’s existence by tampering with the program code.
For more useful information, See "The problem with dongles"