Connessione sicura tra due client con segreto condiviso

3

Sto creando un sistema in cui ci sono più client, ognuno dei quali ha una connessione sicura con un server centrale che potrebbe trasmettere segreti condivisi a ciascuno di essi.

Potrei sbagliarmi, ma ho l'impressione che comunicare in modo sicuro se si dispone di un segreto condiviso è un problema risolto. Esistono modi standard per farlo? Idealmente, mi piacerebbe essere in grado di avere una connessione TCP protetta.

    
posta mattdee123 30.06.2015 - 20:23
fonte

1 risposta

1

Ci sono tre casi che potresti prendere in considerazione:

  1. Si desidera utilizzare TCP come protocollo di trasporto sottostante e può permettersi la crittografia a chiave pubblica.
  2. Vuoi usare TCP come protocollo di trasporto sottostante ma non puoi permetterti la crittografia a chiave pubblica (perché sarebbe troppo lento, si applica principalmente ai dispositivi IoT)
  3. Vuoi usare TCP, ma vuoi sicurezza a un livello inferiore.

Ora i primi due scenari hanno la stessa risposta: vuoi utilizzare Sicurezza dei livelli di trasporto (TLS) v1.2 o più recente (non appena v1.3 viene standardizzato).
TLS offre più ciphersuites , che definiscono quali metodi utilizzare per lo scambio di chiavi, per l'autenticazione, per la buld-encryption e per la derivazione condivisa-segreta.
L'impostazione generale che desideri utilizzare è TLS-PSK nei primi due scenari.
Il ciphersuite di scelta è TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA256 fintanto che non c'è TLS_ECDHE_PSK_WITH_AES_128_GCM_SHA256 (che può essere standardizzato presto ). Questo utilizzerà solo le chiavi pre-condivise per l'autenticazione e l'ECDH per il contratto di chiave, fornendo chiavi diverse per ogni connessione (che è buona).
Nel secondo scenario la ciphersuite di scelta è TLS_PSK_WITH_AES_128_GCM_SHA256 , offrendoti una moderna suite di codici. Lo svantaggio è che le chiavi non sono negoziate separatamente, nel senso che se perdi una volta il master-secret tutte le connessioni (future e passate) saranno compromesse, il che non sarebbe il caso dello scenario 1.

L'ultimo scenario è un po 'più complicato e ti suggerisco caldamente di restare con TLS.
Tuttavia se non puoi usare TLS (che è ampiamente disponibile), devi usare IPsec , che offre anche l'autenticazione PSK. Ciò garantirà la connessione a livello IP.

    
risposta data 30.06.2015 - 21:17
fonte

Leggi altre domande sui tag