Seguridad de la capa de transporte

Seguridad de la capa de transporte

15 Jul 2020 in

Seguridad de la capa de transporte(en inglés: Transport Layer Securityo TLS) y su predececesor Secure Sockets Layer( SSL; en español capa de puertos seguros) son, que dan comunicacionespor una, comúnmente.

Se emplean certificadosy por lo tantoparacon quien se están comunicando, ​ y para intercambiar una llave simétrica. Esta sesión es entonces usada para cifrar el flujo de datos entre las partes. Esto deja la confidencialidad del dato/mensaje, códigos de autenticación de mensajes para integridad y como un producto lateral, autenticación del mensaje. Varias versiones del protocolo están en aplicaciones ampliamente usadas como,,,y(VoIP). Una propiedad importante en este contexto es, a fin de que la clave de corta vida de la sesión no pueda ser descubierta desde la clave asimétrica de largo plazo.

TLS es un protocolo de(IETF), definido por vez primera en 1999 y actualizado en el(agosto de dos mil ocho) y en(marzo de 2011). Se basa en las especificaciones anteriores de SSL (1994, 1995, 1996) desarrolladas por ​ para añadir ela su navegador. Su última versión, TLS trece, fue definida en el mes de agosto de dos mil dieciocho.

Back to top

1) Descripción

SSL proporcionayde la información entre extremos sobremediante el uso de. Habitualmente, solo el servidor es autenticado (esto es, se garantiza su identidad) mientras que el usuario se sostiene sin autenticar.

SSL implica una serie de fases básicas:

Durante la primera fase, el usuario y el servidor negocian qué algoritmos criptográficos se marchan a emplear.Las implementaciones actuales proporcionan las próximas opciones:

Back to top

2) Historia y desarrollo

2.1) API de Secure Network Programming

Los primeros esfuerzos de investigación cara la seguridad de la capa de transporte incluyeron la(API, por su sigla en inglés) de Secure Network Programming (SNP), la que en mil novecientos noventa y tres exploró la posibilidad de tener una API de capa de transporte segura afín a los, para facilitar la retroadaptación de las aplicaciones de red preexistentes con medidas de seguridad.

El protocolo SSL fue desarrollado originalmente por. ​ La versión 1.0 jamás se entregó públicamente; la versión dos.0 se presentó en el mes de febrero de 1995 mas "contenía una cantidad de fallas de seguridad que al final llevaron al diseño de la versión SSL 3.0". ​ Dicha versión, presentada en mil novecientos noventa y seis, fue un rediseño completo del protocolo producido por, quien trabajó con los ingenieros de Netscapey Alan Freier. Las versiones más nuevas de SSL/TLS están basadas en SSL 3.0. El boceto de mil novecientos noventa y seis de SSL treinta fue publicado por lacomo el histórico.En octubre de 2014, se detectó una nueva vulnerabilidad sobre el protocolo SSL en su versión treinta, la.

TLS 1.0 fue definido en elen enero de 1999 y es una actualización de SSL versión 3.0. Como afirma el RFC, "las diferencias entre este protocolo y SSL treinta no son dramáticas, pero son suficientemente significativas como para impedir la interoperabilidad entre TLS diez y SSL 3.0". TLS diez incluye una forma en la que la implementación puede conectarse en SSL treinta, desgastando la seguridad.

TLS once fue definido en elen abril de dos mil seis. ​ Es una actualización de TLS 1.0. Las diferencias más significativas incluyen:

  • Agrega protección contra ataques de CBC.
    • El(IV) implícito fue reemplazado por un IV explícito.
    • Cambio en el manejo de los fallos de relleno.
  • Soporte para el registro de parámetros de.
  • El(IV) implícito fue reemplazado por un IV explícito.
  • Cambio en el manejo de los fallos de relleno.

TLS 1.2 fue definido originalmente en elen agosto del 2008. Se fundamenta en una especificación siguiente de TLS 1.1. Las mayores diferencias son:

  • la combinación-en la(PRF) fue reemplazada por, con la opción de usar las PRF especificadas en la cipher-suite.
  • la combinación MD5-SHA-1 en el mensaje terminado fue sustituida por, sin la opción de emplear algoritmos de específicos para la cipher-suite. Sin embargo, el tamaño del hashen el mensaje terminado es truncado a noventa y seis bits.
  • la combinación MD5-SHA-1 en el elemento digitalmente firmado fue sustituida por un hashsimple negociado durante el handshake, que por defecto es SHA-1.
  • Mejoras en la habilidad de clientes del servicio y servidores para especificar que algoritmos de hashy de firma van a admitir.
  • Expansión del soporte de cifras de cifrado autenticadas, usadas básicamente para modo Galois/Counter (GCM) ydel cifrado con(AES).
  • Se añadieron definición dey de Ciphersuites de AES.

TLS doce fue después redefinido en elde marzo de 2011 redactando sucon SSL y TLS a fin de que dichas sesiones jamás negocien el uso de SSL versión 2.0.

TLS 1.3 fue definido en elen agosto de 2018. Está basado en la precedente especificación TLS doce. Las principales diferencias con TLS doce incluyen:

  • Un modo 0-RTT
  • Retiro de la hora GMT.
  • Fusiona soporte dedelpero sin curvas explícitas.
  • Retira el campo de longitud innecesaria de la entrada de AD a cifras AEAD.
  • Cambiar el nombre de Cliente, Servidor KeyExchange a Cliente, Servidor KeyShare
  • Añade un HelloRetryRequestexplícita para rehusar el del cliente
  • Handshakerevisado a fin de suministrar el modo 1-RTT.
  • Retiro de grupos DHE personalizados.
  • Eliminado el soporte para la compresión.
  • Eliminado el soporte para el intercambio de claves RSA estática y DH.
  • Eliminado el soporte para sistemas de cifrado no AEAD.
Back to top

3) Funcionamiento

El protocolo SSL intercambia registros; opcionalmente, cada registro puede ser comprimido, cifrado y embalado con un(MAC). Cada registro tiene un campo de content_typeque especifica el protocolo de nivel superior que se está usando.

Cuando se inicia la conexión, el nivel de registro encapsula otro protocolo, el protocolo handshake(o bien protocolo de acuerdo), que tiene el content_type22.

El cliente envía y recibe múltiples estructuras handshake:

  • Envía un mensaje ClientHelloespecificando una lista de conjunto de cifrados, métodos de compresión y la versión del protocolo SSL más alta permitida. Este también envía bytes azarosos que serán utilizados más tarde (llamados Challenge de Clienteo Reto). Además puede incluir el identificador de la sesión.
  • Después, recibe un registro ServerHello, en el que el servidor escoge los parámetros de conexión a partir de las opciones ofertadas de antemano por el cliente del servicio.
  • Cuando los parámetros de la conexión son conocidos, cliente del servicio y servidor intercambian certificados (en dependencia de las claves públicas de cifrado seleccionadas). Estos certificados son hoy día, mas hay también un boceto especificando el uso de certificados basados en.
  • Cliente y servidor negocian una clave secreta (simétrica) común llamada master secret, probablemente usando el resultado de un intercambio, o bien sencillamente cifrando una clave secreta con una clave pública que es descifrada con la clave privada de cada uno de ellos. Todos los datos de claves restantes son derivados a partir de este master secret(y los valores aleatorios generados en el usuario y el servidor), que son pasados a través una funcióncuidadosamente escogida.

TLS/SSL poseen una variedad de medidas de seguridad:

  • Numerando todos y cada uno de los registros y usando el número de secuencia en el MAC.
  • Usando un resumen de mensaje mejorado con una clave (de forma que solo con dicha clave se pueda comprobar el MAC). Esto se detalla en el).
  • Protección contra múltiples ataques conocidos (incluyendo ataques ), como los que implican un degradado del protocolo a versiones anteriores (por consiguiente, menos seguras), o bien conjuntos de cifrados más débiles.
  • El mensaje que finaliza el protocolo handshake( Finished) envía un hashde todos y cada uno de los datos intercambiados y vistos por las dos partes.
  • La función pseudo aleatoria divide los datos de entrada en 2 mitades y las procesa con algoritmos hashdiferentes (y), después efectúa sobre ellos una operación. De esta manera se resguarda a sí mismo de la eventualidad de que alguno de estos algoritmos se revelen frágiles en el futuro.

