Quale metodo di crittografia dovrei usare per collegare più client a un server locale?

3

Sto attualmente scrivendo un progetto in C usando OpenSSL / TLS e non ho molta esperienza nella crittografia. Ho stabilito con successo connessioni OpenSSL non criptate e sono relativamente esperto in C / C ++. Il progetto prevede l'attivazione dell'hardware in modo che i dati inviati siano molto ripetitivi e non confidenziali (solo pochi byte, come i comandi di virata per un servo o una lettura della temperatura)

Fondamentalmente ho più client in una rete locale che voglio connettere in modo sicuro a un server locale. Il sistema deve funzionare offline. Tutto quello che voglio in questo momento è stabilire una connessione tra il client e il server per impedire connessioni non autorizzate. L'autenticazione e la restrizione dell'utente saranno limitate dall'applicazione sul server.

Ho guardato Crittografia a chiave pubblica ma dalla mia comprensione che richiede una connessione alla CA che potrebbe non essere disponibile in ogni momento. Quanto è corretto questo e quali sono le mie alternative?

Anche una semplice implementazione in C sarebbe utile. Grazie

    
posta Flowx 07.08.2017 - 09:43
fonte

1 risposta

3

TLS è il protocollo giusto per questo scopo. Non è necessario disporre di una connessione Internet con TLS (ovvero il requisito per essere non in linea ) ma è possibile utilizzare TLS con certificati autofirmati (semplice ma non scalabile) o con certificato personale autorità (più complessa ma ben bilanciata).

A simple C implementation would be helpful too.

L'uso di OpenSSL per TLS in modo corretto non è in genere semplice. Esistono molte implementazioni di esempio sul Web, ma spesso soffrono di una convalida del certificato insufficiente. Se lo realizzi da solo dovresti assicurarti che

  • il percorso di fiducia, la scadenza ecc. viene controllato correttamente. Questo è quello che la maggior parte dei campioni già fa perché può essere fatto semplicemente con OpenSSL. Vedi link per un client di esempio.
  • l'oggetto del certificato viene confrontato con quello previsto. Questo è ciò che la maggior parte degli esempi non fa perché era troppo complesso con versioni OpenSSL precedenti. Ma non farlo ti fa aprire agli attacchi dell'uomo in mezzo. Vedi link per come è possibile farlo.
  • in caso di PKI invece di certificati autofirmati è necessario verificare la revoca su un CRL che è necessario scaricare da qualche parte o contro OCSP. Questo non è quasi mai fatto e troppo complesso con OpenSSL. Non conosco alcun codice di esempio per questo.
risposta data 07.08.2017 - 10:29
fonte

Leggi altre domande sui tag