2012-01-23 8 views
7

Tenemos un servicio web que actúa como una puerta de enlace entre nuestros clientes y otro servicio. Los clientes envían mensajes a, y reciben mensajes aleatorios del servicio de terceros. El servidor del cliente abre un canal a nuestro servidor web a través de un socket seguro para recibir los mensajes entrantes (y no tiene que sondear el servidor cada pocos minutos).¿Por cuánto tiempo es seguro un canal TCP seguro y abierto?

Mi pregunta es: ¿es seguro dejar este canal abierto indefinidamente, o deberíamos cerrarlo periódicamente y volver a abrirlo para obtener nuevas credenciales (claves de sesión)? En este último caso, ¿con qué frecuencia (por hora, por día, por semana) se consideraría una "mejor práctica"? Encontré mucha información sobre comunicaciones seguras, pero nada para responder esta pregunta específica.

Gracias

+0

IPSEC definitivamente renegocia una clave de sesión cada hora más o menos, y creo que SSL también podría hacerlo. Desde [RFC5746] (http://tools.ietf.org/html/rfc5746) parece que podría ser necesario que su código lo inicie, aunque no solo se produzca automáticamente. – Rup

Respuesta

4

SSL/TLS (que voy a asumir que estamos hablando aquí) no se actualiza automáticamente/renegociar las claves de sesión que se utiliza. Hay un procedimiento de renegociación incorporado en el protocolo para permitir que las claves de sesión se cambien dentro de una sesión activa, pero se encontró que ese procedimiento tenía una vulnerabilidad significativa hace unos años y se cambió el proceso de renegociación (in RFC 5746, see here) para resolver el problema . Si desea renegociar las claves de sesión para SSL/TLS, asegúrese de hacerlo de la manera descrita en este RFC.

Sin embargo, eso no responde a su pregunta original de IF las claves de sesión deben cambiarse. La respuesta es ... depende de sus requisitos de seguridad. Una buena guía para usar es que cualquier comunicación encriptada puede descifrarse eventualmente si ve suficientes datos encriptados (lo práctico/posible que esto pueda variar ampliamente). Por lo tanto, cambiar las llaves de vez en cuando es algo muy bueno que hacer. Si transfiere una pequeña cantidad de datos a través de una conexión segura y los datos no son tan sensibles, puede hacer esto de una manera no tan regular (de hecho, su sesión de SSL/TLS probablemente se esté ejecutando). para romperse y restablecerse debido a tiempos de espera en una de las dos partes de manera regular de todos modos ...). Si tiene un conjunto de datos muy sensible y está enviando una gran cantidad de datos, le sugiero que haga girar las teclas cada día para mitigar este riesgo (solo hágalo de forma segura).