Sono ben lungi dall'essere un esperto di sicurezza, quindi ti preghiamo di perdonare qualsiasi approssimazione in questa domanda.
Come ho capito dalla questa (molto buona) risposta , una suite di connessioni HTTPS può essere riassunta come tale:
- Esiste una negoziazione tra il browser e il server che utilizza una costosa crittografia asimmetrica che si traduce in un master secret condiviso che durerà per il tempo di una "sessione", tempo deciso dal server.
- Ogni connessione successiva viene quindi crittografata con un algoritmo di crittografia simmetrico veloce la cui chiave viene dedotta dal master secret. Pertanto ogni connessione è crittografata con una chiave diversa, quindi qualsiasi "sniffer" non dispone di dati sufficienti per trovare la chiave di connessione specifica o il master secret.
Ora, sto lavorando a un'applicazione che utilizzerà socket web che potrebbero rimanere connessi per lunghi periodi di tempo. Per molto, intendo parecchi giorni. Le informazioni che transiteranno attraverso questa connessione web socket saranno altamente confidenziali.
Quindi, sapendo che un WebSocket non dovrebbe mai disconnettersi, c'è qualcosa nelle specifiche WSS per rinnovare periodicamente la chiave simmetrica?
A quanto ho capito, con un algoritmo simmetrico, più dati vengono crittografati con la stessa chiave, più debole diventa la crittografia.
HTTPS cambia questa chiave (ne deduce una nuova dal segreto principale) ad ogni nuova connessione, ma che dire di una connessione WebSocket in cui esiste una sola connessione per un lungo periodo di tempo?