Potrei usare un TimeStamp anche come IV?

3

Per un'applicazione accademica, utilizzo AES-GCM per crittografare i miei frame tra 2 parti.

Per migliorare la sicurezza e ridurre la possibilità di riproduzione, mi piacerebbe utilizzare un TimeStamp nei miei scambi di frame. Ma, poiché utilizzo la modalità GCM, devo trascrivere il Initialisation Vector oltre a ciphertext (e al MAC).

La mia idea è: potrebbe essere possibile utilizzare anche l'IV come TimeStamp?

Il IV verrebbe quindi utilizzato per la decrittografia di ciphetext , quindi per verificare se il messaggio non è troppo vecchio.

Pertanto, una modifica in TimeStamp renderà il ciphertext non decrittabile.

Il prossimo passo sarà quello di produrre un TimeStamp in un formato lungo, in modo da non ridurre la sicurezza. Qualche idea su come emettere un TimeStamp come questo?

    
posta EisenHeim 17.03.2016 - 17:26
fonte

2 risposte

6

Ogni modalità di crittografia ha i suoi requisiti per la IV. Per GCM , i requisiti sono semplici (vedi NIST SP 800-38D per i dettagli):

  • La lunghezza deve essere compresa tra 1 e 2 61 -1 byte. Si raccomanda che la lunghezza IV sia esattamente 12 byte (96 bit); in caso contrario, GCM dovrà prima eseguire il pad e / o hash dell'IV, che non è supportato da tutte le implementazioni e aumenta il rischio di collisione spuria.

  • Per ogni dato tasto K , non dovrai mai usare il doppio dello stesso IV.

In particolare, in GCM (al contrario, per esempio, CBC), non è necessario che l'IV sia casuale e imprevedibile; è richiesta solo unicità.

Pertanto, un valore a 96 bit estratto da un orologio monotono (suppongo che sia quello che intendi per "timestamp") è un buon IV, a condizione che tu prenda cura di quanto segue:

  1. Se si cifrano più messaggi in rapida successione, è possibile che finiscano per utilizzare lo stesso timestamp, a seconda della precisione dell'orologio di sistema e della velocità della CPU. DEVI includere alcuni test per evitare tale occorrenza.

  2. L'orologio di sistema può variare, automaticamente o tramite azione umana (l'utente nota che l'orologio è spento e regola). Avere un orologio veramente monotono può essere difficile in generale.

risposta data 17.03.2016 - 17:42
fonte
1

Supponendo che tu scelga il timestamp da modificare abbastanza presto (ad es. abbia una precisione ragionevole tale che sia molto probabile che sia diverso ogni volta) e tutti gli altri parametri siano precisi:

Dovresti stare bene usando l'ora corrente come IV .

Ad esempio, è possibile utilizzare il timestamp di unix con una precisione millisecondo. Quanta entropia effettivamente detiene IV (ad esempio, quanto è lungo) non dovrebbe influenzare la sicurezza sul codice a blocchi che stai utilizzando.

    
risposta data 17.03.2016 - 17:35
fonte

Leggi altre domande sui tag