¿Cómo se intercambia la clave HMAC?

6

Solo me estoy preguntando acerca de esto. ¿Necesita una PKI para funcionar?

    
pregunta yzT 18.10.2013 - 21:28
fuente

1 respuesta

20

Una clave HMAC es una clave simétrica , es decir, un grupo de bytes. La "simetría" se relaciona con el siguiente hecho importante: la muy misma clave se utiliza tanto para generar un valor HMAC sobre un mensaje como para verificar el valor HMAC sobre el mensaje. En ese sentido, HMAC es no un algoritmo de firma digital (pero algunas personas todavía están hablando de "firmas" sobre HMAC, lo que es incorrecto y confuso).

La distribución de claves simétricas es un esfuerzo complejo por dos razones:

  • Un valor secreto que viaja es "menos secreto" porque viajar implica riesgos adicionales de exposición.
  • Un secreto puede permanecer en secreto solo si no hay mucha gente que lo sepa. Por lo tanto, si n las personas deben poder hacer criptografía simétrica entre sí, más o menos necesitas un secreto compartido por par de usuarios; así que habrá n (n-1) / 2 claves simétricas en todo el sistema.

Para facilitar las cosas, se inventó criptografía de clave pública . También se conoce como criptografía asimétrica ; cuando se utiliza con firmas digitales, la clave utilizada para generar firmas es distinta de la clave utilizada para verificar firmas; están matemáticamente vinculados entre sí, pero no es factible (o eso esperamos) volver a calcular la clave de generación de firmas a partir de la clave de verificación de firmas. Por lo tanto, podemos darnos el lujo de hacer público este último, de ahí el nombre.

La criptografía de clave pública hace que el problema de distribución de claves sea mucho más fácil:

  • Las claves públicas son públicas, por lo que la confidencialidad de la transferencia ya no es un problema.
  • Cada usuario solo tiene un par de claves públicas / privadas, por lo que hay muchas menos claves en todo el sistema.

Ahora la criptografía de clave pública hace que la distribución de claves sea más sencilla , no fácil . Aún tiene que encontrar algo que le permita al usuario asegurarse de que usan las claves públicas correctas. Aquí es donde PKI entra en juego: una PKI es un sistema para distribuir claves públicas.

Entonces, ¿cómo irían las cosas en la práctica? Considere SSL / TLS , que se usa a menudo en combinación con HTTP, lo que da como resultado HTTPS. Cuando un navegador web se conecta a un sitio web con tecnología HTTPS:

  • Se realiza un procedimiento inicial de "saludo", donde el servidor muestra su certificado al cliente (el navegador). Esto es PKI. El certificado contiene la clave pública del servidor y está firmado, y esa firma es la encarnación de la PKI. El cliente verifica un montón de firmas y finalmente está convencido de que la clave pública que ve realmente es la verdadera clave pública del servidor deseado.
  • Al usar la clave pública del servidor, se produce una criptografía más asimétrica (esta vez un intercambio de claves , basado en asimétrico encriptación , no firmas), que termina con un buen resultado: el cliente y el servidor ahora conocen un valor secreto compartido, y nadie espiando en la línea podrá reconstruir ese valor.
  • El valor secreto compartido se expande (con una Función de derivación de claves ) en varias claves simétricas, que el cliente y el servidor utilizará para cifrar y MAC cualquier información que luego se envíen entre sí. En SSL / TLS, el algoritmo MAC habitual es HMAC.

La imagen completa es que PKI se usa para distribuir claves públicas, y estas claves públicas se usan con criptografía asimétrica para dinámicamente crear un secreto compartido, y ese secreto compartido se usa con algoritmos simétricos como HMAC.

Por lo tanto, no distribuye las claves HMAC directamente con una PKI; hay una capa intermedia.

    
respondido por el Tom Leek 18.10.2013 - 22:03
fuente

Lea otras preguntas en las etiquetas