Autentificando usuarios en dispositivos fuera de línea como ipad

5

Queremos autenticar al usuario dentro de una aplicación web (JavaScript / HTML dentro del navegador) que se ejecuta en una tableta, pero queremos poder hacer esto cuando el dispositivo está fuera de la red. Me doy cuenta de que este entorno ya no es muy seguro, pero no quiero hacerlo menos seguro con un método de autenticación deficiente.

El entorno es una aplicación web que se ejecuta en iPads dentro de una red corporativa. Los usuarios toman y comparten iPads (eso está bien) pero necesitamos autenticar que el usuario actual de la aplicación web es válido, bloqueando a personas / personal aleatorias que puedan recoger el dispositivo. La conectividad de red no es del 100% y esto no se puede mejorar fácilmente. Nuestro objetivo es más validación para fines de auditoría que control de seguridad, necesitamos mostrar que el usuario X realizó la acción en el iPad.

La autenticación cuando estamos en la red es fácil, envíe un paquete al servidor y obtenga una respuesta de sí / no. Sin embargo, si estamos fuera de línea no podemos hacer eso. Podría descargar todos los usuarios y los hashes de contraseña en el iPad, pero parece una mala idea. Acabo de exportar el archivo de contraseñas, pero me parece mal.

La siguiente idea fue contraseñas separadas en línea y fuera de línea, pero eso parece demasiado difícil para los usuarios. También consideramos confiar en el inicio de sesión y aplazar la validación hasta que volvamos a estar en línea, pero eso tiene problemas de negocios / aplicaciones. Actualmente, utilizamos contraseñas normales para la aplicación principal, pero usando una contraseña visual en iPads, básicamente dos contraseñas pero presentadas de manera diferente para que los usuarios no perciban que es la misma. Tener dos contraseñas significa que podemos tener diferentes políticas, controles y auditorías.

¿Hay alguna forma mejor de hacer esto?

    
pregunta rlb 08.06.2013 - 11:55
fuente

1 respuesta

2

Estoy seguro de que no pretendías que fuera así; pero esta es actualmente una pregunta políticamente cargada, así como una pregunta técnica. Algunos expertos en appsec creen que el cripto implementado en javascript es inherentemente defectuoso; y hacen algunos buenos argumentos, solo algunos de los cuales no son aplicables debido a que se accede al javascript solo en una intranet, y solo en un tipo de dispositivo.

Autenticar a un usuario en un dispositivo sin conectividad de red significa almacenar un hash de contraseña en el dispositivo. Hay muchas cosas inteligentes que puedes hacer con criptografía, pero no puedes evitar eso. Lo mejor que puede hacer es usar una función de derivación de clave basada en contraseña, comprender que esto puede dejarlo bastante vulnerable y usar controles de compensación: seguridad física y políticas para dificultar / arriesgarse a extraer los hashes del almacenamiento local de HTML5 y llévalos a casa para romper sin conexión.

Esto deja la pregunta de qué hash de contraseña almacena localmente. Suena un poco como si solo estuvieras interesado en acciones no repudiables:

  

necesitamos mostrar que el usuario X realizó la acción en el ipad.

Si la única razón por la que está utilizando la autenticación es para no rechazar, y una sola acción repudiable constituye una interrupción completa del sistema, no tiene mucho sentido tener dos contraseñas separadas para cada usuario. Si tiene objetivos de seguridad adicionales más allá de eso, puede valer la pena mantener dos contraseñas separadas; especialmente si el cumplimiento del usuario no es un problema, y su solución de IU para eso suena efectiva.

    
respondido por el Stephen Bachelor 08.06.2013 - 17:41
fuente

Lea otras preguntas en las etiquetas