Con la crittografia AES e una chiave nota e un testo in chiaro, un utente malintenzionato può creare una chiave e un testo in chiaro diversi ottenendo lo stesso testo cifrato?
In breve: con la crittografia AES un utente malintenzionato può creare una nuova chiave2 e un nuovo testo in chiaro2 in modo che AES key1 (plaintext1) = AES key2 (plaintext2)
Se è così, può essere risolto semplicemente applicando ad esempio un MAC come AES-GCM o un AES-CTR con un SHA256 HMAC?
Applicazione prevista: la crittografia di un file. Ogni client che possiede la chiave può decrittografare il file. Il file crittografato viene gestito ciecamente da un server (senza conoscere la chiave) dal suo hash SHA256. Quando un nuovo cliente riceve una chiave falsa con il file ospitato, dovrebbe essere in grado di rilevare che è la chiave sbagliata. E di conseguenza non si ottiene alcun altro binario (rumoroso) dallo stesso file crittografato. Notando che un utente malintenzionato che fornisce la chiave falsa ha accesso alla chiave originale, al testo cifrato e quindi anche al testo in chiaro.
(Dovrebbe esserci l'opzione di crittografare file identici con chiavi diverse. Quindi la crittografia deterministica non è mia intenzione)
Un'altra possibile soluzione facile a cui ho pensato sarebbe stata quella di memorizzare l'hash della chiave segreta insieme al file crittografato sul server e inviarlo al client per la verifica. Ma in realtà preferisco usare una soluzione pronta all'uso ben nota e non qualcosa che mi è venuto in mente. L'applicazione di un MAC / HMAC è sufficiente per garantire un solo risultato chiave nel testo cifrato specificato.
Spero che la mia intenzione sia chiara e che qualcuno esperto possa indicarmi la giusta direzione.
Risposte
Per AES di base, è facile trovare due chiavi in questo modo. Prendi qualsiasi$key1$ e $plaintext1$ e calcolare $c=AES_{key1}(plaintext1)$. Quindi, prendi qualsiasi$key2$ e calcolare $plaintext2 = AES^{-1}_{key2}(c)$. Ne consegue che$AES_{key1}(plaintext1) = AES_{key2}(plaintext2)$. Detto questo, se AES viene utilizzato in una modalità di crittografia autenticata con un MAC, ciò potrebbe non essere necessariamente possibile. Desidero sottolineare che non vi è alcuna garanzia che non lo sia, e una cosa del genere dovrebbe essere dimostrata. In particolare, se si eseguisse lo standard encrypt-then-MAC (con chiavi diverse), questo sarebbe vulnerabile esattamente allo stesso modo, poiché la parte "crittografia" è invariata. In conclusione, questo dovrebbe essere possibile, ma certamente non è garantito e spesso non regge affatto.