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.