Domanda

Immagina di avere questo:

$cdata = AES_256($data, $pass);

AES_256 implementa l'algoritmo AES .

Se conosco il contenuto di $ cdata e il contenuto di $ data e ho anche il codice AES_256 () , posso decodificare e trovare $ pass ?

È stato utile?

Soluzione

Risposta semplice: NO.

Questo è stato testato e menzionato nel link Wiki.

  

Un attacco con chiave correlata può interrompere fino a 9   round di AES a 256 bit. UN   l'attacco scelto in chiaro può rompere 8   round di AES a 192 e 256 bit e 7   round di AES a 128 bit, sebbene il   il carico di lavoro non è pratico in 2 128 -   2 119 .

O in altri termini: hai maggiori possibilità di essere colpito dall'illuminazione ... lo stesso giorno in cui vinci la lotteria, piuttosto che romperla!

Altri suggerimenti

Questo è chiamato attacco in chiaro noto . Un buon codice come AES dovrebbe esserne immune, come hanno spiegato gli altri.

Se $ pass è in realtà una password e non una chiave a 256 bit, potresti essere fortunato.

Sebbene sia tutt'altro che banale da eseguire, un attacco a forza bruta contro una normale password è molto più veloce della forzatura bruta di una chiave a 256 bit.

Quindi modifica uno dei tanti strumenti per forzare la password e hai un attacco che (a seconda della forza della password) potrebbe richiedere settimane o diversi anni, ma è veloce rispetto a 3x10 ^ 51 anni .. .

Potresti forzarlo brutalmente, ma ci vorrebbe molto tempo. Come da decenni o anche di più. Questo è il punto degli algoritmi di crittografia come AES.

Un'altra citazione, da Wikipedia :

  

AES consente l'uso di chiavi a 256 bit.   Rompere una chiave simmetrica a 256 bit con   la forza bruta richiede 2 ^ 128 volte di più   potenza computazionale di un 128 bit   chiave. Un dispositivo che potrebbe verificare a   miliardi di miliardi (10 ^ 18) chiavi AES per   secondo richiederebbe circa 3 volte   10 ^ 51 anni per esaurire i 256 bit   spazio chiave.

La forza bruta quando sai che il testo originale potrebbe essere più veloce ma comunque, 3 x 10 ^ 51 anni sono tanti. Inoltre c'è il problema di non avere probabilmente un dispositivo in grado di controllare un miliardo di miliardi (10 ^ 18) chiavi / secondo.

In breve : tutto è possibile, ma questo non è fattibile nel mondo in cui viviamo ora.

AES, come tutti i buoni algoritmi di crittografia, non si basa sulla sicurezza attraverso l'oscurità .

In altre parole, non ci sono "segreti". nel codice, quindi avere il codice non ti aiuterà in particolare.

Il testo in chiaro noto è un problema separato, di cui non so molto, quindi lo lascerò agli altri risponditori.

Certo che no - l'unico approccio è la forza bruta. Pensi davvero che il NIST sia così stupido da scegliere un codice che sia così facilmente crackato per un nuovo standard?

con la potenza dei supercomputer il tempo di arrestare la crittografia AES si riduce drasticamente .... Ho sentito ...

2x2 ^ 256 possibili combinazioni sono molto bruteforce. Ma il brutoforcing è l'unico modo. In realtà ci vorrebbero circa 3 decenni. AES è la migliore crittografia possibile in questo momento, direi. Ma ci vorrebbe solo molto tempo usando una CPU. Poiché le GPU (Graphic Processing Unit) sono rigorosamente basate sulla matematica, le persone hanno creato programmi che utilizzano la GPU solo per decifrare algoritmi matematici molto più rapidamente di quanto non possa fare una CPU. In altre parole, AES potrebbe non durare 3 decenni. Se solo i codici dell'eternità fossero possibili. Beh, sembra che la crittografia dinamica possa essere l'unico modo in cui le persone possono davvero nascondere le proprie informazioni nel prossimo futuro.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top