Puoi mai ottenere dati parzialmente decrittografati da un algoritmo di decodifica?

4

Sto decrittando alcuni dati utilizzando la libreria WSS4J più recente di Java e Apache con decrittografia AES a 128 bit.

Ho impostato il codice che sembra corretto con il padding, l'algoritmo di decrittografia e la modalità di blocco cifrario corretti.

Quindi faccio una chiamata a doFinal () sui byte di dati crittografati e restituisce un valore con successo.

La mia domanda potrebbe mai restituire un valore decifrato solo parzialmente?

Ad esempio, supponiamo che i primi 16 byte siano ancora mescolati dopo la decrittografia, ma il resto dei dati restituiti sia stato decrittografato con successo e sia leggibile dall'uomo con i dati previsti lì.

Significa che potrebbe esserci un problema con il mio processo di decodifica? O non sarebbe nemmeno in grado di restituire un valore dal passo doFinal () se qualcosa era leggermente in disaccordo con l'impostazione della decodifica?

Se ottengo un valore restituito da doFinal () significherebbe che il 100% dei dati restituiti sono i dati originali prima che venisse crittografato?

Sto decrittando i dati da una chiamata al servizio web e i proprietari del servizio web sostengono che devo fare qualcosa di sbagliato durante il mio processo di decrittografia e che stanno inviando i dati correttamente.

    
posta Brian T Hannan 13.01.2016 - 16:17
fonte

2 risposte

4

A seconda della modalità di blocco che si sta utilizzando, è possibile ottenere dati parzialmente decrittografati. Ad esempio, in modalità CBC, se viene fornito un IV non corretto, il primo blocco di dati non verrà decrittografato correttamente. Tuttavia, il resto dei dati verrà decodificato correttamente (presupponendo che si stia utilizzando la chiave di crittografia corretta). Questo perché l'IV del blocco (x + 1) è il testo cifrato del blocco x.

Il diagramma di Wikipedia è piuttosto utile per visualizzarlo.

link

    
risposta data 13.01.2016 - 18:11
fonte
2

Alcuni algoritmi di crittografia richiedono il riempimento per garantire che il contenuto sia una dimensione che è un multiplo della dimensione del blocco che l'algoritmo di crittografia intende utilizzare. Se il tuo processo di decrittografia non gestisce questo riempimento, allora è possibile vedere nel risultato della decrittazione i byte ancora confusi aggiunti al tuo messaggio decrittografato. In genere questo riempimento si verifica sul lato sinistro del messaggio e per recuperare il testo in chiaro originale è necessario seguire un metodo che inverte il modo in cui il padding è stato aggiunto in primo luogo. Ulteriori informazioni sul riempimento crittografico .

    
risposta data 13.01.2016 - 17:16
fonte

Leggi altre domande sui tag