Desde el origen del tiempo, la información es poder. En la antigüedad, aunque no tenían cifrados como los de la actualidad, los griegos y romanos compartían el gusto por los códigos, desde esconder mensajes en el cuero cabelludo hasta cifrarse en pinturas.
En muchas ocasiones, especialmente en el ámbito empresarial, es necesario transmitir una información que por su carácter es de vital importancia para la empresa o las personas que se comunican una cierta información, ya que esta puede ser muy tentadora para la competencia o curiosos, por lo que se debe asegurar que no pueda ser captada por ellos. Un cifrado es un canal para ocultar un mensaje, donde las letras son sustituidas o traspuestas por otras letras, pares de letras y en ocasiones, por muchas letras.
¿Que es el Secret Store?
Es un módulo desarrollada por el equipo de Parity Tech para su cliente de Ethereum, el cual permite guardar en la Blockchain fragmentos de una clave ECDSA y la reconstrucción de ella depende un contrato inteligente. Todo esto sucede en un sistema criptográfico que hace que los nodos no puedan leer la clave por su cuenta, por lo tanto los mensajes / documentos sean totalmente seguros.
¿Que puede hacer Secret Store por Alice?
Este módulo de Parity puede generar para Alice en una sesión un par de claves ECDSA
Este es un ejemplo básico de lo que pudiera realizar el Secret Store.
- Alice y Bob son los actores principales del ejemplo. Ellos quieren compartir un secreto (data cifrada en método seguro y descentralizado)
- Para que los actores puedan interactuar con la Blockchain, la API de Secret Store tiene que ser abierta en un puerto específico en uno de los nodos.
- Los tres nodos que comparten el módulo de Secret Store están configurados para servir como el motor para generar las claves ECDSA distribuidas.
- En el tope de este esquema, existe un contrato inteligente que maneja los permisos, donde el actor emisor del mensaje puede setear cuales direcciones son las que están autorizadas para recibir las herramientas criptográficas necesarias para descifrar el mensaje.
- Se puede observar que existe un nodo regular (node 4) que está presente en la red (guarda transacciones, mina, etc) pero no guarda un fragmento de la clave que están compartiendo.
Esto quiere decir que Alice (o Bob) será capaz de cifrar documentos, mail, contraseñas, imágenes, etc, con una clave secreta que será repartida entre el ecosistema de nodos (el umbral puede ser definido por el emisor). Con esto Alice o Bob solo necesitan compartir el Document Key ID y el documento cifrado a la persona autorizada para descifrarlo.
¿Por qué utilizar un sistema criptográfico y el fragmentado de las claves ECDSA?
En criptografía, un sistema criptográfico, es llamado sistema criptográfico de umbral, donde para descifrar un mensaje o firmar un mensaje, varias partes deben cooperar en el protocolo de descifrado o firma. El mensaje es cifrado usando una clave pública y la clave privada es distribuida entre los participantes.Supongamos que n es el número de nodos,este sistema es llamado (t,n)-umbral si al menos una cantidad t de nodos pueden descifrar el documento, mientras que menos de t nodos no tienen información útil.
Supongamos que se tiene de un polinomio de 5 grado.
Aún cuando la gráfica está generada por n infinitos puntos y teniendo uno solo no se obtiene más información del polinomio, si se llegan a tener t puntos de n es posible reconstruir la función dada.
Esto nos ayuda a entender porqué este módulo es interesante, significa que el Secret Store está en la Blockchain y que no existe manera que un solo nodo pueda usar la información disponible para descifrar algún mensaje (a menos que se plantee un esquema donde solo existe un nodo) y que el fragmento de la clave ECDSA que guarda no tenga sentido o valor a menos que el umbral mínimo sea alcanzado. Incluso cuando éste se alcanza, solo va a generar las herramientas necesarias para que el receptor pueda descifrar la data, sin que los fragmentos se guarden en otros nodos.
Conclusiones
El Secret Store de Parity pudiera ser una solución a la compartición de secretos entre diferentes actores, lamentablemente hasta este momento solo funciona con cuentas locales, es decir cuentas que tengan su KeyStore en el nodo donde se ejecuta la API del Secret Store, esperemos que se siga trabajando en el desarrollo y que próximamente sea posible generar secretos desde cualquier cuenta.