The cpsa package
The Cryptographic Protocol Shapes Analyzer (CPSA) attempts to enumerate all essentially different executions possible for a cryptographic protocol. We call them the shapes of the protocol. Naturally occurring protocols have only finitely many, indeed very few shapes. Authentication and secrecy properties are easy to determine from them, as are attacks and anomalies.
For each input problem, the CPSA program is given some initial behavior, and it discovers what shapes are compatible with it. Normally, the initial behavior is from the point of view of one participant. The analysis reveals what the other participants must have done, given the participant's view.
We are working towards a version of CPSA with the property that whenever it successfully terminates, every possible execution is described by its output. A proof of this correctness property is also in development.
The package contains a set of programs used to perform and display the analysis. Program documentation is in the doc directory in the source distribution, and installed in the package's data directory. You can locate the package's data directory by searching for the file cpsauser.html. New users should study the documentation and the sample inputs in the data directory. The source distribution includes a test suite with an expanded set of input files and program design documentation.
The theory and algorithm used by CPSA was developed with the help of Joshua D. Guttman, John D. Ramsdell, Jon C. Herzog, Shaddin F. Doghmi, F. Javier Thayer, Paul D. Rowe, and Moses D. Liskov. John D. Ramsdell implemented the algorithm in Haskell.
|Versions||2.0.0, 2.0.2, 2.0.3, 2.0.4, 2.0.5, 2.1.0, 2.1.1, 2.1.2, 2.2.0, 2.2.1, 2.2.2, 2.2.3, 2.2.4, 2.2.5, 2.2.6, 2.2.7, 2.2.8, 2.2.9, 2.2.10, 2.2.11, 2.2.12, 2.2.13, 2.3.0, 2.3.1, 2.3.2, 2.3.3|
|Dependencies||base (>=3 && <5), containers|
|Executables||cpsapp, cpsaparameters, cpsaannotations, cpsashapes, cpsagraph, cpsa|
|Upload date||Fri Nov 5 17:24:44 UTC 2010|
|Downloads||1288 total (166 in last 30 days)|
|par||Enable use of the parallel construct par||Enabled|
Use -f <flag> to enable a flag, or -f -<flag> to disable that flag. More info
For package maintainers and hackage trustees