Schema di autenticazione basato su firma digitale che utilizza due password

2

Sto lavorando su un sistema di autenticazione per un servizio basato su Bitcoin basato sul web. Come parte del servizio, gli utenti eseguono alcune operazioni meno sensibili (principalmente leggendo e inviando vari tipi di informazioni) e alcune operazioni altamente sensibili (controllando i fondi Bitcoin firmando transazioni).

Sto cercando di creare un sistema di autenticazione che:

  1. È basato su ECDSA e firme digitali
  2. Consente un facile accesso alle operazioni meno sensibili, memorizzando in modo permanente la chiave nella memoria locale
  3. Richiede informazioni aggiuntive per operazioni altamente sensibili, che è più difficile per un utente malintenzionato ottenere

Ecco cosa sto pensando di fare attualmente:

Processo di creazione dell'account

  1. L'utente si registra con due password - password A1 e password A2
    • La password A1 viene generata come 12 parole casuali (132 bit)
    • La password A2 viene generata come 4 parole casuali (44 bit)
  2. L'utente è tenuto a annotare (ma non ricordare) la password A1 e ricordare la password A2 (e possibilmente annotare fino a quando non la ricorda, a quel punto dovrebbe distruggere la copia scritta)
  3. La password A1 viene utilizzata per creare la chiave privata A1 utilizzando A1_key = Scrypt(A1_password, salt=GLOBAL_SALT||email, N=20, r=8, p=1)
  4. La chiave A1 e la password A2 vengono utilizzate per creare la chiave privata A2 utilizzando A2_key = Scrypt(A2_password, salt=H(A1_key), N=10, r=8, p=1)
  5. Le chiavi pubbliche per A1 e A2 vengono salvate sul server.

Accedi

  1. L'utente effettua l'accesso utilizzando la sua password A1, che viene utilizzata per ricreare la sua chiave pubblica.
  2. Il browser memorizza la chiave A1 nella memoria locale, quindi all'utente non è richiesto di reinserirla, a meno che non acceda da una nuova macchina o cancelli la sua memoria locale
  3. Il tasto A1 consente di autorizzare le azioni meno sensibili

Azioni sensibili

  1. Esegui azioni sensibili, all'utente viene richiesto di inserire la password A2
  2. La password A2 viene utilizzata per derivare il tasto A2 e firmare digitalmente l'operazione
  3. Il tasto A2 viene rimosso dalla memoria immediatamente dopo essere stato utilizzato e non viene mai ricordato dal browser

Con quel sistema in atto, sono necessarie entrambe le password A1 e A2 per le operazioni altamente sensibili. Un utente malintenzionato che ottiene l'accesso al computer dell'utente avrà solo accesso alla chiave A1: l'accesso a A2 richiede un attacco attivo mentre viene fornita la password A2.

Le mie domande

  1. Come ti senti riguardo alle proprietà di sicurezza di tale sistema? Vede eventuali aspetti negativi o vulnerabilità che mi mancano?
  2. Pensi che la seccatura di richiedere agli utenti di gestire due password valga la pena?
  3. Vedi qualche modo per migliorare il mio schema suggerito?
posta shesek 09.04.2014 - 18:29
fonte

0 risposte