È possibile falsificare un dato crittografato con AES?

0

Il requisito è che vogliamo generare un mucchio di chiavi e abbiamo bisogno di un modo per convalidare se questa chiave è generata da noi. Il mio suggerimento è quello di generare un UUID, fare un HMAC utilizzare una chiave segreta sull'UUID, quindi il risultato UUID + HMAC dovrebbe essere la chiave. Il problema qui è UUID + HMAC è troppo lungo, quindi possiamo usare solo una parte di essi come chiave.

Nel frattempo, il mio collega suggerisce che un altro modo è generare un UUID, fare un AES su di esso, utilizzare i dati crittografati come chiave, pensa che i dati crittografati non possano essere falsificati, ma temo che questo non sia un modo sicuro . Poiché non facciamo altre convalide qui.

Quindi la domanda è: è possibile simulare un dato crittografato con AES, che può essere decodificato da una determinata chiave segreta? Se non è possibile falsificare un dato crittografato con AES, quale si dovrebbe usare? HMAC o AES?

Le prestazioni dovrebbero essere considerate, perché abbiamo circa 1 miliardo di richieste da gestire ogni giorno.

    
posta Xilang 15.08.2016 - 04:29
fonte

1 risposta

1

So the question is: is it possible to fake an AES-encrypted data, that can be decrypted by a given secret key?

Se non c'è l'autenticazione aggiunta ai dati, allora sì, facilmente. I cifrari a blocchi sono in realtà solo permutazioni di tutti i possibili blocchi di testo in chiaro a tutti i possibili blocchi di testo cifrato. In altre parole, qualsiasi blocco di dati a 128 bit è un testo cifrato valido per alcuni testo semplice, per qualsiasi chiave di crittografia.

Tuttavia, se richiediamo che i blocchi di testo in chiaro validi abbiano una struttura, come banalmente richiedendo che gli ultimi 64 bit siano zero, con i dati negli altri 64 bit, solo i blocchi di testo cifrato da 1/2 ^ 64 produrranno un "valido "testo in chiaro Ma funziona solo con messaggi a blocco singolo ed è più difficile da fare con i messaggi multi-blocco, quindi si potrebbe usare anche qualcosa progettato per l'autenticazione.

The requirement is we want to generate a bunch of keys, and we need a way > to validate if this key is generated by us.

Questo non suona come qualcosa che richiederebbe la crittografia (assicurandosi che terze parti non possano leggerlo), ma l'autenticazione (assicurandosi che le terze parti non possano fingere). Alcuni codici di autenticazione dei messaggi sembrano essere in ordine (sia HMAC con qualche funzione di hash, CMAC se preferisci AES). Si noti che non è necessario utilizzare il tag di autenticazione completo prodotto dal MAC. Puoi invece troncarlo per scambiare un po 'di sicurezza per una lunghezza più corta.

    
risposta data 21.08.2016 - 13:50
fonte

Leggi altre domande sui tag