Lunghezza di AES "testo normale" quando decodificato con chiave errata

1

Se crittografo un testo X usando la chiave A con gli algoritmi AES e poi decrittando il risultato usando il tasto B, la lunghezza Y ottenuta del testo in chiaro sarebbe la stessa di X? Se la risposta è no, esiste un algoritmo di crittografia in cui ciò accade?

Nota che voglio crittografare un testo normale in modo che se decifrato con la chiave sbagliata la lunghezza del testo in chiaro ottenuto è la stessa di quella originale.

    
posta Lucas 29.01.2016 - 22:50
fonte

2 risposte

2

La lunghezza dei byte decrittografati dovrebbe sempre essere un moltiplicatore della dimensione del blocco, indipendentemente dal fatto che venga utilizzata o meno una chiave corretta. Ci potrebbe naturalmente essere una situazione in cui la decrittazione con la chiave sbagliata si traduce in un output che assomiglia a un padding valido e rimuovendo il padding la lunghezza non è uguale alla lunghezza originale. Ma certamente non è il solito caso.

    
risposta data 29.01.2016 - 23:07
fonte
2

Dipende dalla modalità di funzionamento e dal metodo di riempimento (se usato).

Le modalità CTR, OFB e CFB produrranno sempre una lunghezza del testo in chiaro dopo la decifratura che è uguale all'originale, anche se viene usata una chiave errata o IV.

Le modalità di crittografia autenticate sono specificate per non restituire testo in chiaro se la chiave è errata o il testo cifrato è stato manomesso.

Per altre modalità che richiedono il riempimento (CBC, PCBC, ABC, ecc.), l'implementazione può produrre risultati imprevisti se non codificati correttamente. L'algoritmo di decompressione può essere separato dal cifrario e potrebbe non conoscere la dimensione del blocco del codice e consentire la rimozione di 240 byte di padding, anche se la dimensione del blocco per AES è di soli 16 byte. Questo potrebbe non essere corretto per te, ma non per il codice. Dipende anche dal metodo di padding utilizzato e se il codice del pad unpad controlla esplicitamente la correttezza dei byte del padding prima di rimuoverli.

Il padding ISO / IEC inizia alla fine e procede all'indietro finché non trova 1 bit, quindi rimuove quello e i 0 bit alla fine. Una chiave errata probabilmente produrrà un testo in chiaro decifrato più lungo usando la chiave sbagliata rispetto all'originale.

Il padding ANSI e PKCS utilizza il byte finale come quantità di byte da troncare, ma viene specificato in modo diverso rispetto al contenuto degli altri byte di riempimento. Le implementazioni possono anche non guardare gli altri byte e solo leggere il byte finale per il conteggio dei byte padding, che può avere un valore compreso tra 0 e 255, molto probabilmente risultante in un testo in chiaro decrittografato più breve che utilizza la chiave sbagliata rispetto all'originale. È improbabile che il resto dei byte di padding corrispondano alle specifiche della modalità di riempimento e, se sono selezionati, il codice unpad potrebbe semplicemente restituire tutto il testo in chiaro.

    
risposta data 30.01.2016 - 11:42
fonte

Leggi altre domande sui tag