viernes, 13 de enero de 2012

SSL

El protocolo SSL (Secure Sockets Layer) es un estándar para comunicaciones seguras, normalmente a través de Internet entre cliente y servidor, encriptando los datos de forma que proporciona autenticación, integridad y privacidad. Fue creado por Netscape en 1994, siendo la versión 2.0 la que vio la luz de cara al público. Actualmente, ha evolucionado hasta convertirse en TLS (Transport Layer Security) en su versión 1.2, el cual se puede ver en más detalle en RFC5246.

Éste post está inspirado por el artículo de Chema Alonso "Cómo NO hacer una página de login" y por el test de evaluación de certificado servidor de SSLLabs. SSLLabs también proporciona una guía para entender un poco mejor los criterios empleados a la hora de dar los resultados. La web que vamos a evaluar es mail.live.com, (eso es lo que he tecleado en la barra de navegación).

Como nota, decir que existen certificados emitidos para dominios Internet, emitidos para organismos o empresas, y los certificados de validación extendida. Éstos últimos se pueden identificar a priori viendo la barra de navegación de nuestro Internet Explorer (toda verde), Firefox, Chrome, (en verde el nombre de la empresa o compañía), o lo que tengamos:

Internet Explorer 9:

Mozilla Firefox 9.0.1:

Google Chrome 16:


Las siguientes configuraciones encontradas darán directamente una puntuación de cero:

  • No coincide el nombre de dominio.
  • Certificado aún no válido.
  • Certificado caducado.
  • Certificado auto-firmado.
  • Certificado en el que NO se confía (autoridad certificadora no reconocida o algún error de validación).
  • Certificado revocado.


Bien, teniendo en cuenta la siguiente tabla de puntuaciones:

puntos >= 80 A
puntos >= 65 B
puntos >= 50 C
puntos >= 35 D
puntos >= 20 E
puntos < 20 F

vemos que mail.live.com tiene varios servidores, y obtiene un 85:

Escogemos el primero:

Información general del certificado:


Los tres puntos a tener en cuenta en esta evaluación son: protocolo soportado, intercambio de claves y cifrado. Seguimos con cada uno de ellos.

Protocolo soportado - 30% del total

SSL 2.0    20%
SSL 3.0    80%
TLS 1.0    90%
TLS 1.1    95%
TLS 1.2    100%



Intercambio de claves - 30% del total

Esta fase cubre dos aspectos: autenticación, identificando al menos una de las partes frente a la otra; y generación e intercambio de claves de forma segura, ya que éstas van a ser las que se usen durante el resto de la sesión. Evaluando cada una de éstas características, la tabla a tener en cuenta sería la siguiente:


Clave débil (fallo Debian OpenSSL)                               0%
Intercambio de clave anónimo (sin autenticación)             0%
Longitud de clave < 512 bits                                           20%
Intercambio de clave exportable (limitado a 512 bits)      40%
Longitud de clave < 1024 bits (i.e., 512)                        40%
Longitud de clave < 2048 bits (i.e., 1024)                      80%
Longitud de clave < 4096 bits (i.e., 2048)                      90%
Longitud de clave >= 4096 bits (i.e., 4096)                    100%


Cifrado - 40% del total

Evaluación de la clave de cifrado, ya que, mientras más fuerte sea ésta, más complicado será de romper (elemental, ¿no?). La tabla a seguir sería:

0 bits (sin encriptar)       0%
< 128 bits (i.e., 40, 56)      20%
< 256 bits (i.e., 128, 168)      80%
>= 256 bits (i.e., 256)      100%





Como complemento, os dejo los vídeos que tiene Intypedia referentes a SSL:

Introducción a SSL:


Ataques al protocolo SSL:

No hay comentarios: