Sí, Google se queja de nuestra contraseña nuevamente, y luego otra vez, 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 material sofisticado, pero lo que obtienes de nuevo es esta clave de exportación, C24q y yada, yada, yada.
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 código, y es todo, no tienes que saber matemáticas ni nada, solo puedes construirlo, o entrar en 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 locker, desbloquearlo y acceder a tus documentos. Pero dijimos que queremos construir algo colaborativo, y esto es lo que Lini también soporta.
Puedes compartir la invitación. Así que básicamente queremos llegar a un punto donde alguien más con su propio locker y tal vez diferente acceso también pueda acceder al mismo documento. ¿Cómo hacemos esto? Bueno, si tienes un sistema de invitaciones, solo lo extiendes. Por ejemplo, si tienes invitaciones por enlace. La invitación por enlace puede ser solo la URL con barra diagonal invitación, y luego tienes un token que el servidor entiende para darte acceso a esos datos.
Un hecho interesante sobre las URLs es que en realidad podríamos ocultar una clave en la parte de hash. Porque dato curioso, ¿sabías que la parte de hash nunca se envía al servidor? Si tomas esta URL, la pones en el navegador y presionas enter, la parte de hash solo permanece en el cliente. Y esto es realmente, realmente agradable para básicamente construir esta UX de compartir enlaces con aplicación cifrada de extremo a extremo.
Y luego básicamente en el otro cliente, en este caso, el que acepta la invitación, podemos simplemente sacar el parámetro de hash, en este caso la clave. Podemos aceptar la invitación del documento, en este caso usando TRPC con el token original. No la clave, sino el token para aceptar la invitación. Y luego una vez que sabemos que fue aceptada, simplemente la agregamos a nuestro propio locker. ¡Voila! Y así es como puedes gestionar invitaciones en un sistema cifrado de extremo a extremo.
Hay una cosa, sin embargo. Probablemente no quieras poner la clave real en una URL que compartas, tal vez en Slack o un correo electrónico o algo así. Puedes idear esquemas que sean un poco más inteligentes. Y de hecho hice esto en Linne, así que si revisas el código fuente, está descrito y está documentado. Pero desafortunadamente, se me acabó el tiempo, así que esto tiene que ser una historia para otro momento. Mira la charla de seguimiento. De hecho, tengo la intención de bloguear mucho sobre esto en los próximos meses, porque estuve profundamente en el agujero del conejo en los últimos dos años y ahora realmente quiero compartir todas estas lecciones aprendidas. Pero lo que quería mostrarte con esta charla es que en realidad ya hay herramientas, o sistemas, que podemos usar, bibliotecas que podemos usar, como Opaque y Zexion y así sucesivamente, que hacen que sea realmente, realmente fácil construir aplicaciones cifradas de extremo a extremo. Pueden ser simples. Solo tienen autenticación y enlaces de invitación. Pero ya es bastante poderoso. Y si tienes un subconjunto de datos que te importa que debería estar cifrado de extremo a extremo en tu aplicación, podrías estar bien solo haciendo eso.
Comments