Estoy lejos de ser un experto en seguridad, así que perdona cualquier aproximación en esta pregunta.
Como lo entiendo de esta (muy buena) respuesta , un conjunto de conexiones HTTPS se puede resumir como tales:
- Hay una negociación entre el navegador y el servidor que utiliza criptografía asimétrica costosa que resulta en un secreto maestro compartido que durará el tiempo de una "sesión", el tiempo se decide por el servidor.
- Cada conexión subsiguiente se cifra con un algoritmo de criptografía simétrica rápida cuya clave se deduce del secreto maestro. Por lo tanto, cada conexión está encriptada con una clave diferente, por lo que cualquier "rastreador" no tendría datos suficientes para encontrar la clave de conexión específica o el secreto maestro.
Ahora, estoy trabajando en una aplicación que utilizará sockets web que pueden permanecer conectados durante largos períodos de tiempo. Por mucho tiempo, me refiero a varios días. La información que transitará a través de esta conexión de socket web será altamente confidencial.
Entonces, sabiendo que un WebSocket nunca debería desconectarse, ¿hay algo en la especificación WSS para renovar periódicamente la clave simétrica?
Según tengo entendido, con un algoritmo simétrico, cuantos más datos se cifran con la misma clave, más débil será el cifrado.
HTTPS cambia esta clave (infiere una nueva del secreto maestro) en cada nueva conexión, pero ¿qué pasa con una conexión WebSocket donde solo hay una conexión durante un largo período de tiempo?