6. Cifrado (Criptografía)

6.5. TLS y SSL

TLS (Transport Layer Security - Seguridad de la capa de transporte) y SSL (Secure Sockets Layer - Capa de Sockets Seguros) se mencionan a menudo cuando se habla de la seguridad de Internet y del sitio web.

Para hacer las cosas aún más confusas para los legos, estos términos a menudo se usan indistintamente y no son lo mismo.

Pero, ¿Cómo funcionan realmente TLS y SSL? ¿Hay alguna diferencia que debamos tener en cuenta?. Vamos a tratar de responder esas preguntas.

Tanto TLS como SSL funcionan como protocolos criptográficos que se utilizan para cifrar datos entre un servidor web y los usuarios, con el propósito de que no se puede "ver" el contenido que se está intercambiando entre los equipos, esto se logra encriptando los datos y autentificando una conexión cuando se mueven los datos en Internet.

SSL:

La versión original de SSL fue desarrollada por Netscape en 1994, pero nunca se lanzó oficialmente debido a fallas de seguridad fácilmente explotables.
Una versión mejorada 2.0 fue lanzada en febrero de 1995, pero tenía serias fallas propias, que serían parcheadas por SSL 3.0 solo un año después.
Con SSL se pueden usar diferentes algoritmos para las diferentes aplicaciones, por ejemplo usa DES, TDES, RC2, RC4, MD5, SHA-1, DH y RSA, cuando una comunicación está bajo SSL la información que es cifrada.

El procedimiento que se lleva acabo para establecer una comunicación segura con SSL es el siguiente:
    1) El cliente (browser) envía un mensaje de saludo al Server “ClientHello”.
    2) El server responde con un mensaje “ServerHello”.
    3) El server envía su certificado.
    4) El server solicita el certificado del cliente.
    5) El cliente envía su certificado: si es válido continúa la comunicación si no, se detiene o sigue la comunicación sin el certificado del cliente.
    6) El cliente envía un mensaje “ClientKeyExchange” solicitando un intercambio de claves simétricas si es el caso.
    7) El cliente envía un mensaje “CertificateVerify” si se ha verificado el certificado del server, en caso de que el cliente este en estado de autenticado.
    8) Ambos (cliente y server) envían un mensaje “ChangeCipherSpec” que significa el comienzo de la comunicación segura.

9) Al término de la comunicación ambos envían el mensaje “finished” con lo que termina la comunicación segura, este mensaje consiste en un intercambio del HASH de toda la conversación, de manera que ambos están seguros que los mensajes fueron recibidos intactos.

La versión más reciente de SSL es la v3, existen otro protocolo parecido a SSL solo que es desarrollado por IETF que se denomina TLS y difiere en que usa un conjunto un poco mas amplio de algoritmos criptográficos. Por otra parte existe también SSL plus, un protocolo que extiende las capacidades de SSL y tiene por mayor característica que es interoperable con RSA, DSA/DH y CE (Criptografía Elíptica).

TLS:

TLS fue concebido por Consensus Development como una actualización de SSL 3.0.
Fue lanzado en 1999 y sería reemplazado en 2006 por TLS 1.1, que agregó protección contra CBC (Cipher Block Chaining - Encadenamiento de Bloques de Cifrado). En 2008, TLS 1.2 agregó un conjunto adicional de actualizaciones, siendo la última versión TLS 1.3, lanzada en 2018.
 
El TLS es la siguiente generación del Certificado SSL: permite y garantiza el intercambio de datos en un entorno seguro y privado entre dos entes, el usuario y el servidor, mediante aplicaciones como HTTP, POP3, IMAP, SSH, SMTP o NNTP. Nos referimos al TLS como la evolución del SSL dado que está basado en éste último certificado y funciona de manera muy similar, básicamente: encripta la información compartida.
 
¿Cómo la encripta?
Mediante dos protocolos en capas diferentes: el protocolo de autenticación (llamado TLS Record Protocol) y el de mutuo acuerdo (también conocido como TLS Handshake Protocol).
 
El protocolo TLS se distingue por la seguridad con la interoperabilidad (las transmisiones de datos encriptados de diferentes aplicaciones como HTTP, que pasa a ser HTTPS).

Si bien TLS y SSL son fundamentalmente similares, teniendo en cuenta que TLS 1.0 se basó en SSL 3.0, aún existen diferencias en la forma en que funcionan:

SSL TSL
Cifrado Ofrece soporte para el paquete de cifrado Fortezza.  Ofrece soporte para cifrado RC4, Triple DES, AES, IDEA.
Mensajes de Alerta Mensaje de alerta "Sin certificado". Diferentes mensajes de alerta según la situación
Protocolo de Registro Utiliza MAC (Código de autenticación de mensajes). Utiliza HMAC (código de autenticación de mensajes basado en hash).
Proceso de Handshake El cálculo de hash incluye el secreto maestro y el pad.
Los hashes se calculan sobre el mensaje de protocolo de enlace.


Mensaje de Autenticación Método ad-hoc para adjuntar detalles clave y datos de la aplicación.


Adjuntar detalles clave y datos de la aplicación a través de HMAC.

¿ Que es la Fortezza Cripto Card ?

La Crypto Card de Fortezza, anteriormente llamada Tessera, es una tarjeta de PC (anteriormente PCMCIA, Asociación Internacional de Tarjetas de Memoria para Computadoras Personales) desarrollada por la NSA (National Security Agency - Agencia Nacional de Seguridad) que implementa los algoritmos Capstone. La tarjeta brinda seguridad a través de la verificación, autenticación, no repudio y encriptación.
Las tarjetas PCMCIA, ya no son comunes de observar en los equipos actuales.
Fortezza está diseñado para usarse con el Servicio de mensajería de defensa (DMS) y está controlado por exportación.
Varios proveedores han anunciado compatibilidad con la tarjeta Fortezza; La NSA también ha creado y demostrado una biblioteca basada en PKCS #11 que interactúa con la tarjeta. En criptografía, PKCS (Public-Key Cryptography Standards - Estándares de criptografía de clave pública) se refiere a un grupo de estándares de criptografía de clave pública concebidos y publicados por los laboratorios de RSA en California, hay distintas versiones de PKCS.  Actualmente la última es PKCS#15.

Actualmente, la NSA está trabajando con empresas (como "VLSI") para desarrollar productos comerciales que implementen algoritmos de Fortezza. VLSI está diseñando un chip "Regente" que agrega algoritmos DES y RSA. La NSA también apoya el desarrollo comercial de chips de tarjetas inteligentes con capacidad de algoritmo Fortezza.

IPsec -Internet Protocol SECcurity.

Es un conjunto de protocolos cuya función es asegurar las comunicaciones sobre el Protocolo de Internet (IP) autenticando y/o cifrando cada paquete IP en un flujo de datos. IPsec también incluye protocolos para el establecimiento de claves de cifrado.

IPSEC combina encriptaciones asimétricas y simétricas para brindar seguridad y mantener la velocidad.

Utiliza IKE protocol (Internet Key Exchange -Intercambio de claves de Internet) para lograr el cifrado.

La mayoría de los otros protocolos de seguridad funcionan en la capa de aplicación de la comunicación de red. Una ventaja importante de IPsec es que, debido a que opera a nivel de red en lugar de a nivel de aplicación, puede encriptar un paquete completo de IP

Lo hace con dos mecanismos:

Encabezado de autenticación (AH): Coloca una firma digital en cada paquete, protegiendo su red y sus datos de la interferencia de terceros => Integridad. Un AH significa que el contenido de un paquete de datos no puede modificarse sin detección, y también permite la verificación de identidad entre los dos extremos de una conexión IPSec.

Observación: Si en el encabezado IP se implementara un cifrado para dar privacidad, los routers podrían saber origen/destino :-).


Carga de Seguridad Encapsulada (ESP): Mientras que el AH evita la manipulación de un paquete, el ESP garantiza que la información dentro del paquete esté encriptada y no pueda leerse =>Privacidad. Se utilizan un encabezado ESP, un tráiler y un bloque de autenticación para cifrar la carga útil completa de un paquete.

Para Windows hay varios artículos que indican como implementar o bien habilitar esta característica.
Para Linux, se instala desde una terminal con sudo apt-get install.
IPsec es recomendado y no obligatorio para IPv6. Para IPv4, su uso es opcional.

Ventajas


    Como IPSec opera en la capa de red, los cambios solo deben realizarse en el sistema operativo en lugar de las aplicaciones individuales.
    IPSec es completamente invisible en su funcionamiento, por lo que es la opción ideal para las VPN.
    El uso de AH y ESP garantiza los niveles más altos posibles de seguridad y privacidad.

Desventajas

    IPSec es más complicado que los protocolos de seguridad alternativos y más difícil de configurar.
    Se requieren claves públicas seguras para IPSec. Si su clave se ve comprometida o tiene una gestión deficiente de la clave, puede experimentar problemas.
    Para la transmisión de paquetes de pequeño tamaño, IPSec puede ser una forma ineficiente de encriptar datos.