Come viene scambiata la chiave HMAC?

6

Mi sto solo chiedendo questo. Ha bisogno di un PKI per funzionare?

    
posta yzT 18.10.2013 - 21:28
fonte

1 risposta

20

Una chiave HMAC è una chiave simmetrica , cioè un mucchio di byte. La "simmetria" si riferisce al seguente fatto importante: la stessa stessa chiave viene utilizzata sia per produrre un valore HMAC su alcuni messaggi, sia per verificare il valore HMAC sul messaggio. In questo senso, HMAC è non un algoritmo di firma digitale (ma alcune persone stanno comunque parlando di "firme" su HMAC, che è sia sbagliato che confuso).

La distribuzione di chiavi simmetriche è un'impresa complessa per due motivi:

  • Un valore segreto che viaggia è "meno segreto" perché viaggiare implica rischi aggiuntivi di esposizione.
  • Un segreto può rimanere segreto solo se troppe persone non ne sono consapevoli. Pertanto, se n le persone devono essere in grado di eseguire la crittografia simmetrica tra loro, è più o meno necessario un segreto condiviso per coppia di utenti; quindi ci saranno n (n-1) / 2 chiavi simmetriche nell'intero sistema.

Per semplificare le cose, è stata inventata crittografia a chiave pubblica . È anche noto come crittografia asimmetrica ; se utilizzato con le firme digitali, la chiave utilizzata per generare le firme è diversa dalla chiave utilizzata per verificare le firme; sono collegati matematicamente tra loro, ma non è possibile (o almeno così speriamo) ricalcolare la chiave di generazione della firma dalla chiave di verifica della firma. Quindi possiamo permetterci di rendere pubblico quest'ultimo, da cui il nome.

La crittografia a chiave pubblica rende il problema di distribuzione delle chiavi sostanzialmente più semplice:

  • Le chiavi pubbliche sono pubbliche, quindi la riservatezza del trasferimento non è più un problema.
  • Ogni utente ha solo una coppia di chiavi pubblica / privata, quindi ci sono molte meno chiavi in tutto il sistema.

Ora la crittografia a chiave pubblica rende la distribuzione delle chiavi più semplice , non facile . Devi ancora inventare qualcosa che permetta all'utente di assicurarsi che usino le giuste chiavi pubbliche. È qui che entra in gioco PKI : un PKI è un sistema per distribuire le chiavi pubbliche.

Quindi come andrebbero le cose in pratica? Considera SSL / TLS , spesso usato in combinazione con HTTP, fornendo HTTPS. Quando un browser Web si collega a un sito Web con tecnologia HTTPS:

  • Viene eseguita una procedura iniziale di "handshake", in cui il server mostra il suo certificato al client (il browser). Questo è PKI. Il certificato contiene la chiave pubblica del server, ed è firmato, e quella firma è l'incarnazione della PKI. Il client verifica una serie di firme ed è infine convinto che la chiave pubblica che vede sia davvero la vera chiave pubblica dal server previsto.
  • Usando la chiave pubblica del server, si verifica una crittografia più asimmetrica (questa volta una scambio di chiavi , possibile basata su asimmetrici > encryption , non firme), che si conclude con un buon risultato: client e server ora conoscono un valore segreto condiviso, e nessuno spiare la linea sarebbe in grado di ricostruire quel valore.
  • Il valore segreto condiviso viene quindi espanso (con una funzione Key Derivation ) in diverse chiavi simmetriche, che il client e il server utilizzerà per crittografare e MAC tutti i dati che poi vorranno inviare a vicenda. In SSL / TLS, il solito algoritmo MAC è HMAC.

L'immagine completa è che PKI viene utilizzata per distribuire le chiavi pubbliche e queste chiavi pubbliche vengono quindi utilizzate con crittografia asimmetrica per dinamicamente creano un segreto condiviso e tale segreto condiviso viene quindi utilizzato con algoritmi simmetrici come HMAC.

Quindi non distribuisci le chiavi HMAC direttamente con una PKI; c'è un livello intermedio.

    
risposta data 18.10.2013 - 22:03
fonte

Leggi altre domande sui tag