3.1) Intercambio de claves

Antes de que un cliente del servicio y el servidor pueden empezar a intercambiar información protegida por TLS, deben intercambiar en forma segura o acordar una clave de cifrado y una clave para usar cuando se cifren los datos (ver). Entre los métodos empleados para el intercambio/acuerdo de claves son: las claves públicas y privadas generadas con RSA (denotado TLS_RSA en el protocolo de handshakeTLS), Diffie-Hellman (llamado TLS_DH), Diffie-Hellman efímero (denotado TLS_DHE), Diffie-Hellman de Curva Elíptica (denotado TLS_ECDH), Diffie-Hellman de Curva Elíptica efímero (TLS_ECDHE), Diffie-Hellman anónimo (TLS_DH_anon), ​ y PSK (TLS_PSK).

El método conforme de claves TLS_DH_anon no verifica el servidor o bien el usuario y por ende rara vez se emplea puesto que es frágil a un ataque de suplantación de identidad. Solo TLS_DHE y TLS_ECDHE proporcionan.

Los certificados de clave pública que se usan durante el intercambio/acuerdo también varían en el tamaño de las claves de cifrado públicas/privadas utilizadas a lo largo del intercambio y, por lo tanto, en la firmeza de la seguridad que proveen. En el mes de julio de dos mil trece,anunció que dejaría de utilizar claves públicas 1024 bits y cambiaría a claves de dos mil cuarenta y ocho bits para acrecentar la seguridad de el cifrado TLS que da a sus usuarios.

  1. ↑debe estar incorporado para solucionar una falla en la renegociación que de otro modo rompe este protocolo.
  2. Si las librerías implementan las mejoras catalogadas en el, esto violaría la especificación SSL 3.0, la que la IETF no puede mudar a diferencia de TLS. A Dios gracias, la mayoría de las librerías actuales incorporan las mejoras y no se preocupan por la violación que esto causa.
  3. ↑elrompe todos los bloques cifrados (CBC ciphers) utilizados en SSL treinta y TLS diez a menos de que sea mitigado por el usuario. A noviembre de dos mil trece, Apple ha activado la mitigación por defecto solo para Safari 7 para Mac OS X 10.9, resultando en que tanto Safari for iOS, para Windows, y para Mac OS X 10.8 y precedentes todavía son teóricamente vulnerables al ataque BEAST en estas plataformas. - ver
  4. ↑cifrado (comoy) puede ser usado solo en TLS 1.2.
  5. ↑El cifrado CBC puede ser atacado con elsi la librería no está escrita cuidadosamente para quitar el timing de canales laterales.
  6. ↑El ataque Sweet32 rompe cifrados de bloque con bloques de tamaño de 64 bits.
  7. 3DES provee solamente ciento ocho o bien 1.2 bits de seguridad, ​ lo cual es menos que el mínimo recomendado de 128 bits.
  8. ↑IDEA y DES fueron removidas de TLS 1.2.
  9. ↑El cifrado de 40 bits fue diseñado para operar con claves reducidas y así cumplir con regulaciones de EE.UU. respecto de la exportación de software criptográfico. Estas combinaciones están prohibidas en TLS once y siguientes.
  10. losdebilitan o rompen el RC4 utilizado en SSL/TLS
  11. solo Autenticación, sin encriptación.

3.2) Integridad de datos

Se utiliza(MAC, por message authentication codeen inglés) para asegurar la integridad de los datos.se emplea para el modo CBC de cifrado de bloques y cifrado de streams.es utilizado para el cifrado autenticado tales como los modos GCM y CCM.

Back to top

4) Aplicaciones y adopción

SSL se ejecuta en una capa entre los protocolos de aplicación como,,y sobre el protocolo de transporte, que forma parte de la familia de protocolos. Puede proporcionar seguridad a cualquier protocolo que use conexiones de confianza (tal y como TCP).

Uno de los usos más importantes es al lado de HTTP para formar. HTTPS es usado para asegurar páginaspara aplicaciones de, utilizandopara contrastar la identidad de los extremos.

  1. La falla de renegociación insegura rompe este protocolo. Si las librerías implementan las mejoras catalogadas en el, esto violaría la especificación SSL 3.0, la que la IETF no puede cambiar en contraste a TLS. A Dios gracias, la mayoría de las librarías actuales implementan las mejoras y no se preocupan por la violación que esto causa.
  2. ↑ver seguridad del cifrado web en la tabla de más abajo
  3. ↑variosdebilitan o bien rompen el RC4 utilizado en SSL/TLS
  4. ↑elsignifica que la compresión TLS no es segura, y que el ataque BREACH que requierepuede ser utilizado para vencer la seguridad tanto de TLS y de SSL 3.0 que sea parcheado con elcuando la compresión HTTP está habilitada.
  5. ↑debe estar implementado en orden a solucionar un defecto en la renegociación que de otra manera podría romper el protocolo.

Todos los navegadores importantes aguantan TLS:

  1. ↑El navegador(y) soportan TLS 1.0 y TLS 1.1 desde la versión veintidos (se agregó, entonces se bajó desde la versión veintiuno). TLS 1.2 no es compatible
  2. ↑Utiliza la implementación TLS proporcionada por NSS. A noviembre de dos mil doce, NSS aguanta TLS diez y once, mas no 1.2. [ ]
  3. ↑IE usa la implementación TLS del sistema operativo Microsoft Windows proporcionada por el distribuidor soporte de seguridad SChannel. TLS once y doce están deshabilitadas por defecto
  4. Hasta2.2, que aparece en Opera diez, Opera añade soporte para TLS doce después de soportar anteriormente diez y once.
  5. ↑Safari utiliza la implementación del sistema operativo Mac OS X, Windows (XP, Vista, siete) con versión desconocida
  6. Safari 5 es la última versión disponible para Windows.
  7. Mobile Safari y software de terceros que usan el sistema UIWebView biblioteca emplea el sistema operativo iOS aplicación, que acepta TLS doce Desde de iOS cinco.0.

4.1) Bibliotecas

SSL y TLS han sido incorporados ampliamente en múltiples proyectos de software abierto y libre. Los programadores pueden emplear las librerías,,,,opara tener funcionalidad SSL/TLS.

  • incluye una implementación de SSL y TLS como una parte de su bulto Secure Channel.
  • incluye una implementación de SSL y TLS como parte de su bulto.
  • Los programadores depueden emplear una librería llamada.
  • OpenSSL es una implementación libre. Tiene una licencia BSD con algunas extensiones.
  • GnuTLS es una implementación libre, con licencia LGPL.
  • Zodiac TLS/SSL: es una implementación paracon licencia MIT.
  • es librería criptográfica potable de software abierto (que incluye una implementación de SSL/TLS).
  • : una implementaciónincluida en elque soporta TLS once y 1.2 desde Java 7, si bien está por defecto deshabilitada para el cliente del servicio y habilitada en el servidor.
  • MatrixSSL: una implementación con licencia dual.
  • Network Security Services (NSS): es una librería open source validada para.
  • PolarSSL es una implementación SSL/TLS muy pequeña para dispositivos embebidos que está diseñada para empleo fácil.
  • CyaSSL es una librería SSL/TLS embebida con fuerte foco en velocidad y tamaño.

Un ensayo presentado en la conferencia ACM dos mil doce de seguridad de computadores y comunicaciones ​ mostró que muchas aplicaciones usaban estas librerías incorrectamente, llevando a vulnerabilidad. Los autores hacían apreciar que "la causa primordial de la mayoría de estas vulnerabilidad es el terrible diseño de las APIs para las librerías latentes. En lugar de expresar propiedades de seguridad alto nivel para túneles de red tales como confidencialidad y autenticación, estas API exponen detalles de bajo nivel del protocolo SSL a los desarrolladores de aplicaciones. Como consecuencia, los desarrolladores a menudo emplean las API de SSL incorrectamente, malinterpretando y malentendiendo los posibles parámetros, opciones, efectos colaterales y valores de retorno".

