Generando claves secretas con claves secretas

4

Hydra es una organización secreta. Está compuesto por varios directores en la parte superior y muchos agentes debajo de ellos.

Un Director envía Agentes en misiones secretas. Durante estas misiones, la comunicación es irregular y poco confiable. Los agentes confían en mensajeros que no son de confianza para enviar mensajes a los Directores. Los mensajes incluyen el # del agente (33, etc.). El contenido de estos mensajes no es secreto, pero es crucial que no sean falsos.

Antes de que el Agente se vaya, el Director le entrega una clave secreta con la que el Agente "firma" sus mensajes para verificar la autenticidad. Los Agentes tienen claves diferentes y no deberían poder falsificar mensajes como otros Agentes. Estas llaves son buenas por seis meses. Los directores rechazan cualquier mensaje firmado con una clave emitida hace más de 6 meses.

Los directores mantienen una comunicación mínima entre ellos. No saben cuándo los demás emiten claves para los Agentes, aunque cada uno debe poder verificar independientemente la autenticidad de los mensajes recibidos de estos Agentes.

Los directores comparten una clave de alto secreto que pueden usar para crear claves para los Agentes.

Necesito implementar este sistema.

¿Hay ciertos términos para lo que está sucediendo?

¿Qué primitivas criptográficas deben usarse, y cómo y dónde se aplican?

Creo que usaré un HMAC, pero los múltiples niveles de teclas en el juego me hacen las cosas menos claras.

    
pregunta Paul Draper 03.04.2015 - 05:46
fuente

1 respuesta

2

Cuando un Director envía un Agente con id (A) en una misión, genera una marca de tiempo (B) y un HMAC de A y B (C), utilizando su clave secreta.

Él le da B, y C al Agente. C se convierte en la clave secreta del Agente.

Cuando un agente envía un mensaje, calcula un HMAC (D) utilizando C y lo incluye en el mensaje. También incluye A y B. C es, por supuesto, secreto y no se transmite.

Cuando un Director recibe el mensaje, verifica que la marca de tiempo B tiene menos de 6 meses. Luego recalcula C tomando un HMAC (usando su propio secreto) de A y B. A continuación, usa C para calcular un HMAC del mensaje y verifica que coincida con D.

    
respondido por el Paul Draper 03.04.2015 - 17:35
fuente

Lea otras preguntas en las etiquetas