Se buscan comentarios sobre ideas: administrador de notas web fácil y seguro (javascript) [cerrado]

-1

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.

    
pregunta Vlad Gerasimov 14.01.2013 - 16:54
fuente

1 respuesta

4

Puedo ver algunas fallas en el sistema que describiste:

  • Si un usuario existente desea acceder a sus notas, ¿tendría que acceder a su cuenta de correo electrónico y hacer clic en un enlace para cada visita?
    1. En caso afirmativo, ¿cómo vincularía su clic a una sesión de usuario válida?
    2. Si no, entonces cualquiera podría descargar las notas cifradas de un correo electrónico conocido e intentar descifrarlas sin conexión.
  • Implementar el algoritmo de cifrado en JavaScript no es la mejor solución. Un XSS simple en su sistema podría revelar la contraseña del usuario en texto simple.
  • Un usuario podría usar una contraseña para cada nota. ¿Cómo pudo recordar qué contraseña se usó para qué nota?
  • Suponiendo que de alguna manera lo obligue a usar la misma contraseña cada vez, cómo manejaría los cambios de contraseña, donde debería descifrar y cifrar cada nota, también utilizando javascript.

Es bastante difícil implementar una nueva solución que sea fácil de usar, se pueda usar en varios dispositivos y también es muy segura.

Tenga en cuenta que los algoritmos y prácticas existentes y bien conocidos son probablemente la mejor opción en este momento. Es muy probable que las soluciones personalizadas sean defectuosas. Tal vez si da más detalles sobre cómo manejaría los puntos mencionados anteriormente, podríamos tener una mejor visión de la solución y analizarla mejor.

    
respondido por el Dinu S 14.01.2013 - 17:34
fuente

Lea otras preguntas en las etiquetas