Generazione di chiavi segrete con chiavi segrete

4

Hydra è un'organizzazione segreta. È composto da diversi direttori nella parte superiore e da molti agenti al di sotto di essi.

Un direttore invia agenti in missioni segrete. Durante queste missioni, la comunicazione è chiazzata e inaffidabile. Gli agenti si affidano a messenger non fidati per recapitare i messaggi ai direttori. I messaggi includono il # dell'agente (33, ecc.). Il contenuto di questi messaggi non è segreto, ma è fondamentale che non siano falsi.

Prima che l'Agente se ne vada, il Direttore gli rilascia la chiave segreta che l'Agente "firma" con i suoi messaggi per verificare l'autenticità. Gli agenti hanno chiavi diverse e non dovrebbero essere in grado di falsificare i messaggi come altri agenti. Queste chiavi sono buone per sei mesi. I direttori rifiutano qualsiasi messaggio firmato con una chiave rilasciata più di 6 mesi fa.

I registi mantengono comunicazioni minime tra loro. Non sanno quando gli altri rilasciano le chiavi agli agenti, anche se devono essere in grado di verificare in modo indipendente l'autenticità dei messaggi ricevuti da questi agenti.

I registi condividono una chiave top-secret che possono usare per creare le chiavi per gli agenti.

Devo implementare questo sistema.

Ci sono alcuni termini per ciò che sta accadendo?

Quali primitive crittografiche dovrebbero essere usate, e come e dove vengono applicate?

Credo che userò un HMAC, ma i molteplici livelli di chiavi in gioco mi rendono le cose meno chiare.

    
posta Paul Draper 03.04.2015 - 05:46
fonte

1 risposta

2

Quando un direttore invia un agente con id (A) in una missione, genera un timestamp (B) e un HMAC di A e B (C), usando la sua chiave segreta.

Fornisce B e C all'Agente. C diventa la chiave segreta dell'agente.

Quando un agente invia un messaggio, ne calcola un HMAC (D) usando C e lo include nel messaggio. Include anche A e B. C è ovviamente segreto e non trasmesso.

Quando un direttore riceve il messaggio, verifica che il timestamp B abbia meno di 6 mesi. Quindi ricalcola C prendendo un HMAC (usando il suo segreto) di A e B. Quindi usa C per calcolare un HMAC del messaggio e verificare che corrisponda a D.

    
risposta data 03.04.2015 - 17:35
fonte

Leggi altre domande sui tag