Título: El patron de padding en la data descifrada es normal? Publicado por: AlbertoBSD en 4 Noviembre 2020, 03:14 am Anteriormente no me había fijado la salida del descifrado por AES 256 CBC con Pad habilitado.
Normalmente uno solo espera la data original descifrada, vamos que si ciframos la palabra "hola" esperamos de vuelta la misma palabra "hola" ya descifrada. Cuando encriptas sin padding cada bloque del tamaño "AES_BLOCKSIZE" devuelve la misma cantidad de bloques. Pero el cifrar con Padding agrega cierta cantidad mas de datos. Por ejemplo si ciframos 32 bytes con AES256CBC con Padding nos devuelve un buffer con 48 bytes de data Y cuando desciframos esos 48 bytes, nos devuelve la data original de 32 bytes + un buffer "sucio" es decir que hay mas datos en el buffer, en mi caso he comprobado que para este ejemplo siempre devuelve un buffer sucio de 16 bytes y cada uno de esos bytes tiene valor de uno. Mi pregunta es ¿Es normal esto, o solo es la forma en la que trabaja la librería ctaes? hice un programa que muestra que independientemente del key y del IV utilizados siempre pasa lo mismo Código: albertobsd $ ./test_aes256cbc (https://i.imgur.com/THCg62x.png?1) De ser normal esto se podría tomar ese buffer sucio como una comprobación de que la key y el iv utilizados son los correctos? Saludos Título: Re: El patron de padding en la data descifrada es normal? Publicado por: kub0x en 4 Noviembre 2020, 17:21 pm De ser normal esto se podría tomar ese buffer sucio como una comprobación de que la key y el iv utilizados son los correctos? Percibo que te estás esforzando bastante, pero necesitas tener claro el concepto del padding en crypto simetrica. En este caso, tu suposición es negativa, temo decirte. En tu ejemplo tienes 32 bytes de puros carácteres 'A' o bien 0x41 en HEX. 32 bytes son 256 bit, como AES trabaja con tamaños de bloque de 128, entonces nos da justo 2 bloques. Pero sucede, que el padding tiene que adjuntarse, en este caso, se adjunta como un bloque de 16 bytes cuya representación hexademical es 0x1010.. para que el algoritmo separe los datos del padding a la hora de descifrar. Verás, que si realizas una prueba sobre un plaintext que no sea múltiplo de 16 bytes, a la hora de descifrar, el bloque del padding estará junto a los datos del último bloque. EDIT: Realiza la siguiente reflexión, ¿crees conveniente que un algoritmo criptográfico nos diga si una clave aleatoria testeada es la correcta para un tupla de (IV,Ciphertext)? Lo que va a hacer es retornar un plaintext inteligible que cifre al ciphertext mediante la key aleatoria y el IV. Nada más. Lecturas: https://en.wikipedia.org/wiki/Padding_(cryptography)#PKCS%235_and_PKCS%237 https://crypto.stackexchange.com/questions/66646/aes-cbc-padding-why-always-attach-16x-0x10-pad Título: Re: El patron de padding en la data descifrada es normal? Publicado por: AlbertoBSD en 4 Noviembre 2020, 17:31 pm Gracias Kub0x, tema clarificado. Me quedo con la reflexion y me pongo a leer los links que agregaste.
Saludos! Título: Re: El patron de padding en la data descifrada es normal? Publicado por: Danielㅤ en 4 Noviembre 2020, 20:43 pm Hola compañeros, aquí dejo el link completo porque salió cortado en el mensaje de kub0x:
https://en.m.wikipedia.org/wiki/Padding_(cryptography)#PKCS%235_and_PKCS%237 (https://en.m.wikipedia.org/wiki/Padding_(cryptography)#PKCS%235_and_PKCS%237) Saludos |