This is an old revision of this page, as edited by Matt Gies (talk | contribs) at 05:03, 10 May 2004. The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.
Revision as of 05:03, 10 May 2004 by Matt Gies (talk | contribs)(diff) ← Previous revision | Latest revision (diff) | Newer revision → (diff)A dongle is a small hardware device that connects to a computer and acts as an authentication key for a particular piece of software. When the dongle is present, the software will run properly; when it is not, the program will run in a restricted mode or refuse to start. Dongles are used by some proprietary vendors as a form of copy protection or digital rights management because it is much harder to copy the dongle than to copy the software it authenticates.
(Dongle also refers to a jack wired to a small edge connector on a Type I or II PCMCIA card, typically an RJ45 or RJ11 jack for an Ethernet or telephone cable. This type of dongle has no copy protection purpose. PCMCIA card dongles are notoriously fragile and unreliable. They are falling out of favour as more laptops include built-in Ethernet and modem sockets.)
Dongles are typically used with very expensive packages and vertical market software, such as CAD/CAM software, Digital Audio Workstation applications and some translation memory packages. Efforts to introduce dongle protection in the mainstream software market have met with stiff resistance from users.
Vendors of dongles and dongle-protected software often use terms such as hardware key or security device in their written literature. In day-to-day use, however, "dongle" is the almost universal term for the device and is used informally even by said vendors.
History
PaperClip, in 1984, was the first program to use a dongle. Its dongle was a simple passive device that connected the pins of a parallel port in a predetermined manner.
Dongles rapidly evolved into active devices that contained a serial transceiver (UART) and even a microprocessor to handle transactions with the host. Later versions adopted the USB interface in preference to the serial or parallel interface.
Problems with dongles
Implementation problems
There is the potential for weaknesses in the implementation of the protocol between the dongle and the protected software. It requires considerable cunning to implement this in a fashion that is not easy to crack. For example, naïve implementations might simply define a function to check for the dongle, returning "true" or "false" accordingly, reducing the protection to a single bit value at one point in the program.
Modern dongles include built-in strong encryption and use fabrication techniques designed to thwart reverse engineering. Typical dongles also now contain non-volatile memory — key parts of the software may actually be stored on the dongle.
User problems
Dongles tie up a port on the host machine. This has been ameliorated to some extent by the adoption of USB, but is still a serious drawback. To get around this, most practical dongles include a replacement port, so as to become an inline device.
In fields where dongle-protected software is common, users often need more than one such application installed on a given computer. Manufacturers claim that multiple dongles can be successfully stacked or daisy-chained, but operational problems with stacked dongles are common. The number of dongles can also become physically problematic.
There is the obvious problem of losing the dongle, rendering the protected software useless until a replacement can be obtained. This is particularly likely if one needs to swap dongles for different applications.
Origin of the word "dongle"
The word "dongle," as a word for something unnamed (akin to "doodad" or "whatchamacallit") has been used since the 1970s. Its origin is unknown. The American Heritage Dictionary, 4th edition, says it is "probably arbitrary coinage." Claims that it was derived from the name "Don Gall" are an urban myth popularized by a 1992 advertisement for Rainbow Technologies, a dongle vendor.