Ci sono alcune cose che non trovo qui e probabilmente una o due cose che vale la pena aggiungere:
- la password hash è crittografata con
chiave privata memorizzata come COSTANTE in
app / file
Come "COSTANTE" - che cosa significa? È difficile da codificare? Come è protetto. Sono d'accordo con altri post che un sale è un buon piano - se salate e cancellate le password, non vedo la necessità della crittografia su di esso. E - se la chiave privata per la crittografia è memorizzata in un file flat o codificata nell'app, hai un punto debole. Consiglia di trovare un modo per proteggere meglio questa chiave.
In un certo numero di posti hai detto che stai monitorando il comportamento "per dispositivo", cosa significa? Come stai determinando il dispositivo? Stai implicando qui un tipo di autenticazione del dispositivo, e da quel poco che so su quest'area, molti modi sono immensamente parassiti e le modalità che non richiedono l'emissione di dispositivi da un punto di fiducia, che può cambiare notevolmente il tuo modello di funzionamento .
Nei luoghi in cui dici "per dispositivo", dovrai pensare a cosa significa se il dispositivo sta simulando il tuo sistema. Inoltre, se hai deciso che "Indirizzo IP"="dispositivo", potresti dover considerare numerose situazioni in cui l'indirizzo IP dell'utente cambia senza alcun errore dell'utente.
- consente di rimuovere la cronologia di accesso dei vecchi dispositivi
È qualcosa che sei pronto a supportare? Lo scrubbing, ad esempio, un cookie è piuttosto semplice, ma intendi tutte le parti della memoria? Personalmente, se facessi questa promessa, l'avrei legata in un modo tale che, se le informazioni di accesso fossero state rese strane dal sistema operativo, non si trattava di una violazione di ciò che il mio sistema aveva promesso agli utenti.
Vedo anche alcuni problemi:
- Come può un utente recuperare da una password persa / dimenticata?
Vedo che citi un processo abbastanza coinvolto per cambiare la password. Se questo è un sistema web casuale, scommetterei sul denaro che questa sarà la funzione meno utilizzata. Invece, gli utenti si allontaneranno dal sistema, solo per tornare e hanno bisogno delle loro password e li hanno completamente dimenticati (o li hanno scritti su una nota appiccicosa sui loro schermi ... è ancora peggio).
Avrai bisogno di un modo per eseguire il ripristino / ripristino della password adatto al tuo modello ad alta protezione. È gestito da una persona? Hanno domande di riserva per rispondere? Ricevono una password di reset inviata via e-mail fuori dalla banda? Ogni meccanismo di recupero ha un rischio, e generalmente meno rischi = costi più elevati - ad esempio, il controllo dell'identità finale della mia carta di credito per problemi come questo è un doloroso Q & A con una persona dal vivo sulla mia cronologia degli acquisti. Molto buono, ma costoso in termini di salario di quella persona.
- Un modo semplice per gli utenti di controllare il sistema
Le credenziali presentate dal server in SSL dovrebbero essere abbastanza buone, ma pochissimi utenti sono abbastanza esperti di PKI per questo. So che le grandi istituzioni finanziarie hanno iniziato a utilizzare parole e immagini selezionate dagli utenti che gli utenti dovrebbero verificare durante il login. L'obiettivo qui è quello di evitare una situazione in cui un phisher potrebbe inviare una e-mail all'utente indirizzandoli a "paypa1.com" (un numero 1 e non a un), e ottenere le loro password. Dal momento che disponi di funzionalità che consentono l'accesso remoto, l'utente malintenzionato sarà quindi in grado di utilizzare un account utente legittimo da qualsiasi sistema.
Probabilmente questi due problemi non sono i soli processi orientati all'uomo a cui dovrai pensare attraverso: accedi agli accessi? Avete un piano per separare il controllo degli accessi dai privilegi di amministrazione? Quanto accesso hanno gli amministratori e in che modo il sistema è protetto da loro? Ci sono altri attacchi di social engineering che potrebbero funzionare?
Finora, ciò che descrivi è tech-heavy e human-light - stai parlando di un paio di meccanismi che potrebbero avere un impatto sull'usabilità, che potrebbe portare gli utenti a non utilizzare il sistema, o gli utenti che si stanno adoperando per hackerare il sistema per renderlo più facile da usare, e sono preoccupato che non abbiate pensato ai vettori di attacco di un ingegnere sociale. Come l'acqua, gli hacker troveranno il crack o la fessura che è più facile da usare.
Ti colpisco con le cose pesanti qui, perché la mia percezione è che stai cercando di progettare qualcosa di piuttosto alto per qualcosa che è presumibilmente ad alto rischio. Se è questo che stai cercando di progettare, devi eseguire il backup e vedere il sistema intero - la tua comunità di utenti, la nascita dei conti, il comportamento all'interno del sistema ei rischi di un comportamento scorretto.