evatrans
is a toolkit for parsing, type-checking and compiling
cryptographic protocols specified in an high level abstract language.
It has been written for the project EVA.
The core of evatrans
is the library evatrans.cma
,
an ocaml library for parsing, type-checking,
and compiling cryptographic protocols in the LAEVA language
(the input language of EVA)
to internal data structures describing an operational model
that tools for automatic cryptographic protocol verification
like Hermes,
or Securify
or h1 can work on.
The high-level LAEVA notation focuses on the form of the messages exchanged during the protocol
whereas the operational model describes the operations performed by the participants.
Hence, roughly, the EVA compiler transforms a sequence of messages
into a set of processes (or programs), one for each role of the protocol (user, server, signing authority, etc.)
The implementability of protocols as well as the correctness of typing of messages is also checked during compilation.
Several wrappers have been implemented in order to print the result of the compilation in various syntaxes.
The are written in OCaml on the top of evatrans
,
and can be compiled separately.
eva2eva
outputs the operational model in an LAEVA-like readable syntax.
This tool can then be used to show how this compiles internally.
eva2h1
tool instead converts the input protocol to a set of Horn clauses,
in Prolog notation, or in TPTP format,
a standard format used primarily for testing automated theorem provers,
now become a de facto standard for writing first-order formulas.
This can then be fed to an automated theorem prover like
SPASS,
Vampire,
Waldmeister,
or h1, for example:
if the automated theorem prover stops without finding a contradiction, then the protocol is secure.
eva2cpl
translates LAEVA specifications to a Lisplike syntax called CPL
,
which is the input format of the tools
like Hermes and
Securify
from the EVA project.
eva2tex
translates LAEVA specifications to LaTeX.
The documentation and reference manual for evatrans
are available as the
EVA technical report number 9.
This TR contains:
evatrans
,
evatrans
library.
eva2h1
source code:
eva2cpl
source code:
The compilation instructions for the above package can be found in the following README:
The sources of the various tools of evatrans
have been documented using
ocamldoc.
They are distributed along with the sources of the project,
and are also available online: