2012-01-23 20 views
7

Abbiamo un servizio Web che funge da gateway tra i nostri clienti e un altro servizio. I client inviano messaggi a e ricevono messaggi casuali dal servizio di terze parti. Il server del cliente apre un canale al nostro server web tramite un socket sicuro per ricevere i messaggi in arrivo (e non è necessario eseguire il polling del server ogni pochi minuti).Quanto è sicuro un canale TCP aperto, sicuro?

La mia domanda è: è sicuro lasciare questo canale aperto a tempo indeterminato, o dovremmo periodicamente chiuderlo e riaprirlo per ottenere nuove credenziali (chiavi di sessione)? Se quest'ultimo, quanto spesso (ogni ora, ogni giorno, ogni settimana) sarebbe considerato "migliore pratica"? Ho trovato molte informazioni sulle comunicazioni sicure, ma nulla per rispondere a questa domanda specifica.

Grazie

+0

IPSEC rinegoza definitivamente una chiave di sessione ogni ora o così, e penso che SSL potrebbe fare anche questo? Da [RFC5746] (http://tools.ietf.org/html/rfc5746) sembra che potrebbe aver bisogno di essere avviato dal tuo codice, tuttavia, non deve avvenire automaticamente. – Rup

risposta

4

SSL/TLS (che ho intenzione di assumere si sta parlando qui) non si aggiorna automaticamente/rinegoziare le chiavi di sessione utilizzati. È presente una procedura di rinegoziazione integrata nel protocollo per consentire la modifica delle chiavi di sessione all'interno di una sessione attiva, ma è stata rilevata una vulnerabilità significativa alcuni anni fa e la procedura di rinegoziazione è stata modificata (in RFC 5746, see here) per risolvere il problema . Se si desidera rinegoziare le chiavi di sessione per SSL/TLS, assicurarsi di farlo nel modo descritto in questo RFC.

Tuttavia, ciò non risponde alla domanda iniziale di IF, le chiavi di sessione devono essere modificate. La risposta è ... dipende dalle tue esigenze di sicurezza. Una buona linea guida da utilizzare è che eventuali comunicazioni crittografate possono essere decifrate alla fine se si vedono abbastanza dati crittografati (quanto è pratico/fattibile può variare molto). Quindi, cambiare le chiavi ogni tanto è una cosa molto buona da fare. Se stai trasmettendo una piccola quantità di dati su una connessione protetta e i dati non sono così sensibili, puoi farla franca su base non-regolare (anzi, probabilmente la tua sessione SSL/TLS sta andando per essere rotto e ristabilito a causa di timeout su una delle due parti su una base abbastanza regolare comunque ...). Se hai un set di dati molto sensibile e stai inviando un sacco di dati, suggerirei di ruotare i tasti ogni giorno o giù di lì per mitigare questo rischio (fallo in modo sicuro).

Problemi correlati