SHA-1 ha muerto como cifrado seguro y podría matar las descargas torrent

SHA-1 ha muerto como cifrado seguro y podría matar las descargas torrent

Alberto García

Los protocolos de cifrado que usamos en la actualidad son, en su mayoría, seguros. Hay muchos como bcrypt, SHA-256 o SHA-3 que son muy robustos, pero por desgracia hay muchos servicios y plataformas que usamos a diario que todavía utilizan SHA-1, lanzado en 1995. SHA-1 fue roto en 2017 por Google, y hace unos meses pasó a ser completamente vulnerable a ataques de fuerza bruta sin requerir demasiados recursos. Y el protocolo BitTorrent lo utiliza.

Hoy, desarrolladores de dos librerías open source de Secure Shell, el protocolo usado por millones de ordenadores para realizar conexiones cifradas, van a retirar SHA-1 como algoritmo de cifrado cuatro meses después de que un grupo de investigadores terminasen de matar definitivamente el algoritmo. Si se siguiese usando para firmar claves de cifrado, se abriría la puerta a manipular conexiones entre ordenadores.

Cuando se usa uno de estos algoritmos de cifrado, se genera un hash único para cada archivo, mensaje o cualquier tipo de dato que sea inmune matemáticamente a cualquier tipo de ataque de colisión. Con estos ataques, se puede generar un mismo hash para dos archivos diferentes, lo cual es realmente peligroso porque se puede sustituir un programa normal por malware.

En enero de 2020, un grupo de investigadores consiguieron romper el cifrado con un ataque costó sólo 45.000 dólares, frente a los 117.000 que le costó a Google. Por ello, han decidido dejar de darle soporte en OpenSSH. Sin embargo, hay plataformas como el estándar de pagos EMV o Git que todavía usan SHA-1, aunque en este último caos sólo para verificar la integridad de datos de manera similar a MD5.

El protocolo BitTorrent usa SHA-1

El problema es que el protocolo BitTorrent utiliza SHA-1 precisamente para eso, para verificar la integridad del hash de un torrent. A primera vista puede no parecer grave, ya que no se aplica como una medida de seguridad directa para proteger las conexiones, pero eso no es más que una excusa para justificar la utilización de un hash poco seguro.

El protocolo BitTorrent usa un método llamado “chunking”, en el cual los archivos se dividen en bloques con tamaños que van desde los 64 KB a los 2 MB. Cada uno de esos bloques tiene su propio hash, y ese hash se almacena en los metadatos del archivo .torrent o de los datos bajados por el enlace .magnet que descargas.

1337x torrent

Así, imagina que un atacante modifica uno de estos paquetes para introducir malware en un torrent (por ejemplo, el crack subido junto a un juego completo). Al poder lanzar una ataque de colisión contra el hash, puede generar un hash final idéntico al del archivo original, pero con un archivo diferente que lleva malware. Con un hash no corrompible eso no pasaría.

Y lo peor no es eso, sino que conforme se vayan optimizando los ataques y vaya bajando el precio de realizar estos ataques, un atacante puede corromper las partes que quiera de un torrent, y corromper el archivo final que bajemos, lo cual puede ser usado por la industria del copyright para bloquear este tipo de descargas a todos los usuarios. Y además, el archivo corrupto empieza a distribuirse automáticamente entre todos los usuarios que descarguen el torrent sin que el atacante tenga que hacer nada. La semilla puede desaparecer a los pocos días conforme más y más usuarios estén distribuyendo la copia modificada. Actualmente hacer esto es caro, pero es 100% viable para quien tenga los recursos. Y en los próximos años el precio seguirá cayendo conforme aumente la potencia del hardware.

Por suerte, hay una solución: que el protocolo BitTorrent deje de utilizar SHA-1 como hash de verificación y pase a usar alternativas más seguras. Eso implicaría tener que actualizar todos los gestores de torrent disponibles en la actualidad. Este cambio es perfectamente viable, pero de momento no hay incentivos para hacerlo por la relativa dificultad y bajo interés que hay en llevar a cabo este tipo de ataques.