Logo del sito

Tamarin

Sintassi

Sorts

Sono i tipi di termini che si possono avere. Esiste un tipo principale che è il tipo msg, il quale può essere di tipo

  • pub : usato per indicare termini pubblici (ad esempio identificatori noti a tutti)
  • fresh : usato per indicare termini generati sempre nuovi (ad esempio i nonces)

Signatures

Fondamentalmente rappresentano la definizione astratta di una certa funzione.

Le principali signature sono:

Simbolo Arità Significato
enc/2 2 Cifratura: enc(m, k) significa che il messaggio m è cifrato con la chiave k.
dec/2 2 Decifratura: dec(c, k) restituisce il messaggio originale m se c = enc(m, k).
h/1 1 Funzione hash: h(m) rappresenta l’hash di m.
<_, _>   2 Coppia: <m1, m2> è un messaggio formato da due parti.
fst/1 1 Prima componente: fst(<m1, m2>) = m1.
snd/1 1 Seconda componente: snd(<m1, m2>) = m2.
_ ∧ _ 2 Operatore logico AND.
_^{-1} 1 Inversione (ad esempio chiave privata corrispondente a una chiave pubblica).
_ * _ 2 Operazione bilineare (utile per Diffie-Hellman e altri schemi di crittografia).
1 0 Identità moltiplicativa nell’operazione bilineare.

A questo punto ci si potrebbe chiedere: okay, ma queste sono le signature delle funzioni, ma come faccio a imporre che Enc(_, k) utilizzi una chiave k di tipo fresh?

Terms

Facts

State

insieme di fatti

Transition

  • state:

Linear Facts

Persistent Facts

Definiti con !