Otra aplicación con creciente uso de TLS es. TLS es también el método estándar para proteger la señalización de aplicaciones con(SIP). TLS se puede emplear para proveer autenticación y cifrado a la señalización asociada cony otras aplicaciones basadas en SIP.

Aunque un número creciente de productos clientes y servidores pueden suministrar SSL de forma nativa, muchos aún no lo permiten. En estos casos, un usuario podría apreciar usar una aplicación SSL independiente comopara proporcionar cifrado. Sin embargo, elrecomendó en mil novecientos noventa y siete que los protocolos de aplicación ofrecieran una forma de actualizar a TLS a partir de una conexión sin cifrado ( plaintext), en vez de emplear un puerto diferente para cifrar las comunicaciones – esto evitaría el empleo de envolturas ( wrappers) como Stunnel.

SSL también puede ser utilizado para tunelizar una red completa y crear una(VPN), como en el caso de.

SSL 2.0 tiene una pluralidad de fallas:

  • Claves criptográficas idénticas se utilizan para la autenticación de mensajes y el cifrado.
  • SSL 2.0 tiene una construccióndébil que utiliza la función hashMD5 con un prefijo secreto, por lo que es frágil a los ataques de extensión de longitud.
  • SSL dos.0 no tiene ningún género de protección para el handshake, esto es, un ataque man-in-the-middleque se rebaje a este protocolo puede pasar inadvertido.
  • SSL 2.0 utiliza el cierre de la conexión TCP para indicar el final de los datos. Esto quiere decir que los ataques de truncamiento son posibles: el atacante sencillamente forja un TCP FIN, dejando el receptor inconsciente de un fin ilegítimo de mensaje de datos (SSL 3.0 solventa este inconveniente al tener una alerta de cierre explícita).
  • SSL dos.0 acepta un solo servicio y un certificado de dominio fijo, que choca con una función estándar de hostingvirtual en los servidores Web. Esto significa que la mayoría de los sitios están prácticamente afectados por el empleo de SSL.

SSL 2.0 está desactivado por defecto, a partir de:, ​, ​9.5, ​ y Safari. Después de que se envía un "ClientHello" TLS, si Mozilla Firefox verifica que el servidor no puede completar el handshake, intentará volver a caer a la utilización de SSL treinta con un SSL treinta "ClientHello" en formato SSL dos.0 para aumentar al máximo la probabilidad de éxito del handshakecon los servidores más viejos. ​ Permitir SSL dos.0 (y sistemas de cifrado débiles de 40 y cincuenta y seis bits), ha sido totalmente eliminado de Opera desde la versión 10

SSL 3.0 mejoró SSL dos.0 a través de la adición de cifradoy soporte para autenticación de certificados.

Desde el punto de vista de seguridad, SSL 3.0 debería considerarse menos deseable que TLS 1.0. Las suites de cifrado de SSL 3.0 tienen un proceso de derivación de claves débiles, la mitad de la llave profesora que se establece es totalmente dependiente de la función hash, que no es resistente a los choques y, por tanto, no es considerado seguro. Bajo TLS 1.0, la llave profesora que se establece depende tanto MD5 y SHA-1 por lo que su proceso de derivación no está actualmente considerado débil. Es por esta razón que las implementaciones SSL treinta no pueden ser ratificados bajo FIPS diez-2.

Hay algunos ataques contra la implementación en lugar del propio protocolo: ​ En las implementaciones anteriores, ciertas entidades transmisoras ​ no establecieron explícitamente basicConstraintsCA=False para los nodos hoja. Como resultado, estos nodos hojapodían firmar certificados piratas. Además, ciertos programas de (incluyendo IE6 y Konqueror) no comprobó este campo para nada. Esto puede ser explotado en ataques man-in-the-middlea todas las posibles conexiones SSL. Ciertas implementaciones (incluyendo versiones precedentes de la API de cifrado de Microsoft, Network Security Services y GnuTLS) dejan de leer los caracteres que siguen al carácter nulo en el campo del nombre del certificado, lo que puede ser explotado para engañar al usuario en la lectura del certificado tal y como si fuera producido en el lugar auténtico. (Por ejemplo, PayPal.com\0.badguy.com sería confundido como proveniente del lugar Paypal.com en vez de badguy.com). Los navegadores incorporaron mecanismos de degradación del protocolo a una versión anterior en SSL/TLS por razones de compatibilidad. La protección ofrecida por los protocolos SSL/TLS contra un downgrade a una versión precedente de un ataque man-in-the-middle activo puede ser inutilizados por tales mecanismos.

TLS tiene una variedad de medidas de seguridad:

  • Protección contra una degradación del protocolo a una versión precedente (menos segura) o bien un conjunto de cifrado más débil.
  • Numeración de los registros de aplicación posteriores con un número de secuencia y el uso de este número de secuencia en los códigos de autenticación de mensajes (MAC).
  • Usando un resumen de mensaje mejorado con una clave (por lo que sólo una llave-sostenedor puede comprobar el MAC). La construcciónutilizado por la mayoría de las suites de cifrado TLS se detalla en el(SSL treinta emplea un MAC basado en hashdiferente).
  • El mensaje que finaliza el protocolo de enlace ("Finalizar") envía un hashde todos los mensajes intercambiados handshakevistos por las dos partes.
  • La función pseudoaleatoria divide los datos de entrada en un medio y procesa cada uno con un algoritmo de hashdiferente (MD5 y SHA-1), luego lesjuntos para crear el MAC. Esto proporciona protección aun si uno de estos algoritmos resulta ser frágil.

4.2) Ataques contra SSL/TLS

Los ataques más significativos se mencionan más abajo:

4.2.1) Ataque de renegociación

Una vulnerabilidad del procedimiento en el que la renegociación fue descubierto en el mes de agosto de dos mil nueve, que puede conducir a ataques de inyección de texto plano contra SSL treinta y todas y cada una de las versiones actuales de TLS. Por servirnos de un ejemplo, deja a un atacante que puede raptar una conexión https para empalmar sus solicitudes en el comienzo de la conversación que el cliente tiene con el servidor web. El atacante no puede realmente descifrar la comunicación cliente-servidor, por lo que es diferente de un típico. Una solución a corto plazo es que los servidores de Internet dejen de permitir la renegociación, que en general no requerirá otros cambios salvo que se utilice la autenticación de certificados de cliente. Para corregir la vulnerabilidad, una extensión de la indicación de renegociación fue propuesta para TLS. Se requerirá que el cliente y el servidor incluyan y comprueben información acerca de los handshakeanteriores en cualquier renegociación de handshake. ​ Esta extensión se ha transformado en una regla propuesta y se le ha asignado el número de. El RFC ha sido incorporado por múltiples bibliotecas.

4.2.2) Ataques de reversión de versiones

Hay modificaciones a los protocolos originales, como False Start ​ (aprobada y habilitada por Google Chrome ​) o bien Snap Start, en las que se ha reportado que han introducido restricciones a los ataques de reversión de versiones para TLS ​ o bien para permitir que las modificaciones de la lista de conjunto de cifrado mandada por el usuario al servidor (un atacante puede ser capaz de influir en la selección de la suite de cifrado en un intento de rebajar la intensidad de juego de cifrado, así sea para utilizar un algoritmo de cifrado simétrico más débil o bien de un intercambio de clave más débil ​). Se ha demostrado en la conferencia sobre seguridad informática y de comunicaciones de la Association for Computing Machinery (ACM) que la extensión False Start está bajo riesgo bajo determinadas circunstancias, lo que podría permitir a un atacante recuperar las claves de cifrado en línea y acceder a los datos cifrados.

4.2.3) Ataque BEAST

El veintitres de septiembre de dos mil once, los investigadoresydemostraron una “prueba de concepto“ llamada BEAST ("Browser Exploit Against SSL/TLS") utilizando unpara violar restricciones de políticas de mismo origen, por una vulnerabilidad deampliamente conocida de TLS 1.0. ​prácticos de estano se conocían, la cual fue descubierta originalmente por Phillip Rogaway ​ en dos mil dos.

