-
El error fue detectado por un bloguero que hizo la acusación por Twitter.
-
En 2018 IOTA tuvo que cambiar su algoritmo al detectar que generaba colisiones.
El usuario de Twitter @SoatokDhole presentó en su blog una investigación en la que demostraba que el algoritmo criptográfico Kerl, que actualmente utiliza IOTA para cifrar sus operaciones, estaba generando colisiones en la salida.
Una colisión es un hecho ocurre cuando un algoritmo de encriptación genera salidas iguales ante entradas diferentes. Esto es especialmente delicado si el algoritmo se utiliza para generar direcciones de carteras, donde se almacenan los fondos de un usuario.
Si dos personas diferentes tienen acceso a una misma dirección debido a una colisión, significaría que cualquiera puede hacer uso de los fondos asociados a esta. Que un algoritmo genere colisiones es un despropósito para la criptografía.
En su publicación, Soatok explica que Kerl es una variación de otro algoritmo criptográfico: Keccak-384. Keccak tiene comprobada efectividad, pero, en el caso de IOTA, presenta problema de colisión.
La razón es que IOTA tiene la característica de codificar sus entradas en sistema de numeración ternario {-1,0,1} en vez de un sistema binario {0,1}. En los sistemas de numeración ternarios balanceados, como el que usa IOTA, la mínima unidad de información se llama trit (trinary digit), y sería equivalente a un bit en un sistema binario.
El bloguero explica que las colisiones que encontró parecen ser una consecuencia de siempre poner a cero el último “trit” antes de pasar la entrada a Keccak-384. Luego publica un set de entradas que generan el error, aunque pueden haber muchas más.
¿Qué responden los representantes de IOTA sobre el error?
La fundación IOTA, por medio de un tweet de su Director de Alianzas, Holger Köther, ha respondido ante estas acusaciones. La respuesta vino de un post en Reddit donde Wolfgang Welz, un usuario que se denomina “Investigador Computacional Senior” presenta una explicación.
Según Welz “el algoritmo Kerl posee resistencia a las pre-imágenes debido a que corre sobre una función Keccak tradicional. Sin embargo, es correcto que Kerl no es una función hash criptográfica general y no debe usarse para fines generales fuera del Protocolo IOTA”.
¿Qué responde quien descubrió el error en la criptografía?
One of many reasons not to use #iota — These two inputs to their Kerl hash function collide:
GYOMKVTSNHVJNCNFBBAH9AAMXLPLLLROQY99QN9DLSJUHDPBLCFFAIQXZA9BKMBJCYSFHFPXAHDWZFEIZ
GYOMKVTSNHVJNCNFBBAH9AAMXLPLLLROQY99QN9DLSJUHDPBLCFFAIQXZA9BKMBJCYSFHFPXAHDWZFEIH
— soatok@home~$ (@SoatokDhole) July 15, 2020
«Una de las muchas razones para no usar IOTA: estas dos entradas a sus funciones hash Kerl colisionan», twitteó Soatok.
Para el bloguero, esto es importante porque forma parte de un patrón que tienen los desarrolladores de IOTA. Soatok plantea tres posibles explicaciones:
- Es una puerta trasera diseñada para ser explotada por quienes diseñaron la red IOTA. Esto pasó con su anterior algoritmo, el Curl-P-27.
- Cometieron un error crítico en diseño del algoritmo Kerl. Este puede ser explotable en alguno de los lugares donde usan Kerl.
- Es cierta la justificación que dan los representantes de IOTA, y no hay forma de explotar esta vulnerabilidad.
Pero Soatok es insistente y declara “incluso si esto no es explotable dentro de Iota, sigue siendo un gran error en el diseño de Kerl.”
Desde el 2018, IOTA se ha visto afectada por denuncias de vulnerabilidad. Ese año fue que se descubrió que el algoritmo Curl-P-27, que utilizaban originalmente, presentaba colisiones a la salida. Ese año CriptoNoticias publicó que IOTA había cambiado su algoritmo y ofrecía recompensas a quienes fueran capaces de vulnerar su red.
Este año la red fue hackeada otra vez y estuvo casi un mes desconectada. El proyecto sigue teniendo defensores y detractores. Sin embargo, no se ha podido recuperar de la crisis de reputación de 2018, donde se criticó el ego de los desarrolladores.