A suite of algorithms generating and verifying license keys for product activation
This pages is about a collection of algorithms for
generation and verification of short license codes
meant for product activation. These strings can be
easily printed on a CD label or spoken over a phone line.
The main objective is to creare strong codes difficult to forge without
the knowledge of a secret (private key) which is kept by the trusted entity emitting
licenses.
Although well known cryptographic public key schemes are proven to be strong and
secure, they are not particulary fit for this purpose because they generate
strings of characters which are usually too long to be practical.
This suite is based on less popular algorithms like
HFE,
Quartz
and other variants better taylored for this purpose.
You can download the source code of the LCA package
here.
Algorithms documentation (also included with sources) can be found
here.
Precompiled binaries (no documentation) for Win32 can be found
here.
Key points:
Two working examples, QRegZ and DRegZ, which generate codes based on HFE and
scrambled Gröbner bases respectively.
Full C/C++ code included. Tested under MSVC++ 6, MSVC++ 2005 (Windows) and gcc-Linux on x86 architectures.
Should work with many other compilers too.
Tiny decoder to verify licenses (C code)
Includes a (slightly modified) full implementation of the 128 bits Quartz signature scheme
Free code, but some algorithms are patented (see
license included)
On July 1st 2008 I posted the challenge of my SDDecoder to a crackme site
here.
Basically that is the decoder portion of DRegz
along with a public key embedded.
On January 13th 2010, Andrew Lamoureux solved the challenge, effectively breaking DRegZ (details
of the solution also available at the above link).