actualizó las versiones de desarrollo de sus libreríaspara atenuar ataques de tipo BEAST. NSS es empleado pory porpara su implementación de SSL. Algunosque tienen una implementación quebrada de la especificación SSL es posible que dejen de marchar como resultado de esto.

emitió el boletín de seguridad MS el 12 de enero de dos mil doce, que corrigió la vulnerabilidad BEAST al cambiar la forma en que el componente de Windows Secure Channel () transmite los bultos cifrados. ​ Por su lado, Apple habilitó por defecto la protección contra BEAST en la versión OS X ciento nueve Mavericks.

El ataque BEAST también se puede prevenir suprimiendo todos los cifrados CBC de la lista de cifrados tolerados, dejando solamente el cifrado, que es ampliamente soportado por la mayoría de los sitios. ​ Los usuarios dey deR2 pueden permitir el uso de TLS 1.1 y doce, pero esta contramedida fallará si no es soportado también por el otro extremo de la conexión, y caerá a TLS diez.

4.2.4) Ataques CRIME y BREACH

Los autores del ataque BEAST también son los autores del ataque, que emplea compresión de datos para adivinar. ​ Cuando se utiliza para recobrar el contenido de lasecreta, deja a un atacante efectuar unen una sesión web autenticada.

4.2.5) Ataques de relleno

Las versiones anteriores de TLS eran vulnerables frente aldescubierto en dos mil dos. Una nueva variación, llamada, fue publicada en dos mil trece. Hasta febrero de dos mil trece, los implementadores de TLS estaban todavía trabajando en el desarrollo de soluciones para la protección contra esta forma de ataque.

Una solución definitiva fue lanzada como la extensión Encrypt-then-MAC para TLS lanzado como.

4.2.6) Ataque POODLE

El 14 de octubre de 2014, investigadores de Google publicaron una vulnerabilidad en el diseño de SSL 3.0, lo que hace que el modo CBC de operación con SSL 3.0 sea vulnerable al ataque de relleno (). Ellos llamaron a este ataque POODLE (en inglés, Padding Oracle On Downgraded Legacy Encryption o bien Relleno de oráculo en Degradación a Cifrado Obsoleto). En promedio, los atacantes solo precisan hacer doscientos cincuenta y seis solicitudes SSL treinta para descubrir un byte de mensaje cifrado.

Aunque esta vulnerabilidad solo existe en SSL treinta y la mayoría de los clientes y servidores admite TLS diez y superiores, todos y cada uno de los primordiales navegadores rebajan voluntariamente a SSL treinta si los handshakecon las nuevas versiones de TLS fallan a menos que dan la opción para un usuario o administrador para deshabilitar SSL 3.0 y el usuario o el administrador lo haga. Por tanto, el hombre-en-el-medio primero debe realizar un ataque de rollbacky entonces aprovechar esta vulnerabilidad.

En general, la degradación de la seguridad muy elegante por el bien de la interoperabilidad es difícil llevar a cabo de una forma que no pueda ser explotada. Este es un reto especialmente en los dominios donde la fragmentación es alta.

4.2.7) Ataque RC4

A pesar de ataques existentes sobre RC4 que lo rompen, las suites de cifrado basadas en RC4 en SSL y TLS fueron consideradas seguros en un instante debido a la forma en que el sistema de cifrado se usaba en estos protocolos derrotaba a los ataques que rompían RC4, hasta que nuevos ataques difundidos en el mes de marzo de 2013 permitían que RC4 en TLS fuera quebrado totalmente. En 2011 se recomendaba emplear la suite RC4 como una solución alternativa para el ataque BEAST. ​ En 2013 una vulnerabilidad fue descubierta en RC4 sugiriendo que no era una buena solución para BEAST.​ Un caso de un ataque fue propuesto por Alfardan, Bernstein, Paterson, Poettering y Schuldt que utilizaba nuevos cortes estadísticos descubiertos en la tabla de clave RC4 ​ para recuperar partes del texto en claro con un gran número de cifrados TLS. ​ Un ataque de corte de doble byte en RC4 en TLS y SSL que requiere trece × 220 cifrados para romper RC4 se dio a conocer el 8 de julio de dos mil trece, y fue descrito como "viable" en la presentación de acompañamiento en el 22ndo Simposio USENIX de Seguridad el 15 de agosto de 2013.

Sin embargo, muchos navegadores modernos han sido diseñados para derrotar los ataques BEAST (salvo Safari para Mac OS X 10.7 o bien versiones anteriores, para iOS 6 o bien precedente, y para Windows; ver navegadores). Como resultado, RC4 ya no es la mejor opción para TLS 1.0. Los sistemas de cifrado CBC que se vieron perjudicados por el ataque BEAST anteriormente se están transformando en una opción más popular para la protección.

Microsoft recomienda deshabilitar RC4 cuando resulte posible.

4.2.8) Ataque de truncamiento

Un ataque de truncamiento TLS bloquea las solicitudes de desconexión de la cuenta de la víctima a fin de que el usuario sin saberlo, continúe conectado a un servicio web. Cuando se envía la petición de fin de sesión, el atacante inyecta un mensaje TCP FIN no cifrado (no hay más datos del expedidor) para cerrar la conexión. El servidor, por tanto, no recibe la petición de cierre de sesión y no se da cuenta de la terminación anormal.

Publicado en julio de dos mil trece, ​ el ataque provoca servicios web como Gmail y Hotmail que muestren una página que informa al usuario de que han salido apropiadamente del servicio, al paso que garantiza que el navegador del usuario mantiene la autorización con el servicio, lo que permite a un atacante tener el acceso para tomar el control de la cuenta que ha iniciado sesión en el usuario. El ataque no se fundamenta en la instalación de malwareen el PC de la víctima; los atacantes solo necesitan ponerse entre la víctima y el servidor web (por ejemplo, mediante la creación de un punto de acceso inalámbrico rebelde). ​ Esta vulnerabilidad también requiere acceso a la computadora de la víctima.

4.2.9) Fallo Heartbleed

El fallo Heartbleed es una grave vulnerabilidad en la popular librería de software criptográfica OpenSSL, que afecta a las versiones 1.0.1 a 1.0.1f. Esta debilidad permite el hurto de la información protegida, en condiciones normales, por el cifrado SSL / TLS que se utiliza para asegurar las cargas de datos. SSL / TLS proporciona seguridad de las comunicaciones y la privacidad a través de Internet para aplicaciones como web, correo electrónico, mensajería instantánea (IM) y ciertas redes privadas virtuales (VPN).

El fallo Heartbleed permite a cualquier persona en Internet leer la memoria de los sistemas protegidos por las versiones vulnerables del software OpenSSL. Esto compromete las claves secretas empleadas para identificar los proveedores de servicios y para cifrar el tráfico, los nombres y las contraseñas de los usuarios y el contenido real. Esto permite a los atacantes espiar las comunicaciones, hurtar datos de forma directa de los servicios y de los usuarios y suplantar servicios y a los usuarios.

4.2.10) Estudio de sitios web

A diciembre de 2014, Trustworthy Internet Movement estima que la proporción de sitios que son vulnerable a ataques TLS.

4.3) Forward secrecy

es una propiedad de los sistemas criptográficos que garantiza que una clave de sesión derivada de un conjunto de claves públicas y privadas no se verán comprometidas si una de las claves privadas se ve comprometida en el futuro. ​ Sin forward secrecy, si la clave privada del servidor fuera famosa, no sólo se verán comprometidas todas y cada una de las sesiones cifradas-TLS futuras mediante ese certificado del servidor, sino más bien también las sesiones precedentes que lo empleaban (siempre y en todo momento como es natural que estas sesiones pasadas fuesen detenidas y guardadas en el instante de la transmisión). ​ Una implementación de TLS puede suministrar forward secrecy al demandar el uso deefímeras para establecer claves de sesión, y ciertas implementaciones TLS notables lo hacen exclusivamente: por ejemplo, Gmail y otros servicios de Google que emplean HTTPS. ​ No obstante, muchos clientes y servidores que aguantan TLS (incluyendo los navegadores y servidores web) no están configurados para aplicar esas restricciones. ​ En la práctica, salvo que un servicio web utilice Diffie-Hellman para implementar forward secrecy, todo el tráfico web cifrado hacia y desde ese servicio puede ser descifrado por un tercero si obtiene la clave profesora del servidor (privado); por ejemplo, a través de una orden judicial.

