Tengo una idea para una aplicación web que me gustaría discutir. Me gusta mucho, pero es probable que me haya perdido algún agujero de seguridad evidente. O, tal vez simplemente apesta.
La idea es un administrador de notas de texto seguro basado en la web, con las siguientes características:
- porque es web, se puede acceder desde cualquier lugar;
- importar / exportar notas encriptadas;
- lo único que se almacena en el servidor son las notas cifradas (¡no hay cuentas de usuario! más abajo);
- versión local (usar en su propio servidor);
- la contraseña nunca se almacena en ningún lugar (ni como hash ni nada).
Así es como funciona:
El servidor mantiene una base de datos de notas, donde cada nota tiene:
- correo electrónico del autor;
- contenido encriptado;
- metadatos (hora modificada, etc.).
Cuando un usuario abre la aplicación web por primera vez, solicita un correo electrónico.
(¡Ups, los nuevos usuarios no pueden publicar imágenes! Sigue este enlace para ver una captura de pantalla: dl.dropbox.com/u/456669/Screenshots/3EqQx.png)
Si este correo electrónico no se ha utilizado anteriormente en este dispositivo, se envía un mensaje con el enlace de validación. (Link, por supuesto, expira muy pronto).
dl.dropbox.com/u/456669/Screenshots/VJXPN.png
Después de la validación, la combinación de dispositivo + correo electrónico se guarda en una cookie. Las notas cifradas se cargan desde el servidor.
Después de eso, todo el trabajo se realiza con Javascript, sin interacción del servidor.
La aplicación solicita una contraseña.
dl.dropbox.com/u/456669/Screenshots/O4iOp.png
Las notas se descifran con contraseña. Luego, va la interfaz de usuario real para administrar las notas (será súper agradable, pero ese no es el tema de la discusión).
Al guardar los cambios para una nota, se encripta con la contraseña ingresada (que se almacena en la variable de Javascript, o en modo paranoico, se pregunta nuevamente). La nota encriptada se sincroniza con el servidor.
Por qué me gusta la idea
Tengo acceso a mis notas seguras desde cualquier lugar (casa, trabajo, invitados, viajes).
Puedo estar seguro de que nadie puede acceder a mis notas. Si alguien ingresa mi correo electrónico, recibo un correo electrónico de validación, el cual rechazo.
Si mi correo electrónico es hackeado y un hacker accede a mis notas, él todavía necesita una contraseña para descifrarlas.
La contraseña solo se utiliza para descifrar notas. En otras palabras, una contraseña incorrecta simplemente significa notas desordenadas en la pantalla.
El código abierto significa que puedo instalarlo en mi servidor doméstico y no confío en un servicio de terceros.
No es perfecto
Mientras escribía eso, se me ocurrió un problema. Debido a que la aplicación no puede verificar si una contraseña es correcta (¡esa es la idea!), Debe haber alguna forma de evitar que el usuario ingrese una contraseña incorrecta, obtenga notas "desordenadas" y luego las guarde en el servidor. Hmm! ...
De todos modos, gracias por leer y gracias de antemano por sus opiniones y comentarios.