| Id | :: = | uppercase combination of letters | #Usually S stands for a server, A for initiator and B for responder |
| Var | ::= | lowercase string not beginning with 'k' or 'n' | |
| Key | ::= | lowercase string beginning with 'k' | |
| Nonce | ::= | lowercase string beginning with 'n' | |
| Msg | ::= |
(Msg, Msg) |
|
| Id |
|||
| Var |
|||
| Act | ::= | in(Msg) |
|
| PROCESS | ::= | Act | |
| Act.PROCESS | #Prefix | ||
| PROCESS + PROCESS | #Non-deterministic choice | ||
| PROCESS |
#Parallel composition | ||
| PRINCIPAL | ::= | Id: (Var,...,Var) [PROCESS]; |
A: (x) [in(?y).out({y}x)]; is an example of a principal A that reads a datum in y and encrypt y with x.
FORMULA ::= INDEXED-VARIABLE = INDEXED-MESSAGE ||
INDEXED-VARIABLE <> INDEXED-MESSAGE ||
:> INDEXED-MESSAGE || //Message can be derived from current knowledge
!:> INDEXED-MESSAGE || //Non derivability
forall NAME.INDEX: FORMULA || //Universal quantifier
exists NAME.INDEX: FORMULA || //Existential quantifier
[ not || ! ] FORMULA ||
FORMULA [and || &] FORMULA ||
FORMULA [or || |] FORMULA ||
FORMULA [implies || =>] FORMULA ||
(FORMULA) ||
true || false
INDEX ::= a lowercase letter.
INDEXED-VARIABLE ::= VARIABLE_INDEX || VARIABLE_NAME_NUMBER
INDEXED-MESSAGE ::= MESSAGE_INDEX || MESSAGE_NAME_NUMBER //Couples and Crypt are not indexed.