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.
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.
Visualizando el enlace
Cuando el usuario que recibe la URL y accede a ella, verá el secreto si este no ha expirado:
Si ha expirado, ya no se mostrará:
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.
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!