Incluso cuando se implementa el intercambio de claves Diffie-Hellman, los mecanismos de gestión de sesión en el servidor pueden afectar el forward secrecy. El empleo de tickets de sesión TLS (una extensión TLS) hace que la sesión se deba resguardar por AES128-CBC-SHA256 independientemente de cualquier otro parámetro TLS negociados, incluyendo a los conjuntos de cifrado de forward secrecy, y las llaves de los tickets de sesión de larga duración TLS estropean el intento de incorporar forward secrecy.

Desde finales de dos mil once, Google ha proporcionado forward secrecy con TLS por omisión para los usuarios de su servicio de, junto cony búsqueda cifrada, entre otros muchos servicios. ​ Desde noviembre de 2013,ha proporcionado forward secrecy con TLS para los usuarios de su servicio. ​ A diciembre de 2014, el 20,0 por cien de los sitios web habilitados para TLS están configurados para usar conjuntos de cifrado que proporcionan forward secrecy a los navegadores web.

4.4) Evitar Triple-DES CBC

Algunos especialistas recomiendan eludir Triple-DES CBC. Debido a que RC4 y Triple-DES son los últimos cifrados soportados en las bibliotecas SSL/TLS de Windows XP, hace que sea difícil aguantar SSL para programas que usen esta biblioteca en Windows XP. Por poner un ejemplo en el caso de Internet Explorer para Windows XP.

4.5) Hacer en frente de los ataques MITM

4.5.1) Fijación de Certificados

Una forma de detectar y bloquear muchos géneros de ataques MITM es "fijar el certificado", en ocasiones llamado "fijación SSL".

Un usuario que hace fijación de certificado añade un paso adicional para el protocolo SSL o protocolo TLS habitual: Después de conseguir el certificado del servidor en la manera estándar, el cliente verifica el certificado del servidor con los datos de confianza para validación. Normalmente los datos de validación de confianza se incluye con la aplicación, en la forma de una copia de confianza de tal certificado, o un hashde confianza o huella digital del certificado o la clave pública del certificado. Por ejemplo, el Chromium y Chrome incluyen datos de validación para el certificado *.google.comque detectaen dos mil once. Desde ese momento, Mozilla Firefox ha introducido fiajción de certificados públicos en su navegador.

En otros sistemas que el cliente espera que la primera vez que obtenga el certificado de un servidor es de confianza y la almacena; durante las sesiones siguientes con ese servidor, el cliente comprueba el certificado del servidor contra el certificado guardado para protegerse de los ataques MITM siguientes.

4.5.2) Proyecto Perspectivas

El Proyecto Perspectivas ​ opera notarios de red que los clientes del servicio pueden utilizar para advertir si el certificado de un sitio ha cambiado. Por su naturaleza, los ataques man-in-the-middle colocan al atacante entre el destino y un solo objetivo específico. Como tal, Perspectivas advertirían al objetivo de que el certificado entregado al navegador web no coincide con el certificado visto desde otras perspectivas - las perspectivas de otros usuarios en diferentes momentos y lugares. El empleo de notarios de red desde una multitud de perspectivas torna posible que un propósito advierta un ataque aun si un certificado semeja ser completamente válido.

Back to top

5) Detalles del Protocolo

El protocolo TLS intercambia registros- los que encapsulan los datos que se intercambian en un formato específico (ver más abajo). Cada registro puede ser comprimido, cifrado y empaquetado con un código de MAC (), todo en dependencia del estado de la conexión. Cada registro tiene un campo de tipo de contenidoque designa el tipo de datos encapsulados, un campo de longitud y un campo de versión TLS. Los datos encapsulados pueden ser mensajes de control o bien de procedimiento de la propia TLS, o simplemente los datos de las aplicaciones que necesitan ser transferidos por TLS. Las especificaciones (suite de cifrado, claves, etc.) precisos para el intercambio de datos de la aplicación por TLS, se han acordado en el "handshake TLS" entre el cliente del servicio que pide los datos y el servidor que responde a las solicitudes. En consecuencia, el protocolo define tanto la estructura de cargas útiles transferidos en TLS y el procedimiento para establecer y inspeccionar la transferencia.

5.1) HandshakeTLS

Cuando se comienza la conexión, el registro encapsula un protocolo de "control"- el protocolo de mensajería de handshake(contenido de tipo 22). Este protocolo se utiliza para el intercambio de toda la información requerida por las dos partes para el intercambio de los datos de las aplicaciones reales por TLS. En él se definen los mensajes de formato o bien que contengan esta información y el orden de su intercambio. Estos pueden cambiar en función de las demandas del cliente y del servidor, es decir, existen múltiples procedimientos posibles para establecer la conexión. Este intercambio inicial resulta en una conexión exitosa TLS (las dos partes listas para trasferir datos de la aplicación con TLS) o bien un mensaje de alarma (como se especifica más adelante).

5.1.1) Handshakebásico

