PROTOCOLOS SSL - TLS
TLS (TransportLayer Security - Seguridad de la
Capa de Transporte)Es el sucesor del SSL (Secure Sockets Layer). Ambos
protocolos sirven para proporcionar comunicaciones seguras en Internet, usando un modelo de autenticación y privacidad de la información
entre extremos sobre Internet mediante criptografía. Esto es fundamental para
mantener la seguridad en el comercio vía Internet.
SSL fue diseñado de manera modular (extensible), con soporte para compatibilidad hacia delante y hacia atrás y negociación entre las partes (peer-to-peer).
Normalmente el servidor es el único que es autenticado, garantizando así su identidad, pero el cliente se mantiene sin autenticar, ya que para la autenticación mutua se necesita una infraestructura de claves públicas (o PKI) para los clientes.
Estos protocolos permiten prevenir escuchas (eavesdropping), evitar la falsificación de la identidad del remitente y mantener la integridad del mensaje en una aplicación cliente-servidor.
La versión 3.0 del SSL fue desarrollada por Netscape en 1996, que fue la base para desarrollar la versión 1.0 del TLS, protocolo estándar IETF definido en el RFC 2246 por primera vez.
Las primeras implementaciones de SSL sólo podían usar claves simétricas de 40 bits como máximo, ya que el gobierno de los EEUU imponía restricciones sobre la exportación de tecnología criptográfica. Esta clave era de 40 bits ya que las agencias de seguridad nacional americanas podían atacarla mediante fuerza bruta y poder leer así el tráfico cifrado, mientras que los posibles atacantes con menores recursos no podrían leerlo. Finalmente, después de diferentes juicios y la aparición de mejores productos criptográficos diseñados en otros países, se rebajaron las restricciones de exportación de tecnología criptográfica, desapareciendo casi por completo la limitación de claves de 40 bits. Actualmente se usan claves de 128 bits, o incluso más, para las claves de cifrado simétricas.
SSL fue diseñado de manera modular (extensible), con soporte para compatibilidad hacia delante y hacia atrás y negociación entre las partes (peer-to-peer).
Normalmente el servidor es el único que es autenticado, garantizando así su identidad, pero el cliente se mantiene sin autenticar, ya que para la autenticación mutua se necesita una infraestructura de claves públicas (o PKI) para los clientes.
Estos protocolos permiten prevenir escuchas (eavesdropping), evitar la falsificación de la identidad del remitente y mantener la integridad del mensaje en una aplicación cliente-servidor.
La versión 3.0 del SSL fue desarrollada por Netscape en 1996, que fue la base para desarrollar la versión 1.0 del TLS, protocolo estándar IETF definido en el RFC 2246 por primera vez.
Las primeras implementaciones de SSL sólo podían usar claves simétricas de 40 bits como máximo, ya que el gobierno de los EEUU imponía restricciones sobre la exportación de tecnología criptográfica. Esta clave era de 40 bits ya que las agencias de seguridad nacional americanas podían atacarla mediante fuerza bruta y poder leer así el tráfico cifrado, mientras que los posibles atacantes con menores recursos no podrían leerlo. Finalmente, después de diferentes juicios y la aparición de mejores productos criptográficos diseñados en otros países, se rebajaron las restricciones de exportación de tecnología criptográfica, desapareciendo casi por completo la limitación de claves de 40 bits. Actualmente se usan claves de 128 bits, o incluso más, para las claves de cifrado simétricas.
FUNCIONAMIENTO.
- El protocolo SSL/TSL está
basado en el intercambio de mensajes. En cada mensaje existe un campo
(content_type) donde se especifica el protocolo de nivel superior
utilizado. Estos mensajes puede ser comprimidos, cifrados y empaquetados
con un código de autentificación del mensaje (MAC)
En el inicio de un conexión el nivel de mensaje encapsula un protocolo handshake (content_type=22), enviándose diferentes mensajes:
- El cliente inicia
la comunicación enviando un mensaje "Client Hello" dónde
especifica una lista de conjunto de cifrados, métodos de compresión y la
versión del protocolo SSL más alta permitida. A la vez envía una serie de
bytes aleatorios que después serán usados. Adicionalmente puede enviar el
identificador de la sesión.
- El servidor responde con un
mensaje "Server Hello" donde se indican los parámetros elegidos
por el servidor a partir de las opciones ofertadas por
el cliente.
- Una vez establecidos los
parámetros de la conexión, cliente y servidor intercambian los
certificados, según las claves públicas de cifrado seleccionadas.
Actualmente son certificados X.509, pero existe un borrador en el que se
especifica el uso de certificados basados en Open PGP.
- Si la conexión tiene que ser mutuamente
certificada el servidor pide un certificado al cliente y éste se
la enviaría.
- El cliente verifica
la autenticidad del servidor.
- Cliente y servidor
negocian una clave secreta común (master secret), que puede derivarse de
un intercambio Diffie-Hellman, o utilizando la clave privada de cada uno
para cifrar una clave pública que servirá para cifrar a la vez la clave
secreta. El resto de claves son derivadas a partir de este master secret y
los valores aleatorios generados en el cliente y el servidor,
que son pasados a través una función pseudo-aleatoria.
- Cliente y servidor
aplican los parámetros negociados.
TLS 1.1.
·
Es la última
versión aprobada del protocolo TLS. Es muy parecida a la versión anterior (TLS
1.0), pero la principal diferencia es la modificación del formato para cifrado
RSA anterior al uso de 'master secret', que es parte del mensaje de intercambio
de claves del cliente (si se usa RSA). En TLS 1.0 se usaba la versión 1.5 de
PCK#1, pasando a usar ahora la versión 2.1. Con este cambio se consigue
protección ante ataques descubiertos por Daniel Bleichenbacher que podían
lanzarse contra servidores TLS 1.0, usando PKCS#1 versión 1.5. También se
incluyen recomendaciones para evitar ataques remotos programados. TLS 1.1 está
actualmente implementado en el navegador Opera y en GnuTLS.
4. CONCLUSIONES.
·
La seguridad
es un aspecto fundamental para muchas aplicaciones cliente-servidor, siendo un
ejemplo muy importante, por su gran proyección en los últimos tiempos, el
negocio electrónico.
Mediante el uso de SSL/TLS se ha conseguido aumentar el grado de seguridad en dichas conexiones cliente-servidor, teniendo presente que la idea de "seguridad total" es una utopía.
Como se ha explicado en esta ampliación el uso de SSL/TLS junto con otras técnicas como IPSec, cifrado RPC, etc., nos ayudan a mantener la confidencialidad e integridad de los datos durante la comunicación, protegiendo así datos confidenciales como números de tarjetas de crédito en las diferentes transacciones de comercio electrónico, envío de información privada, en una intranet o a través de Internet, de una organización, etc.
Aunque no hay que olvidar que los ataques pueden ser múltiples y cada vez más sofisticados, lo que obliga a una permanente investigación de mejora de los diferentes protocolos de seguridad, se puede decir que un uso correcto de estos protocolos nos proporciona hoy en día un nivel de seguridad "bastante aceptable".
Mediante el uso de SSL/TLS se ha conseguido aumentar el grado de seguridad en dichas conexiones cliente-servidor, teniendo presente que la idea de "seguridad total" es una utopía.
Como se ha explicado en esta ampliación el uso de SSL/TLS junto con otras técnicas como IPSec, cifrado RPC, etc., nos ayudan a mantener la confidencialidad e integridad de los datos durante la comunicación, protegiendo así datos confidenciales como números de tarjetas de crédito en las diferentes transacciones de comercio electrónico, envío de información privada, en una intranet o a través de Internet, de una organización, etc.
Aunque no hay que olvidar que los ataques pueden ser múltiples y cada vez más sofisticados, lo que obliga a una permanente investigación de mejora de los diferentes protocolos de seguridad, se puede decir que un uso correcto de estos protocolos nos proporciona hoy en día un nivel de seguridad "bastante aceptable".