For my MSc thesis at Eindhoven University of Technology, I did some work on the verification of multi-party authentication protocols, using rank functions and the theorem prover PVS. This resulted in a published paper .
- Master’s thesis Proving correctness of a multi-party authentication protocol with rank functions (2007)
@MASTERSTHESIS{verhoeven2007multiparty, author = {R.H.A. Verhoeven}, title = {Proving correctness of a multi-party authentication protocol with rank functions}, school = {Eindhoven University of Technology}, year = {2007}, url = {http://repository.tue.nl/631698} }
- Article Verifying Multi-party Authentication Using Rank Functions and PVS, with Francien Dechesne (2008)
The PVS code is available for multiple versions of PVS. There are three theories.
Theory | Description |
---|---|
csp_rules |
Neil Evans’ framework for modelling Communicating Sequential Processes (CSP) and Schneider’s Rank Theorem, updated from PVS version 3.1 and slightly extended |
nsl * |
Analysis of the Needham-Schroeder-Lowe public key protocol using rank functions |
gnsl * |
Analysis of Cremers and Mauw’s Generalised Needham-Schroeder-Lowe public key protocol, using rank functions |
* Requires the csp_rules
theory as a library, for which the appropriate path must be set in the file dynetwork.pvs
.
The code is accompanied by the proof summaries generated by PVS, showing the status of each proof. In the proof summaries of theories nsl
and gnsl
, some proofs of theorems and lemmas are labelled as "incomplete". This is only because those theories depend on the library csp_rules
(invoked in dynetwork.pvs
). If all the files in csp_rules
are imported directly and present within the same directory, instead of being imported as a library, then all theorems and lemmas are proved and labelled "complete".
For PVS version 7.1, also the complete runs of the most important proofs in the theory gnsl
are included.
- Initial set up
- Install PVS
- Obtain a local copy of the appropriate versions of the
gnsl
andcsp_rules
theories (making sure to adjust the path to the latter in the former's filedynetwork.pvs
)
- Opening the theory
- Start PVS (this opens Emacs)
- Change the current context to the folder containing the
gnsl
theory with the commandM‑x change‑workspace
(for versions prior to PVS 7.1 useM‑x change‑context
instead) - Open the file
gnsl.pvs
- Working with the theory
- Perform any command on opened file (get PVS help with the command
C‑x h
)- for proving the theory and its importchain, use the command
M‑x pri
- for stepping through a proof, move the cursor onto a lemma and use the command
M‑x step-proof
(stepping through it withTAB 1
orESC n TAB 1
for n steps)
- for proving the theory and its importchain, use the command
- Perform any command on opened file (get PVS help with the command