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ò imitareDevice A
e inviare una chiave pubblica al client e avviare la transazione. OraDevice 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.
- Il
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 !!