Pregunta

A través de los años me he encontrado con este escenario más de una vez. Usted tiene un montón de datos relacionados con el usuario que desea enviar desde una aplicación a otra. La segunda aplicación se espera que la "confianza" este "token" y el uso de los datos dentro de ella. Una marca de tiempo está incluido en el token para prevenir un ataque de robo / reutilización. Por alguna razón (no hay que preocuparse acerca de ello aquí) una solución personalizada ha sido elegido en lugar de un estándar de la industria como SAML.

A mí me parece que la firma digital de los datos es lo que queremos aquí. Si los datos tienen que ser secreta, entonces también puede cifrar.

Pero lo que veo mucho es que los desarrolladores podrán utilizar el cifrado simétrico, por ejemplo, AES. Ellos están asumiendo que, además de hacer que los datos "secreta", el cifrado también proporciona 1) la integridad del mensaje y 2) la confianza (autenticación de la fuente).

¿Tengo razón para sospechar que existe una debilidad inherente aquí? A primera vista se parece funcionar, si la clave simétrica se gestiona adecuadamente. A falta de esa llave, luego, no sabría cómo modificar un token de cifrado, o lanzar algún tipo de ataque criptográfico después de interceptar varias fichas. Pero sería un atacante más sofisticado capaz de explotar algo aquí?

¿Fue útil?

Solución

Parte de ello depende del modo de cifrado. Si utiliza BCE ( la culpa es tuya! ) que podría cambiar los bloques alrededor, alterando el mensaje. Stackoverflow fue golpeado por este mismo error .

menos amenazante - sin marcar cualquiera integridad, podría realizar un ataque man-in-the-middle, y todo tipo de intercambio de bits de alrededor, y que iba a recibir y tratar de descifrarlo. Que le falla, por supuesto, pero el intento puede ser revelador. Hay ataques de canal lateral por "Bernstein (explotación de una combinación de características de caché y la microarquitectura) y Osvik, Shamir y Tromer (explotando las colisiones de caché) se basan en la obtención de datos estadísticos sobre la base de un gran número de pruebas al azar." href="http://www.daemonology.net/blog/2009-06-24-encrypt-then-mac.html" 1 El artículo nota al pie es por un criptógrafo de nota mayor que yo, y aconseja reducir la superficie de ataque con un MAC:

  

Si usted puede asegurarse de que un atacante   que no tiene acceso a su MAC   clave no puede nunca alimentar el mal de entrada a una   bloque de código, sin embargo,   reducir drásticamente la posibilidad de que él   será capaz de aprovechar cualquier error

Otros consejos

Sí. Cifrado sí sola no proporciona autenticación. Si desea que la autenticación se debe usar un código de autenticación de mensajes tales como HMAC o firmas digitales (en función de sus necesidades).

Hay un gran número de ataques que son posibles si los mensajes se cifran solo, pero no autenticados. Aquí es sólo un ejemplo muy sencillo. Asumen que los mensajes son encriptados usando CBC . Este modo utiliza un IV para aleatorizar el texto cifrado de modo que cifrar el mismo mensaje dos veces no da como resultado el mismo texto cifrado. Ahora mira lo que pasa durante el descifrado si el atacante simplemente modifica el IV pero deja el resto del texto cifrado como es. Sólo el primer bloque del mensaje descifrado cambiará. Además exactamente esos bits cambiados en el cambio IV en el mensaje. Por lo tanto el atacante sabe exactamente lo que va a cambiar cuando el receptor descifra el mensaje. Si ese primer bloque Fue, por ejemplo, una marca de tiempo de un atacante sabe cuándo se envió el mensaje original, entonces él puede arreglar fácilmente la marca de tiempo a cualquier otro momento, con sólo voltear los bits de la derecha.

Otros bloques del mensaje también se pueden manipular, aunque esto es un poco más difícil. Tenga en cuenta también, que esto no es sólo una debilidad del CBC. Otros modos como OFB, CFB tienen debilidades similiar. Así esperando que el cifrado solo proporciona autenticación es sólo una suposición muy peligrosa

Un enfoque de cifrado simétrico es tan segura como la clave. Si ambos sistemas pueden tener la llave y la clave segura, esto está muy bien. La criptografía de clave pública es sin duda una forma más natural.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top