1. Introduzione alla Crittografia
Con il termine crittografia o criptografia si indica la disciplina che studia le scritture nascoste e i metodi per cifrare un messaggio affinché sia comprensibile solamente da chi è autorizzato a farl
1. Definizione e Terminologia
Con il termine crittografia (o criptografia) si indica la disciplina che studia le scritture nascoste e i metodi per cifrare un messaggio affinché sia comprensibile solamente da chi è autorizzato a farlo.
La crittografia è impiegata, in varie forme e configurazioni, per raggiungere due dei tre obiettivi alla base della cybersecurity:
- Riservatezza
- Integrità
Termini Chiave:
- Plaintext: Il messaggio originale, in chiaro, che deve essere cifrato.
- Ciphertext: La versione cifrata del messaggio in chiaro.
- Cipher (Cifrario): L'algoritmo crittografico di cifratura che trasforma il plaintext in ciphertext (encryption) e, se previsto, effettua la trasformazione inversa, da ciphertext a plaintext (decryption).
- Chiave di cifratura: Secondo input fornito all'algoritmo crittografico utilizzato per determinare l'esatta trasformazione del plaintext in ciphertext e viceversa.
- Crittografia: La disciplina che studia e progetta cifrari sicuri, efficaci ed efficienti.
- Crittoanalisi: La disciplina che studia come scoprire il plaintext o la chiave partendo dal ciphertext e conoscendo il cifrario utilizzato.
- Crittologia: crittografia + crittoanalisi.
Modello di Comunicazione Crittografica:
A[Alice] -- m --> Ce
Ce[Ce: m -> c] -- c --> Canale
Canale[Canale di comunicazione] -- c --> Cd
Cd[Cd: c -> m] -- m --> B[Bob]
Canale -- c --> H[H]- Alice: mittente
- Bob: ricevente
- m: plaintext
- C: cipher
- Ce: Encryption
- Cd: Decryption
- c: ciphertext
- H: crittoanalista (avversario)
2. Principio di Kerckhoffs: "Avoid Security Through Obscurity"
Uno dei principi fondamentali della cybersecurity nasce proprio in ambito crittografia ad opera del criptologo danese Auguste Kerckhoffs:
"Un metodo crittografico non deve basarsi sulla segretezza dell'algoritmo. Il metodo deve essere sicuro anche nel caso in cui l'algoritmo fosse noto. L'unica informazione da mantenersi segreta è la chiave di cifratura, da scegliersi in maniera completamente randomica (the secrecy of randomness)."
Corollario: Non inventare il nostro metodo crittografico. Scegliere quello/i più adatti alle nostre esigenze tra i cifrari già esistenti e classificati come robusti.
3. Classificazione dei Metodi Crittografici
A[Metodi Crittografici] --> B(Reversibili)
A --> C(Non Reversibili)
B --> D(Chiave Simmetrica)
B --> E(Chiave Asimmetrica)
B --> F(Senza Chiave)
D -- "1 chiave" --> G(Algoritmo di Cifratura/Decifratura)
E -- "2 chiavi" --> H(Chiave Pubblica/Privata)
F -- "0 chiavi" --> I(Esempio: ROT13 - NON SICURO)
C --> J(Funzioni di Hash)
J -- "0 chiavi" --> K(Non possono essere decifrate)
3.1. Metodi Crittografici Reversibili con Chiave Simmetrica
- In questi metodi l'algoritmo di cifratura ha due parametri: il messaggio da cifrare/decifrare e una chiave.
- La stessa chiave è utilizzata sia per la codifica che per la decodifica.
- Sono utilizzabili per ottenere la RISERVATEZZA delle informazioni a patto che la chiave rimanga segreta.
- È consigliato che l'algoritmo sia di pubblico dominio (avoid security through obscurity).
M[Messaggio in chiaro] --> A(Metodo crittografico)
K[Chiave] --> A
A -- "codifica" --> C[Messaggio cifrato]
C --> B(Metodo crittografico)
K --> B
B -- "decodifica" --> M_D[Messaggio in chiaro]
3.2. Metodi Crittografici Reversibili con Chiave Asimmetrica
- In questi metodi l'algoritmo di cifratura utilizza due chiavi (A e B) generate in modo tale che:
M[Messaggio in chiaro] --> A(Metodo crittografico)
KA[Chiave A (B)] --> A
A -- "codifica" --> C[Messaggio cifrato]
C --> B(Metodo crittografico)
KB[Chiave B (A)] --> B
B -- "decodifica" --> M_D[Messaggio in chiaro]
3.3. Funzioni Hash (Metodi Non Reversibili)
- Le funzioni di Hash sono metodi crittografici non reversibili.
- Pertanto, non possono essere utilizzate per cifrare dei messaggi (mancherebbe la decifratura).
- Hanno però alcune caratteristiche interessanti che le rendono utili in molti contesti (es. integrità dei dati, firme digitali, memorizzazione di password).