DROWN: Atacando SSL/TLS (11-2=IX)

1, DRWN-9
CapturaDROWN: Atacando SSL/TLS (VII+I)

Dichoproceso del que os comentaba al término del #anterior artículo# (captura superior) es el siguiente, veamos:

2, DRWN-9

3, DRWN-9

4, DRWN-9

5, DRWN-9

Hagamos un pocoderesumen“, si utilizamos versiones de #OpenSSL# vulnerables a  <CVE20153197> no será posible <limitar> losalgoritmos de cifradopara <deshabilitar> losalgoritmos” #EXPORT#, debido a que un <atacante> siempre podrá forzar su uso y por tantodescifrarcada mensaje derivado aplicando <240 operaciones criptográficas> en vez de <2128> como tendría que llevar a cabo en caso de tener que utilizar <algoritmos> no #EXPORT#.

Esto respecto a la <negociación de algoritmos> #EXPORT#. Por lo cuál, de lasdos vulnerabilidadesrelacionadas con #DROWN# esta no es la más grave.

6, DRWN-9

A continuación veremos querealmenteun <atacante> no necesita usar losalgoritmos” #EXPORT#, siempre que la versión de #OpenSSL# esté afectada por la <segunda vulnerabilidad>. Aún más, en tal caso le da más ventaja utilizar <algoritmos> no #EXPORT# y le ofrece unavelocidad de ataqueque permite prácticamente un <ataque> #maninthemiddle# contra unaconexión” #TLS#.

Nota: por otra parte, y como uno no se cansa de repetir, lasolución realno es <aplicar parches> sobre #SSLv2# actualizando la versión de #OpenSSL#, sino más bieneliminarlocompletamente de lainstalación y pasar a usar la versión #TLSv1.1# o (aún mejor) #TLSv1.2#.

7, DRWN-9

·|¿Cómo funciona el #masterkey#?|·

El #masterkey# es un #valor# –aleatoriogenerado por el <cliente> y enviado al <servidor> “cifrado con la clave públicade éste. Lasclaves simétricas” que se utilizarán en la <comunicación> dependen de #valores# enviados en claro por <cliente y servidor> y de este #valor#, que es conocido por el <cliente> (ya que ha sido generado por él) y por el <servidor> (ya que puededescifrarlomediante suclave privada“). El tamaño de este #masterkey# debe coincidir con el tamaño declave asociado al <algoritmo de cifrado> escogido, siendo:

8, DRWN-9

9, DRWN-9

10, DRWN-9

Si centramos la atención en #RC2# y #RC4# vemos unaaparente discrepancia-. Si el #masterkey# tiene que ser del tamaño declave del algoritmoescogido, queda claro que para la <versión> no #EXPORT# los <16 bytes> son correctos (ya que el tamaño declave es de #128 bits#) pero lasversiones– #EXPORT# se suponía que tenían sólo <40 bits>.

¿Porqué esta diferencia? ¿A qué se debe?

Por lógica, ladiscrepanciano es tal. Las versiones #EXPORT# de <RC2> y <RC4> realmente usan también un tamaño declavede <128 bits>, por lo que también requieren un #masterkey# de <16 bytes>. La <causa> de que sufuerza de cifradosea sólo de <40 bits> es que en este caso el #masterkey# se envíadividido en dos partes-.

Unaprimera partede <88 bits> se envía en claro (#clearkey#), mientras que los últimos <40 bits> (#secretkey#) sí son enviadoscifrados con la clave públicadel <servidor> (#encryptedkey#). Esto <provoca> que elnúmero de posibles clavesque hay queromper por fuerza brutasi no se conoce laclave privadadelservidores de <240>, lo queequivale a tener unaclave de cifradode <40 bits>.

Si centramos el asunto un poco más en estos #masterkey# <semiencriptados>, “ambas partesdel #masterkey# se mandan en el paquete #ClientMasterKey#.

Es decir, veamos un ejemplo: para unalgoritmo” <RC2> en versión #EXPORT#, el procesamiento en el <servidor> podría ser el siguiente;

11, DRWN-9

En la <captura superior> podéis ver claramente lastres seccionesque os he mencionado anteriormente. El paquete #ClientMasterKey# contiene <11 bytes> del #master key# en claro (#clearkey#, representado por los <bytes> marcados con laletra C“) y <256 bytes> (asumiendo una clave #RSA# de <2048 bits>) del #masterkey# cifrados (#encryptedkey#, representado por los <bytes> marcados con laletra E“) y que trasdescifrarsese convierten en <5 bytes> (#secretkey#, representado por los <bytes> marcados con laletra S“) que junto con el #clearkey# se convierte en el #masterkey# definitivo.

Un <atacante> que no conozca laclave privada” #RSA# tendrá que probar <240 posibles> del #secretkey# para descubrir el #masterkey# real.

Por el contrario, para unalgoritmo” <RC2> en suversiónno #EXPORT#, el procesamiento es el siguiente:

12, DRWN-9

Seguiremos por estepunto” en el #próximo artículo#.

Salu2

#Future - Imgur

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