is there a mode of AES which prevents partial decryption of
cipher-text
Dichiaro di non essere un esperto in crittografia, ma la mia comprensione del chain block cipher (CBC) è che presenta dei punti deboli principalmente causati dalla mancanza di autenticazione. Anche se, poiché il suo vettore di inizializzazione (IV) è un valore fisso ( IV predittività ), questo IV emette l'ultimo blocco del testo cifrato. È possibile visualizzare in che modo le diverse implementazioni AES nascondono i dati relativi a un'immagine " Testo parzialmente decodificato a prescindere da IV ".
"La decrittografia con IV errato causa la corruzione del primo blocco di testo in chiaro, ma i successivi blocchi di testo in chiaro saranno corretti, poiché ogni blocco è XORed con il testo cifrato del blocco precedente, non il testo in chiaro, quindi non è necessario per decodificare il blocco precedente prima di usarlo come IV per la decodifica di quello corrente. " - Modalità di crittografia a blocchi
Galois / Counter Mode (GCM) è spesso pensato come GCM = CTR + autenticazione. AES-GCM con una corretta implementazione IV è considerato più sicuro rispetto ad altre alternative AES. GCM è preferito perché è un algoritmo più veloce e, a differenza di CBC, GCM supporta l'autenticazione. Tuttavia, GCM "se riutilizzi un nonce. Un singolo nonce ripetuto consente ad un avversario di recuperare la sua sottochiave di autenticazione, oltre ad apprendere lo XOR dei due messaggi con lo stesso nonce." che ovviamente non è l'ideale. Inoltre, GCM utilizza IV a 96 bit, rendendo i tassi di collisione più elevati e il riutilizzo IV potenzialmente più frequente.
Questo thread Come scegliere una modalità di crittografia AES? dovrebbe essere d'aiuto in quanto evidenzia le diverse implementazioni AES, che dovrebbero consentire di scegliere quale sia appropriato per la tua infrastruttura.
Sebbene, nonostante tutto ciò, opterei per CBC per l'archiviazione locale. GCM ha percepito di più per le comunicazioni crittografate in rete (in tempo reale).
Or anything else that slows down the process of testing lots of keys
Presumibilmente con le chiavi si fa riferimento alle password. Dove vuoi passare le password attraverso una funzione di hashing unidirezionale con più iterazioni (cicli) per l'archiviazione da parte di qualcosa (database probabile).
L'hashing della password sembra più importante. Ho letto più dispute relative all'uso della famiglia SHA-2 per l'hashing delle password, la maggior parte delle critiche derivano da SHA-2 che non esegue più iterazioni, qualcosa che hai già fatto, ma questo non riguarda il tuo scenario direttamente come stai usando PBKDF2 con HMAC SHA512. Tuttavia, vorrei verificare quale tipo di sistema ha il tuo potenziale aggressore e implementare un moderno algoritmo di hashing per proteggerlo. Per esempio. usano CPU, GPU o ASIC per forzare il PBKDF2. Argon2 è noto per la sua buona resistenza contro la maggior parte dei tentativi di forzatura bruta. Confrontando i tre algoritmi Argon2:
- Argon2d: migliore protezione contro la forza bruta GPU.
- Argon2i: ottimizzato per resistere agli attacchi dei canali laterali. Accede all'array di memoria in un ordine indipendente dalla password.
- Argon2id: un ibrido di Argon2d e Argon2i.
Tutte e tre le modalità consentono di specificare da tre parametri che controllano:
- tempo di esecuzione
- memoria richiesta
- grado di parallelismo
Queste specifiche dovrebbero essere considerate per tutti gli algoritmi di hashing della password. PBKDF2 è una funzione di hashing nota e riconosciuta che è considerata sicura per l'hashing della password. Tuttavia, è riconosciuto debole rispetto a una forza bruta ASIC.
Vorrei scegliere tra Argon2id o PBKDF2 HMAC SHA512, e valutare a seconda del tipo di autore di attacchi con cui mi sto difendendo.