Sí, Google se queja de nuestra contraseña nuevamente, y luego nuevamente, se envía un montón de cosas, estas curvas elípticas, puntos, pero en ningún momento, y hace un intercambio de Diffie-Hellman, es todo un asunto elegante, pero lo que obtienes nuevamente es esta clave de exportación, C24q y bla, bla, bla.
Y como se mencionó, esto básicamente nos permitió hacer toda la gestión de claves, resolver la gestión de claves para nuestra aplicación en un par de cientos de líneas de code, y todo es, no tienes que saber matemáticas ni nada, simplemente puedes construirlo, o ir a la aplicación y copiar lo que necesitas.
Pero hay una última cosa que nos falta, porque hasta ahora, esto funciona muy bien para construir una aplicación donde puedes colaborar con tus propios dispositivos. Puedes iniciar sesión desde diferentes dispositivos, diferentes navegadores, y siempre obtienes la misma clave abierta, y con eso, puedes obtener el armario, desbloquearlo y acceder a tus documentos. Pero dijimos que queremos construir algo colaborativamente, y esto es lo que también admite Lini.
Puedes compartir la invitación. Básicamente, queremos llegar a un punto en el que otra persona con su propio armario y tal vez diferentes permisos también pueda acceder al mismo documento. ¿Cómo lo hacemos? Bueno, si tienes un sistema de invitaciones, simplemente lo amplías. Por ejemplo, si tienes invitaciones por enlace. La invitación por enlace puede ser simplemente la URL con una barra diagonal y luego tienes un token que el servidor entiende para darte acceso a esos data.
Un dato interesante sobre las URL es que en realidad podríamos ocultar una clave en la parte del hash. Porque, dato curioso, ¿sabías que la parte del hash nunca se envía al servidor? Si tomas esta URL, la pones en el navegador y presionas enter, la parte del hash solo se queda en el cliente. Y esto es realmente, realmente útil para construir esta compartición de enlaces con cifrado de extremo a extremo en una aplicación.
Y luego, básicamente, en el otro cliente, en este caso, el que acepta la invitación, simplemente podemos obtener el parámetro del hash, en este caso la clave. Podemos aceptar la invitación al documento, en este caso usando TRPC con el token original. No la clave, sino el token para aceptar la invitación. Y una vez que sabemos que fue aceptada, simplemente la agregamos a nuestro propio armario. ¡Voilà! Y así es como puedes gestionar invitaciones en un sistema cifrado de extremo a extremo.
Sin embargo, hay una cosa. Probablemente no quieras poner la clave real en una URL que compartas, tal vez en Slack o en un correo electrónico, y así sucesivamente. Puedes idear esquemas más inteligentes. Y de hecho, hice esto en Linne, así que si revisas el código fuente, está descrito y documentado. Pero desafortunadamente, se me acaba el tiempo, así que esta tiene que ser una historia para otra ocasión. Mira la charla de seguimiento. En realidad, tengo la intención de escribir mucho sobre esto en los próximos meses, porque estuve muy inmerso en el tema en los últimos dos años y ahora quiero compartir todas estas lecciones aprendidas. Pero lo que quería mostrarte con esta charla es que ya existen herramientas o sistemas que podemos usar, bibliotecas que podemos usar, como Opaque y Zexion, y así sucesivamente, que facilitan mucho la construcción de aplicaciones cifradas de extremo a extremo. Pueden ser simples. Solo tienen authentication y enlaces de invitación. Pero ya es bastante poderoso. Y si tienes un subconjunto de data que te importa y que debe estar cifrado de extremo a extremo en tu aplicación, es posible que esté bien hacer solo eso.
Comments