ETFFIN Finance >> Finanzas personales curso >  >> Criptomoneda >> Blockchain

Los números aleatorios no mienten:una mirada técnica más detallada a los recientes hacks de DeFi

A medida que las tarifas del gas Ethereum se dispararon a máximos históricos durante el mercado alcista de 2021, haciendo que muchos protocolos de finanzas descentralizadas (DeFi) sean inutilizables para usuarios ocasionales, varios proyectos se vieron obligados a desplegarse en otras cadenas.

Esto creó un gran aumento en la demanda de mecanismos de cadena cruzada, llamados puentes, capaces de transferir de forma segura los activos de los usuarios de una cadena a otra. Los puentes entre cadenas generalmente se pueden dividir en puentes de custodia centralizados (CCB) y puentes de no custodia descentralizados (DNCB).

Como es de esperar, la creciente demanda de puentes entre cadenas dio lugar a la aparición de una nueva ola de protocolos de diversa reputación. A medida que los puentes entre cadenas daban servicio a un grupo cada vez más valioso de activos de usuario, era solo cuestión de tiempo antes de que los actores maliciosos y los piratas informáticos se dieran cuenta.

Generalmente hablando, Los piratas informáticos apuntarán a los DNCB porque pueden aprovechar las deficiencias en los protocolos diseñados por equipos de desarrollo sin experiencia. Un pirata informático experimentado puede aprovechar fácilmente los errores de lógica o las lagunas incrustadas en la criptografía y el diseño de un protocolo mal diseñado.

Esto nos lleva al día de hoy:las secuelas de múltiples ataques a puentes entre cadenas. Otro ojo negro en una industria desgastada por la batalla. Recordar, solo en el mes de julio de 2021:

  • ChainSwap sufrió un ataque el 2 de julio, con un valor aproximado de $ 800K en activos de usuario.
  • Los grupos de liquidez AnySwap V3 sufrieron un ataque el día 10 de julio, por valor de casi $ 8 millones en $ USDC y $ MIM. AnySwap es un DEX de cadena cruzada impulsado por Fusion Network.
  • ChainSwap sufrió otro ataque, solo 9 días después del primer truco. Esta vez vale 4 millones de dólares en activos de usuario. ChainSwap es una plataforma respaldada por Alameda que une a Ethereum con Binance Smart Chain.

El propósito principal de este editorial es educar e introducir, con relativo detalle, dos elementos a menudo ignorados pero vitales de los puentes de cadena cruzada descentralizados:el número aleatorio "k" involucrado en la Computación Segura Multipartita (SMPC) y su derivada "R".

El truco de AnySwap:dos no siempre es mejor que uno

Según se informa, el hack de AnySwap ocurrió porque se firmaron dos transacciones separadas usando el mismo valor "R". El pirata informático utilizó estas dos firmas para realizar ingeniería inversa de la clave privada que controla la cuenta MPC de cadena cruzada de AnySwap y robó los fondos de los usuarios.

Pero que, exactamente, Qué es un valor "R"?

¿Qué es "R"? El talón de Aquiles de la seguridad de las cuentas

Una de las primeras lecciones que todos aprenden en blockchain es que los fondos en su billetera están controlados por su clave privada.

Todos habéis escuchado la frase:"no son tus llaves, no tus monedas ". Este idioma significa que cualquier individuo que tenga la clave privada de una billetera tiene control total sobre los activos en esa billetera. Por supuesto, lo único que se necesita para transferir fondos de una cuenta a otra es firmar una transacción con la clave privada de esa cuenta.

Actualmente, el algoritmo de firma digital estándar utilizado en blockchains es el algoritmo de firma digital de curva elíptica (ECDSA).

ECDSA pertenece a la categoría "no determinista" de algoritmos de firma digital. A diferencia de los algoritmos "deterministas" que siempre dan la misma salida dada una entrada en particular, Los algoritmos "no deterministas" pueden producir diferentes salidas incluso si se les da la misma entrada. Para ECDSA, esto significa que el mismo conjunto de datos, o transacción, tendrá múltiples firmas legales.

Cada vez que se firma una transacción con ECDSA, Se genera un número aleatorio criptográficamente seguro "k". "K" se utiliza para calcular un punto en la curva elíptica que, en turno, se utiliza para calcular el valor "R". Es fundamental que se genere un nuevo número aleatorio "k" cada vez que se firma una transacción con ECDSA.

