Perché la chiave simmetrica è stata aggiunta al messaggio?

9

Ieri nella mia classe abbiamo imparato come inviare un messaggio da Alice a Bob con gli obiettivi raggiunti di riservatezza, integrità e autenticità. Per ottenere prestazioni migliori, utilizziamo un metodo ibrido con una chiave simmetrica e asimmetrica.

Le chiavi private di Alice e Bob sono firmate da un'autorità di certificazione (CA) - > autenticità

L'obiettivo di integrità è assicurato grazie all'hash:

h = hash(M)

La riservatezza viene utilizzata grazie all'utilizzo di una chiave simmetrica noto ad Alice e Bob che è stato scambiato grazie alle loro chiavi asimmetriche.

Il risultato è il seguente messaggio - che Alice invia a Bob:

# public keys    
K_A_E = public_key_Alice
K_B_E = public_key_Bob

K_B_E and K_A_E are signed by a CA.

# private keys
K_A_D = private_key_Alice


M = "our secret message"
h = hash(M)

K_AB = the_symmetric_key

this results in the message:
{K_AB}**K_B_E {{h}**K_A_D, M}**K_AB

Non capisco perché sia necessario avviare il messaggio con {K_AB}**K_B_E .

* Perché è necessario anteporre la chiave simmetrica K_AB all'inizio del messaggio?

* Questa chiave simmetrica è aggiunta a ogni messaggio inviato tra Alice e Bob?

* Il nostro docente ha affermato che questo metodo di crittografia viene utilizzato in OpenPGP. Quindi OpenPGP crea una nuova chiave simmetrica per ogni messaggio?

    
posta Jon 14.10.2014 - 15:08
fonte

4 risposte

8

Per rispondere alle tue domande:

{K_AB}**K_B_E è anteposto al messaggio in modo che il destinatario abbia la chiave simmetrica per decrittografare il messaggio. Poiché la chiave K_B_E viene utilizzata, solo Bob può decodificare la chiave simmetrica e solo lui può quindi leggere il messaggio.

Il prossimo è l'hash {h} che è crittografato / firmato dalla chiave K_A_D . Presumo che K_A_D sia la chiave privata di Alice, quindi questa è la firma del messaggio.

La chiave simmetrica viene creata recentemente per ciascun messaggio dal mittente. E il mittente deve inviare la chiave per scopi di decrittazione al destinatario. Pertanto, la chiave è anteposta (asimmetrica crittografata) a ciascun messaggio.

Sì, GPG e OpenPGP usano questo schema.

Come estensione:

Posso anteporre più chiavi (asimmetricamente) crittografate al messaggio in modo da poter inviare il messaggio a più destinatari.

Se utilizzo una chiave pre-condivisa, devo inviare il messaggio più volte o condividere la chiave simmetrica con più persone. Ciò renderebbe questo schema insicuro. Questo è il motivo per cui creo una nuova chiave simmetrica per ciascun messaggio.

Si noti inoltre che GPG / OpenPGP non utilizzano una CA ma creano un Web of Trust per autenticare tutti gli altri partecipanti.

    
risposta data 14.10.2014 - 15:22
fonte
6

