Scambi di chiavi di sessione manuali

Nota

La procedura descritta in questa sezione presuppone che gli utenti (o i client CryptoAPI) dispongano già del proprio set di coppie di chiavi pubbliche/private e che siano state ottenute anche le chiavi pubbliche.

 

Nella figura seguente viene illustrato come usare questa procedura per inviare un messaggio crittografato.

invio di un messaggio crittografato

Questo approccio è vulnerabile a almeno una forma comune di attacco. Un eavesdropper può acquisire copie di uno o più messaggi crittografati e le chiavi crittografate. Quindi, in un secondo momento, l'eavesdropper può inviare uno di questi messaggi al ricevitore e il ricevitore non avrà modo di sapere che il messaggio non proviene direttamente dal mittente originale. Questo rischio può essere ridotto eseguendo il timestamp di tutti i messaggi o usando i numeri di serie.

Il modo più semplice per inviare messaggi crittografati a un altro utente consiste nell'inviare il messaggio crittografato con una chiave di sessione casuale insieme alla chiave di sessione crittografata con la chiave pubblica di scambio della chiave del ricevitore.

Di seguito sono riportati i passaggi per l'invio di una chiave sessione crittografata.

Per inviare una chiave di sessione crittografata

  1. Creare una chiave di sessione casuale usando la funzione CryptGenKey .
  2. Crittografare il messaggio usando la chiave di sessione. Questa procedura viene illustrata in Crittografia dati e Decrittografia.
  3. Esportare la chiave di sessione in un BLOB di chiavi con la funzione CryptExportKey , specificando che la chiave viene crittografata con la chiave pubblica di scambio della chiave dell'utente di destinazione.
  4. Inviare sia il messaggio crittografato che il BLOB della chiave crittografata all'utente di destinazione.
  5. L'utente di destinazione importa il BLOB della chiave nel proprio CSP usando la funzione CryptImportKey . Questa operazione decrittograferà automaticamente la chiave di sessione, purché la chiave pubblica di scambio delle chiavi dell'utente di destinazione sia stata specificata nel passaggio 3.
  6. L'utente di destinazione può quindi decrittografare il messaggio usando la chiave di sessione, seguendo la procedura descritta in Crittografia dati e Decrittografia.