Proteger copiar y pegar desde el teléfono a la computadora

3

Algunas computadoras en mi universidad bloquean la aplicación keepass que uso como administrador de contraseñas. Estoy pensando en construir una aplicación web pequeña + aplicación de Android que me permita copiar de forma segura una cadena desde mi teléfono a mi computadora. Como más personas tendrán este problema, me gustaría que tanto la aplicación web como la aplicación estén disponibles para todos. Es por eso que necesitaré establecer algún tipo de enlace entre una sesión en la aplicación web y una instancia de la aplicación de Android. Pensé en lo siguiente, inspirado en el sistema de Firefox Sync:

  1. El usuario va a la aplicación web y obtiene un código PIN único < A que está vinculado a su ID de sesión
  2. El usuario ingresa N A en la aplicación y obtiene un nuevo código pin aleatorio N B (la aplicación envía N A al servidor y recibe N B )
  3. El usuario ingresa N B en la aplicación web
  4. El servidor verifica que N B ingresado en la aplicación web es el nonce que se envió a la aplicación que envió N A . También estoy pensando en verificar que la aplicación web y la aplicación estén usando la misma dirección IP, aunque esto puede dar problemas con las redes celulares.

Tanto la aplicación como la aplicación web están identificadas de forma única por un ID de sesión que se envía junto con cada solicitud.

Después de este esquema de autenticación, se establece un enlace que es válido durante tanto tiempo. Por supuesto, también los nonces utilizados en el esquema son seguidos por el servidor y tienen una fecha límite. Naturalmente, toda la comunicación (aplicación - servidor, servidor - aplicación web) se realiza a través de un canal cifrado.

Ahora, la aplicación puede enviar una cadena al servidor, que luego la comunica a la aplicación web a la que está vinculada. La aplicación web no mostraría la cadena, por supuesto, sino que simplemente la copiaría en el portapapeles cuando el usuario lo solicite. Esto reduce el riesgo de que las personas miren por encima del hombro.

¿Este esquema es seguro? Lo que más me preocupa / me pregunto es:

  • Robo de sesión: esto, por supuesto, sería más difícil cuando también se verifica la IP, pero aún así, podría ocurrir. Cuando utilizo HTTPS, ¿estoy en lo cierto al afirmar que la única forma de robo de la sesión sería utilizar un hombre en el navegador o un hombre en el teléfono? Esto sería aceptable.

  • ¿Cómo selecciono una longitud de bit para los nonces? Siempre se me ocurrió que Firefox usa códigos PIN increíblemente cortos. La longitud de bit necesaria depende de cuántos usuarios tendría la aplicación (por ejemplo, con 10,000 nonces a la vez en la base de datos, podría imaginar que la longitud de bit tendría que ser mayor que con 10 nonces, para hacer fuerza bruta). ataca más fuerte).

  • También usaría una aplicación web en el teléfono (ya sea haciendo una versión de envío y recepción de la aplicación web, o haciendo esta comunicación bidireccional) introducir cualquier vulnerabilidad de seguridad adicional (a excepción de man en el navegador) en el teléfono)?

  • Cosas que no vi, obviamente.

  • ¿Estoy reinventando la rueda?
    Tenga en cuenta el requisito de no tener que instalar nada en la computadora; Debe ejecutarse en el navegador. Además, preferiría no tener mis contraseñas en la nube como con LastPass. Las cadenas que se comunican con mi aplicación se eliminarían después de que la aplicación web las haya recibido.

pregunta Keelan 03.02.2015 - 19:19
fuente

2 respuestas

2

Sé que esta no es una respuesta directa, pero por su solicitud en los comentarios, la envío.

En lugar de rodar su propio protocolo, aproveche los protocolos existentes para hacer lo que necesita. Su especificación describe un protocolo basado en la web con cifrado y acceso limitado a los datos que pasan del teléfono a la PC. Este servicio web necesita alta disponibilidad y tiempo de actividad.

Twitter puede adaptarse a su factura. Configure una cuenta de Twitter separada para este propósito y cree tweets protegidos que contengan la contraseña que desea transferir desde su teléfono hasta el punto final. Lo único que necesita introducir (¡quizás! **) es un simple cifrado simétrico de la contraseña. Por lo tanto, su tarea operativa es simple:

  1. copia la contraseña desde el Keepass de tu teléfono
  2. procesar la contraseña a través del cifrado
  3. envía el texto cifrado como un tweet protegido a ti mismo
  4. en la PC, captura el texto cifrado y descifra
  5. pegar en la aplicación final como la contraseña

Con la API de Twitter disponible públicamente, puedes lograr todo esto en unas pocas líneas de código Python.

** Toda esta complejidad depende de su necesidad de que la contraseña se transmita encriptada. Si usa Twitter, el canal está cifrado (TLS) y, si usa tweets protegidos, nadie más puede ver el texto. Simplemente puede enviar la contraseña como texto simple SI para determinar si el riesgo es aceptable. Si sigue la ruta sin cifrar, le sugeriría que su contraseña sea lo más aleatoria posible, de modo que si el texto sin formato se filtrara, no sería obvio que se estaba enviando contraseñas (por ejemplo, no "thisIsMyBankPassword1!").

    
respondido por el schroeder 03.02.2015 - 23:00
fuente
0

Así es como lo haría. Haga que la aplicación web genere un par público / privado (por ejemplo, DH). Muestre la clave pública en la pantalla como código QR, luego el usuario la escanea con el teléfono. Desde este punto en adelante, el teléfono puede enviar cualquier cosa a la aplicación web de forma segura.

    
respondido por el user2600798 03.05.2016 - 04:11
fuente

Lea otras preguntas en las etiquetas