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 !
