Auditoría de Seguridad (por Jean Philippe Aumasson)

This page is machine-translated.
Ergo Team

12 de enero de 2020

Nos gustaría anunciar que Ergo ha pasado con éxito la auditoría de seguridad de ciertas partes (las más críticas) del código. Esta vez la auditoría fue realizada por Jean-Philippe Aumasson (también conocido como veorq, https://aumasson.jp/ ).

El informe detallado se encuentra a continuación. No se encontró nada crítico. Comentarios sobre los problemas encontrados:

  1. Sobre la contraseña de la billetera, proporcionaremos una recomendación en las próximas versiones del cliente del protocolo. No estamos seguros de que se aplique una imposición estricta sobre la contraseña, pero haremos más consultas al respecto.
  2. Cambiar los parámetros "n" y "k" tiene sentido solo al lanzar una nueva red. Cambiar estos parámetros en un nodo de minería hará que los bloques producidos sean inválidos para otros nodos. Cambiar estos parámetros en el cliente del protocolo significa ir a otro fork (los bloques provenientes de los participantes honestos del protocolo serán rechazados). Así que tal vez no sea necesario realizar verificaciones adicionales, ya que las personas que lanzan nuevas redes establecerán "n" y "k" correctamente.
  3. Actualmente, el nodo de Ergo (así como otros clientes de protocolo de blockchain y billeteras de los que tenemos conocimiento, así como las bibliotecas criptográficas que estamos utilizando) no proporciona protección contra ataques de canal lateral que se ejecutan localmente (por ejemplo, ataques de temporización o inspección de memoria por malware o virus). ¡Así que por favor protejan las máquinas en las que están ejecutando billeteras!

==========================================================================================================

% Evaluación de seguridad de Ergo % Jean-Philippe Aumasson % 07/Dic/19

Resumen

Ergo nos solicitó realizar una evaluación de seguridad de varios componentes de su Plataforma Ergo:

  • Creación y verificación de pruebas del protocolo Sigma
  • Almacenamiento seguro de secretos de la billetera
  • Validación de Prueba de Trabajo

​Este breve informe resume nuestra evaluación y describe nuestros hallazgos y recomendaciones de mitigación.

Pruebas del protocolo Sigma

​El protocolo Ergo se basa en ErgoScript, un lenguaje de scripting que soporta declaraciones sigma, que pueden ser probadas y verificadas a través de pruebas no interactivas de conocimiento.

Estas pruebas son declaraciones descritas como un árbol de condiciones AND, OR y de umbral, cuyas hojas son pruebas de conocimiento de un problema de logaritmo discreto.

La prueba de la declaración sigma se hace no interactiva gracias a la transformación de Fiat-Shamir.

Esta lógica está especificada en el documento de ErgoScript, y las rutinas específicas de prueba y verificación se describen en su Apéndice A.

​Los desafíos de implementación son:

  • Definir la codificación de las pruebas que sean seguras y eficientes, e implementar la serialización y deserialización que siempre tenga éxito en el procesamiento de entradas válidas, y que siempre falle de manera controlada al procesar entradas inválidas.
  • Implementar correctamente las funcionalidades de prueba y verificación, de acuerdo con la especificación, y lo más importante, de tal manera que ninguna declaración inválida pueda pasar la verificación con éxito.

Revisamos estos dos aspectos, basándonos en el código en el repositorio sigmastate-interpreter, y en el documento de ErgoScript, comparando cuidadosamente el comportamiento previsto (en el Apéndice A) con el comportamiento real tal como se implementó.

​Notablemente revisamos el código de los rasgos y objetos SigSerializer, Interpreter, y ProverInterpreter.

​Principalmente buscamos errores de las siguientes clases:

  • ​Procesamiento inseguro de entradas malformadas
  • Procesamiento inseguro de entradas inusualmente largas o cortas
  • Comportamiento cuando hay una gran profundidad de árbol o nivel de recursión
  • Uso inseguro de tipos y estructuras de Scala
  • Tipos de variables inapropiados
  • Desbordamientos de enteros
  • Condiciones de carrera
  • Errores lógicos

​A pesar de una revisión extensa, no identificamos ningún problema de seguridad.

La lógica y los internos del protocolo son, no obstante, relativamente complejos, y creemos que el mayor riesgo está en el análisis y verificación de pruebas. Para explotar tales problemas, sin embargo, un atacante tendría que crear un script semánticamente correcto que de alguna manera le beneficie, pero que pase la verificación cuando no debería.

En cuanto a la seguridad del software, Scala elimina ciertas clases de errores, pero el código de Scala aún puede sufrir errores debido al comportamiento específico de Scala o a errores no manejados.

Billetera

La funcionalidad de la billetera de Ergo permite a sus usuarios almacenar un secreto en el disco y recuperarlo, inicializando la billetera con una nueva semilla cuando se usa por primera vez.

​Esta lógica está principalmente definida en ErgoWalletActor, y un componente clave respecto al almacenamiento de secretos es JsonSecretStorage.

​La primera vez que se crea una billetera, el comando InitWallet hace lo siguiente:

  • Generar settings.walletSettings.seedStrengthBits bits aleatorios, como entropía inicial. Por defecto, se generan 160 bits.
  • Generar un BIP39 a partir de los bits aleatorios generados, que se puede ver como una codificación de los bits de entropía. Se utiliza la lógica estándar de BIP39, con contraseña opcional.
  • Derivar una semilla de la mnemotecnia utilizando la lógica de derivación basada en PBKDF2 de BIP39.
  • Cifrar esta semilla en el disco con AES-GCM, utilizando un nonce aleatorio, y una clave derivada de la contraseña utilizando PBKDF2-HMAC-SHA256 con 128000 iteraciones, utilizando una sal aleatoria.

Para desbloquear una billetera ya creada, un usuario proporciona la contraseña y la billetera intenta descifrar los datos almacenados.

​Para restaurar una cuenta existente a partir de una frase de paso BIP39, se realiza un proceso similar al de la inicialización, excepto que la billetera derivará la semilla de la mnemotecnia en lugar de elegir una mnemotecnia aleatoria.

​Los dos riesgos que identificamos aquí son:

  • La ausencia de verificaciones sobre la longitud de la contraseña: dado que la contraseña es suficiente para acceder a la semilla dada la secreta almacenada en disco de la billetera, la contraseña debería en teoría tener al menos tanta entropía como la mnemotecnia, y en la práctica debería ser prácticamente difícil de romper. Por lo tanto, recomendamos imponer una longitud mínima de contraseña, por ejemplo, de 16 caracteres.
  • Las copias de los valores secretos (contraseña, semilla y claves privadas derivadas) probablemente permanecerán en la memoria después de la ejecución del software de la billetera, lo cual es una limitación intrínseca de los lenguajes recolectados por basura como Scala.

Otro proceso o usuario que comparta el mismo espacio de direcciones de memoria podría potencialmente recuperar los secretos, y también podrían aparecer en volcado de memoria. Hasta donde sabemos, no hay una mitigación efectiva en Scala puro.

Validación de PoW

​Después de revisar previamente la seguridad de Autolykos PoW, realizamos otra ronda de revisión centrada en su lógica de verificación más reciente, y notablemente los cambios en el commit eb0f85a.

​El archivo principal relevante es AutolykosPowScheme, y otras operaciones importantes se implementan, por ejemplo, en HeadersProcessor y ModifierValidator.

​Verificamos que la lógica de verificación implementada es consistente con la especificada en las especificaciones de Autolykos, y que está correctamente integrada en la lógica de validación del encabezado del bloque.

​Creemos que los siguientes puntos deben ser abordados:

  • Validación más estricta de k y n: aunque la clase impone k<=32 (número de elementos en la solución) y n<31 (log2 del número total de elementos), aún podrían crearse débiles a partir de los parámetros autorizados. Por lo tanto, la función validate() puede tener validaciones adicionales que n y k sean iguales a los valores previstos.
  • Afirmar que k y n son valores positivos, ya que actualmente los negativos (como Ints) pasarían las declaraciones assert.

Share post

Ergo Infrastructure DAO: Descentralizando la columna vertebral del ecosistema Ergo

Ergo Infrastructure DAO: Descentralizando la columna vertebral del ecosistema Ergo

La misión de Ergo siempre ha estado arraigada en la descentralización, no solo en la capa de consenso, sino en toda la pila.

Ergo Platform

13 de agosto de 2025

Mew Finance: Un Kit de Herramientas DeFi Divertido para el Ecosistema Ergo

Mew Finance: Un Kit de Herramientas DeFi Divertido para el Ecosistema Ergo

Mew Finance es un conjunto de aplicaciones descentralizadas en la Blockchain de Ergo.

Ergo Platform

12 de agosto de 2025

Lithos: Descentralizando la Minería con Pools On-Chain

Lithos: Descentralizando la Minería con Pools On-Chain

Lithos es un nuevo protocolo diseñado para reformar cómo funcionan los pools de minería al trasladarlos a la cadena, dando a los m.

Ergo Platform

24 de julio de 2025

Sigma 6.0: Un Ergo Más Inteligente y Flexible

Sigma 6.0: Un Ergo Más Inteligente y Flexible

Sigma 6.0 es una importante actualización propuesta para la blockchain de Ergo.

Ergo Platform

23 de julio de 2025

Dando forma al futuro de Rosen: Una llamada comunitaria sobre cinco propuestas clave del Tesoro

Dando forma al futuro de Rosen: Una llamada comunitaria sobre cinco propuestas clave del Tesoro

El cofundador de Rosen, Armeanio, ha presentado cinco nuevas propuestas al Tesoro de Rosen.

Ergo Platform

9 de julio de 2025

El UTXO Ampliado de Ergo y el Auge de la Inteligencia Económica Artificial

El UTXO Ampliado de Ergo y el Auge de la Inteligencia Económica Artificial

Una Visión Práctica para Agentes Económicos Autónomos Los agentes económicos autónomos en la blockchain de Ergo realizan trabajos.

Ergo Platform

12 de mayo de 2025

ErgoHACK X: Inteligencia Artificial en la Blockchain de Ergo

ErgoHACK X: Inteligencia Artificial en la Blockchain de Ergo

Celebrando una Década de Innovación Descentralizada ¡Únete al décimo aniversario de ErgoHACK y sé parte de la revolución de la IA .

Ergo Platform

10 de abril de 2025

Introduccion a Privacidad y Seguridad en la Blockchain

Introduccion a Privacidad y Seguridad en la Blockchain

Luego del primer whitepaper que apareció en Internet en el 2008, la tecnología blockchain evoluciono enormemente.

Ergo Platform

17 de febrero de 2022

Método híbrido de calcular costes de Ergo

Método híbrido de calcular costes de Ergo

Introducción Verificar la validez de los contratos inteligentes en una blockchain de Prueba de trabajo (PoW) tiene costos, tanto.

Ergo Platform (Translated by Darkkknight, original version will always prevail)

9 de febrero de 2022

Ergo: una respuesta a los fallos de la teoría monetaria moderna

Ergo: una respuesta a los fallos de la teoría monetaria moderna

En 2008, un grupo o persona desconocida lanzó un depósito de valor peer-to-peer y lo llamó Bitcoin.

Ergo Platform (Translated by Comet Community, original version will always prevail)

8 de febrero de 2022

Summit de Ergo : Evento para la privacidad

Summit de Ergo : Evento para la privacidad

Únase a nosotros del 17 al 23 de febrero de 2022 para este evento.

Ergo Foundation (translated by Daniu, original version will always prevail)

5 de febrero de 2022

Finanza descentralizada y privacidad opcional en Ergo

Finanza descentralizada y privacidad opcional en Ergo

Privacidad financial y blockchains públicas Bitcoin es una red de contabilidad distribuida pública a la que pueden acceder todos.

Ergo Platform (translated by Daniu, original version will always prevail)

1 de febrero de 2022

Alquiler por almacenamiento y el futuro de la minería

Alquiler por almacenamiento y el futuro de la minería

Terminología Storage Rent: Alquiler por almacenamiento (se entenderá más adelante) Introducción Los mineros son la capa de con.

Ergo Platform (translated by Daniu, original version will always prevail)

27 de enero de 2022

ErgoHack III: Construyendo la privacidad y seguridad del mañana

ErgoHack III: Construyendo la privacidad y seguridad del mañana

Ergo es una plataforma PoW de contratos inteligentes de código abierto basada en principios económicos de base.

Ergo Foundation (translated by Daniu, original version will always prevail)

20 de enero de 2022

Ergo & Blockchain: Escalabilidad y adopción

Ergo & Blockchain: Escalabilidad y adopción

En este episodio de la serie Ergo & Blockchain, veremos varios aspectos de escalabilidad y por qué son cruciales para la adopció.

Ergo Platform (translated by Daniu, original version will always prevail)

18 de enero de 2022

ErgoHack III Información para registrarse

ErgoHack III Información para registrarse

ErgoHack III tendrá lugar en Febrero 11-13, 2022 Registros abiertos hasta el 31 de Enero, 2022 Con el registro ya abierto, exi.

Ergo Foundation (translated by Daniu, original version will always prevail)

6 de enero de 2022

Ergo Rewards de minería: primera reducción de la emisión

Ergo Rewards de minería: primera reducción de la emisión

Las recompensas de la minería Ergo experimentaron su primera caída en el calendario de emisiones el 2 de enero de 2022 con el bl.

Ergo Platform (translated by Daniu, original version will always prevail)

4 de enero de 2022

¡Hola! soy nuevo, ¿por qué es Ergo un buen proyecto?

¡Hola! soy nuevo, ¿por qué es Ergo un buen proyecto?

¿Qué encontrarás en este artículo? Son numerosas las veces que un nuevo ergonauta en potencia entra a uno de los grupos en españo.

Daniu

1 de enero de 2022

Ergo Platform 2021: Resumen de este año

Ergo Platform 2021: Resumen de este año

A medida que el mundo intenta recuperarse de los efectos de Covid y las diferentes etapas de las restricciones de bloqueo, las c.

Ergo Platform (translated by Daniu, original version will always prevail)

30 de diciembre de 2021

Ergo y Blockchain: Tecnología e Innovación

Ergo y Blockchain: Tecnología e Innovación

La idea inicial detrás de Bitcoin se basó en la promesa de un comercio protegido de puntos centralizados de falla.

Ergo Platform (translated by Daniu, original version will always prevail)

28 de diciembre de 2021

Minería en Ergo: Herramientas de descentralización

Minería en Ergo: Herramientas de descentralización

Ergo es una cadena de bloques PoW (Prueba de trabajo) en el modelo de consenso llamado Autolykos.

Ergo Platform (translated by Daniu, original version will always prevail)

23 de diciembre de 2021