Encryption Technology and Links

Top  Previous  Next

The code in this project includes substantial work by other authors.

 


The Blowfish algorithm (standard blowfish-448) is used to encrypt all traffic and to encrypt the master keyfile.  Blowfish uses a single (symmetric) encryption decription key which must be shared between the parties who are talking.

 

The blowfish encryption/decryption routines and some dll support functions were orginally taken from Gustavo Picon's mirc blowfish dll source code;  there is not much of Gustavo's original dll code left here, but it was Gustavo's dll project that started this project (http://www.aircscript.com/).  The dll itself actually just wraps blowfish routines written by Bruce Schneier (author of the famous Applied Cryptography book) and Jim Conger.  It is jim conger's actual unmodified c++ source code from the counterpane website that is used in mircryption.

 


The MircryptionPgp component uses phil zimmerman's pgp libraries and public-key encryption to securely exchange keys, and the Yarrow pseudo-random-number generator (Bruce Schneier and John Kelsey) to generate random channel keys.

 

Most of the hard work done by the MircryptionPgp component is done by the free PGP DLL libraries.  PGP was originally developed by Phil Zimmerman (http://www.philzimmermann.com/), and later distributed by Network Associates (http://www.pgp.com/).  Although Network Associates stopped development of PGP, in August of 2002 the newly formed PGP Corporation announced that development of PGP would continue under new management.  PGP is also maintained at mit (http://web.mit.edu/network/pgp.html) which is a good place to look for more information.  Additional downloads can be found at the international pgp home page (http://www.pgpi.org/). Source code and binaries for pgp is available on these sites.

 

The MircryptionPgp addon was written using Borland C++ Builder 5; Michael in der Wiesche's excellent and comprehensive delphi wrappers for the pgp dlls were essential (http://home.t-online.de/home/idw.doc/PGPcomp.htm). Source code for the delphi wrappers is available on that site.

 

To generate cryptographically secure random channel keys with the MircryptionPgp component, Counterpane Lab's Yarrow was used (http://www.counterpane.com/yarrow.html).  This is a well-respected prng developed by Bruce Schneier and John Kelsey. Source code and binaries for yarrow are available on that site.

 


For more information on the encryption algorithms used and pseudo random number generation see Bruce Schneier's well known Applied Cryptography book, and the excellent documentation for PGP.