Scelta dell'infrastruttura di certificati X.509 giusta per proteggere le comunicazioni LAN tra un PC e un dispositivo

2

Modifica: sembra di essere stato abbastanza sbrigativo quando ho scritto la mia domanda all'inizio, quindi ecco una versione aggiornata di esso.

Sto sviluppando un'applicazione che funziona su PC che si trovano sulla stessa LAN di altri dispositivi. Voglio connettermi a questi dispositivi. Poiché i dati comunicati tra il PC e i dispositivi sono sensibili, voglio proteggerli con crittografia, autenticazione e integrità. Pertanto sto usando TLS.

L'idea è che se qualcuno riesce a ottenere l'accesso alla LAN dall'esterno (in qualche modo) non dovrebbe essere in grado di utilizzare i dati inviati tra un PC e un dispositivo (a causa della crittografia). Inoltre, se qualcuno accede alla LAN dall'interno, non dovrebbe essere in grado di connettersi a nessuno dei dispositivi. Attualmente non esiste una vera protezione utente / password sui dispositivi, quindi ho bisogno di un altro tipo di autenticazione. Stavo pensando ai certificati qui. L'idea è la seguente:

La società che esegue la LAN rappresenta l'autorità di certificazione. Esiste un certificato server generale che è memorizzato sui dispositivi. C'è anche un certificato client che è tenuto privato sul PC che dovrebbe essere permesso di connettersi ai dispositivi (come i notebook di servizio, per esempio). La società firma entrambi i certificati.

Ora, se qualcuno è in grado di accedere alla LAN, potrebbe essere in grado di individuare il traffico, ma è crittografato in modo che non possa utilizzare i dati. Inoltre, se desidera connettersi a qualsiasi dispositivo, la connessione verrà rifiutata poiché non è in possesso del certificato client appropriato. Tuttavia, i clienti possono verificare se i dispositivi a cui si connettono siano realmente tali dispositivi e non alcuni intrusi.

La mia domanda è: è questa la giusta infrastruttura di certificazione? È efficace? I certificati vengono inviati tramite crittografia o verranno inviati in chiaro? Se vengono inviati non criptati, questo ha qualche utilità? Immagino che un intruso possa semplicemente registrare il certificato inviato dal client e poi tenerlo sul proprio computer.

    
posta WMEZ 19.11.2013 - 10:19
fonte

2 risposte

2

È piuttosto difficile dare una risposta sensata senza sapere cosa stai cercando di ottenere.

Utilizzando certificati autofirmati otterrai comunicazioni punto a punto sicure, ma non esiste un'autenticazione intrinseca: posso entrare nel tuo ufficio con un laptop utilizzando il mio certificato e iniziare a connetterti ai tuoi servizi. OTOH se si esegue la propria autorità di certificazione, allora si ha la possibilità di limitare le comunicazioni in base all'emittente del certificato (in questo caso la CA). Il nome comune è solo una convenzione usata come asserzione di identità (non deve essere un fqdn) che è certificato dalla CA.

However, I don't have a domain name because all of the computers and devices will get dynamical IP addresses inside the LAN

Nonsense:

1) quello che non hai è una voce nel DNS pubblico per identificare la tua rete - non c'è niente che ti impedisca di chiamare la tua rete qualsiasi cosa tu voglia - ma potresti avere problemi nel connettere altro google.com se chiami la tua rete.

2) DHCP non preclude l'utilizzo di indirizzi IP statici per alcuni host

3) DHCP non preclude un hostname coerente con diversi indirizzi IP.

I want that only users in posession of the certificate

Allora perché stiamo parlando di FQDN e indirizzi IP? Queste sono proprietà assegnate alle macchine e non alle persone.

Penso che hai ancora un lungo viaggio davanti a te prima di porre le domande giuste.

    
risposta data 19.11.2013 - 12:23
fonte
0

Un approccio semplice a questo è utilizzare una chiave precondivisa . Il PC e i dispositivi avrebbero tutti la stessa chiave, che viene utilizzata per crittografare e proteggere le comunicazioni. Ciò evita la crittografia della chiave pubblica, che sarebbe vantaggiosa se i dispositivi sono a bassa potenza. Tuttavia, mentre protegge dagli attacchi esterni, non protegge i dispositivi e il PC gli uni dagli altri.

Potresti migliorare su questo utilizzando solo crypto simmetrico avendo i segreti condivisi dei singoli dispositivi , mentre il PC li conosce tutti. Le modalità esatte dipenderanno dalle linee di comunicazione di cui hai bisogno (i dispositivi parlano tra loro direttamente?) E la fiducia che è in atto (i dispositivi si fidano del PC implicitamente?)

Puoi anche utilizzare la crittografia a chiave pubblica. Di solito dai al PC e ad ogni dispositivo un certificato individuale. In una semplice configurazione è possibile utilizzare i certificati autofirmati se ogni dispositivo ha il certificato salvato per qualsiasi altro dispositivo a cui è necessario connettersi, può verificare in modo sicuro il certificato autofirmato. Oppure puoi utilizzare la soluzione che hai delineato con un'autorità di certificazione interna .

Mi aspetto che la più grande difficoltà sarà la procedura di installazione. Dovrai riflettere attentamente sull'esperienza utente. Prendi spunto dal WiFi e dal Bluetooth riguardo al loro approccio: password condivisa e abbinamento del dispositivo. Una volta che il PC e i dispositivi sono stati installati con i segreti / le chiavi corrette / qualsiasi operazione quotidiana dovrebbe essere semplice.

    
risposta data 19.11.2013 - 20:44
fonte

Leggi altre domande sui tag