Blog

Seguridad en Redes: Conexiones TCP seguras (SSL, Secure Sockets Layer)

Protocolo de seguridad ampliamente difundido. Es usado en la mayoría de los navegadores y servidores web (https) y en transferencias de comercio electrónico. Fue diseñado originalmente por Netscape en 1993. Existen variantes como TLS: transport layer security [RFC 2246]. Provee de confidencialidad, integridad y autenticación. Los objetivos originales eran:

  • Permitir el comercio electrónico en la Web
  • Cifrado (especialmente de números de tarjetas de credito)
  • Autenticación de servidores Web
  • Opcionalmente autenticación de clientes
  • Minimizar riesgos al hacer negocios con nuevos clientes
  • Disponible para toda conexión TCP
  • Interfaz de socket segura

SSL provee una interfaz de programación (API) para desarrollar aplicaciones. Existen librerías SSL en C y clases SSL para Java y C++.

kk

Como herramientas de cifrado tenemos:

  • Algoritmos de clave pública.
  • Algoritmo de cifrado simétrico.
  • Algoritmos MAC (Message Authentication Code)

SSL permite varios mecanismos de cifrado. El cliente y el servidor deberán de acordar el mecanismo de cifrado en una negociación. El cliente ofrecerá diferentes opciones y el servidor será quien elija entre las ofrecidas.

El propósito del Handshaking será el de autenticar al servidor, acordar el algoritmo de cifrado en la negociación, establecer las claves y autenticar al cliente:

  1. El cliente envía una lista de algoritmos que soporta, junto con un número de unicidad del cliente (para evitar la replicación de mensajes)
  2. El servidor elige un algoritmo de la lista.
  3. El servidor envía su elección, el certificado y el número de unicidad del servidor.
  4. El cliente verifica el certificado, extrae la clave pública del servidor, genera el “pre-master secret”, lo cifra con la clave pública de servidor y lo envía al servidor.
  5. El cliente y el servidor calculan independientemente las claves de cifrado y MAC a partir del “pre-master secret” y los números de unicidad (ambos comparten estas cuatro claves).
  6. El cliente envía un MAC de todos los mensajes de handshake.
  7. El servidor envía un MAC de todos los mensajes de handshake.

Los ultimos 2 pasos protegen el handshake de ser observado. Un cliente ofrece un rango de algoritmos de cifrado, algunos mas robustos y otros más debiles. Un atacante en modo “Man In The Middle” podría borrar los resultados robustos de la lista. Los ultimos los 2 pasos lo evitan (los ultimos 2 mensajes son cifrados).

kk3

Protocolo:

kk2

 

Fuente de algunas fotos el libro James Kurose y Keith Ross ¨Computer Networking”.

Autor: Roberto (@leurian)

Leave a Reply

*

    No Twitter Messages