AES Strategia di generazione di chiavi / Algoritmo per il sistema offline

4

Diciamo che ho diverse applicazioni che non sono collegate a nessuna rete, e ho un requisito che dice che ogni applicazione potrebbe produrre un token da un input che un'altra applicazione potrebbe validare il token a patto che gli venga dato lo stesso input.

Ad esempio, una persona che accede all'applicazione 1, inserisce una stringa e ottiene un token, quindi passa all'applicazione 2, inserisce la stringa e il token, quindi l'applicazione 2 dice alla persona se il token è valido o no. Anche se il token è esposto agli utenti, dovrebbe essere abbastanza sicuro che nessuno potrebbe simularlo.

Nella fase di prototipo, crittografo semplicemente l'input usando AES con una chiave AES 128 codificata e quindi offusca un po 'il testo cifrato per generare il token. Ma ho ancora alcune preoccupazioni quando ho l'impressione che l'uso della stessa chiave statica per simmetria sia vulnerabile e facile da compromettere.

Poiché non c'è alcun modo per queste applicazioni di comunicare tra loro e quale applicazione convaliderà il token generato da quale applicazione, sto pensando di utilizzare un qualche tipo di generazione di chiavi AES per rinnovare periodicamente la chiave AES per tutte le applicazioni. Speravo che la chiave fosse diversa di volta in volta, ma tutte le applicazioni useranno la stessa chiave in qualsiasi momento.

Esiste un algoritmo o una strategia standard aperta per generare AES Key che soddisfa le mie esigenze sopra? Forse non ho visto abbastanza, ma non riesco a trovarlo.

Grazie in anticipo!

    
posta riza 08.09.2012 - 22:34
fonte

1 risposta

2

Il metodo più sicuro è usare le firme digitali. Generare una coppia di chiavi pubblica / privata. L'applicazione 1 ottiene una copia della chiave di firma (chiave privata). L'applicazione 2 ottiene una copia della chiave di verifica (chiave pubblica). Un token è ora una stringa firmata, firmata dall'applicazione 1.

Quando l'applicazione 1 vuole generare un token, può semplicemente firmare la stringa; il token è costituito dalla stringa e dalla firma. L'applicazione 2 può verificare il token verificando la firma.

Si noti che questo approccio non impedisce la riproduzione. Se una persona riceve un token dall'Applicazione 1, può fornirla all'applicazione 2 tutte le volte che vuole, e sembrerà essere valida ogni volta.

Se si desidera impedire la riproduzione, un modo per difendersi dalla riproduzione è assicurarsi che la stringa firmata contenga tutti i dettagli della richiesta e assicurarsi che la richiesta sia idempotente (eseguirla più volte ha lo stesso effetto che eseguire una volta). Se lo fai, replay diventa irrilevante.

In alternativa, un altro metodo semplice consiste nel fare in modo che l'Applicazione 1 includa l'ora corrente e un numero casuale a 64 bit (un nonce) nella stringa. L'applicazione 2 può verificare che il tempo sia ragionevolmente recente (per esempio, non più di 24 ore) e controllare che il nonce non sia nella sua lista di nozioni accettate di recente; se entrambi i controlli passano, l'Applicazione 2 accetta il token e aggiunge il nonce al suo elenco di nozioni accettate di recente. (Puoi raccogliere periodicamente questo elenco: non è necessario mantenere un nonce da un token che dura più di 24 ore, poiché il controllo del tempo garantirà che il token non sarà accettato come valido.)

Se si provano le firme digitali e si scopre che causano problemi di prestazioni, un'altra sostituzione adatta consiste nell'utilizzare un codice di autenticazione del messaggio con una chiave simmetrica (anziché un algoritmo di firma a chiave pubblica). Quando si utilizza un codice di autenticazione dei messaggi (MAC), esiste una sola chiave e entrambe le applicazioni necessitano di una copia della chiave. In linea di principio, i token basati su MAC sono leggermente meno sicuri, perché ora ci sono più copie della chiave segreta in circolazione. Detto questo, nella pratica nella maggior parte dei casi i token basati su MAC sono probabilmente accettabili. È improbabile che la differenza tra token basati su MAC e token basati su firma faccia una grande differenza per la sicurezza dell'intero sistema, poiché molto probabilmente il link più debole del tuo sistema sarà qualcos'altro.

    
risposta data 09.09.2012 - 02:19
fonte

Leggi altre domande sui tag