L'uso del modello di riempimento fisso compromette AES-ECB

0

Sto lavorando su un'applicazione in cui è stato specificato AES-256-ECB. È stato chiesto che un pattern fisso sia incluso alla fine del messaggio per consentire la fine della decodifica per assicurare che la decrittografia abbia avuto successo. Stavo pensando di usare un valore di padding fisso e aggiungere 16 byte di padding se non fosse stato originariamente richiesto il padding.

So che un modo migliore per farlo è usare un codice di autenticazione (e usare AES in una modalità diversa) ma il client non vuole aggiungere ulteriore complessità.

L'utilizzo di un pattern fisso alla fine del messaggio comprometterà la crittografia AES-ECB se un utente malintenzionato indovina la presenza del pattern? (Sto ricordando cosa è successo nel film Imitation Game!)

Aggiornamento: le caratteristiche dei dati da codificare indicano che gli stessi dati codificati non verranno ripetuti.

Aggiornamento: apprezzo il consiglio su altre modalità, e ho sollevato questo da solo. Ma per qualsiasi motivo la BCE è la modalità di scelta.

    
posta Nigel Smith 29.04.2016 - 11:57
fonte

1 risposta

2

Per rispondere alla tua domanda: Sì. Stai affrontando due problemi:

1) L'ECB è intrinsecamente pericoloso da usare e deve essere utilizzato solo come elemento di base per operazioni più sicure. La modalità ECB produce sempre lo stesso output per lo stesso input, quindi è estremamente deterministico.

2) A causa delle proprietà menzionate in 1 diventerà banale per un attacco determinare quale esatta imbottitura è quando raccoglie un mucchio di testi.

Dovresti davvero prendere in considerazione l'utilizzo di una modalità operativa più complessa. Ti suggerisco caldamente di usare CBC (Cipher Block Chianing) o qualsiasi altra modalità più sicura (OFB, CFB, CTR) < - guarda se necessario.

EDIT: ti ho fatto una lista in basso che riporta wikipedia e spiega anche che la BCE non dovrebbe essere usato:

ECB :

The simplest of the encryption modes is the Electronic Codebook (ECB) mode. The message is divided into blocks, and each block is encrypted separately. The disadvantage of this method is that identical plaintext blocks are encrypted into identical ciphertext blocks; thus, it does not hide data patterns well. In some senses, it doesn't provide serious message confidentiality, and it is not recommended for use in cryptographic protocols at all.

CBC :

In CBC mode, each block of plaintext is XORed with the previous ciphertext block before being encrypted. This way, each ciphertext block depends on all plaintext blocks processed up to that point. To make each message unique, an initialization vector must be used in the first block. CBC has been the most commonly used mode of operation. Its main drawbacks are that encryption is sequential (i.e., it cannot be parallelized), and that the message must be padded to a multiple of the cipher block size. One way to handle this last issue is through the method known as ciphertext stealing. Note that a one-bit change in a plaintext or IV affects all following ciphertext blocks.

CFB :

The Cipher Feedback (CFB) mode, a close relative of CBC, makes a block cipher into a self-synchronizing stream cipher. Operation is very similar; in particular, CFB decryption is almost identical to CBC encryption performed in reverse.

OFB :

The Output Feedback (OFB) mode makes a block cipher into a synchronous stream cipher. It generates keystream blocks, which are then XORed with the plaintext blocks to get the ciphertext. Just as with other stream ciphers, flipping a bit in the ciphertext produces a flipped bit in the plaintext at the same location. This property allows many error correcting codes to function normally even when applied before encryption.

CTR :

Like OFB, Counter mode turns a block cipher into a stream cipher. It generates the next keystream block by encrypting successive values of a "counter". The counter can be any function which produces a sequence which is guaranteed not to repeat for a long time, although an actual increment-by-one counter is the simplest and most popular.

    
risposta data 29.04.2016 - 13:48
fonte

Leggi altre domande sui tag