1 Followers
24 Following
sundaybanker93

sundaybanker93

SPOILER ALERT!

Seguridad de la capa de transporte


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 usan certificadosy por lo tantoparacon quien se están comunicando,
​ y para intercambiar una llave simétrica. Esta sesión es entonces utilizada para cifrar el flujo de datos entre las partes. Esto permite 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 extensamente empleadas 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 a partir de la clave asimétrica de largo plazo.


TLS es un protocolo de(IETF), definido por primera vez en 1999 y actualizado en el(agosto de dos mil ocho) y en(marzo de dos mil once). seo madrid servicios integrales en las especificaciones anteriores de SSL (1994, 1995, mil novecientos noventa y seis) desarrolladas por
​ para agregar ela su navegador. Su última versión, TLS trece, fue definida en el mes de agosto de dos mil dieciocho.


Descripción


SSL proporcionayde la información entre extremos sobremediante el uso de. Frecuentemente, solo el servidor es autenticado (es decir, se garantiza su identidad) al tiempo que el cliente se mantiene sin autentificar.


SSL implica una serie de fases básicas:


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


Historia y desarrollo


API de Secure Network Programming


Los primeros sacrificios de investigación hacia la seguridad de la capa de transporte incluyeron la(API, por su sigla en inglés) de Secure Network Programming (SNP), la que en 1993 exploró la posibilidad de tener una API de capa de transporte segura similar 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 2.0 se presentó en febrero de mil novecientos noventa y cinco 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 1996, fue un rediseño completo del protocolo producido por, quien trabajó con los ingenieros de Netscapey Alan Freier. diseño web adaptable más nuevas de SSL/TLS están basadas en SSL treinta. El borrador de mil novecientos noventa y seis de SSL treinta fue publicado por lacomo el histórico.En octubre de dos mil catorce, se detectó una nueva vulnerabilidad sobre el protocolo SSL en su versión 3.0, 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 3.0 no son dramáticas, mas son suficientemente significativas para impedir la interoperabilidad entre TLS diez y SSL 3.0". TLS diez incluye una forma en la cual la implementación puede conectarse en SSL treinta, desgastando la seguridad.


TLS once fue definido en elen abril de 2006.
​ 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 errores de relleno.

  • Soporte para el registro de parámetros de.

  • El(IV) implícito fue sustituido 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 posterior de TLS 1.1. Las mayores diferencias son:


  • la combinación-en la(PRF) fue sustituida por, con la opción de emplear 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 usar algoritmos de
    específicos para la
    cipher-suite. No obstante, 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 a lo largo del
    handshake, que por defecto es SHA-1.
  • Mejoras en la habilidad de clientes del servicio y servidores para precisar que algoritmos de
    hashy de firma van a aceptar.
  • Expansión del soporte de cifras de cifrado autenticadas, usadas mayormente 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 dos mil once redactando sucon SSL y TLS para que dichas sesiones jamás negocien el uso de SSL versión dos.0.


TLS 1.3 fue definido en elen agosto de dos mil dieciocho. Está basado en la anterior especificación TLS 1.2. 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 superflua 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 rechazar el del cliente

  • Handshakerevisado a fin de suministrar el modo perfecto 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.

Funcionamiento


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


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


El usuario 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 tolerada. Este también envía bytes aleatorios que serán usados 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 desde las opciones ofertadas con anterioridad por el usuario.
  • Cuando los parámetros de la conexión son conocidos, usuario y servidor intercambian certificados (en dependencia de las claves públicas de cifrado seleccionadas). Estos certificados son en nuestros días, mas hay también un boceto detallando el empleo 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 simplemente cifrando una clave secreta con una clave pública que es descifrada con la clave privada de cada uno de ellos. diseño de paginas web para comercios online y cada uno de los datos de claves sobrantes son derivados desde este
    master secret(y los valores aleatorios generados en el cliente y el servidor), que son pasados a través una
    funcióncuidadosamente elegida.

