2.9 KiB
Note tecniche
Note alla slide 8
AEAD (Authenticated encryption with associated data)
Schema di cifratura simmetrica che garantisce confidenzialità e integrità.
In RFC 4880, il controllo di integrità veniva fatto appendendo al testo in chiaro il suo hash SHA-1. Gli schemi AEAD (OCB, EAX, GCM) risolvono il problema in modo più robusto e con migliori prestazioni.
Key derivation
In precedenza, lo schema di cifratura di OpenPGP funzionava (semplificando) così:
- Cifratura
- Si genera una chiave simmetrica casuale chiamata Session Key
- Si cifra il messaggio con la session key ottenendo il Ciphertext
- Si cifra la session key con la chiave asimmetrica pubblica del destinatario (ESK, Encrypted Session Key)
- Si inviano al destinatario ESK e Ciphertext
- Decifratura
- Il destinatario decifra con la sua chiave asimmetrica privata la session Key
- Quindi usa la session key per decifrare il Ciphertext
In RFC 9580 si aggiunge un passaggio:
- Cifratura
- Si genera una chiave simmetrica casuale chiamata Session Key
- Si genera un salt casuale
- Dalla session key e dal salt si "deriva" con l'algoritmo HKDF un'altra chiave simmetrica chiamata Message Key
- Si cifra il messaggio con la message key in modalità AEAD
- Si cifra la session key con la chiave asimmetrica pubblica del destinatario
- Si inviano al destinatario ESK, salt e Ciphertext
- Decifratura
- Il destinatario decifra con la sua chiave asimmetrica privata la session Key
- Usando la session key e il salt deriva a sua volta con HKDF la message key
- Quindi usa la message key per decifrare il Ciphertext
Questo passaggio in più permette di prevenire certi attacchi (ad es. OpenPGP SEIP downgrade attack).
Memory-hard S2K - Argon2
Gli algoritmi String-to-Key servono a convertire una stringa (password o passphrase) in una chiave crittografica simmetrica. In OpenPGP vengono usati tra l'altro per proteggere le chiavi private.
In precedenza questa operazione veniva fatta semplicemente calcolando ripetutamente l'hash della passphrase e di un salt. Il problema di questo meccanismo è che con la potenza di calcolo attuale il brute force è relativamente poco costoso.
Un algoritmo memory hard oltre a richiedere molte iterazioni richiede anche tanta memoria, ciò lo rende difficile da parallelizzare e rende quindi molto più costoso il brute force.
Firma digitale non deterministica
Aggiungendo un salt casuale ad ogni firma si mitigano certi attacchi ai quali sono vulnerabili le firme digitali tradizionali, deterministiche (es. SHAMBLES, PSSLR17).