A continuación, un ejemplo simple de conexión, que ilustra un handshakeen el que el servidor (pero no el cliente) es autenticado por su certificado:

  1. Fase de negociación:
    • Un cliente del servicio envía un mensaje ClientHelloespecificando la versión más alta de protocolo TLS que soporta, un número al azar, una lista de conjuntos de cifrado sugeridas y métodos de compresión sugeridos. Si el usuario está intentando efectuar un handshakereanudado, puede mandar un.
    • El servidor responde con un mensaje ServerHello, que contiene la versión del protocolo elegido, un número azaroso, CipherSuite y método de compresión de las opciones ofrecidas por el usuario. Para confirmar o bien permitir handshakereanudado el servidor puede mandar un ID de sesión. La versión del protocolo elegido ha de ser el más alto que tanto el soporte de cliente del servicio y servidor. Por poner un ejemplo, si el cliente del servicio es compatible con la versión 1.1 y el servidor es compatible con la versión doce, la versión 1.1 se debe seleccionar; diez no se debe elegir.
    • El servidor envía su mensaje de certificado (dependiendo de la suite de cifrado elegido, esto puede ser omitido por el servidor).
    • El servidor envía su mensaje ServerKeyExchange(en función del conjunto de cifrado escogido, esto puede ser omitido por el servidor). Este mensaje se envía a todos los conjuntos de cifrado DHE y DH_anon.
    • El servidor envía un mensaje ServerHelloDone, lo que señala que terminó con la negociación del handshake.
    • El cliente responde con un mensaje ClientKeyExchange, que puede contener una PreMasterSecret, la clave pública, o nada. (Una vez más, esto depende de la cifra seleccionada.) Esta PreMasterSecret se cifra usando la clave pública del certificado del servidor.
    • El cliente y el servidor a continuación usan los números aleatorios y PreMasterSecret para calcular un secreto común, llamado el "secreto principal" ( master secret). Todos los demás datos clave para esta conexión se deriva de este secreto primordial (y los valores azarosos generados tanto por usuario y por servidor), que se pasan a través de una función pseudoaleatoria cuidadosamente diseñado.
  2. El cliente ahora envía un registro ChangeCipherSpec, fundamentalmente diciendo al servidor, "Todo lo que yo te afirme desde este momento será autenticado (y cifrada si los parámetros de cifrado estaban presentes en el certificado del servidor)." El ChangeCipherSpec es en sí mismo un protocolo a nivel de registro con el tipo de contenido veinte.
    • Por último, el cliente envía un mensaje autenticado y cifrado de Finished(terminado), que contiene un hashy MAC sobre los mensajes de handshakeanteriores.
    • El servidor intentará descifrar el mensaje Finisheddel cliente del servicio y verificar el hashy MAC. Si el descifrado o bien verificación falla, el handshakese estima que ha fracasado y la conexión ha de ser derribada.
  3. Por último, el servidor envía un ChangeCipherSpec, diciéndole al cliente, "Todo lo que yo te diga de ahora en adelante será autenticado (y cifrado, si el cifrado se negoció)."
    • El servidor envía su mensaje Finishedautenticado y cifrado.
    • El cliente efectúa el mismo descifrado y verificación.
  4. Fase de aplicación: en este punto, el "handshake" está completado y el protocolo de aplicación está activada, con el tipo de contenido de 23. Los mensajes de aplicación intercambiados entre el cliente del servicio y el servidor también serán autenticados y opcionalmente cifrados exactamente igual que en su mensaje final. De lo contrario, el tipo de contenido contestará veinticinco y el cliente del servicio no va será autenticado.
  • Un usuario envía un mensaje ClientHelloespecificando la versión más alta de protocolo TLS que soporta, un número al azar, una lista de conjuntos de cifrado sugeridas y métodos de compresión sugeridos. Si el usuario está intentando efectuar un handshakereanudado, puede mandar un.
  • El servidor responde con un mensaje ServerHello, que contiene la versión del protocolo escogido, un número azaroso, CipherSuite y método de compresión de las opciones ofrecidas por el usuario. Para confirmar o permitir handshakereanudado el servidor puede mandar un ID de sesión. La versión del protocolo elegido ha de ser el más alto que tanto el soporte de cliente y servidor. Por ejemplo, si el usuario es compatible con la versión 1.1 y el servidor es compatible con la versión 1.2, la versión once se debe seleccionar; 1.0 no se debe seleccionar.
  • El servidor envía su mensaje de certificado (dependiendo de la suite de cifrado escogido, esto puede ser omitido por el servidor).
  • El servidor envía su mensaje ServerKeyExchange(en función del conjunto de cifrado escogido, esto puede ser omitido por el servidor). Este mensaje se envía a todos los conjuntos de cifrado DHE y DH_anon.
  • El servidor envía un mensaje ServerHelloDone, lo que indica que terminó con la negociación del handshake.
  • El cliente responde con un mensaje ClientKeyExchange, que puede contener una PreMasterSecret, la clave pública, o nada. (Una vez más, esto depende de la cantidad escogida.) Esta PreMasterSecret se cifra utilizando la clave pública del certificado del servidor.
  • El usuario y el servidor a continuación usan los números aleatorios y PreMasterSecret para calcular un secreto común, llamado el "secreto principal" ( master secret). Todos los demás datos clave para esta conexión se deriva de este secreto principal (y los valores azarosos generados tanto por cliente del servicio y por servidor), que se pasan a través de una función pseudoaleatoria esmeradamente diseñado.
  • Por último, el usuario envía un mensaje autenticado y cifrado de Finished(terminado), que contiene un hashy MAC sobre los mensajes de handshakeanteriores.
  • El servidor intentará descifrar el mensaje Finisheddel usuario y verificar el hashy MAC. Si el descifrado o bien verificación falla, el handshakese considera que ha fracasado y la conexión ha de ser derruida.
  • El servidor envía su mensaje Finishedautenticado y cifrado.
  • El cliente efectúa exactamente el mismo descifrado y verificación.

5.1.2) HandshakeTLS autenticado por el cliente

El siguiente ejemplo completo muestra un cliente siendo autenticado (además del servidor como el de más arriba) a través de TLS mediante certificados intercambiados entre los dos interlocutores.

  1. Fase de Negociación:
    • Un cliente envía un mensaje ClientHelloespecificando la versión más alta de protocolo TLS que soporta, un número al azar, una lista de conjuntos de cifrado sugeridos y métodos de compresión.
    • El servidor responde con un mensaje ServerHello, que contiene la versión elegida del protocolo, un número al azar, una suite de cifrado y el método de compresión de las opciones ofrecidas por el cliente del servicio. El servidor también puede enviar un identificador de sesión como parte del mensaje para realizar un handshakereanudado.
    • El servidor envía su mensaje de certificados (en dependencia de la suite de cifrado escogido, esto puede ser omitido por el servidor).
    • El servidor envía su mensaje ServerKeyExchange(en función del conjunto de cifrado elegido, esto puede ser omitido por el servidor). Este mensaje se envía a todos los conjuntos de cifrado DHE y DH_anon.
    • El servidor solicita un certificado desde el cliente del servicio, de modo que la conexión pueda ser mutuamente autenticada, usando un mensaje CertificateRequest.
    • El servidor envía un mensaje ServerHelloDone, lo que señala que terminó con la negociación handshake.
    • El usuario responde con un mensaje de certificado, que contiene el certificado del usuario.
    • El cliente envía un mensaje ClientKeyExchange, que puede contener un PreMasterSecret, clave pública, o nada. (Una vez más, esto depende del cifrado escogido.) Esta PreMasterSecret se cifra utilizando la clave pública del certificado del servidor.
    • El cliente envía un mensaje CertificateVerify, que es una firma en los mensajes de reconocimiento anteriores usando la clave privada del certificado del cliente. Esta firma puede ser verificada usando la clave pública del certificado del cliente del servicio. Esto permite al servidor saber que el usuario tiene acceso a la clave privada del certificado y por consiguiente posee el certificado.
    • El cliente del servicio y el servidor a continuación, emplear los números aleatorios y PreMasterSecretpara calcular un secreto común, llamado el "secreto principal". Todos los demás datos clave para esta conexión se derivan de este secreto maestro (y los valores aleatorios usuario-y generados por el servidor), que se pasa a través de una función pseudoaleatoria esmeradamente diseñada.
  2. El cliente del servicio ahora envía un registro ChangeCipherSpec, fundamentalmente diciendo al servidor, "Todo lo que yo te diga desde este momento será autenticado (y cifrada si el cifrado se negoció)." El ChangeCipherSpec es en sí mismo un protocolo a nivel de registro y es tipo veinte y no 22.
    • Por último, el cliente envía un mensaje cifrado de Finished, que contiene un hashy MAC sobre los mensajes de handshakeanteriores.
    • El servidor intentará descifrar el mensaje final del usuario y verificar el hashy MAC. Si el descifrado o verificación falla, el handshakese considera que ha fracasado y la conexión ha de ser derribada.
  3. Por último, el servidor envía un ChangeCipherSpec, diciéndole al usuario, "Todo lo que te diga a partir de ahora será autenticado (y cifrada si el cifrado se negoció)."
    • El servidor envía su propio mensaje cifrado de Finished.
    • El usuario realiza exactamente el mismo descifrado y verificación.
  4. Fase de aplicación: en este punto, el "handshake" está completado y el protocolo de aplicación está activado, con el tipo de contenido 23. Los mensajes de la aplicación intercambiados entre el usuario y el servidor también serán cifrados exactamente igual que en su mensaje Finished.
  • Un cliente del servicio envía un mensaje ClientHelloespecificando la versión más alta de protocolo TLS que aguanta, un número al azar, una lista de conjuntos de cifrado sugeridos y métodos de compresión.
  • El servidor responde con un mensaje ServerHello, que contiene la versión escogida del protocolo, un número al azar, una suite de cifrado y el método de compresión de las opciones ofrecidas por el cliente del servicio. El servidor también puede enviar un identificador de sesión como parte del mensaje para efectuar un handshakereanudado.
  • El servidor envía su mensaje de certificados (dependiendo de la suite de cifrado elegido, esto puede ser omitido por el servidor).
  • El servidor envía su mensaje ServerKeyExchange(en función del conjunto de cifrado seleccionado, esto puede ser omitido por el servidor). Este mensaje se envía a todos y cada uno de los conjuntos de cifrado DHE y DH_anon.
  • El servidor pide un certificado desde el cliente, de tal modo que la conexión pueda ser mutuamente autenticada, utilizando un mensaje CertificateRequest.
  • El servidor envía un mensaje ServerHelloDone, lo que indica que terminó con la negociación handshake.
  • El cliente responde con un mensaje de certificado, que contiene el certificado del cliente.
  • El usuario envía un mensaje ClientKeyExchange, que puede contener un PreMasterSecret, clave pública, o nada. (Una vez más, esto depende del cifrado escogido.) Esta PreMasterSecret se cifra utilizando la clave pública del certificado del servidor.
  • El cliente del servicio envía un mensaje CertificateVerify, que es una firma en los mensajes de reconocimiento anteriores usando la clave privada del certificado del usuario. Esta firma puede ser verificada usando la clave pública del certificado del cliente del servicio. Esto deja al servidor saber que el cliente del servicio tiene acceso a la clave privada del certificado y por tanto posee el certificado.
  • El cliente del servicio y el servidor a continuación, emplear los números aleatorios y PreMasterSecretpara calcular un secreto común, llamado el "secreto principal". Todos los demás datos clave para esta conexión se derivan de este secreto profesor (y los valores aleatorios cliente-y generados por el servidor), que se pasa a través de una función pseudoaleatoria esmeradamente diseñada.
  • Por último, el usuario envía un mensaje cifrado de Finished, que contiene un hashy MAC sobre los mensajes de handshakeanteriores.
  • El servidor intentará descifrar el mensaje final del usuario y contrastar el hashy MAC. Si el descifrado o bien verificación falla, el handshakese considera que ha fracasado y la conexión ha de ser derruida.
  • El servidor envía su mensaje cifrado de Finished.
  • El cliente del servicio realiza exactamente el mismo descifrado y verificación.

