Autenticazione degli utenti su dispositivi offline come ipad

5

Vogliamo autenticare l'utente all'interno di una webapp (JavaScript / HTML all'interno del browser) in esecuzione su un tablet, ma vogliamo essere in grado di farlo quando il dispositivo è offline dalla rete. Mi rendo conto che non è già un ambiente super sicuro, ma non voglio renderlo meno sicuro con un metodo di autenticazione scadente.

L'ambiente è un'app Web che viene eseguita su iPad all'interno di una rete aziendale. Gli utenti prendono e condividono gli iPad (va bene) ma abbiamo bisogno di autenticare che l'utente corrente della webapp è valido, bloccando persone / personale casuali che potrebbero prendere il dispositivo. La connettività di rete non è al 100% e questo non può essere prontamente migliorato. Il nostro obiettivo è una maggiore convalida a fini di controllo rispetto al controllo di sicurezza, abbiamo bisogno di mostrare che l'utente X ha eseguito l'azione sull'iPad.

Autenticare quando siamo in rete è facile, inviare un pacchetto al server e ottenere una risposta sì / no. Tuttavia, se siamo offline, non possiamo farlo. Potrei scaricare tutti gli utenti e gli hash delle password sull'iPad, ma questa mi sembra una cattiva idea: ho appena esportato il file della password, mi sembra sbagliato.

L'idea successiva era una password separata online e offline, ma sembra troppo difficile per gli utenti. Abbiamo anche considerato di fidarsi del login e di rinviare la convalida fino a quando non siamo di nuovo online, ma questo ha problemi di business / applicazione. Attualmente, utilizziamo normalmente le normali password per l'app principale, ma utilizzando una password visiva su iPad, fondamentalmente due password ma presentate in modo diverso in modo che gli utenti non percepiscano la stessa cosa. Avere due password significa che possiamo avere diverse politiche, controlli e verifiche.

Ci sono modi migliori per farlo?

    
posta rlb 08.06.2013 - 11:55
fonte

1 risposta

2

Sono sicuro che non avresti voluto che fosse così; ma questa è attualmente una domanda politicamente carica, oltre che tecnica. Alcuni esperti di appec ritengono che la crittografia implementata in javascript sia intrinsecamente imperfetta; e fanno alcuni buoni argomenti, solo alcuni dei quali sono inapplicabili a causa del javascript a cui si accede solo su una intranet e solo su un tipo di dispositivo.

L'autenticazione di un utente su un dispositivo senza connettività di rete significa memorizzare un hash della password sul dispositivo. Ci sono molte cose intelligenti che puoi fare con Crypto, ma non puoi aggirarlo. La cosa migliore che puoi fare è usare una strong funzione di derivazione della chiave basata su password, capire che questo potrebbe lasciarti abbastanza vulnerabile e usare controlli compensatori: Sicurezza fisica e criteri per rendere difficile / rischioso estrarre gli hash dall'archivio locale HTML5 e portali a casa per cracking offline.

Questo lascia la domanda di quale password hash che memorizzi localmente. Sembra un po 'come se ti interessassero solo le azioni non riputabili:

we need show that user X performed the action on the ipad.

Se l'unica ragione per cui stai usando l'autenticazione è per non ripudiare, e una singola azione ripudiata costituisce un'interruzione completa del sistema, non c'è molto senso avere due password separate per ogni utente. Se si dispone di ulteriori obiettivi di sicurezza oltre a questo, potrebbe essere utile mantenere due password separate; soprattutto se la conformità dell'utente non è un problema e la soluzione dell'interfaccia utente per questo sembra efficace.

    
risposta data 08.06.2013 - 17:41
fonte

Leggi altre domande sui tag