Autenticazione tra dispositivi su cui viene utilizzata la stessa password su entrambi

1

Sto scrivendo due applicazioni che sono destinate all'esecuzione su due dispositivi separati. È simile a una soluzione desktop remoto come TeamViewer.

Quanto segue è la mia proposta per un processo di autenticazione tra due dispositivi A e B, dove A è l'autorità. Potrebbe essere un po 'prolisso, ma voglio solo essere accurato:

 1) User inputs a password to A
 2) A generates public and private key from password
 3) A saves private key to memory
 4) A saves private key to file
 5) A appends salt to password in memory
 6) A digests password + salt with SHA128.
 7) A saves the hash to file.

 8) B connects to A through TCP
 9) A sends public key to B
10) User inputs (the same) password to B
11) B encrypts password with the public key obtained from A
12) B sends the encrypted password to A
13) A decrypts the password with private key
14) A applies steps 5 and 6
15) A compares the hash of the obtained password with the stored hash.

Questo processo non comporta l'invio della password in testo normale attraverso la rete in modo tale che la parte sia sicura, quindi le mie domande sono:

Dovrebbe invece essere usata la crittografia a chiave simmetrica? In tal caso, come si farebbe senza la trasmissione della password in testo semplice?

Sembra che archiviare sia l'hash della password che la chiave privata generata dalla password sia eccessiva. È?

Nota a margine, tutto avviene su una LAN.

    
posta Dziugas 13.06.2015 - 02:15
fonte

1 risposta

1

Questo è un tipo di quelle cose che sono terribilmente soggettive.

Che cosa stai cercando di proteggere contro qui?

Altre domande che devono rispondere:

  • In che modo B verifica che la chiave pubblica ricevuta da A sia la chiave giusta e non una chiave MITM?
  • Come si ricava una chiave privata (coppia) dalla password?
  • Come blocchi i tentativi di forza bruta?
  • Che cosa accade se qualcuno ottiene l'hash della password e tenta di eliminarlo offline?
  • Come stai proteggendo il file della chiave privata?
  • Come stai impedendo i replay della password crittografata?

Probabilmente ci sono ancora alcune domande che meritano di essere citate.

Il modo in cui hai delineato il flusso è un po 'sano, ma l'implementazione è un po' debole, ed è qui che inizi a entrare nel territorio del non-roll-tuo e non è mai una buona cosa.

Vorrei prendere in considerazione il modo in cui altri sistemi simili gestiscono l'autenticazione, o meglio ancora usare un protocollo o una tecnologia esistente che faccia questo per te come Kerberos. Le probabilità sono piuttosto buone, molti di questi sistemi stanno già utilizzando i protocolli pre-esistenti.

    
risposta data 13.06.2015 - 03:43
fonte

Leggi altre domande sui tag