La tua notazione sembra riguardare la crittografia ibrida . Il messaggio è crittografato con una chiave simmetrica K AB ; quella chiave era probabilmente generata casualmente dal mittente. Per il destinatario di conoscerlo, è necessario inviarlo insieme al messaggio, ma non come testo chiaro, naturalmente: K AB è crittografato con quello del destinatario (Bob's ) chiave pubblica.

Quindi, Alice fa quanto segue:

  1. Genera K AB con un strong PRNG.
  2. Cifra il messaggio simmetricamente con K AB come chiave; questo è ciò che {{h}**K_A_D, M}**K_AB significa (prendo " ** " per indicare "encrypt with").
  3. Encrypt K AB con la chiave pubblica di Bob: {K_AB}**K_B_E
  4. Invia entrambi i BLOB crittografati a Bob.

Quindi Bob lo fa:

  1. Decrypt {K_AB}**K_B_E con la sua chiave privata, recuperando così K AB .
  2. Usando K AB , decripta {{h}**K_A_D, M}**K_AB , restituendo il messaggio M .

Questo processo con due crittografie è reso necessario dal fatto che algoritmi di crittografia asimmetrica (come RSA) non possono gestire i dati di massa (la gente di solito dice che il problema è una delle prestazioni - la crittografia simmetrica come AES è molto più veloce della crittografia asimmetrica come RSA - ma questo è un semi-mito, il problema reale è che RSA non può crittografare messaggi più lunghi di un centinaio di byte)

La tua descrizione mostra anche qualcosa con un valore hash e una sorta di crittografia con una chiave K_A_D . Suppongo che questo sia un tentativo di parlare di un MAC o di un firma digitale . Molte persone cercano di spiegare le firme come una sorta di "crittografia al contrario". Questa è una spiegazione diffusa ma terribile che diffonde solo confusione.

    
risposta data 14.10.2014 - 15:28
fonte
3

Solo l'ultima riga è il messaggio inviato.

La crittografia simmetrica è generalmente molto più veloce e potenzialmente più a prova di futuro rispetto alla crittografia asimmetrica. Richiede lunghezze della chiave molto più brevi per la sicurezza. Poiché è l'intento di condividere l'intero messaggio con Bob, Alice non deve crittografare l'intero messaggio (lungo) con la chiave pubblica di Bob.

Invece, crittografa l'intero messaggio con una nuova chiave simmetrica che ha generato. Questo rende veloce la crittografia e la decrittazione del messaggio, ma ha bisogno di un modo per condividere la chiave con Bob, che non ce l'ha.

Per condividere la chiave, prende la chiave pubblica di Bob e crittografa la chiave simmetrica del messaggio (breve) con essa. Aggiunge questo al messaggio come dati aggiuntivi.

Quando Bob riceve il messaggio, è semplice e veloce usare la sua chiave privata per sbloccare la chiave simmetrica (che solo lui può fare dato che solo lui ha la chiave privata) e può quindi usare quella chiave simmetrica per decifrare l'intero messaggio.

L'hash del messaggio (che viene quindi firmato dalla chiave privata di Alice che può essere testata con la chiave pubblica di Alice) viene aggiunto in modo che Bob possa sapere che Alice è effettivamente il mittente del messaggio e che non è stato alterato durante il transito , anche se una variante leggermente più veloce sarebbe quella di hash la stessa chiave simmetrica e firmare (o semplicemente crittografare la chiave simmetrica con la chiave privata di Alice per minimizzare la dimensione del messaggio).

Finché la sicurezza della chiave simmetrica viene preservata fino a quando Bob riceve il messaggio, continua a provare a Bob che il messaggio di Alice non è stato alterato poiché nessun altro avrebbe potuto crittografare un nuovo messaggio poiché nessun altro conosceva la chiave. È più veloce poiché ha una hash molto più breve (o addirittura non richiede hash se si sta semplicemente crittografando con la chiave privata), tuttavia non fornisce altrettanto autenticazione.

Ciò dimostra a Bob che il messaggio proviene da Alice e non è alterato, ma dopo che Bob ha la chiave, non può essere utilizzato per dimostrare a una terza parte che Bob non ha alterato il messaggio. Se il messaggio deve poter essere provato da Alice ad altre persone oltre a Bob, allora Alice deve firmare l'intero messaggio (in chiaro).

    
risposta data 14.10.2014 - 15:54
fonte
1

Ci sono voluti un po 'per comprendere la bizzarra sintassi utilizzata dal mio docente, ma in pratica la chiave simmetrica è una chiave di "sessione" generata per messaggio e non riutilizzata. Da qui la necessità di includere una copia crittografata di esso nel messaggio finale.

Suppongo che H ** K_A_D sia Alice che crittografa il digest del messaggio con la sua chiave privata.

    
risposta data 14.10.2014 - 15:20
fonte

Leggi altre domande sui tag