¿Alguna vez puede obtener datos descifrados parcialmente de un algoritmo de descifrado?

4

Estoy descifrando algunos datos utilizando Java y la biblioteca WSS4J más reciente de Apache con descifrado AES de 128 bits.

Configuré el cifrado que parece correcto con el relleno correcto, el algoritmo de descifrado y el modo de bloqueo de cifrado.

Luego hago una llamada a doFinal () en los bytes de datos cifrados y devuelve un valor con éxito.

Mi pregunta es si alguna vez devolvería un valor que solo se desencripta parcialmente?

Por ejemplo, digamos que los primeros 16 bytes todavía se mezclan después del descifrado, pero el resto de los datos devueltos se ha descifrado con éxito, y es legible para los humanos con los datos esperados allí.

¿Esto significa que podría haber un problema con mi proceso de descifrado? ¿O no sería capaz de devolver un valor desde el paso doFinal () si algo estaba un poco apagado con la configuración de descifrado?

Si obtengo un valor devuelto desde doFinal (), ¿eso significa que el 100% de los datos devueltos son los datos originales antes de que se cifraran?

Estoy descifrando datos de una llamada de servicio web y los propietarios del servicio web afirman que debo estar haciendo algo mal durante mi proceso de descifrado y que están enviando los datos correctamente.

    
pregunta Brian T Hannan 13.01.2016 - 16:17
fuente

2 respuestas

4

Dependiendo del modo de bloqueo que esté utilizando, puede obtener datos parcialmente descifrados. Por ejemplo, en el modo CBC, si se suministra un IV incorrecto, el primer bloque de datos no se descifra correctamente. Sin embargo, el resto de los datos se descifrarán correctamente (suponiendo que esté utilizando la clave de cifrado correcta). Esto se debe a que el IV del bloque (x + 1) es el texto cifrado del bloque x.

El diagrama de Wikipedia es bastante útil para visualizar esto.

enlace

    
respondido por el mittmemo 13.01.2016 - 18:11
fuente
2

Algunos algoritmos de cifrado requieren relleno para garantizar que el contenido tenga un tamaño que sea un múltiplo del tamaño de bloque que el algoritmo de cifrado pretende usar. Si su proceso de descifrado no maneja este relleno, entonces es posible ver en el resultado del descifrado que todavía hay bytes confusos adjuntos a su mensaje descifrado. Normalmente, este relleno se produce en el lado izquierdo del mensaje, y para recuperar el texto sin formato original, debe seguir un método que invierta la forma en que se agregó el relleno en primer lugar. Lea más sobre el relleno criptográfico .

    
respondido por el Seth M. Larson 13.01.2016 - 17:16
fuente

Lea otras preguntas en las etiquetas