Implementación de secp256k1 en scuttlebutt seguro (ssb) para crear aplicaciones multiplataforma ethereum-scuttlebutt – ethereum research eurocrypt 2016

Secure-scuttlebutt ha sido construido con compatibilidad futura para diferentes criptoprocesados. Esto incluye los tipos de curva elíptica para la firma y el cifrado, así como la criptografía y el libro de texto de seguridad de red, pdf, como funciones hash utilizadas para direccionamiento de contenido. Las claves y los hashes se representan como cadenas que contienen la clave codificada en base64 seguida de un delimitador, ‘.’, Seguido de un sufijo que describe el criptográfico primitivo llamado bomba utilizado, por ejemplo ‘ed25519’ o ‘sha256’. Esto hace que la introducción de nuevos tipos de direcciones sea mucho más fácil, pero todavía hay una serie de problemas que abordar.

Para implementar las claves secp256k1, deberíamos considerar cómo realizar la multiplicación escalar de estilo DH para crear secretos compartidos, tanto para usarlos en el saludo secreto como para crear mensajes encriptados usando “caja privada”. Las implementaciones que hemos analizado nos dan esto sin convertir las claves principales cinco criptomonedas para invertir en 2018, pero el cifrado de curva cruzada presenta un problema. Módulos SSB relevantes: apretón de manos secreto

Tenemos una prueba de concepto que muestra que la funcionalidad de la caja privada se puede lograr con las teclas secp256k1. Más desafiante es hacer que funcione con una variedad de destinatarios con una combinación de las teclas curve25519 y secp256k1. La dificultad es que otro módulo, ‘ssb-keys’ primero elimina el sufijo descriptivo (por ejemplo: ‘.Ed25519’) antes de convertir las claves y los métodos de llamada de private-box. Por lo tanto, no podemos crear una solución sin modificar ambos módulos. Ssb-validate

Implementar un sistema de firma y verificación de mensajes con lo que es la criptografía en usuarios de comercio electrónico con diferentes tipos de claves es mucho más fácil que cifrar mensajes a múltiples partes con diferentes tipos de claves. Esto se debe a que solo necesitamos “tratar con” un usuario a la vez. Para crear una firma, necesitamos el mensaje, una clave privada y para saber qué tipo de clave privada es Cryptosporidium parvum. Para verificar que necesitamos el mensaje, la firma, la clave pública y para saber qué tipo de clave pública es. A diferencia del cifrado DH, no hay casos difíciles de bloqueo de minero de criptomonedas que tengan una combinación de claves de diferentes tipos. Además, las bibliotecas secp256k1 tienden a tener métodos bien desarrollados y seguros para firmar y verificar porque es el principal mecanismo de seguridad utilizado en las criptomonedas.

Scuttlebutt usa las claves ed25519 y curve25519, donde tanto las claves públicas como las secretas tienen una longitud de 32 bytes. Las claves públicas de Secp256k1, en su forma comprimida, son de 33 bytes. Este es el valor x de 32 bytes precedido por 0x02 o 0x03 que depende del lanzamiento de la lotería Crypto Millions sobre si el valor de y es par o impar. Esto es un problema porque algunas de nuestras funciones (p. Ej., El cifrado mediante ‘caja privada ‘) involucran varias claves para generar un secreto compartido. Si tenemos una combinación de ambos tipos de claves, es imposible saber cuándo termina una y comienza la otra.

Este es un problema grave, y si bien el salario de un criptólogo en la India puede ser posible tener una forma de producir secretos compartidos entre las teclas en diferentes curvas, puede haber riesgos de seguridad. Es posible derivar un par de llaves “equivalente” en la curva del otro usuario utilizando nuestra propia clave secreta como semilla, y luego enviar la clave pública correspondiente junto con el mensaje cifrado. Pero esto hace que sea más difícil verificar quién fue el autor del mensaje. Dado que los mejores mensajes de Apple de la aplicación de criptomoneda también están firmados, esto quizás no sea un gran problema, pero no es lo ideal.

Una mejor opción es generar una nueva dirección del tipo de clave alternativa y publicar automáticamente un mensaje público firmado que contenga la clave pública, algo similar a un certificado TLS. Es decir, un usuario con una dirección secp256k1 podría publicar una clave pública de cifrado 2018 de curve25519 firmada para el cifrado. Esto proporciona una mejora de la seguridad porque generalmente se considera una mala práctica usar el mismo par de llaves para la firma y el cifrado. De hecho, hay cierta discusión sobre la implementación de esto en SSB, ya que actualmente las claves de cifrado se derivan de las claves de firma, lo que tampoco es ideal. Esto también significaría que no explicaríamos la criptografía de clave pública por los problemas de las diferentes longitudes de clave pública o los diferentes tipos de clave efímera descritos anteriormente. Seguridad

Este documento se centra en los desafíos técnicos. Sin embargo, la comunidad SSB es un ecosistema participativo donde las decisiones se toman juntas. Realizar un cambio significativo en el protocolo requerirá la discusión y el consenso de los desarrolladores y usuarios. Si el cambio trae problemas de seguridad o genera predicciones de criptomoneda para cuestiones ideológicas, puede ser difícil llegar a un acuerdo. Conclusiones

Nos hemos centrado en la viabilidad técnica de implementar un tipo de curva elíptica diferente en SSB. Si bien hemos identificado algunos desafíos, creemos que pueden superarse y que es posible construir una prueba de concepto funcional. Pero somos conscientes de que hay un largo viaje entre tener una prueba de concepto y un sistema de trabajo en el mundo real que funcione con todos los clientes disponibles sin problemas o problemas.

banner