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) {Msg}Msg Key | |
Id Id+ Id- Nonce | |||
Var ?Var Var+ Var- | |||
Act | ::= | in(Msg) out(Msg) | |
PROCESS | ::= | Act | |
Act.PROCESS | #Prefix | ||
PROCESS + PROCESS | #Non-deterministic choice | ||
PROCESS 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.