hay un modo de AES que evita el descifrado parcial de
texto cifrado
Afirmo que no soy experto en criptografía, pero mi comprensión del cifrado de bloque de cadena (CBC) es que tiene debilidades causadas principalmente por la falta de autenticación. Aunque, debido a que su vector de inicialización (IV) es un valor fijo ( previsibilidad IV ), este IV genera el último bloque del texto cifrado. Puede ver cómo diferentes implementaciones de AES ocultan datos sobre una imagen " Texto parcialmente descifrado independientemente de IV ".
"Descifrar con el IV incorrecto hace que el primer bloque de texto sin formato esté dañado, pero los bloques de texto sin formato subsiguientes serán correctos. Esto se debe a que cada bloque está XOR con el texto cifrado del bloque anterior, no el texto sin formato, por lo que no es necesario para descifrar el bloque anterior antes de usarlo como el IV para el descifrado del actual ". - Modo de operación de cifrado de bloque
El modo Galois / Counter (GCM) se suele considerar como autenticación GCM = CTR +. AES-GCM con una implementación IV adecuada se considera más segura que otras alternativas AES. Se prefiere GCM porque es un algoritmo más rápido y, a diferencia de CBC, GCM es compatible con la autenticación. Sin embargo, GCM "si reutiliza un nonce. Un único nonce repetido permite que un adversario recupere su subclave de autenticación, además de aprender el XOR de los dos mensajes con el mismo nonce". que obviamente no es lo ideal. Además, GCM utiliza IVs de 96 bits, lo que hace que las tasas de colisión sean más altas y la reutilización IV sea potencialmente más frecuente.
Este hilo Cómo elegir ¿Un modo de encriptación AES? debería ayudar, ya que describe diferentes implementaciones de AES, lo que debería permitirle elegir cuál es el adecuado para su infraestructura.
Aunque, a pesar de todo esto, optaría por CBC para el almacenamiento local. GCM se ha sentido más por las comunicaciones encriptadas en red (en tiempo real).
O cualquier otra cosa que ralentice el proceso de probar muchas claves
Presumiré que con las claves se refiere a las contraseñas. Donde quiere pasar las contraseñas a través de una función de hashing de una vía con múltiples iteraciones (rondas) para el almacenamiento por algo (base de datos probable).
El hash de contraseña parece más importante. He leído varias disputas con respecto al uso de la familia SHA-2 para el hashing de contraseñas, la mayoría de las críticas provienen de que SHA-2 no realiza varias iteraciones, algo que ya ha hecho, pero esto no concierne a su escenario directamente ya que está utilizando PBKDF2 con HMAC SHA512. Sin embargo, revisaría qué tipo de sistema tiene tu potencial atacante e implementaría un algoritmo de hash moderno para proteger contra eso. P.ej. ¿Utilizan CPU, GPU o ASIC para forzar la PBKDF2? Argon2 ha sido conocido por su buena resistencia contra la mayoría de los intentos de fuerza bruta. Comparando los tres algoritmos Argon2:
- Argon2d: la mejor protección contra la fuerza bruta de GPU.
- Argon2i: optimizado para resistir ataques de canal lateral. Accede a la matriz de memoria en un orden independiente de contraseña.
- Argon2id: un híbrido de Argon2d y Argon2i.
Los tres modos permiten la especificación mediante tres parámetros que controlan:
- tiempo de ejecución
- se requiere memoria
- grado de paralelismo
Estas especificaciones deben considerarse para todos los algoritmos de hashing de contraseñas. PBKDF2 es una función de hashing conocida y reconocida que se considera segura para el hashing de contraseñas. Sin embargo, se reconoce que es débil contra una fuerza bruta ASIC.
Elegiría entre Argon2id o PBKDF2 HMAC SHA512, y evaluaré de qué tipo de atacante estoy defendiendo.