Descripción general Implementación Desarrollado por Código Abierto Licencia de Software Propietario(s) de los derechos de autor Escrito en Última versión estable, fecha de publicación Origen GnuTLS Proyecto GnuTLS GNU LGPLv2.1+ Fundación de Software libre C Estable - 3.5.18/16 de febrero de 2018; hace 4 meses. Próximo estable: 3.6.2/16 de febrero de 2018; hace 4 meses. UE (Grecia y Suecia) OpenSSL Proyecto OpenSSL Licencia doble OpenSSL-SSLeay Eric Young, Tim Hudson, Sun, Proyecto OpenSSL, y otros más C, Lenguaje ensamblador 1.1.0h (27 de marzo de 2018; hace 3 meses). 1.0.2o (27 de marzo de 2018; hace 3 meses). Australia/UE wolfSSL (previamente CyaSSL) wolfSSL GNU GPLv2+ y licencia comercial wolfSSL Inc. C 3.15.3 (22 de junio de 2018; hace 15 días). US Implementación Desarrollado por Código Abierto Licencia de Software Propietario(s) de los derechos de autor Escrito en Última versión estable, fecha de publicación Origen
Soporte de protocolo Existen varias versiones del protocolo TLS. SSL 2.0 es una versión obsoletaRFC6176: Prohibiting Secure Sockets Layer (SSL) Version 2.0 del protocolo con debilidades significativas. SSL 3.0 (1996) y TLS 1.0 (1999) le suceden con dos desventajas en relleno-CBC, las cuales fueron explicadas en el 2001 por Serge Vaudenay. TLS 1.1 (2006) solo corrigió uno de los problemas al alternar aleatoriamente los vectores de inicialización (IV) para los bloques de cifrado CBC, mientras que el uso más problemático del cifrado mac-pad, no del cifrado pad-mac (el cual es más seguro), fue abordado con RFC7366.RFC7366: Encrypt-then-MAC for Transport Layer Security (TLS) and Datagram Transport Layer Security Una solución alternativa para SSL 3.0 y TLS 1.0, aproximadamente equivalente a los IVs aleatorios del TLS 1.1, fue adoptada abiertamente por varias implementaciones a finales del 2011, así que desde una perspectiva de seguridad, todas las versiones existentes de TLS 1.0, 1.1 y 1.2 proveen una fuerza equivalente en el protocolo base que, hasta al menos el 2030, resultan más apropiadas para la seguridad de 128 bits de acuerdo al NIST SP800-57. En el 2014 se descubrió la vulnerabilidad POODLE de SSL 3.0, la cual toma ventaja de la vulnerabilidades conocidas en CBC y de una negociación de respaldo insegura usada en los navegadores web.
TLS 1.2 (2008) es la versión más recientemente publicada del protocolo base, la cual introduce una forma de identificar los hashes usados para firmas digitales. Mientras permite el uso de funciones hash más fuertes para las firmas digitales en el futuro (rsa,sha256/sha384/sha512), por encima de su alternativa más conservadora, SSL 3.0 (rsa,sha1+md5), el cambio de protocolo TLS 1.2 inadvertida y sustancialmente debilita las firmas digitales por defecto y además provee (rsa,sha1) e incluso (rsa,md5).TLSv1.2's Major Differences from TLSv1.1
La capa de seguridad de transporte de datagrama (DTLS o TLS de datagrama) 1.0 es una modificación del TLS 1.1 para una capa de transporte orientada a paquetes, donde la pérdida y reordenación de paquetes deben ser toleradas. La revisión de DTLS 1.2 basada en TLS 1.2 fue publicada en enero del 2012RFC 6347
Cabe notar que hay vulnerabilidades conocidas en SSL 2.0 y SSL 3.0. Con la excepción de los predecibles IVs (para los cuales existe una solución alternativa), todas las vulnerabilidades conocidas en la actualidad afectan a todas las versiones de TLS 1.0/1.1/1.2 por igual.
Implementación SSL 2.0 (inseguro) SSL 3.0 (inseguro)RFC 6101 TLS 1.0RFC 2246 TLS 1.1RFC 4346 TLS 1.2 TLS 1.3(Borrador)draft-ietf-tls-tls13-11 - The Transport Layer Security (TLS) Protocol Version 1.3 DTLS 1.0RFC 4347 DTLS 1.2 GnuTLS (a) OpenSSL wolfSSL Implementación SSL 2.0 (inseguro) SSL 3.0 (inseguro) TLS 1.0 TLS 1.1 TLS 1.2 TLS 1.3(Borrador) DTLS 1.0 DTLS 1.2
(a) El cliente SSL 2.0 Hello está soportado aun cuando SSL 2.0 no esté respaldado o esté inhabilitado por compatibilidades atrasadas.
Criptografía de NSA Suite B Los componentes requeridos para la Criptografía de NSA Suite B (RFC 6460) son: Estándar de Encriptación Avanzada (AES) con tamaños de clave de 128 y 256 bits. Para el flujo de tráfico, AES debería ser usado en Modo Contador (CTR) para tráfico de baja banda ancha o en Modo Contador/Galois (GCM), modo de operación para alto tráfico de banda ancha (véase modos de operación de cifrado en bloque) — encriptación simétrica Algoritmo de Firma Digital de Curva Elíptica (ECDSA) — firmas digitales Curva Elíptica Diffie–Hellman (ECDH) — acuerdo clave Algoritmo 2 de Hash Protegido (SHA-256 y SHA-384) — resumen del mensaje
Por medio de CNSSP-15, la curva elíptica de 256-bit (especificada en FIPS 186-2), SHA-256, y AES, claves de 128 bits son suficientes para proteger información clasificada hasta el nivel secreto, mientras que con la curva elíptica de 384-bits (especificada en FIPS 186-2), SHA-384, y AES, claves de 256-bits son necesarias para la protección de información de alta seguridad.
GnuTLS OpenSSL wolfSSL Implementación TLS 1.2 Suite B
Certificaciones Nótese que ciertas certificaciones han recibido serias críticas negativas de personas que, de hecho, han están involucradas en ellas.
ImplementaciónFIPS 140-1, FIPS 140-2Solución FIPS Integrada GnuTLS"While, as a free software project, we are not actively pursuing this kind of certification, GnuTLS has been FIPS-140-2 certified in several systems by third parties." GnuTLS 3.5.6 B.5 Certification OpenSSL wolfSSL ImplementaciónFIPS 140-1, FIPS 140-2Solución FIPS Integrada
Algoritmos de intercambio de claves (solo con certificado) Esta sección lista la funcionalidad de la verificación de certificado disponible en las distintas implementaciones. Implementación RSARFC 5246 RSA-EXPORTACION (inseguro) DHE-RSA (secreto-perfecto-hacia-adelante) DHE-DSS (secreto-perfecto-hacia-adelante) ECDH-ECDSARFC 4492 ECDHE-ECDSA (secreto-perfecto-hacia-adelante) ECDH-RSA ECDHE-RSA (secreto-perfecto-hacia-adelante) GOST R 34.10-94, 34.10-2001draft-chudov-cryptopro-cptls-04 - GOST 28147-89 Cipher Suites for Transport Layer Security (TLS) GnuTLS OpenSSL wolfSSL Implementación RSA RSA-EXPORTACION (inseguro) DHE-RSA (secreto-perfecto-hacia-adelante) DHE-DSS (secreto-perfecto-hacia-adelante) ECDH-ECDSA ECDHE-ECDSA (secreto-perfecto-hacia-adelante) ECDH-RSA ECDHE-RSA (secreto-perfecto-hacia-adelante) GOST R 34.10-94, 34.10-2001
Algoritmos de intercambio de clave (intercambio de clave alternativo) Implementación SRPRFC 5054 SRP-DSS SRP-RSA PSK-RSARFC 4279 PSK DHE-PSK (secreto-perfecto-hacia-adelante) ECDH-PSK (secreto-perfecto-hacia-adelante)RFC 5489 KRB5RFC 2712 DHE-ANON (inseguro) ECDH-ANON (inseguro) GnuTLS OpenSSL wolfSSL Implementación SRP SRP-DSS SRP-RSA PSK-RSA PSK DHE-PSK (secreto-perfecto-hacia-adelante) ECDHE-PSK (secreto-perfecto-hacia-adelante) KRB5 DHE-ANON (inseguro) ECDH-ANON (inseguro)
Métodos de verificación de certificado Implementación Definido por aplicación Validación de ruta PKIXRFC 5280 CRLRFC 3280 OCSPRFC 2560 DANE (DNSSEC)RFC 6698, RFC 7218 Confianza al primer uso (TOFU) GnuTLS OpenSSL wolfSSL Implementación Definido por aplicación Validación de ruta PKIX CRL OCSP DANE (DNSSEC) Confianza al primer uso (TOFU)
Algoritmos de cifrado Implementación Cifrado en bloque con modo de operación Cifrado de flujo Ninguno AES GCMRFC 5288, RFC 5289 AES CCMRFC 6655, RFC 7251 AES CBC Camellia GCMRFC 6367 Camellia CBCRFC 5932, RFC 6367 ARIA GCM ARIA CBCRFC 6209 SEED CBCRFC 4162 CBC(inseguro) CNT(propuesto) (1) ChaCha20-Poly1305RFC 7905 Nulo(inseguro)(2) GnuTLS OpenSSL wolfSSL Implementación Cifrado en bloque con modo de operación Cifrado de flujo Ninguno AES GCM AES CCM AES CBC Camellia GCM Camellia CBC ARIA GCM ARIA CBC SEED CBC CBC(inseguro) CNT(propuesto) ChaCha20-Poly1305 Nulo(inseguro) Notas
(1) Este algoritmo aún no está definido como una suite de cifrado en RFC; está como una propuesta en borrador.
(2) Solo autenticación, no encriptación.
Algoritmos obsoletos Implementación Cifrado en bloque con modo de operación Cifrado de flujo IDEA CBCRFC 5469(inseguro)https://sweet32.info (1) DES CBC(inseguro)(1) DES-40 CBC(EXPORTACION, inseguro)(1) RC2-40 CBC(EXPORTACION, inseguro)(2) RC4-128(inseguro)(3) RC4-40(EXPORTACION, inseguro)(4)(2) GnuTLS OpenSSL wolfSSL Implementación Cifrado en bloque con modo de operación Cifrado de flujo IDEA CBC(inseguro) DES CBC(inseguro) DES-40 CBC(EXPORTACION, inseguro) RC2-40 CBC(EXPORTACION, inseguro) RC4-128(inseguro) RC4-40(EXPORTACION, inseguro) Notas
(1) IDEA y DES han sido removidos del TLS 1.2
(2) 40 bits de intensidad de cifrado fueron diseñados para operar a longitudes de clave reducidas para cumplir con las regulaciones de los Estados Unidos acerca de la exportación de software criptográfico que contiene algoritmos de cifrado de alta intensidad (véase Exportación de criptografía de los Estados Unidos). Estas suites débiles están prohibidas en TLS 1.1 y versiones posteriores.
(3) Lo ataques RC4 debilitan y/o interrumpen el RC4 usado en SSL/TLS. El uso de RC4 está prohibido por el RFC 7465.
(4) Loas ataques RC4 debilitan y/o interrumpen el RC4 usado en SSL/TLS.
Curvas elípticas respaldadas Esta sección lista las curvas elípticas respaldadas por cada implementación. Implementación sect163k1(1) sect163r1(2) sect163r2(3) sect193r1(4) sect193r2(5) sect233k1(6) sect233r1(7) sect239k1(8) sect283k1(9) sect283r1(10) sect409k1(11) sect409r1(12) sect571k1(13) sect571r1(14) GnuTLS OpenSSL wolfSSL Implementación sect163k1(1) sect163r1(2) sect163r2(3) sect193r1(4) sect193r2(5) sect233k1(6) sect233r1(7) sect239k1(8) sect283k1(9) sect283r1(10) sect409k1(11) sect409r1(12) sect571k1(13) sect571r1(14)
Implementación secp160k1(15) secp160r1(16) secp160r2(17) secp192k1(18) secp192r1prime192v1(19) secp224k1(20) secp224r1(21) secp256k1(22) secp256r1prime256v1(23) secp384r1(24) secp521r1(25) Curva principal arbitraria(0xFF01)Negotiation of arbitrary curves has been shown to be insecure for certain curve sizes Curvas arbitrarias char2 curves(0xFF02) GnuTLS OpenSSL wolfSSL Implementación secp160k1(15) secp160r1(16) secp160r2(17) secp192k1(18) secp192r1prime192v1(19) secp224k1(20) secp224r1(21) secp256k1(22) secp256r1prime256v1(23) secp384r1(24) secp521r1(25) arbitrary prime curves(0xFF01) arbitrary char2 curves(0xFF02)
Implementación brainpoolP256r1(26)RFC 7027 brainpoolP384r1(27) brainpoolP512r1(28) X25519 Curve448 M221Curve2213 E222 Curve1174 E382 M383 Curve383187 Curve41417Curve3617 M511Curve511187 E521 GnuTLS OpenSSL wolfSSL Implementación brainpoolP256r1(26) brainpoolP384r1(27) brainpoolP512r1(28) Curve25519 Curve448 M221Curve2213 E222 Curve1174 E382 M383 Curve383187 Curve41417Curve3617 M511Curve511187 E521
Rocio Implementación HMAC-MD5 HMAC-SHA1 HMAC-SHA256/384 AEAD GOST 28147-89 IMIT GOST R 34.11-94 GnuTLS OpenSSL wolfSSL Implementación HMAC-MD5 HMAC-SHA1 HMAC-SHA256/384 AEAD GOST 28147-89 IMIT GOST R 34.11-94
Compresión Nótese que la falla de seguridad CRIME toma ventaja de la compresión TLS, así que las implementaciones conservadoras no habilitan la compresión al nivel de TLS. La compresión HTTP no está relacionada ni se ve afectada por este abuso, pero se aprovecha del relacionado ataque BREACH. Implementación DEFLATERFC 3749(inseguro) GnuTLS OpenSSL wolfSSL Implementación DEFLATE
Extensiones En esta sección se listan las extensiones que cada implementación mantiene. Nótese que la extensión de Renegociación Segura es crítica para la seguridad del cliente HTTPS . Clientes TLS que no la implementan son vulnerables a ataques, independientemente de si el cliente implementa la renegociación TLS o no.