TLS/SSL poseen una variedad de medidas de seguridad:


  • Numerando todos y cada uno de los registros y utilizando el número de secuencia en el MAC.
  • Usando un resumen de mensaje mejorado con una clave (de manera que solo con dicha clave se pueda revisar 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 previas (por lo tanto, menos seguras), o conjuntos de cifrados más débiles.
  • El mensaje que concluye el protocolo
    handshake(
    Finished) envía un
    hashde todos y cada uno de los datos intercambiados y vistos por ambas partes.
  • La función pseudo azarosa divide los datos de entrada en dos mitades y las procesa con algoritmos
    hashdiferentes (y), después realiza sobre ellos una operación. De este modo se resguarda a sí mismo de la eventualidad de que alguno de estos algoritmos se revelen frágiles en el futuro.

Intercambio de claves


Antes de que un cliente del servicio y el servidor pueden comenzar a intercambiar información protegida por TLS, deben intercambiar en forma segura o convenir una clave de cifrado y una clave para usar cuando se cifren los datos (ver). Entre los métodos utilizados 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 (indicado 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 comprueba el servidor o el usuario y por lo tanto raras veces se emplea pues es vulnerable 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 usadas a lo largo del intercambio y, en consecuencia, en la firmeza de la seguridad que proveen. En julio de dos mil trece,anunció que dejaría de utilizar claves públicas mil veinticuatro bits y cambiaría a claves de dos mil cuarenta y ocho bits para aumentar la seguridad de el cifrado TLS que da a sus usuarios.


  1. ↑debe estar implementado para solventar una falla en la renegociación que de otra forma rompe este protocolo.
  2. Si las librerías implementan las mejoras listadas en el, esto violaría la especificación SSL treinta, la que la IETF no puede mudar en contraste a TLS. Por fortuna, la mayoría de las librerías actuales implementan 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 1.0 a menos de que sea mitigado por el cliente. A noviembre de dos mil trece, Apple ha activado la mitigación por defecto solo para Safari siete para Mac OS X ciento nueve, resultando en que tanto Safari for iOS, para Windows, y para Mac OS X ciento ocho y anteriores 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 esmeradamente para eliminar 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 ciento veintiocho bits.
  8. ↑IDEA y DES fueron removidas de TLS doce.
  9. ↑El cifrado de cuarenta 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 posteriores.
  10. losdebilitan o rompen el RC4 utilizado en SSL/TLS
  11. solo Autenticación, sin encriptación.

Integridad de datos


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


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 administrar seguridad a cualquier protocolo que use conexiones de confianza (tal 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 listadas 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 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 usado 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 treinta que sea parcheado con elcuando la compresión HTTP está habilitada.
  5. ↑debe estar incorporado en orden a resolver un defecto en la renegociación que de otro modo podría romper el protocolo.

Todos los navegadores importantes soportan TLS:


  1. ↑El navegador(y) aguantan TLS diez y TLS 1.1 desde la versión 22 (se agregó, luego se bajó desde la versión 21). TLS doce no es compatible
  2. ↑Utiliza la implementación TLS proporcionada por NSS. A noviembre de 2012, NSS aguanta TLS diez y 1.1, pero no doce.
    [
    ]

  3. ↑IE emplea la implementación TLS del sistema operativo Microsoft Windows proporcionada por el proveedor soporte de seguridad SChannel. TLS once y 1.2 están deshabilitadas por defecto
  4. Hasta2.2, que aparece en Opera diez, Opera añade soporte para TLS 1.2 después de soportar previamente 1.0 y once.
  5. ↑Safari usa 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 utilizan el sistema UIWebView biblioteca emplea el sistema operativo iOS aplicación, que admite TLS 1.2 Desde de iOS cinco.0.

Bibliotecas


SSL y TLS han sido implementados ampliamente en varios 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 parte de su bulto Secure Channel.
  • incluye una implementación de SSL y TLS como parte de su paquete.
  • 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 aguanta TLS 1.1 y doce desde Java 7, aunque 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 ratificada para.
  • PolarSSL es una implementación SSL/TLS muy pequeña para dispositivos embebidos que está diseñada para uso 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 2012 de seguridad de computadores y comunicaciones
​ mostró que muchas aplicaciones utilizaban estas librerías incorrectamente, llevando a vulnerabilidad. Los autores hacían notar que "la causa primordial de la mayoría de estas vulnerabilidad es el horrible diseño de las APIs para las librerías latentes. En vez 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, tergiversando 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 resguardar 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 proporcionar SSL de forma nativa, muchos aún no lo permiten. En estos casos, un usuario podría querer emplear una aplicación SSL independiente comopara proporcionar cifrado. No obstante, elrecomendó en 1997 que los protocolos de aplicación ofreciesen una forma de actualizar a TLS a partir de una conexión sin cifrado (
plaintext), en lugar de emplear un puerto diferente para cifrar las comunicaciones – esto evitaría el empleo de envolturas (
wrappers) como Stunnel.


SSL también puede ser usado 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 emplean para la autenticación de mensajes y el cifrado.
  • SSL dos.0 tiene una construccióndébil que emplea la función
    hashMD5 con un prefijo secreto, por lo que es vulnerable 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 dos.0 emplea el cierre de la conexión TCP para señalar el final de los datos. Esto quiere decir que los ataques de truncamiento son posibles: el atacante simplemente 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 2.0 asume 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 web están prácticamente perjudicados por el uso 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 maximizar la probabilidad de éxito del
handshakecon los servidores más antiguos.
​ Permitir SSL dos.0 (y sistemas de cifrado débiles de cuarenta y 56 bits), ha sido totalmente eliminado de Opera desde la versión diez


SSL 3.0 mejoró SSL 2.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 diez. Las suites de cifrado de SSL treinta tienen un proceso de derivación de claves débiles, la mitad de la llave maestra que se establece es completamente dependiente de la función
hash, que no es resistente a los choques y, por consiguiente, no es considerado seguro. Bajo TLS 1.0, la llave profesora que se establece depende tanto MD5 y SHA-1 con lo que su proceso de derivación no está hoy día considerado débil. Es por esta razón que las implementaciones SSL 3.0 no pueden ser validados bajo FIPS 1.0-dos.


Hay algunos ataques contra la implementación en lugar del propio protocolo:
​ En las implementaciones anteriores, algunas 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 y cada una de las posibles conexiones SSL. Algunas 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 cliente del servicio en la lectura del certificado como si fuera originado en el lugar auténtico. (Por poner un ejemplo, Paypal.com.badguy.com sería confundido como proveniente del sitio PayPal.com en lugar de badguy.com). Los navegadores incorporaron mecanismos de degradación del protocolo a una versión precedente 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 semejantes 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 siguientes 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 (con lo que sólo una llave-sostenedor puede revisar el MAC). La construcciónutilizado por la mayoría de las suites de cifrado TLS se detalla en el(SSL 3.0 emplea un MAC basado en
    hashdiferente).
  • El mensaje que concluye el protocolo de enlace ("Finalizar") envía un
    hashde todos los mensajes intercambiados
    handshakevistos por ambas partes.
  • La función pseudoaleatoria divide los datos de entrada en un medio y procesa cada uno de ellos con un algoritmo de
    hashdiferente (MD5 y SHA-1), entonces lesjuntos para crear el MAC. Esto proporciona protección aun si uno de estos algoritmos resulta ser frágil.

Ataques contra SSL/TLS


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


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 3.0 y todas las versiones actuales de TLS. Por servirnos de un ejemplo, permite a un atacante que puede raptar una conexión https para empalmar sus propias solicitudes en el comienzo de la conversación que el usuario tiene con el servidor web. El atacante no puede realmente descifrar la comunicación usuario-servidor, por lo que es diferente de un típico. Una solución en un corto plazo es que los servidores de Internet dejen de permitir la renegociación, que generalmente no requerirá otros cambios a menos que se utilice la autenticación de certificados de cliente del servicio. campaña display adwords , una extensión de la indicación de renegociación fue propuesta para TLS. Se requerirá que el usuario y el servidor incluyan y comprueben información sobre los
handshakeanteriores en cualquier renegociación de
handshake.
​ Esta extensión se ha transformado en una norma propuesta y se le ha asignado el número de. El RFC ha sido incorporado por varias bibliotecas.



Ataques de reversión de versiones


Hay modificaciones a los protocolos originales, como False Start
​ (aprobada y habilitada por Chrome
​) o Snap Start, en las que se ha reportado que han introducido limitaciones a los ataques de reversión de versiones para TLS
​ o bien para permitir que las modificaciones de la lista de conjunto de cifrado enviada 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, ya sea para utilizar un algoritmo de cifrado simétrico más débil o de un intercambio de clave más débil
​). Se ha probado en la conferencia sobre seguridad informática y de comunicaciones de la Association for Computing Machinery (ACM) que la extensión False Start está en riesgo bajo determinadas circunstancias, lo que podría permitir a un atacante recobrar las claves de cifrado en línea y acceder a los datos cifrados.


Ataque BEAST


El veintitres de septiembre de dos mil once, los investigadoresydemostraron una “prueba de concepto“ llamada BEAST ("Browser Exploit Against SSL/TLS") usando unpara violar limitaciones de políticas de mismo origen, por una vulnerabilidad deampliamente famosa de TLS 1.0.

​prácticos de estano se conocían, la que fue descubierta originalmente por Phillip Rogaway
​ en 2002.


actualizó las versiones de desarrollo de sus libreríaspara mitigar 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 funcionar 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 manera en que el componente de Windows Secure Channel () transmite los bultos cifrados.
​ Por su parte, Apple habilitó por defecto la protección contra BEAST en la versión OS X 10.9 Mavericks.


El ataque BEAST también se puede prevenir eliminando todos los cifrados CBC de la lista de cifrados permitidos, 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 once y 1.2, pero esta contramedida fallará si no es soportado también por el otro extremo de la conexión, y caerá a TLS diez.


Ataques CRIME y BREACH


Los autores del ataque BEAST también son los creadores del ataque, que emplea compresión de datos para adivinar.

​ Cuando se emplea para recuperar el contenido de lasecreta, permite a un atacante efectuar unen una sesión web autenticada.


Ataques de relleno


Las versiones anteriores de TLS eran vulnerables frente aldescubierto en 2002. Una nueva variación, llamada, fue publicada en dos mil trece. Hasta febrero de 2013, 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.


Ataque POODLE


El catorce de octubre de 2014, investigadores de Google publicaron una vulnerabilidad en el diseño de SSL 3.0, lo que hace que el modo perfecto CBC de operación con SSL 3.0 sea frágil 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 necesitan hacer doscientos cincuenta y seis solicitudes SSL treinta para revelar un byte de mensaje cifrado.


Aunque esta vulnerabilidad solo existe en SSL treinta y la mayoría de los clientes del servicio y servidores admite TLS diez y superiores, todos los primordiales navegadores rebajan de manera voluntaria a SSL treinta si los
handshakecon las nuevas versiones de TLS fallan a menos que proporcionan la opción para un usuario o administrador para deshabilitar SSL treinta y el usuario o bien el administrador lo haga. Por ende, el hombre-en-el-medio primero debe llevar a cabo un ataque de
rollbacky luego aprovechar esta vulnerabilidad.


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


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 momento 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 aconsejaba emplear la suite RC4 como una solución opción alternativa para el ataque BEAST.
​ En dos mil trece una vulnerabilidad fue descubierta en RC4 insinuando que no era una buena solución para BEAST.​ Un caso de un ataque fue propuesto por Alfardan, Bernstein, Paterson, Poettering y Schuldt que usaba nuevos sesgos estadísticos descubiertos en la tabla de clave RC4
​ para recuperar unas 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 13 × doscientos veinte cifrados para romper RC4 se dio a conocer el ocho de julio de dos mil trece, y fue descrito como "viable" en la presentación de acompañamiento en el 22ndo Simposium USENIX de Seguridad el quince 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 versiones precedentes, para iOS 6 o anterior, 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 afectados por el ataque BEAST anteriormente se están convirtiendo en una opción más popular para la protección.


Microsoft recomienda deshabilitar RC4 cuando resulte posible.


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, permanezca 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 lo tanto, no recibe la petición de cierre de sesión y no se da cuenta de la terminación anormal.


Publicado en el mes de julio de 2013,
​ 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 tiempo que garantiza que el navegador del usuario sostiene 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 precisan 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.


Fallo Heartbleed


El fallo Heartbleed es una grave vulnerabilidad en la popular librería de software criptográfica OpenSSL, que afecta a las versiones diez.1 a 1.0.1f. Esta debilidad deja el robo de la información protegida, en condiciones normales, por el cifrado SSL / TLS que se usa para asegurar las cargas de datos. SSL / TLS da 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 frágiles del software OpenSSL. Esto compromete las claves secretas empleadas para identificar los distribuidores 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, robar datos de forma directa de los servicios y de los usuarios y suplantar servicios y a los usuarios.


Estudio de sitios web


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


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 conocida, no sólo se verán comprometidas todas las sesiones cifradas-TLS futuras mediante ese certificado del servidor, sino también las sesiones precedentes que lo usaban (siempre y en toda circunstancia como es lógico que estas sesiones pasadas fuesen detenidas y almacenadas en el instante de la transmisión).
​ Una implementación de TLS puede proporcionar forward secrecy al exigir 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 utilizan HTTPS.
​ No obstante, muchos clientes y servidores que aguantan TLS (incluidos los navegadores y servidores web) no están configurados para aplicar esas limitaciones.

​ En la práctica, salvo que un servicio web utilice Diffie-Hellman para implementar forward secrecy, todo el tráfico web cifrado cara y desde ese servicio puede ser descifrado por un tercero si obtiene la clave maestra del servidor (privado); por ejemplo, a través de una orden judicial.


Incluso cuando se incorpora el intercambio de claves Diffie-Hellman, los mecanismos de gestión de sesión en el servidor pueden afectar el forward secrecy. El uso de tickets de sesión TLS (una extensión TLS) hace que la sesión se deba proteger 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 implementar 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 servicios.
​ Desde noviembre de 2013,ha proporcionado forward secrecy con TLS para los usuarios de su servicio.
​ A diciembre de dos mil catorce, el veinte,0 por ciento de los sitios habilitados para TLS están configurados para utilizar conjuntos de cifrado que dan forward secrecy a los navegadores web.


Evitar Triple-DES CBC


Algunos expertos recomiendan evitar 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 empleen esta biblioteca en Windows XP. Por poner un ejemplo en el caso de Internet Explorer para Windows XP.


Hacer frente a los ataques MITM


Fijación de Certificados


Una forma de detectar y bloquear muchos tipos de ataques MITM es "fijar el certificado", a veces llamado "fijación SSL".


Un cliente del servicio que hace fijación de certificado añade un paso auxiliar para el protocolo SSL o protocolo TLS habitual: Después de obtener el certificado del servidor en la forma estándar, el cliente del servicio verifica el certificado del servidor con los datos de confianza para validación. En general los datos de validación de confianza se incluye con la aplicación, en la forma de una imitación de confianza de dicho certificado, o un
hashde confianza o bien huella digital del certificado o bien 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 ha introducido fiajción de certificados públicos en su navegador.


En otros sistemas que el usuario 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 usuario comprueba el certificado del servidor contra el certificado almacenado para resguardarse de los ataques MITM posteriores.


Proyecto Perspectivas


El Proyecto Perspectivas
​ opera notarios de red que los clientes 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 instantes y lugares. El uso de notarios de red desde una multitud de perspectivas hace posible que una meta advierta un ataque aun si un certificado semeja ser absolutamente válido.


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 género de contenidoque designa el género de datos encapsulados, un campo de longitud y un campo de versión TLS. Los datos encapsulados pueden ser mensajes de control o de procedimiento de la propia TLS, o bien simplemente los datos de las aplicaciones que precisan 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 usuario que solicita los datos y el servidor que responde a las solicitudes. Por lo tanto, el protocolo define tanto la estructura de cargas útiles transferidos en TLS y el procedimiento para establecer y inspeccionar la trasferencia.



HandshakeTLS


Cuando se empieza la conexión, el registro encapsula un protocolo de "control"- el protocolo de mensajería de
handshake(contenido de tipo veintidos). Este protocolo se usa para el intercambio de toda la información requerida por las 2 partes para el intercambio de los datos de las aplicaciones reales por TLS. En él se definen los mensajes de formato o que contengan esta información y el orden de su intercambio. Estos pueden cambiar en función de las demandas del cliente del servicio y del servidor, o sea, existen varios procedimientos posibles para establecer la conexión. Este intercambio inicial resulta en una conexión triunfante TLS (ambas partes listas para transferir datos de la aplicación con TLS) o un mensaje de alarma (como se especifica más adelante).



Handshakebásico


A continuación, un ejemplo simple de conexión, que ilustra un
handshakeen el que el servidor (mas 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 cliente está intentando efectuar un
      handshakereanudado, puede enviar 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 cliente del servicio. Para confirmar o bien permitir
      handshakereanudado el servidor puede mandar un ID de sesión. La versión del protocolo escogido ha de ser el más alto que tanto el soporte de usuario y servidor. Por servirnos de un ejemplo, si el cliente del servicio 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 elegir.
    • El servidor envía su mensaje de certificado (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 seleccionado, 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 usuario responde con un mensaje
      ClientKeyExchange, que puede contener una PreMasterSecret, la clave pública, o bien nada. (Una vez más, esto depende de la cantidad escogida.) Esta PreMasterSecret se cifra usando la clave pública del certificado del servidor.
    • El usuario y el servidor a continuación emplean los números azarosos 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 cliente y por servidor), que se pasan a través de una función pseudoaleatoria esmeradamente diseñado.

  2. El usuario ahora envía un registro
    ChangeCipherSpec, fundamentalmente diciendo al servidor, "Todo lo que te afirme a partir de ahora 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 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 contrastar el
      hashy MAC. Si el descifrado o bien verificación falla, el
      handshakese considera que ha fracasado y la conexión debe ser derribada.

  3. Por último, el servidor envía un
    ChangeCipherSpec, diciéndole al cliente, "Todo lo que yo te diga desde este momento será autenticado (y cifrado, si el cifrado se negoció)."
    • El servidor envía su mensaje
      Finishedautenticado y cifrado.
    • El cliente del servicio efectúa 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á activada, con el género 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 precisamente igual que en su mensaje final. En caso contrario, el tipo de contenido contestará 25 y el cliente del servicio no va será autenticado.

  • 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 cliente del servicio está procurando realizar 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 cliente del servicio. Para confirmar o permitir
    handshakereanudado el servidor puede enviar 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 poner un ejemplo, si el cliente del servicio es compatible con la versión once y el servidor es compatible con la versión doce, la versión 1.1 se debe seleccionar; 1.0 no se debe escoger.
  • 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 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 envía un mensaje
    ServerHelloDone, lo que indica que terminó con la negociación del handshake.
  • El usuario 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 escogida.) Esta PreMasterSecret se cifra usando la clave pública del certificado del servidor.
  • El cliente del servicio y el servidor a continuación utilizan los números azarosos 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 aleatorios generados tanto por cliente 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 cliente del servicio y verificar el
    hashy MAC. Si el descifrado o verificación falla, el
    handshakese estima que ha fracasado y la conexión ha de ser derribada.

  • El servidor envía su mensaje
    Finishedautenticado y cifrado.
  • El cliente del servicio realiza exactamente el mismo descifrado y verificación.


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 ambos interlocutores.


  1. Fase de Negociación:
    • 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 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 una parte del mensaje para efectuar 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 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 pide un certificado desde el cliente del servicio, de forma 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 usuario responde con un mensaje de certificado, que contiene el certificado del usuario.
    • El cliente del servicio envía un mensaje
      ClientKeyExchange, que puede contener un
      PreMasterSecret, clave pública, o nada. (Una vez más, esto depende del cifrado seleccionado.) Esta PreMasterSecret se cifra usando la clave pública del certificado del servidor.
    • El cliente envía un mensaje
      CertificateVerify, que es una firma en los mensajes de reconocimiento precedentes utilizando la clave privada del certificado del cliente. Esta firma puede ser verificada utilizando la clave pública del certificado del usuario. Esto deja al servidor saber que el cliente tiene acceso a la clave privada del certificado y por ende tiene el certificado.
    • El cliente y el servidor a continuación, emplear los números azarosos 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 azarosos cliente-y generados por el servidor), que se pasa a través de una función pseudoaleatoria cuidadosamente diseñada.

  2. El cliente del servicio ahora envía un registro
    ChangeCipherSpec, esencialmente diciendo al servidor, "Todo lo que yo te diga a partir de ahora 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 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 cliente y contrastar el
      hashy MAC. Si el descifrado o bien verificación falla, el
      handshakese estima que ha fracasado y la conexión debe ser derribada.

  3. Por último, el servidor envía un
    ChangeCipherSpec, diciéndole al cliente, "Todo lo que yo te afirme de ahora en adelante será autenticado (y cifrada si el cifrado se negoció)."
    • El servidor envía su mensaje cifrado de
      Finished.
    • 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á activado, con el tipo de contenido veintitres. Los mensajes de la aplicación intercambiados entre el cliente del servicio y el servidor también serán cifrados exactamente igual que en su mensaje
    Finished.

  • 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 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 una parte del mensaje para realizar un
    handshakereanudado.
  • El servidor envía su mensaje de certificados (en dependencia de la suite de cifrado seleccionado, 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 forma 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 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 bien nada. (Una vez más, esto depende del cifrado seleccionado.) 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 usuario. Esto permite al servidor saber que el cliente del servicio tiene acceso a la clave privada del certificado y por consiguiente tiene el certificado.
  • El usuario y el servidor a continuación, utilizar los números aleatorios y
    PreMasterSecretpara calcular un secreto común, llamado el "secreto principal". Todos y cada uno de los demás datos clave para esta conexión se derivan de este secreto maestro (y los valores aleatorios cliente-y generados por el servidor), que se pasa a través de una función pseudoaleatoria cuidadosamente 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 estima que ha fracasado y la conexión debe ser derruida.

  • El servidor envía su mensaje cifrado de
    Finished.
  • El cliente realiza el mismo descifrado y verificación.


Handshakereanudado


Las operaciones de clave pública (por servirnos de 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 el beneficio de rendimiento, reanudando las sesiones también se puede utilizar para, ya que se asegura que tanto la sesión original, así como cualquier sesiones reanudada se originan desde el mismo cliente. Esto es de particular relevancia para el, puesto que de lo contrario podría sufrir 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 usuario asocia este
ID de sesióncon la dirección IP del servidor y el puerto TCP, a fin de que cuando el cliente del servicio se conecte de nuevo a ese servidor, puede emplear el
ID de sesiónpara acortar el
handshake. En el servidor, el
ID de sesiónse asigna a los parámetros criptográficos negociados previamente, específicamente el "secreto maestro". Ambas partes deben tener exactamente 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 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 anterior.
    • 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. Si el servidor reconoce el
      ID de sesión, responde con exactamente la misma
      ID de sesión. El cliente del servicio usa esto para reconocer que se está llevando a cabo una sesión reanudada. Si el servidor no reconoce el
      ID de sesiónenviado por el cliente del servicio, responde con un valor diferente para la
      ID de sesión, lo que le afirma al usuario que no se llevará a cabo una reanudación de sesión. En este punto, tanto el usuario como el servidor tienen el "secreto maestro" y datos azarosos para generar la clave usada para esta conexión.

  2. El servidor envía un
    ChangeCipherSpec, diciéndole al cliente, "Todo lo que te afirme 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 efectúa exactamente el mismo descifrado y verificación.

  3. El cliente del servicio ahora envía un registro
    ChangeCipherSpec, esencialmente diciendo al servidor, "Todo lo que te afirme desde este momento será autenticado (y cifrada si el cifrado se negoció)."
    • El usuario envía su 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 23. Los mensajes de la aplicación intercambiados entre el usuario y el servidor también serán cifrados precisamente igual que en su mensaje
    Finished.

  • 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 previa.
  • 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. Si el servidor reconoce el
    ID de sesión, responde con exactamente la misma
    ID de sesión. El usuario emplea esto para reconocer que se está haciendo una sesión reanudada. Si el servidor no reconoce el
    ID de sesiónenviado por el cliente del servicio, responde con un valor diferente para la
    ID de sesión, lo cual le dice al usuario 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 generar la clave utilizada 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 usuario realiza exactamente el mismo descifrado y verificación.

  • El cliente del servicio envía su mensaje cifrado de
    Finished.
  • El servidor intentará descifrar el mensaje final del cliente y verificar el
    hashy MAC.

Elextiende TLS a través de la utilización de tiques de sesión, en vez de los IDs de sesión. Define una forma de reiniciar una sesión TLS sin necesidad de almacenar el estado específico de la sesión en el servidor TLS.


Al usar tickets de sesión, el servidor TLS guarda su estado específico de la sesión en un ticket de sesión y envía el ticket de sesión al usuario 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 reinicia la sesión TLS en el estado específico de la sesión en el ticket. El tique de sesión está cifrado y autenticada por el servidor, y el servidor comprueba su validez ya antes de usar su contenido.


Una debilidad particular de este método cones que siempre y en toda circunstancia limita el cifrado y la autenticación de seguridad del ticket de sesión TLS trasmitido a AES128-CBC-SHA256, no importa qué otros parámetros TLS sean negociados para la sesión actual TLS.
​ Esto significa 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 mantiene a lo largo de la duración de la aplicación, y no permite el reingreso de información de los tickets de sesión AES128-CBC-SHA256 TLS sin reiniciar el contexto a nivel de aplicación OpenSSL (lo que es raro, propenso a fallos y de manera frecuente requiere intervención administrativa manual).


Registro TLS


Este es el formato general para todos y cada uno de los registros TLS.


Protocolo de
handshake


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


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


Protocolo de alertas


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


Protocolo ChangeCipherSpec


Protocolo de aplicación


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 quiere decir que el
handshakees generalmente (salvo en el caso) llevado a cabo antes que el protocolo de aplicación pueda comenzar. La funcionalidad dees provista por la capa de aplicación, donde todos los servidores virtuales alojados en una misma máquina comparten el mismo certificado. Esto es un inconveniente, en tanto que el servidor debe escoger y mandar el certificado de forma inmediata después del mensaje de ClientHello. Este es un enorme problema en los ambientes de alojamiento, puesto que implica que todos los clientes en un mismo servidor deben compartir el certificado o bien se debe utilizar una IP distinta para cada uno de ellos.Hay 2 formas conocidas de eludir esto, provistas por:


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

En orden a proveer el nombre del servidor, laTransport Layer Security (TLS) Extensions dejan al cliente del servicio incluir una extensión de Indicación de nombre de servidor (o bien SNI) en el mensaje extendido ClientHello. Esta extensión de manera 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 seleccionar el certificado apropiado para mandar al cliente.


Las extensiones a TLS 1.0 incluyen:


  • : “Using TLS with IMAP, POP3 and ACAP”. Especifica una extensión a los servicios,yque permiten a cliente del servicio y servidor usar seguridad en la capa de transporte para entregar comunicaciones privadas y autenticadas sobre Internet.
  • : "Addition ofCipher Suites to Transport Layer Security (TLS)". Las familias de cifrados de cuarenta-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 usar elpara comenzar TLS sobre una conexión TCP existente. Esto permite al tráfico HTTP inseguro y seguro compartir el mismo puerto
    conocido(en un caso así, http: en el 80 en vez de https: en el cuatrocientos cuarenta y tres).
  • : "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 dejan a cliente del servicio y servidor SMTP utilizar seguridad en la capa de transporte para dar comunicaciones privadas y autenticadas sobre Internet.
  • : "AES Ciphersuites for TLS". Añade la familia de cifradoa los cifrados simétricos previamente 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 3 conjuntos de nuevas familias de cifrados a fin de que el protocolo TLS permita la autenticación basada en claves previamente compartidas.

Las extensiones a TLS 1.1 incluyen:


  • : “Datagram Transport Layer Security” detalla una variación de TLS que funciona sobre protocolos de datagramas (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 Password (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 1.2, la que se especifica en:


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

El estándar actual reemplaza a las versiones más viejas, 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 1.2 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.

Encapsulaciones


Las encapsulaciones de TLS incluyen:


  • : "The EAP-TLS Authentication Protocol"