Las funciones HASH MD5 y SHA-1 declaradas obsoletas

La RFC (Request For Comment) 9155 declara las funciones HASH MD5 y SHA-1 obsoletas y que ya no se deberían utilizar con el protocolo TLS versión 1.2. La versión 1.3 del protocolo TLS ya no las utiliza pues no está interesado por este cambio. Las versiones anteriores del protocolo TLS han sido declaradas obsoletas desde hace tiempo.

Este cambio se debe al hecho que las dos funciones HASH no se consideran seguras ya que en distintas ocasiones se ha demostrado que se pueden hackear; un ejemplo de ello es el ataque de colisión realizado por Xiaoyun Wang and Hongbo Yu de la universidad de Shadong. En ese ataque se ha demostrado que utilizando un algoritmo creado por los autores, era posible encontrar dos cadenas alfanuméricas cuyo resultado era el mismo; esto realizando un numero de operaciones que las actuales potencias de calculo disponibles pueden realizar en tiempos aceptables. Un ejemplo de ello son estas dos secuencias:

donde los únicos valores que cambian son los que aparecen en rojo. Estas dos secuencias dan como resultado la misma función HASH: 79054025255fb1a26e4bc422aef54eb4

Como entre las características recomendadas de las funciones HASH está propio la resistencia a la colisión, es decir que datas dos entradas x y x1 el resultado NUNCA puede ser el mismo es decir hash(x)=hash(x1).

Teniendo en cuenta que estas dos funciones HASH se utilizan también para “firmar” archivos y certificados, se pueden dar cuenta del peligro que representan estos ataques. Un ejemplo: dos archivos o dos programas devuelven el mismo valor HASH. Esto significa que es posible crear archivos que simulan ser los originales cuando en realidad pueden contener cualquier tipo de malware/virus.

En la RFC se indica que a lo largo de la negociación entre cliente y servidor:

  1. El cliente cuando envía los algoritmos de firma tiene que excluir MD5 y SHA-1

  2. El servidor no debe incluir los algoritmos MD5 y SHA-1 en la solicitud de certificado enviada al cliente

  3. El servidor no debe incluir los algoritmos MD5 y SHA-1 para el intercambio de las llaves. Si el cliente recibe una solicitud de intercambio de llaves que incluye MD5 y SHA-1 tiene que cortar la conexión y enviar una alerta de tipo illegal_parameter

  4. El cliente no debe incluir MD5 y SHA-1 durante la verificación del certificado. Si el servidor recibe una solicitud de verificación del certificado que incluye MD5 y SHA-1 tiene que cortar la conexión y enviar una alerta de tipo illegal_parameter

En Asterisk PBX el algoritmo MD5 se utiliza en dos contextos:

  • autenticación de las solicitudes SIP

  • creación de contraseñas

En el primera caso cualquier solicitud que reciba Asterisk PBX y que tiene que ser autenticada, Asterisk envía esta cabecera para REGISTER e INVITE respectivamente:

Esto debería cambiar entro final de este año como he explicado en esta entrada.

Para las contraseñas cifradas con MD5, canal chan_pjsip, se configuran en el bloque de tipo auth, parámetro:

  • auth_type que puede contener unos de estos dos valores:

    • md5: se utilizará la contraseña cifrada con el algoritmo MD5 contenida en el parámetro md5_cred

    • userpass: se utilizará la contraseña en texto plano contenida en el parámetro password

Para crear contraseñas cifradas con el algoritmo MD5 la sintaxis es:

echo -n "<extensión>:<realm>:<secret>" | md5sum

si la extensión es la 1000, el realm es asterisk y la contraseña en texto plano es fulano, sería:

echo -n "1000:asterisk:fulano" | md5sum

cuyo resultado:

f82ba1812a9539177e10c982adc2bbad

¿Preguntas?

Vota el Articulo: 

Sin votos (todavía)
Evalúa la calidad del articulo
Suscribirse a Comentarios de "Las funciones HASH MD5 y SHA-1 declaradas obsoletas" Suscribirse a VozToVoice - Todos los comentarios