Necesitas cifrado para disuadir a los atacantes pasivos (personas malvadas que espían en la línea e intentan descifrar el contenido de los datos) e integridad (y su hermano autenticación ) para bloquear a los atacantes activos que alteran los datos mientras están en tránsito. SSL proporciona ambos. Sin embargo, esto tiene sentido solo en contextos donde los atacantes pueden espiar o alterar los datos en tránsito. Para dos procesos en la misma máquina, que se comunican a través de la red "localhost", los atacantes que pueden hacerlo tienen, por lo general, "ya ganado".
Los detalles pueden diferir dependiendo del sistema operativo. Sin embargo, su seguridad normalmente dependerá del sistema operativo, no del cifrado. Considere, por ejemplo, un sistema Unix con múltiples usuarios. Si los dos procesos se comunican entre sí, los procesos de otros usuarios no podrán ver los intercambios de datos (a menos que el atacante sea root
y luego pueda hacer cualquier cosa); sin embargo, pueden probar suplantación : en algún momento, uno de sus componentes debe conectarse al otro, y el punto de encuentro para sockets TCP es un número de puerto. Un atacante que puede ejecutar su propio código (como usuario normal) en la máquina puede mantener un servidor falso que recibirá la solicitud de conexión en lugar del componente previsto. Para protegerse de eso, el cliente tendría que asegurarse de que habla con el servidor esperado (y viceversa): este puede se realiza con SSL, pero existen mejores soluciones (en este caso, utilizando Unix -dominios con una ruta protegida por derechos de acceso al sistema y / o getpeereid()
).
Si, en su caso, se supone que la máquina local está "limpia" (no se ejecuta ningún código hostil en la máquina, bajo ninguna identidad), entonces las conexiones a localhost son seguras y no hay necesidad de ninguna protección adicional. Si es posible que se ejecute código hostil pero no privilegiado en la máquina (ese es el modelo de "máquina multiusuario compartida", como era típico de los sistemas Unix a fines de la década de los 80), entonces debe usar las características del sistema operativo para asegurarse de que las conexiones se realicen. al proceso correcto (es decir, a un proceso que se ejecuta en la identidad esperada). SSL sería una exageración.