¿Necesito ejecutar seguridad en sockets en C ++?

0

Estaba leyendo sobre cómo hacer que dos programas se comuniquen entre sí en mi máquina, y vi la opción de usar sockets. Un sitio web sugirió que los sockets son completamente internos, por lo que parece sugerirme que no se necesita seguridad porque los sockets no son visibles fuera de mi máquina.

Pero entonces estaba leyendo sobre SSL. Ahora estoy confundido, ¿se refieren al mismo tipo de enchufes? ¿Necesito seguridad?

Gracias de antemano.

    
pregunta hidden 02.06.2017 - 22:00
fuente

3 respuestas

2

La Capa de sockets seguros de hecho se refiere al concepto de sistema operativo de sockets.

Los sockets son una forma generalizada de comunicación entre procesos. En el nivel más básico, un socket le permite leer y escribir datos desde y hacia el socket tal como si estuviera leyendo o escribiendo un archivo, la diferencia es que el origen y destino de las comunicaciones de socket es otro proceso informático en lugar de un archivo. .

Los sockets se pueden usar para conectar diferentes procesos en la misma máquina, o diferentes procesos en diferentes máquinas. La interfaz es abstracta por diseño para que el programador final (usted) no tenga que preocuparse de si sus mensajes pasan de la memoria a otro proceso a través de un socket de dominio Unix local o si están pasando por una IP red o si están utilizando UDP o TCP, etc.

Sin embargo, el modelo de sockets tradicional no le permite saber quién está leyendo y escribiendo el otro extremo del canal de comunicaciones. Incluso dentro de una sola máquina, no puede estar seguro de que no haya ningún malware conectado al otro extremo de su canal de comunicaciones. Esto es mucho más cierto para los sockets habilitados para Internet, que pueden leer / escribir datos de cualquier persona en el mundo. Además, cuando sus datos viajan a través de un medio físico, ya sea la RAM dentro de una máquina o un cable de cobre, existe la posibilidad de que un adversario esté intentando interceptar o modificar sus comunicaciones.

Por lo tanto, los sockets proporcionan el mecanismo de comunicación, pero no garantizan la autenticidad de las diferentes partes en una comunicación, o la confidencialidad de los datos que se pasan a través del mecanismo de sockets.

La Seguridad de la capa de transporte (TLS) y su predecesora, la Capa de sockets seguros (SSL) son soluciones a los problemas anteriores. El protocolo TLS puede usar soluciones criptográficas de clave pública (por ejemplo, certificados firmados y terceros confiables) para garantizar que el proceso en el otro extremo de un socket pertenezca realmente a las personas que afirman poseer el socket, y puede usar el cifrado regular para realizar el cifrado de extremo a extremo entre los puntos finales de socket.

La diferencia entre un zócalo normal y un zócalo seguro en la práctica es que un zócalo normal está envuelto dentro de una interfaz segura, por lo que la tecnología del zócalo no cambia, pero la envoltura garantiza que todas las comunicaciones enviadas a través del zócalo normal se cifren correctamente descifrado.

enlace

    
respondido por el David 02.06.2017 - 23:03
fuente
0

Los sockets proporcionan una forma en que dos procesos podrían comunicarse entre sí. Ahora esta comunicación podría ser una comunicación máquina a máquina o dentro de un sistema.

Por lo general, los sockets se utilizan para la comunicación de proceso a proceso a través de la red, ya que existen otras formas para que los procesos se comuniquen en la misma máquina (.e.g. memoria compartida).

Tenga en cuenta que "proteger un socket" es un término genérico y no solo sobre el uso de SSL. En general, la confidencialidad es una parte importante de la seguridad de su aplicación que puede lograr utilizando SSL. Sin embargo, la seguridad es algo más que la confidencialidad, especialmente para el código no administrado como C ++.

Parte de "ejecutar la seguridad en su programa" es filtrar los datos que se están transfiriendo al cuarto sobre sus sockets.

Desde un punto de vista de seguridad, cuando su programa se compone de múltiples componentes (por ejemplo, servidor y cliente), siempre se recomienda asegurar / filtrar / sanear cualquier entrada y salida entrantes entre esos componentes, incluso si esos datos no están t proveniente del usuario directamente (en la última fuga de Vault7 hubo una vulnerabilidad que explotó el intercambio de datos no protegidos / filtrados entre los switches de Cisco, lo que permite DOS o no autorizado) acceso)

En el caso que está describiendo, hay muchos escenarios en los que las cosas podrían salir mal debido a un socket no seguro local.

Por ejemplo, si ese socket se ejecutaba con altos privilegios, podría ser explotado por hackers para realizar " Escalaciones de privilegios "después de que él \ obtiene acceso en la máquina.

El hecho de que el zócalo no esté expuesto a la red, significa que el zócalo y los datos no son vulnerables a los ataques "remotos" (ataques que podrían llevarse a cabo a través de la red), pero aún es posible que ser abusado a través de ataques locales (explotaciones locales y cargas maliciosas) y durante el proceso posterior a la explotación.

    
respondido por el HSN 02.06.2017 - 22:51
fuente
0
  

Un sitio web sugirió que los sockets son totalmente internos, por lo que parece sugerirme que no se necesita seguridad porque los sockets no son visibles fuera de mi máquina

El socket de dominio Unix es totalmente interno a la máquina, sin embargo, la implementación de seguridad aún es necesaria para reducir la superficie de ataque. Puede establecer un permiso en el archivo de socket, para restringir qué procesos pueden usar el socket para interactuar con su programa.

Secure Socket Layer o Transport Layer Security es un esquema de autenticación y encriptación, generalmente utilizado para sockets externos como TCP y algunas veces UDP (con DTLS). En general, tiene poco sentido ejecutar SSL / TLS sobre el socket de dominio Unix (SSL / TLS tiene una sobrecarga, y puede tener un mejor control usando los permisos de socket).

    
respondido por el Lie Ryan 03.07.2017 - 04:13
fuente

Lea otras preguntas en las etiquetas