¿Por qué los sockets TCP no están cifrados de forma predeterminada?

4

Me he estado preguntando esto durante el tiempo que he estado programando, ¿Por qué los sockets TCP no están cifrados de forma predeterminada? Todo el mundo siempre dice que el uso de sockets sin formato es peligroso, ya que todos los paquetes enviados son susceptibles a la detección de paquetes.

Entonces, ¿por qué la implementación original de sockets TCP no incluía una forma básica de cifrado? Lo que he notado hasta ahora, es que la mayoría de los lenguajes no proporcionan una implementación incorporada que lo obliga a usar una biblioteca de terceros o dificulta que los 'noobies' implementen SSL en todos los sockets, que la mayoría no lo hace ' Ni siquiera te molestes en hacerlo en primer lugar.

Incluso los certificados autofirmados simples serían suficientes para la forma más básica de protección, que se podría abstraer para los nuevos desarrolladores.

    
pregunta Paradoxis 20.12.2016 - 23:50
fuente

3 respuestas

5

La red moderna sigue el modelo OSI de siete capas que es exitoso debido al principio de separación de preocupaciones .

  

El valor de la separación de preocupaciones es simplificar el desarrollo y mantenimiento de los programas de computadora. Cuando las inquietudes están bien separadas, las secciones individuales pueden reutilizarse, así como desarrollarse y actualizarse de forma independiente. De especial valor es la capacidad de mejorar o modificar posteriormente una sección del código sin tener que conocer los detalles de otras secciones, y sin tener que realizar los cambios correspondientes en esas secciones.

TCP / IP es la capa 4 ("Transporte")

  

La capa de transporte proporciona los medios funcionales y de procedimiento para transferir secuencias de datos de longitud variable desde una fuente a un host de destino a través de una o más redes, mientras se mantiene la calidad de las funciones de servicio.

SSL / TLS es la capa 6 ("Presentación")

  

Esta capa proporciona independencia de la representación de datos (por ejemplo, cifrado) al traducir entre los formatos de red y de aplicación. La capa de presentación transforma los datos en la forma que la aplicación acepta. Esta capa formatea y encripta los datos que se enviarán a través de una red. A veces se le llama la capa de sintaxis.

En otras palabras, es una elección de diseño consciente.

También, TCP es anterior a SSL por varias décadas. A saber, SLL sigue cambiando porque se encuentran debilidades; Mientras tanto, TCP se ha mantenido prácticamente igual. El modelo OSI permite una adopción más fácil de los cambios al mantener algunas cosas constantes mientras varía otras. Si construimos el cifrado en TCP, sería un protocolo mucho menos estable.

    
respondido por el John Wu 21.12.2016 - 00:23
fuente
4

¿Por qué Snail Mail no viene con cifrado integrado?

Un socket es un concepto simple que se utiliza para hacer posible la comunicación entre múltiples partes, es decir, solo transferir mensajes. En la medida en que es similar al correo postal, es decir, tiene algún remitente y destinatario y el mensaje, y es posible que tenga una protección mínima (sobre) que se puede omitir fácilmente. Proteger la comunicación contra el olfateo y la manipulación es un concepto mucho más complejo y el tipo de protección que realmente se necesita depende del caso de uso específico. Por ejemplo, el envío de mensajes a otro proceso en el sistema local necesita una protección diferente a la de enviar mensajes a otro host en una red local o a alguna parte del otro lado del planeta donde algunos de los enrutadores intermedios están controlados por organizaciones gubernamentales.

Por lo tanto, solo tiene sentido manejar el intercambio de mensajes separados de la protección de los mensajes para simplificar la comunicación y ser flexible en el tipo de protección que realmente se necesita.

Algunos ejemplos de los diferentes casos de uso deberían dejar en claro por qué separar estos conceptos tiene sentido:

  • Los sockets de dominio UNIX no necesitan cifrado porque necesitaría tener permisos de kernel para rastrear realmente los datos, en cuyo caso también podría capturar los datos antes del cifrado.
  • Si está en una red con un despliegue completo de IPSec, todas las comunicaciones entre las partes en la red ya están encriptadas, por lo que no es necesario agregar otra encriptación en la parte superior.
  • El cifrado en Internet como HTTPS debe tener primero una infraestructura PKI implementada con anclajes de confianza locales para que pueda autenticar al interlocutor antes de enviar mensajes.
  • El cifrado de salto por salto como el que tiene con SMTP (entrega de correo) no protege el mensaje contra el rastreo en los saltos, por lo que también necesita un cifrado de extremo a extremo (es decir, PGP, S / MIME).
  • La comunicación unidireccional o multidifusión no puede tener el tipo de intercambio de claves que tiene con TLS porque requiere comunicación bidireccional.
respondido por el Steffen Ullrich 21.12.2016 - 06:41
fuente
2

Gastos generales de rendimiento

El cifrado requiere mucho más esfuerzo que las redes básicas. Primero, requiere potencia computacional: ejecutar todo el tráfico a través de un canal similar a SSL en la década de 1980, cuando TCP obtuvo una adopción a gran escala, no sería práctico, ya que los procesadores eran mucho más lentos que en la actualidad.

Sin embargo, un problema aún mayor es la sobrecarga de red del protocolo de enlace SSL para pequeñas solicitudes. Para mensajes pequeños, el protocolo de enlace para establecer las claves de cifrado puede ser fácilmente varias veces más grande que el mensaje real, requiere más viajes de ida y puede duplicar la latencia. Esta es una razón por la que incluso si los estándares se rediseñaran hoy, tendría sentido tener las capas de socket de red básicas sin cifrado.

    
respondido por el Peteris 21.12.2016 - 02:57
fuente

Lea otras preguntas en las etiquetas