No se si alguna vez te has visto en la necesidad de compartir una contraseña con alguien, o que la compartan contigo, pero a mi me ha pasado muchas veces. Es algo bastante habitual si trabajas en IT. «Pásame las credenciales para acceder al FTP», «te he dado de alta: toma, aquí tienes tu contraseña», «este es al API KEY para acceder a la API», etc. son algunas de las frases que podemos escuchar en nuestro día a día. O simplemente queremos mandar un texto del cual queremos controlar cuanto tiempo va a poder verse o por quien.
Compartir contraseñas por correo y por chat es inherentemente inseguro. Normalmente dentro del mismo correo suele haber contexto sobre este, e incluso cuando se envía en un mail por separado, este puede ser re-enviado y se pierde el control. Ni que decir que lo mismo sucede si compartimos por Teams, Telegram, Whatsapp, o cualquier otro chat.
Además, tanto en el correo como en los chats, estos secretos van a quedar expuestos para siempre.
Hoy os vengo a hablar de mi libro: Share Secrets, una herramienta web para poder compartir una contraseña de forma segura y controlada. Ojo, no es un gestor de contraseñas, es para compartir un secreto de forma puntual y que este solo sea visible durante un periodo muy controlado.
A continuación, os explico como.
Generando el enlace para compartir una contraseña
La clave esta en que no vamos a compartir un secreto directamente, lo que compartiremos en realidad es un enlace que nos llevará a la página para visualizar este secreto. Este secreto será visible o no a partir de una serie de parámetros de configuración en la pantalla de generar el enlace: cuantas veces se va a poder ver el secreto o contraseña y durante cuanto tiempo va a estar activo. El secreto va a dejar de ser visible una vez se cumpla una de estas dos condiciones.
![Pantalla para generar el enlace para compartir una contraseña](https://daniccardenas.com/wp-content/uploads/2021/09/image-2-1024x700.png)
Una vez se definen los parámetros de configuración (por defecto un día y una visualización), desde el propio navegador se generan las claves publica y privada se encripta el secreto con estas claves. Al servidor se envía la clave publica y el secreto encriptado, por lo que al no tener la clave privada, es imposible que nadie visualice ese secreto, incluso si se tiene acceso a la base de datos. Podría publicar lo que se guarda en la base de datos en Facebook o Twitter, que aún así nadie podría ver el secreto 🙂
Una vez se almacena el secreto encriptado en la base de datos se genera un código que permite identificar el secreto. La URL se genera usando este código y la clave privada generada para encriptar. Por lo tanto, cuando desde la URL se recupere el secreto encriptado (que recordemos, contiene el secreto y la clave pública), desde el navegador del usuario se desencriptará el secreto usando todos los datos. Por eso, sin la URL original es imposible ver el secreto.
![Enlaces generados para compartir una contraseña](https://daniccardenas.com/wp-content/uploads/2021/09/image-3-1024x363.png)
Visualizando el enlace
Cuando el usuario que recibe la URL y accede a ella, verá el secreto si este no ha expirado:
![Vista del secreto](https://daniccardenas.com/wp-content/uploads/2021/09/image-4-1024x326.png)
Si ha expirado, ya no se mostrará:
![Secreto no visible](https://daniccardenas.com/wp-content/uploads/2021/09/image-5-1024x298.png)
Finalmente, para poder tener un poco mas de control sobre si se ha visto o no el secreto generado, se puede consultar un log de visualizaciones. Aquí se mostraran todas las peticiones de visualización, incluso cuando el sistema no muestra el sistema.
![Log de visualizaciones](https://daniccardenas.com/wp-content/uploads/2021/09/image-6-1024x463.png)
Próximas actualizaciones
Una vez lanzada la versión uno, ya tengo pensadas algunas actualizaciones para intentar darle un poco mas de recorrido. Por un lado, ya tengo a medias algunas utilidades mas que se unirán a DevTools, como un generador de contraseñas y un acortador de URL. Por supuesto, estas dos nuevas herramientas se integrarán con Share Password.
También quiero traducir los textos y hacer que todo sea multi-idioma, para poder llegar a mas gente.
Finalmente, añadiré un par de páginas más a la web con una FAQ y un About. Creo que de momento eso es todo, aunque acepto sugerencias que son muy bienvenidas.
Todo esto en: Share Secrets
¡Nos leemos!