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.