DROWN: Atacando SSL/TLS (X)

1, DRWN-10
CapturaDROWN: Atacando SSL/TLS (112=IX)

No existe #clearkey# (su longitud es0“) y la #encryptedkey# se <descifra> a un #secretkey# de <16 bytes>, con lo cuál es la #masterkey# completa. La longitud de #encryptedkey# es la idéntica que en elcaso anterior– (<256 bytes> o <2048 bits>) pues depende del tamaño de la clave #RSA#, y no del contenido realmente <cifrado>.

Hasta aquí todo perfecto. Pero, ¿qué ocurre si mezclamos ambos casos? ¿Cuál es el comportamiento del <servidor> si usamos unalgoritmo de cifradono #EXPORT# pero le pasamos un #clearkey#?

Según la especificación de #SSLv2# el <servidor> debe rechazarlo. No obstante, el comportamiento de #OpenSSL# esradicalmente distinto“. Acepta el #clearkey# y toma del #secretkey# sólo laparte que le es necesariaparacompletarel #encrypted key#. Es decir:

2, DRWN-10

En este caso si el <atacante> dispone de un #secretkey# de  <16 bytes> pero incluye un #clearkey# de <11> (como si fuese unalgoritmo– #EXPORT#), la falta de certeza sobre el #masterkey# es sólo de <240 posibilidades>, ya que el <atacante> conoce los primeros <11 bytes>, y #OpenSSL# está descartando los últimos <11> del #secretkey#.

Comprobamos que utilizando estavulnerabilidadesposiblereducir la complejidad de <2128> a <240 aunque a costa de conocer sólo <5> de los <16 bytes>.

¿Se puede mejorar dicha situación? ¿Qué ocurre si pasamos como #clearkey# <15 bytes>?

Sorprendentemente, #OpenSSL# vuelve a no validar la longitud (ningúnalgoritmorequiere un #clearkey# de <15 bytes>) y en este caso:

3, DRWN-10

Observamos que el <atacante> ha podidofijarhasta <15 bytes> del #masterkey# y la única “incertidumbrede que es el #valor# de <S0>. Es decir, <28> operacionescriptográficascon las que obtiene el #valor# de un <byte> del total de <16> del #secretkey#.

¿Esto le sirve para algo? Claro que si, porque ahora no tiene más que realizar la misma operación pero con un #clearkey# de <14 bytes>, quedando:

4, DRWN-10

Para este caso entran <dos bytes> del #secretkey# paragenerarel #masterkey#. Pero recordad que en elpaso anteriorel <atacante> ha sido capaz deobtenerel #valor# de <S0> (razón por la que está marcado en amarillo en el <gráfico>, ya que es un #valor# conocido para el <atacante>).

Otra vez, con <28 operaciones criptográficas> el <atacante> puedeobtenerel #valor# de <S1>.

Repitiendo estaoperaciónotras <14 veces>, reduciendo en cada paso el tamaño del <clearkey>, finalmente se llega a:

5, DRWN-10

Con las últimas <28 operaciones criptográficas> se terminaobteniendoel #valor# de <S15> y por tanto el #valor# completo del #secretkey#. Elproceso completoha necesitado <16 conexiones> al <servidor> #SSLv2# y un máximo de <212 operaciones> en lugar de <2128> como habría requerido deintentar romperpor <fuerza bruta> el #secretkey# de unalgoritmo– <RC2> no #EXPORT#.

De hecho, aunque elejemplolo hemos llevado a cabo con <RC2> ya que era uno de los dosalgoritmoscon versión #EXPORT#, es inclusomejorutilizar tripleDES (para el que #OpenSSL# también admite un #clearkey# aunque en ese caso no tenga ni versión #EXPORT#) ya que en ese caso con una complejidad inferior a <213> el <atacante> puededescifrarsin problemas un #masterkey# de <24 bytes>.

Esta <vulnerabilidad> tiene dos vertientes:

6, DRWN-10

7, DRWN-10

Tanto esta <vulnerabilidad> como la que os comenté en el #anterior artículo# deben llevar a darnos cuenta de lanecesidad de tener <actualizado> no sólo nuestrosoftware” (y todas laslibreríasque utilice), sino los propios <protocolos> que utilizamos.

Utilizar #SSLv2# conversiones vulnerablesde #OpenSSL# no proporciona más <seguridad> que unaconexiónen claro para un <atacante> mínimamente motivado.

Salu2

tumblr_mopuy3Wsbd1qedb29o1_500

Anuncios

Responder

Por favor, inicia sesión con uno de estos métodos para publicar tu comentario:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s