Si tengo una carga útil de, por ejemplo, 8 bits y quiero cifrarlo utilizando AES 128, tendré que agregar algunos rellenos aleatorios para que el texto sin formato tenga una longitud de 128 bits. ¿Este relleno afecta la seguridad de AES?
Si tengo una carga útil de, por ejemplo, 8 bits y quiero cifrarlo utilizando AES 128, tendré que agregar algunos rellenos aleatorios para que el texto sin formato tenga una longitud de 128 bits. ¿Este relleno afecta la seguridad de AES?
Dado que AES es un cifrado de bloque con bloques de 128 bits, puede, por definición, procesar solo una entrada de 128 bits. Para convertirlo en un sistema que pueda cifrar y descifrar mensajes de longitud arbitraria, entonces debe utilizar un modo de operación . Cada modo tiene sus propios requisitos. La mayoría requerirá un IV que NO DEBE reutilizarse (si cifró varios mensajes con la misma clave, cada mensaje necesita su propia específico IV), y algunos modos tienen requisitos adicionales (por ejemplo, en CBC, es crucial que los IV se seleccionen de manera aleatoria, uniforme y de una manera que no pueda predecir quien elija los datos para cifrar).
Algunos modos también requieren "relleno" en caso de que la longitud del mensaje de entrada no sea apropiada de alguna manera. Algunos modos pueden procesar datos de entrada de longitud arbitraria (por ejemplo, CTR), mientras que otros necesitan que los datos tengan una longitud que sea un múltiplo de la longitud del bloque (por ejemplo, CBC).
La mayoría de los modelos de ataque que garantizan el cifrado pueden convertirse fácilmente en modelos de ataque activos , en los que el atacante no solo quiere inspeccionar los datos, sino que también puede modificar el datos. Por lo tanto, siempre que utilice el cifrado, normalmente también necesita integridad. Combinar el cifrado y un MAC es una tarea no trivial, por lo que es muy recomendable utilizar un modo que combine ambas funciones. El modo más estándar que combina el cifrado y el MAC de forma segura es, desde principios de 2016, GCM .
Si lo hace todo correctamente, entonces no hay ningún problema adicional con los datos de entrada cortos. Los datos cortos son comunes, por ejemplo, en las conexiones SSH.
Tenga en cuenta, sin embargo, que si bien el cifrado protege los datos contenidos , tiende a filtrar los datos longitud . Dependiendo del tipo de datos que está enviando, su longitud podría revelar mucha información a personas externas.
No utilice el relleno aleatorio . El relleno aleatorio no se puede verificar en el lado de descifrado, porque puede ser cualquier cosa. El relleno aleatorio otorga poder adicional a los atacantes activos (en SSL / TLS, vea el ataque de PODER , que aprovecha el relleno aleatorio en SSL 3.0 ). En cambio, si es necesario un relleno, use un relleno determinístico que el receptor pueda verificar. Es preferible un modo que no requiera relleno, porque es más fácil procesarlo correctamente en el lado de descifrado (es decir, sin filtrar información cuando se envía un mensaje no válido).
Resumen: use GCM.
No, el relleno no afecta la seguridad de AES.
Se usa comúnmente en modos como CBC , PKCS # 7 padding es particularmente popular.
Sin embargo, si necesitas rellenar tu mensaje, es probable que estés haciendo algo mal.
Primero puede usar el modo CTR para deshacerse de la necesidad de rellenar sus mensajes y, en segundo lugar, debe usar cifrado autenticado (como AES- GCM ) de todos modos.
Lea otras preguntas en las etiquetas encryption aes