AES Encryption è questa crittografia complicata?

1

Sto lavorando con l'API di un fornitore e consiglia i seguenti passaggi per trasmettere un valore crittografato:

1) Convert the encryption password to a byte array.
2) Convert the value to be encrypted to a byte array.
3) The entire length of the array is inserted as the first four bytes onto the front of the first block of the resultant byte array before encryption.
4) Encrypt value with AES

Semplicemente curioso, i passaggi da 1 a 3 rendono i valori crittografati molto più sicuri rispetto a quando sono appena iniziati con il passaggio 4? È una pratica consigliata?

Sta rendendo l'implementazione più complicata.

    
posta Gabriel 20.12.2018 - 22:29
fonte

1 risposta

2

I primi due passaggi sono normali poiché le librerie AES accettano byte. 3 ° per la prevenzione degli attacchi di estensione della lunghezza. Supponiamo che stiamo aggiungendo la lunghezza alla fine e che abbiamo 2 blocchi di testo cifrato; {B1, B2}. Se qualcuno ha notato un altro testo cifrato con 3 blocchi {D1, D2, D3} allora {B1, D2, D3} sarà un blocco valido. Naturalmente, si può fare lo stesso trucco se la lunghezza all'inizio o anche entrambi.

In realtà, i veri problemi sono;

  • Quale modalità di crittografia stai utilizzando?

    • Non dovresti utilizzare la modalità ECB che non è sicura. Utilizza la modalità CBC che richiede la modalità IV o CTR.
  • C'è qualche autenticazione?

    • I problemi nel primo paragrafo sono dovuti al fatto che non vi è alcuna autenticazione menzionata. AES-GCM , che è uno standard in TLS 1.3, fornisce Crittografia autenticata . Ciò impedisce la modifica da parte dell'utente malintenzionato poiché è possibile controllare il tag di autenticazione dei dati.

Nota: nulla menzionato sullo schema di riempimento. Supposto che ce ne sia uno in giro come P riempimento KCS # 5 .

    
risposta data 20.12.2018 - 22:52
fonte

Leggi altre domande sui tag