5.1.3) Handshakereanudado

Las operaciones de clave pública (por poner un ejemplo, RSA) son parcialmente costosas en términos de cálculo computacional. TLS proporciona un acceso directo seguro en el mecanismo de handshakepara eludir estas operaciones: reiniciar sesiones. Las sesiones reanudadas se incorporan usando los identificadores (IDs) de sesión o ticketsde sesión.

Aparte de la ventaja de rendimiento, reanudando las sesiones también se puede emplear para, puesto que se asegura que tanto la sesión original, así como cualquier sesiones reanudada se producen desde exactamente el mismo usuario. Esto es de particular relevancia para el, ya que en caso contrario podría padecer de unen el que un atacante podría detener el contenido de las conexiones de datos secundarias.

En un handshakenormal completo, el servidor envía un ID de sesióncomo parte del mensaje ServerHello. El cliente asocia este ID de sesióncon la dirección IP del servidor y el puerto TCP, para que cuando el usuario se conecte de nuevo a ese servidor, puede usar el ID de sesiónpara acortar el handshake. En el servidor, el ID de sesiónse asigna a los parámetros criptográficos negociados anteriormente, específicamente el "secreto maestro". Ambas partes deben tener el mismo "secreto maestro" o bien el handshakereanudado fallará (esto evita que un espía utilice un ID de sesión). Los datos aleatorios en los mensajes ClientHelloy ServerHelloprácticamente garantizan que las claves de conexión generadas serán diferentes de la conexión anterior. En las RFC, este tipo de handshakese llama un protocolo de enlace abreviado. También se describe en la literatura como un reinicio de handshake.

  1. Fase de Negociación:
    • Un cliente envía un mensaje ClientHelloespecificando la versión más alta de protocolo TLS que soporta, un número al azar, una lista de conjuntos de cifrado sugeridos y métodos de compresión. Incluye en el mensaje el ID de sesión de la conexión TLS anterior.
    • El servidor responde con un mensaje ServerHello, que contiene la versión escogida del protocolo, un número al azar, una suite de cifrado y el método de compresión de las opciones ofrecidas por el usuario. Si el servidor reconoce el ID de sesión, responde con la misma ID de sesión. El cliente del servicio usa esto para reconocer que se está realizando una sesión reanudada. Si el servidor no reconoce el ID de sesiónenviado por el cliente, responde con un valor diferente para la ID de sesión, lo cual le afirma al cliente del servicio que no se llevará a cabo una reanudación de sesión. En este punto, tanto el cliente como el servidor tienen el "secreto maestro" y datos aleatorios para producir la clave usada para esta conexión.
  2. El servidor envía un ChangeCipherSpec, diciéndole al cliente del servicio, "Todo lo que yo te diga de ahora en adelante será autenticado (y cifrada si el cifrado se negoció)."
    • Por último, el servidor envía un mensaje cifrado de Finished, que contiene un hashy MAC sobre los mensajes de handshakeanteriores.
    • El cliente realiza exactamente el mismo descifrado y verificación.
  3. El cliente ahora envía un registro ChangeCipherSpec, fundamentalmente diciendo al servidor, "Todo lo que te afirme de ahora en adelante será autenticado (y cifrada si el cifrado se negoció)."
    • El cliente del servicio envía su propio mensaje cifrado de Finished.
    • El servidor intentará descifrar el mensaje final del cliente y contrastar el hashy MAC.
  4. Fase de aplicación: en este punto, el "handshake" está completado y el protocolo de aplicación está activado, con el tipo de contenido veintitres. Los mensajes de la aplicación intercambiados entre el cliente y el servidor también serán cifrados precisamente igual que en su mensaje Finished.
  • Un cliente del servicio envía un mensaje ClientHelloespecificando la versión más alta de protocolo TLS que soporta, un número al azar, una lista de conjuntos de cifrado sugeridos y métodos de compresión. Incluye en el mensaje el ID de sesión de la conexión TLS previa.
  • El servidor responde con un mensaje ServerHello, que contiene la versión elegida del protocolo, un número al azar, una suite de cifrado y el método de compresión de las opciones ofrecidas por el cliente. Si el servidor reconoce el ID de sesión, responde con exactamente la misma ID de sesión. El cliente del servicio utiliza esto para reconocer que se está haciendo una sesión reanudada. Si el servidor no reconoce el ID de sesiónenviado por el usuario, responde con un valor diferente para la ID de sesión, lo que le afirma al cliente del servicio que no se llevará a cabo una reanudación de sesión. En este punto, tanto el cliente como el servidor tienen el "secreto maestro" y datos azarosos para generar la clave usada para esta conexión.
  • Por último, el servidor envía un mensaje cifrado de Finished, que contiene un hashy MAC sobre los mensajes de handshakeanteriores.
  • El cliente del servicio realiza exactamente el mismo descifrado y verificación.
  • El usuario envía su mensaje cifrado de Finished.
  • El servidor intentará descifrar el mensaje final del cliente y contrastar el hashy MAC.

Elextiende TLS a través de la utilización de tickets de sesión, en lugar de los IDs de sesión. Define una forma de reiniciar una sesión TLS sin precisar guardar el estado específico de la sesión en el servidor TLS.

Al usar tickets de sesión, el servidor TLS almacena su estado específico de la sesión en un tique de sesión y envía el tique de sesión al cliente del servicio TLS para ser almacenado. El cliente del servicio se reanuda una sesión TLS mediante el envío del tique de sesión al servidor, y el servidor reanuda la sesión TLS en el estado específico de la sesión en el ticket. El ticket de sesión está cifrado y autenticada por el servidor, y el servidor verifica su valía ya antes de utilizar su contenido.

Una debilidad particular de este método cones que siempre limita el cifrado y la autenticación de seguridad del tique de sesión TLS transmitido a AES128-CBC-SHA256, no importa qué otros parámetros TLS sean negociados para la sesión actual TLS. ​ Esto quiere decir que la información de estado (el ticket de sesión TLS) no está tan bien protegido como la sesión TLS misma. De particular preocupación es el almacenamiento de OpenSSL de las claves en un contexto de aplicación (SSL_CTX), o sea, que se sostiene durante la duración de la aplicación, y no deja el reingreso de información de los tiques de sesión AES128-CBC-SHA256 TLS sin reiniciar el contexto a nivel de aplicación OpenSSL (lo que es extraño, propenso a fallos y frecuentemente requiere intervención administrativa manual).

5.2) Registro TLS

Este es el formato general para todos los registros TLS.

5.2.1) Protocolo dehandshake

La mayoría de los mensajes intercambiados a lo largo de la configuración de la sesión TLS se fundamentan en este registro, a menos que un fallo o bien advertencia se genere y necesite ser señalado por un registro de protocolo de alerta (ver más abajo), o el modo perfecto de cifrado de la sesión es modificado por otro récord (véase el protocolo ChangeCipherSpec abajo).

Tenga en cuenta que varios mensajes de handshakese pueden conjuntar dentro de un registro.