Si se utiliza la misma "k" para firmar varias transacciones, el valor "R" de dos transacciones será el mismo y la clave privada se filtrará. Esto se conoce como colisión de valores "k" y es lo que provocó el hackeo de PS3 de Sony a finales de 2010. También es lo que provocó el hack de AnySwap.

Próximo, Examinemos cómo el hacker de AnySwap realizó ingeniería inversa de la clave privada que controlaba la cuenta MPC de cadena cruzada de AnySwap para robar los fondos de los usuarios.

Definitivamente dos no siempre es mejor que uno

Considere lo que sucede cuando se firman dos transacciones con el mismo número aleatorio "k". Dado que "k" se utiliza para derivar "R", el valor "R" de las dos transacciones también será el mismo. Llamemos a estas dos firmas (s1) y (s2).

Según ECDSA, las ecuaciones que representan estas dos transacciones son:

donde S1, S2, y "R" representan datos de firmas y representan datos de transacciones. Estos son todos los datos visibles públicamente en la cadena de bloques. Esto deja dos parámetros desconocidos restantes:el número aleatorio "k" y la clave privada de la cuenta.

Aquellos que recuerden su álgebra de secundaria sabrán inmediatamente cómo resolver los parámetros desconocidos usando las dos ecuaciones. La clave privada sk por lo tanto, se puede escribir como:

El hacker de AnySwap notó que dos transacciones tenían el mismo valor "R", lo que implica que se utilizó el mismo número aleatorio "k" en ambos. Esto permitió al pirata informático realizar ingeniería inversa de la clave privada que controla la cuenta MPC de cadena cruzada de AnySwap utilizando álgebra simple y robar los activos de los usuarios.

El error crítico fue que se usó el mismo número aleatorio "k" en múltiples transacciones. Claramente, "K" no se generó aleatoriamente. Entonces, ¿cómo podría haberse evitado esto?

La necesidad de una computación segura para múltiples partes

En comparación con las firmas de transacciones básicas, La computación segura multipartita (SMPC) es bastante compleja. Sin embargo, bien vale la pena el esfuerzo extra. Si SMPC, que es muy diferente de las firmas múltiples:se utiliza correctamente para generar números aleatorios reales, no hay riesgo de que se exponga el número aleatorio "k".

Al aprovechar SMPC, el agente firmante ya no es una persona individual, pero varias personas trabajando en conjunto para firmar transacciones.

Con firmas de transacciones básicas, un verdadero generador de números aleatorios por sí solo es suficiente para generar el valor "R" y garantizar la seguridad. Sin embargo, debido a que SMPC involucra a varias partes no relacionadas, siempre existe la amenaza de que una o más de estas partes sean malintencionadas.

Como tal, No es razonable permitir que una sola persona genere el valor "R" por sí sola, ya que puede ser un actor malintencionado. Si solo controlan el número aleatorio "k" y, en turno, el valor "R", podrán aplicar ingeniería inversa a la clave privada de la cuenta y robar activos. Por lo tanto, Se deben cumplir tres principios al usar SMPC para generar el valor "R":

  1. El valor "R" no puede ser generado por una sola persona;
  2. Ningún individuo puede conocer el número aleatorio "k" utilizado para derivar el valor "R";
  3. El número aleatorio "k" debe ser lo suficientemente aleatorio como para ser imparcial e impredecible.

En términos de Laymen, SMPC requiere que un grupo de personas trabajen juntas en una tarea sin saber en qué están trabajando, ni con quién están trabajando.

SMPC Standard-Setter:diseño de intercambio secreto verificable públicamente de Wanchain

Los puentes de cadena cruzada de Wanchain se basan en un mecanismo único que utiliza SMPC para mantener los activos de cadena cruzada bloqueados en cuentas administradas por 25 partes anónimas llamadas nodos Storeman. La cantidad de nodos Storeman se puede aumentar según sea necesario.

Al firmar transacciones desde la cuenta bloqueada, El valor "R" se determina conjuntamente por estos 25 nodos de Storeman a través de un proceso conocido como Compartición secreta verificable públicamente. Este proceso garantiza que no haya dos transacciones que tengan el mismo valor "R".

Los pasos específicos que llevan a cabo estos 25 nodos Storeman son los siguientes:

  1. Cada nodo Storeman (Pi) genera un número aleatorio "ki" localmente utilizando un generador de números aleatorios verdaderos;
  2. Cada nodo Storeman (Pi) comparte su número aleatorio "ki" con los otros nodos a través de un canal seguro utilizando el uso compartido secreto de Shamir.
    Shamir's Secret Sharing es un esquema para compartir secretos diseñado para compartir un secreto de forma distribuida. El secreto se divide en varias partes, llamadas acciones. El secreto se puede reconstruir utilizando un número mínimo de acciones. El uso compartido secreto de Shamir se utiliza a menudo en criptografía.
  3. Después de recibir los recursos compartidos secretos de los otros nodos, cada nodo Storeman recopila los recursos compartidos secretos y los multiplica por el punto base de la curva elíptica, y transmite el resultado;
  4. Cada nodo de Storeman realiza la interpolación de Lagrange utilizando los datos de transmisión para obtener un punto de curva elíptica cuya abscisa es el valor "R".

Aunque el proceso anterior es bastante complicado, el concepto central es bastante simple. El valor "R" está determinado conjuntamente por 25 nodos Storeman. Cada nodo de Storeman aporta parte del número aleatorio cifrado "k". Luego, el valor "R" se determina mediante operaciones criptográficas.

En otras palabras, los 25 nodos Storeman están trabajando juntos sin saber en qué están trabajando, ni quiénes son los otros nodos de Storeman.

Compartir secretos públicamente verificables:por qué es fundamental

El uso compartido secreto públicamente verificable garantiza que:

  1. Es imposible que dos transacciones tengan el mismo valor R

Hay dos razones principales para esto. Primero, el valor "R" está determinado conjuntamente por 25 nodos Storeman, en lugar de un individuo. En teoria, siempre que haya un solo nodo honesto, el valor "R" será aleatorio. Segundo, La contribución de cada nodo Storeman es generada por el generador de números aleatorios verdaderos.

Conjunto, dos transacciones solo tendrán el mismo valor "R" si la suma de los números aleatorios seleccionados por los 25 nodos de Storeman es la misma en dos transacciones. La probabilidad de que esto ocurra es 2 ^ (- 256). Es menos probable que te golpee un meteorito en este momento, mientras lees esta oración.

  1. El número aleatorio "k" utilizado para derivar el valor "R" permanece oculto

Como se demostró anteriormente, una vez que se conoce el número aleatorio "k", la clave privada puede someterse a ingeniería inversa. Al firmar transacciones desde la cuenta bloqueada, cada nodo Storeman solo genera una parte del número aleatorio "k". Dado que cada recurso compartido se transmite a través de canales seguros, ningún nodo Storeman puede recuperar el valor completo del número aleatorio "k".

En otras palabras, gracias al diseño SMPC de Wanchain, el número aleatorio "k" utilizado para derivar el valor "R" siempre permanece oculto. Las cuentas bloqueadas que se utilizan en los puentes de cadenas cruzadas líderes en la industria de Wanchain son extremadamente seguras. No hay posibilidad de que se filtre la clave privada.

Veredicto

El equipo de I + D de Wanchain no está de acuerdo con que el hack de AnySwap represente un riesgo general para otros proyectos que adoptan SMPC. El equipo de I + D de Wanchain, en alineación con otros desarrolladores de la industria que han implementado SMPC, no ve las vulnerabilidades o errores que permitieron el hack de AnySwap como un riesgo general.

El equipo también quiere enfatizar el importante papel que juegan los números aleatorios en la cadena de bloques. Los números aleatorios no solo se utilizan para firmar transacciones. Se utilizan en varios niveles de diseño técnico y son componentes importantes del consenso de PoS y los algoritmos de fragmentación. que determinan directamente la seguridad de una red blockchain.

Generar números aleatorios confiables de manera eficiente no es una tarea sencilla. Es el santo grial de franjas enteras de matemáticas y criptografía. Personas brillantes han dedicado sus vidas y sus mentes a optimizar la generación de números aleatorios.

Los desarrolladores de blockchain de todo el mundo deben continuar esta tradición y desarrollar algoritmos de generación de números aleatorios mejor distribuidos mientras continúan optimizando la generación de números aleatorios en la cadena. El futuro de DeFi, y de hecho blockchain en su conjunto, se basará en el trabajo realizado hoy.

Divulgación:este artículo fue escrito por el equipo de I + D de Wanchain.