License Codes Algorithms
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).
Release version v0.03, date: 16 January 2010Giuliano Bertoletti