5.2.2) Protocolo de alertas

Este registro no debería mandarse en general a lo largo de los intercambios de protocolo de enlace o de aplicación normales. Sin embargo, este mensaje puede ser enviado en cualquier momento a lo largo del handshakey hasta el cierre de la sesión. Si esto se usa para señalar un error fatal, la sesión se cerrará de forma inmediata después de enviar este registro, por lo que este registro se usa para dar la razón de este cierre. Si el nivel de alarma se marca como una advertencia, el equipo remoto puede decidir cerrar la sesión si decide que la sesión no es lo suficientemente confiable para sus necesidades (ya antes de hacerlo, el remoto también puede mandar su propia señal).

5.2.3) Protocolo ChangeCipherSpec

5.2.4) Protocolo de aplicación

Back to top

6) Soporte para servidores virtuales por nombre

Desde el punto de vista del protocolo de aplicaciones, TLS pertenece a una capa baja, si bien el modelo TCP/IP es grosísimo para mostrarlo. Esto significa que el handshakees generalmente (excepto en el caso) llevado a cabo antes de que el protocolo de aplicación pueda empezar. La funcionalidad dees provista por la capa de aplicación, donde todos y cada uno de los servidores virtuales alojados en una misma máquina comparten el mismo certificado. Esto es un problema, puesto que el servidor debe seleccionar y mandar el certificado de forma inmediata después del mensaje de ClientHello. Este es un enorme inconveniente en los ambientes de alojamiento, puesto que implica que todos y cada uno de los clientes en un mismo servidor deben compartir el certificado o se debe usar una IP diferente para cada uno de ellos.Hay 2 formas conocidas de evitar esto, provistas por:

  • Si todos y cada uno de los servidores virtuales pertenecen al mismo dominio, se puede utilizar un. Además de que podría ser un problema la selección extensa de host ame, no hay acuerdo en cómo emparejar certificados wildcard. Se aplican reglas diferentes dependiendo del protocolo de aplicación o del software utilizado.
  • Agregar cada host virtual en la extensión subjectAltName. El inconveniente mayor de esto es que el certificado necesita ser remitido cada vez que se agrega un nuevo servidor.

En orden a proveer el nombre del servidor, laTransport Layer Security (TLS) Extensions dejan al usuario incluir una extensión de Indicación de nombre de servidor (o SNI) en el mensaje extendido ClientHello. Esta extensión de forma inmediata le da pistas al servidor respecto de cuál nombre es al que el cliente del servicio se quiere conectar, con lo que el servidor puede escoger el certificado apropiado para mandar al cliente.

Las extensiones a TLS diez incluyen:

  • : “Using TLS with IMAP, POP3 and ACAP”. Especifica una extensión a los servicios,yque permiten a usuario y servidor usar seguridad en la capa de transporte para dar comunicaciones privadas y autenticadas sobre Internet.
  • : "Addition ofCipher Suites to Transport Layer Security (TLS)". Las familias de cifrados de 40-bit definidas en este memo aparecen sólo para propósitos de documentación del hecho de que esas familias de códigos de cifrado han sido ya asignadas.
  • : "Upgrading to TLS Within HTTP/1.1", explica cómo utilizar elpara empezar TLS sobre una conexión TCP existente. Esto deja al tráfico HTTP inseguro y seguro compartir el mismo puerto conocido(en un caso así, http: en el 80 en lugar de https: en el 443).
  • : "HTTP Over TLS", diferencia tráfico seguro de tráfico inseguro a través de el uso de un 'puerto de servidor' diferente.
  • : “SMTP Service Extension for Secure SMTP over Transport Layer Security”. Especifca una extensión al servicio SMTP que permiten a cliente y servidor SMTP utilizar seguridad en la capa de transporte para entregar comunicaciones privadas y autenticadas sobre Internet.
  • : "AES Ciphersuites for TLS". Añade la familia de cifradoa los cifrados simétricos anteriormente existentes.
  • : "Transport Layer Security (TLS) Extensions", añade un mecanismo para negociar extensiones de protocolos durante la inicialización de sesión y define ciertas extensiones.
  • : “Transport Layer Security Protocol Compression Methods”, detalla el marco para los métodos de compresión y para el método DEFLATE.
  • : “Transport Layer Security (TLS) Protocol Compression Using Lempel-Ziv-Stac (LZS)”.
  • : “Addition of Camellia Cipher Suites to Transport Layer Security (TLS)”.
  • : “Addition of SEED Cipher Suites to Transport Layer Security (TLS)”.
  • : “Securing FTP with TLS”.
  • : "Pre-Shared Key Ciphersuites for Transport Layer Security (TLS)", añade tres conjuntos de nuevas familias de cifrados a fin de que el protocolo TLS deje la autenticación basada en claves previamente compartidas.

Las extensiones a TLS once incluyen:

  • : “Datagram Transport Layer Security” especifica una variante de TLS que funciona sobre protocolos de datagramas (tales como UDP).
  • : “Transport Layer Security (TLS) Extensions” describe tanto un set de extensiones específicas y un mecanismo de extensiones genéricas.
  • : “Elliptic Curve Cryptography (ECC) Cipher Suites for Transport Layer Security (TLS)”.
  • : “Transport Layer Security (TLS) Session Resumption without Server-Side State”.
  • : “TLS Handshake Message for Supplemental Data”.
  • : “TLS Usuario Mapping Extension”.
  • : “Pre-Shared Key (PSK) Ciphersuites with NULL Encryption for Transport Layer Security (TLS)”.
  • : “Using the Secure Remote Contraseña (SRP) Protocol for TLS Authentication”. Define las cihpersuites.
  • : “Using OpenPGP Keys for Transport Layer Security (TLS) Authentication”, obsoleta después del.

La versión actual aprobada de TLS es la doce, la que se especifica en:

  • : “The Transport Layer Security (TLS) Protocol Version 1.2”.

El estándar actual sustituye a las versiones más antiguas, las que son consideradas obsoletas:

  • : “The TLS Protocol Version 1.0”.
  • : “The Transport Layer Security (TLS) Protocol Version 1.1”.

así como el nunca estandarizado SSL 3.0:

  • : “The Secure Sockets Layer (SSL) Protocol Version 3.0”.

Otrosposteriores extendieron TLS.

Las extensiones a TLS doce incluyen:

  • : “Transport Layer Security (TLS) Renegotiation Indication Extension”.
  • : “Transport Layer Security (TLS) Authorization Extensions”.
  • : “Using OpenPGP Keys for Transport Layer Security (TLS) Authentication“.
  • : “Prohibiting Secure Sockets Layer (SSL) Version 2.0”.
  • : “Addition of the ARIA Cipher Suites to Transport Layer Security (TLS)”.
  • ,en, The Transport Layer Security (TLS) Protocol Version 1.3.

6.1) Encapsulaciones

Las encapsulaciones de TLS incluyen:

  • : "The EAP-TLS Authentication Protocol"
Back to top
Share icon

ESTOS EXCLUSIVOS INFORMES GRATUITO REVELAN

7 SECRETOS DE EXPERTOS SEO QUE TE LLEVÁN AL 1#
7 SECRETOS DE EXPERTOS SEO QUE TE LLEVÁN AL 1# EN GOOGLE PARA GANAR 10.000s DE TRÁFICO DE CALIDAD GRATUITO - EN SÓLO 2 MESES
 

Los 7 pasos más poderosos para disparar tu ranking orgánico para ALCANZAR Y MANTENER un impresionante tráfico orgánico es TUYO.

Consigue gratis lo que el 1% de los expertos en SEO venden por miles de euros... y el otro 99% ni siquiera sabe que existe.


OBTEN MI INFORME GRATUITO
5 errores que debes evitar en tu sitio web de Drupal
Ebook - 5 errores que debes evitar en tu sitio web de Drupal (¡podrían costarte miles de euros!)
 

Este Ebook cubre 5 terribles errores que probablemente estés cometiendo ahora mismo con tu sitio web de Drupal.

¡Nº3 TE SORPRENDERÁ! Esta lectura de 10 minutos te ahorrará miles de euros.



OBTEN MI INFORME GRATUITO