Connessione sicura tra due dispositivi mobili (Android e / o iOS)

5

Ho Device A che comunicherà con più dispositivi su una rete (BLE e / o NFC).

Su tutti i dispositivi verrà gestito un Token dopo l'autenticazione che in qualche modo deve essere trasferito alla Device A sulla rete in modo sicuro e confidenziale.

Qual è il modo migliore per ottenerlo? Immagino che qualcosa come l'handshaking SSL sarà sicuro, ma sarà preferita una soluzione più semplice.

Fondamentalmente Device A deve agire come un server.

Le ricerche fatte finora mi hanno portato al seguente flusso:

  • Device A riesce a inviare una chiave pubblica al client.
  • Il client utilizza la chiave per crittografare il Token e inviarlo a Device A .
  • Solo Device A può leggere il Token e autenticare il client.

Problemi con questo approccio (e le loro soluzioni, in base alle mie conoscenze limitate mentre si occupano di sistemi di sicurezza):

  • Il token è lo stesso e la chiave pubblica potrebbe ripetersi, dando un punto debole nel sistema.

    • Il token sarà trasferito sulla rete con un nonce .
  • Attacco MIM : qualsiasi Device X può imitare Device A e inviare una chiave pubblica al client e avviare la transazione. Ora Device X conosce il Token e imita il client.

    • Il Device A dovrebbe possedere una sorta di certificato digitale per dimostrare la sua autenticità. Il certificato digitale verrà assegnato da un server scritto in Python / Django. E tutti i client dovrebbero essere in grado di verificare il certificato senza interagire con il server.

Preoccupazioni:

  • Poiché ho bisogno di questo per i dispositivi mobili, ho bisogno che la coppia di chiavi pubblica privata sia la più corta possibile ma sicura.

Domande:

  • Come posso implementare l'ultimo algoritmo delle parti? Esiste una libreria python open source disponibile per generare, emettere e verificare i certificati?
  • L'algoritmo è sicuro? Sono un principiante in sicurezza e desidero qualsiasi prezioso feedback.

Grazie in anticipo !!

    
posta Ankit Popli 21.04.2015 - 20:40
fonte

1 risposta

1

Sembra un progetto molto interessante. Sembra che tu abbia riscoperto il vero problema che Kerberos è stato progettato per risolvere.

Guardando il tuo esempio, perché non dovresti semplicemente usare PKI in entrambi i modi? O non puoi controllare i certificati alle due estremità? Puoi vedere l'inizializzazione della sessione SSL per vedere come puoi trasferire un messaggio confidenziale sotto lo sguardo di un direttore.

Se stai arrotolando la tua soluzione, scoprirai che l'archiviazione sicura delle chiavi è un problema molto difficile da superare.

EDIT: Per risolvere il tuo problema ben ponderato, la crittografia a curve ellittiche viene spesso utilizzata su dispositivi mobili a causa di limitazioni computazionali .

    
risposta data 21.04.2015 - 21:06
fonte