Cryptography and Information Security Group:
Cryptographic Protocol Language

CPL is a simple, near-English language for expressing cryptographic protocols. CPL lowers the barrier between abstract mathematical descriptions and working code. Potential uses include protocol design, code prototyping and functioning as a teaching aid. An accompanying compiler translates protocols expressed as CPL "code" into working Java clients. CPL is also packaged with a tool for converting protocol descriptions into LaTeX diagrams.

Development of CPL has been conducted as part of ongoing research with the Cryptography and Information Security Group of MIT's Lab for Computer Science. Professors Martin Rinard and Ron Rivest have led the project. Current project members include Ioannis Tsoukalidis and Steve Weis. Past work was conducted by Ovidiu Gheorghioiu.

Documentation:

Pre-draft versions of a CPL Quick Reference and a CPL Language Specification are available as PostScript files. An online version of the CPL Quick Reference is also available. Please note that these documents are incomplete works in progress and should be considered early pre-drafts.

Example CPL Code:
RSA Encryption: CPL Source, Generated Java Code: Alice, Bob, Boiler Plate Code
Diffe-Hellman Key Exchange: CPL Source, Generated Java Code: Party A, Party B, Boiler Plate Code
OAEP-RSA Encryption: CPL Source, Generated Java Code: Alice, Boiler Plate Code
Shamir Secret Share Generation: CPL Source, Generated Java Code: Dealer, Player, Boiler Plate Code

CPL is currently available in a CVS repository to CIS group members. For all others, CPL is available as a periodic backup tarfile. To checkout the cpl CVS module, execute the following command:

cvs -d theory.lcs.mit.edu:/toc/b/cis/code/.cvsroot checkout cpl

Back to CIS Home Page