Comparación de implementaciones TLS

El protocolo de la capa de seguridad de transporte Transport Layer Security (TLS) provee la capacidad de asegurar la comunicación a través de las redes. Esta comparación de implementaciones TLS contrasta varias de las bibliotecas más notables. Hay varias implementaciones de TLS que son software libre y de código abierto.

Todas las categorías de comparación usan la versión estable de cada implementación listada en la sección de descripción general. La comparación está limitada a características que se relacionan directamente con el protocolo TLS.

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 Sí  GNU LGPLv2.1+ Fundación de Software libre C Estable - 3.5.18/16 de febrero de 2018; hace 4 meses.[1] Próximo estable: 3.6.2/16 de febrero de 2018; hace 4 meses.[1] UE (Grecia y Suecia)
OpenSSL Proyecto OpenSSL Sí  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).[2] 1.0.2o (27 de marzo de 2018; hace 3 meses).[2] Australia/UE
wolfSSL (previamente CyaSSL) wolfSSL[3] Sí  GNU GPLv2+ y licencia comercial wolfSSL Inc.[4] C 3.15.3 (22 de junio de 2018; hace 15 días).[5] 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 obsoleta[6] 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.[7] 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.[8] 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,[9] 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.[10]

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).[11]

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 2012[12]

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.[13]

Implementación SSL 2.0 (inseguro)[14] SSL 3.0 (inseguro)[15] TLS 1.0[16] TLS 1.1[17] TLS 1.2[18] TLS 1.3
(Borrador)[19][20]
DTLS 1.0[21] DTLS 1.2[12]
GnuTLS Sí No(a) Sí Inhabilitado por defecto[22] Sí  Sí  Sí  Sí [23] Sí  Sí 
OpenSSL Sí No[24] No Habilitado por defecto Sí  Sí [25] Sí [25] Sí  Sí  Sí [26]
wolfSSL Sí No Sí Desahabilitado por defecto[27] Sí  Sí  Sí  Sí [28] Sí  Sí 
Implementación SSL 2.0 (inseguro)[14] SSL 3.0 (inseguro)[15] TLS 1.0[16] TLS 1.1[17] TLS 1.2[18] TLS 1.3
(Borrador)[19][20]
DTLS 1.0[21] DTLS 1.2[12]

(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:

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 Sí 
OpenSSL Sí [26]
wolfSSL Sí 
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.[29]

Implementación FIPS 140-1, FIPS 140-2[30] Solución FIPS Integrada
GnuTLS[31] Sí Módulo criptográfico (#2780) Red Hat Enterprise Linux GnuTLS
OpenSSL[32] Sí Módulo de Objeto OpenSSL FIPS: 1.0 (#624), 1.1.1 (#733), 1.1.2 (#918), 1.2, 1.2.1, 1.2.2, 1.2.3 o 1.2.4 (#1051)
2.0, 2.0.1, 2.0.2, 2.0.3, 2.0.4, 2.0.5, 2.0.6, 2.0.7 o 2.0.8 (#1747)
wolfSSL[33] Sí Módulo wolfCrypt FIPS: 3.6.0 (#2425)
Véanse los detalles en NIST certificate para entornos operativos validados
Sí 
Implementación FIPS 140-1, FIPS 140-2 Solució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 RSA[18] RSA-EXPORTACION (inseguro)[18] DHE-RSA (secreto-perfecto-hacia-adelante)[18] DHE-DSS (secreto-perfecto-hacia-adelante)[18] ECDH-ECDSA[34] ECDHE-ECDSA (secreto-perfecto-hacia-adelante)[34] ECDH-RSA[34] ECDHE-RSA (secreto-perfecto-hacia-adelante)[34] GOST R 34.10-94, 34.10-2001[35]
    GnuTLS Sí  Sí No Sí  Parcial Deshabilitado por defecto[22] No No Sí  No No Sí  No No
    OpenSSL Sí  Sí No[24] Sí  Parcial Deshabilitado por defecto[24] Sí  Sí  Sí  Sí  Sí [36]
    wolfSSL Sí  Sí No Sí  Parcial No Sí  Sí  Sí  Sí  No No
    Implementación RSA[18] RSA-EXPORTACION (inseguro)[18] DHE-RSA (secreto-perfecto-hacia-adelante)[18] DHE-DSS (secreto-perfecto-hacia-adelante)[18] ECDH-ECDSA[34] ECDHE-ECDSA (secreto-perfecto-hacia-adelante)[34] ECDH-RSA[34] ECDHE-RSA (secreto-perfecto-hacia-adelante)[34] GOST R 34.10-94, 34.10-2001[35]

    Algoritmos de intercambio de clave (intercambio de clave alternativo)

    Implementación SRP[37] SRP-DSS[37] SRP-RSA[37] PSK-RSA[38] PSK[38] DHE-PSK (secreto-perfecto-hacia-adelante)[38] ECDH-PSK (secreto-perfecto-hacia-adelante)[39] KRB5[40] DHE-ANON[18] (inseguro) ECDH-ANON[34] (inseguro)
    GnuTLS Sí  Sí  Sí  Sí  Sí  Sí  Sí  No No Sí Deshabilitado por defecto Sí Deshabilitado por defecto
    OpenSSL Sí  Sí  Sí  Sí  Sí  Sí  Sí  Sí [41] Sí Deshabilitado por defecto[42] Sí Deshabilitado por defecto[42]
    wolfSSL No No No No No No No No Sí  No No Sí [43] No No Sí No Sí No
    Implementación SRP[37] SRP-DSS[37] SRP-RSA[37] PSK-RSA[38] PSK[38] DHE-PSK (secreto-perfecto-hacia-adelante)[38] ECDHE-PSK (secreto-perfecto-hacia-adelante)[39] KRB5[40] DHE-ANON[18] (inseguro) ECDH-ANON[34] (inseguro)

    Métodos de verificación de certificado

    Implementación Definido por aplicación Validación de ruta PKIX[44] CRL[45] OCSP[46] DANE (DNSSEC)[47] Confianza al primer uso (TOFU)
    GnuTLS Sí  Sí  Sí  Sí  Sí  Sí 
    OpenSSL Sí  Sí  Sí  Sí  Sí  No No
    wolfSSL Sí  Sí  Sí  Sí  No No No No
    Implementación Definido por aplicación Validación de ruta PKIX[44] CRL[45] OCSP[46] DANE (DNSSEC)[47] Confianza al primer uso (TOFU)

    Algoritmos de cifrado

    ImplementaciónCifrado en bloque con modo de operaciónCifrado de flujoNinguno
    AES GCM
    [48]
    AES CCM
    [49]
    AES CBC Camellia GCM
    [50]
    Camellia CBC
    [51]
    ARIA GCM
    [52]
    ARIA CBC
    [52]
    SEED CBC
    [53]
    3DES EDE CBC
    (inseguro)[54]
    GOST 28147-89 CNT
    (propuesto)
    [35] (1)
    ChaCha20-Poly1305
    [55]
    Nulo
    (inseguro)
    (2)
    GnuTLS Sí  Sí [22] Sí  Sí  Sí  No No No No No No Sí Deshabilitado por defecto[56] No No Sí [57] Sí Deshabilitado por defecto
    OpenSSL Sí [58] Parcial Deshabilitado por defecto[24] Sí  No No Parcial Deshabilitado por defecto[24] No No No No Parcial Deshabilitado por defecto[24] Sí Deshabilitado por defecto[24] Sí [36] Sí [24] Sí Deshabilitado por defecto
    wolfSSL Sí  Sí  Sí  No No Sí  No No No No No No No  No No Sí  Sí Deshabilitado por defecto
    ImplementaciónCifrado en bloque con modo de operaciónCifrado de flujoNinguno
    AES GCM
    [48]
    AES CCM
    [49]
    AES CBC Camellia GCM
    [50]
    Camellia CBC
    [51]
    ARIA GCM
    [52]
    ARIA CBC
    [52]
    SEED CBC
    [53]
    3DES EDE CBC
    (inseguro)[54]
    GOST 28147-89 CNT
    (propuesto)
    [35]
    ChaCha20-Poly1305
    [55]
    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ónCifrado en bloque con modo de operaciónCifrado de flujo
    IDEA CBC
    RFC 5469(inseguro)[59] (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 Sí No Sí No Sí No Sí No Sí Deshabilitado por defecto[22] Sí No
    OpenSSL Sí Deshabilitado por defecto[24] Sí Deshabilitado por defecto Sí No[24] Sí No[24] Sí Deshabilitado por defecto Sí No[24]
    wolfSSL Sí Deshabilitado por defecto[60] Sí No Sí No Sí No Sí Deshabilitado por defecto Sí No
    ImplementaciónCifrado en bloque con modo de operaciónCifrado de flujo
    IDEA CBC
    (inseguro)[59]
    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
    NIST K-163
    (1)[34]
    sect163r1
    (2)[34]
    sect163r2
    NIST B-163
    (3)[34]
    sect193r1
    (4)[34]
    sect193r2
    (5)[34]
    sect233k1
    NIST K-233
    (6)[34]
    sect233r1
    NIST B-233
    (7)[34]
    sect239k1
    (8)[34]
    sect283k1
    NIST K-283
    (9)[34]
    sect283r1
    NIST B-283
    (10)[34]
    sect409k1
    NIST K-409
    (11)[34]
    sect409r1
    NIST B-409
    (12)[34]
    sect571k1
    NIST K-571
    (13)[34]
    sect571r1
    NIST B-571
    (14)[34]
    GnuTLS No No No No No No No No No No No No No No No No No No No No No No No No No No No No
    OpenSSL Sí  Sí  Sí  Sí  Sí  Sí  Sí  Sí  Sí  Sí  Sí  Sí  Sí  Sí 
    wolfSSL No No No No No No No No No No No No No No No No No No No No No No No No No No No No
    Implementación sect163k1
    NIST K-163
    (1)[34]
    sect163r1
    (2)[34]
    sect163r2
    NIST B-163
    (3)[34]
    sect193r1
    (4)[34]
    sect193r2
    (5)[34]
    sect233k1
    NIST K-233
    (6)[34]
    sect233r1
    NIST B-233
    (7)[34]
    sect239k1
    (8)[34]
    sect283k1
    NIST K-283
    (9)[34]
    sect283r1
    NIST B-283
    (10)[34]
    sect409k1
    NIST K-409
    (11)[34]
    sect409r1
    NIST B-409
    (12)[34]
    sect571k1
    NIST K-571
    (13)[34]
    sect571r1
    NIST B-571
    (14)[34]
    Implementación secp160k1
    (15)[34]
    secp160r1
    (16)[34]
    secp160r2
    (17)[34]
    secp192k1
    (18)[34]
    secp192r1
    prime192v1
    NIST P-192
    (19)[34]
    secp224k1
    (20)[34]
    secp224r1
    NIST P-244
    (21)[34]
    secp256k1
    (22)[34]
    secp256r1
    prime256v1
    NIST P-256
    (23)[34]
    secp384r1
    NIST P-384
    (24)[34]
    secp521r1
    NIST P-521
    (25)[34]
    Curva principal arbitraria
    (0xFF01)[34][61]
    Curvas arbitrarias char2 curves
    (0xFF02)[34][61]
    GnuTLS No No No No No No No No Sí  No No Sí  No No Sí  Sí  Sí  Parcial No Parcial No
    OpenSSL Sí  Sí  Sí  Sí  Sí  Sí  Sí  Sí  Sí  Sí  Sí  Parcial No Parcial No
    wolfSSL Sí  Sí  Sí  Sí  Sí  Sí  Sí  Sí  Sí  Sí  Sí  Parcial No Parcial No
    Implementación secp160k1
    (15)[34]
    secp160r1
    (16)[34]
    secp160r2
    (17)[34]
    secp192k1
    (18)[34]
    secp192r1
    prime192v1
    NIST P-192
    (19)[34]
    secp224k1
    (20)[34]
    secp224r1
    NIST P-244
    (21)[34]
    secp256k1
    (22)[34]
    secp256r1
    prime256v1
    NIST P-256
    (23)[34]
    secp384r1
    NIST P-384
    (24)[34]
    secp521r1
    NIST P-521
    (25)[34]
    arbitrary prime curves
    (0xFF01)[34][61]
    arbitrary char2 curves
    (0xFF02)[34][61]
    Implementación brainpoolP256r1
    (26)[62]
    brainpoolP384r1
    (27)[62]
    brainpoolP512r1
    (28)[62]
    X25519
    [63]
    Curve448
    Ed448-Goldilocks
    [64]
    M221
    Curve2213
    [65]
    E222
    [65]
    Curve1174
    [65]
    E382
    [65]
    M383
    [65]
    Curve383187
    [65]
    Curve41417
    Curve3617
    [65]
    M511
    Curve511187
    [65]
    E521
    [65]
    GnuTLS No No No No No No Sí [66] No No No No No No No No No No No No No No No No No No No No
    OpenSSL Sí [26] Sí [26] Sí [26] Sí [67][68] Sí [69][70] No No No No No No No No No No No No No No No No No No
    wolfSSL Sí  Sí  Sí  Sí [71] No No No No No No No No No No No No No No No No No No No No
    Implementación brainpoolP256r1
    (26)
    brainpoolP384r1
    (27)
    brainpoolP512r1
    (28)
    Curve25519 Curve448
    Ed448-Goldilocks
    M221
    Curve2213
    E222 Curve1174 E382 M383 Curve383187 Curve41417
    Curve3617
    M511
    Curve511187
    E521
    [65]

    Integridad de datos

    Implementación HMAC-MD5 HMAC-SHA1 HMAC-SHA256/384 AEAD GOST 28147-89 IMIT[35] GOST R 34.11-94[35]
    GnuTLS Sí  Sí  Sí  Sí  No No No No
    OpenSSL Sí  Sí  Sí  Sí  Sí [36] Sí [36]
    wolfSSL Sí  Sí  Sí  Sí  No No No No
    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 DEFLATE[72]
    (inseguro)
    GnuTLS Sí Deshabilitado por defecto
    OpenSSL Sí Deshabilitado por defecto
    wolfSSL Sí Deshabilitado por defecto
    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 [cita requerida]. Clientes TLS que no la implementan son vulnerables a ataques, independientemente de si el cliente implementa la renegociación TLS o no.

    Implementación Renegociación Segura
    [73]
    Indicación del nombre de servidor
    [74]
    ALPN
    [75]
    Solicitud de estado de certificado
    [74]
    OpenPGP
    [76]
    Datos suplementarios
    [77]
    Ticket de sesión
    [78]
    Exportador de material de tipeo
    [79]
    Longitud máxima de fragmento
    [74]
    Truncado HMAC
    [74]
    Encrypt-then-MAC
    [80]
    TLS de vuelta atrás SCSV
    [81]
    Secreto maestro extendido
    [82]
    Relleno ClientHello
    [83]
    Claves públicas primas
    [84]
    GnuTLS Sí  Sí  Sí [85] Sí  Parcial Obsoleto[86] Sí  Sí  Sí  Sí  Parcial No Sí [22] Sí [87] Sí [22] Sí [88] No No
    OpenSSL Sí  Sí  Sí [26] Sí  No No No No? Sí  Sí ? No No Parcial No No No Sí [89] Sí [90] Sí [91] Desconocido
    wolfSSL Sí  Sí  Sí [60] Sí  No No No No Sí  No No Sí  Parcial  No No No No Sí  No No Desconocido
    Implementación Renegociación segura Indicación del nombre de servidor ALPN Solicitud de estado de certificado OpenPGP Datos suplementarios Ticket de sesión Exportador de material de tipeo Longitud máxima de fragmento HMAC truncado Encrypt-then-MAC TLS de vuelta atrás SCSV Secreto maestro extendido Relleno ClientHello Claves públicas primas

    Criptografía asistida

    Esta sección lista las habilidades de implementación conocidas por tomar ventaja de los sets de instrucción de CPU que optimizan la encriptación, o que utilizan dispositivos específicos del sistema que permiten accesar el hardware criptográfico subyacente para la aceleración o separación de datos.

    Implementación Dispositivo PKCS #11 Intel AES-NI VIA PadLock ARMv8-A Intel SGX Intel QAT
    GnuTLS Sí  Sí  Sí  Sí [92] No No No No
    OpenSSL Sí [93] Sí  Sí  Sí [94] No No
    wolfSSL No No Sí  No No Sí  Sí  Sí [95]
    Implementación Dispositivo PKCS #11 Intel AES-NI VIA PadLock ARMv8-A Intel SGX Intel QAT

    Soporte basado en sistema

    Esta sección lista la habilidad de cada implementación de aprovechar el soporte específico del sistema operativo disponible, o incluso el soporte provisto por alguna otra implementación.

    Implementación /dev/crypto Windows CSP CommonCrypto Motor OpenSSL
    GnuTLS Sí  No No No No No No
    OpenSSL Sí  No No No No Sí 
    wolfSSL No No Parcial Parcial No No No No
    Implementación /dev/crypto Windows CSP CommonCrypto Motor OpenSSL

    Módulo criptográfico/Token de soporte

    Implementación Soporte TPM Token de soporte de hardware Objetos identificados vía
    GnuTLS Sí  Sí PKCS11 RFC7512 PKCS #11 URLs[96]
    OpenSSL Sí  Parcial PKCS11 (vía módulo por terceros)[97] RFC7512 PKCS #11 URLs[96]
    wolfSSL No No No No
    Implementación Soporte TPM Token de soporte de hardware Objetos identificados vía

    Dependencias de código

    Implementación Dependencias Dependencias opcionales
    GnuTLS libc
    nettle
    gmp
    zlib (compresión)
    p11-kit (PKCS #11)
    trousers (TPM)
    OpenSSL libc zlib (compresión)
    wolfSSL Ninguna libc, zlib (compresión)
    Implementación Dependencias Dependencias opcionales

    Entorno de desarrollo

    Implementación Namespace Herramientas de estructuración Manual API Crypto back-end Capa de compatibilidad OpenSSL
    GnuTLS gnutls_* Autoconf, automake, libtool Manual y referencia API (HTML, PDF) Externa, libnettle Sí  (limitada)
    OpenSSL SSL_*

    SHA1_*
    MD5_*
    EVP_*
    ...

    Makefile Man pages Incluida (monolítica)
    wolfSSL CyaSSL_*

    SSL_*

    Autoconf, automake, libtool, espacios de trabajo de proyecto MSVC, proyectos XCode, proyectos CodeWarrior, proyectos MPLAB X, Keil, IAR, Clang, GCC Manual y referencia API (HTML, PDF) Incluida (monolítica) Sí  (cerca del 10% de API)
    Implementación Namespace Herramientas de estructuración Manual API Crypto back-end Capa de compatibilidad OpenSSL

    Problemas de portabilidad

    Implementación Requisitos de plataforma Requisitos de red Hilo de seguridad Semilla aleatoria Capacidad de compilación cruzada No OS (sistema completo) Sistemas operativos respaldados
    GnuTLS C89 POSIX send() y rcv(). API proporcionará su propio reemplazo. Parcial Enlace de hilo seguro, necesita enganche mutex personalizado en caso de que no hayan hilos POSIX o Windows disponibles. Depende de la plataforma Sí  No No Por lo general cualquier plataforma POSIX o Windows, plataformas comúnmente probadas incluyen GNU/Linux, Win32/64, OS X, Solaris, OpenWRT, FreeBSD, NetBSD, OpenBSD.
    OpenSSL C89?  ? Parcial Necesita retrollamada mutex Establecido a través de API nativo Sí  No No Unix, DOS (con djgpp), Windows, OpenVMS, MacOS, NetWare, eCos
    wolfSSL C89 POSIX send() y recv(). API proporcionará su propio reemplazo. Parcial Enlace de hilo seguro, necesita enganche mutex si PThreads o WinThreads no están disponibles, puede ser desconectado Establecido a través de wolfCrypt Sí  Sí  Win32/64, Linux, OS X, Solaris, ThreadX, VxWorks, FreeBSD, NetBSD, OpenBSD, Linux embebido, Haiku, OpenWRT, iPhone (iOS), Android, Nintendo Wii y Gamecube a través de DevKitPro, QNX, MontaVista, OpenCL, NonStop, TRON/ITRON/µITRON, Micrium µC OS, FreeRTOS, SafeRTOS, Freescale MQX, Nucleus, TinyOS, HP/UX, Keil RTX, TI-RTOS
    Implementación Requisitos de plataforma Requisitos de red Hilo de seguridad Semilla aleatoria Capacidad de compilación cruzada No OS (sistema completo) Sistemas operativos respaldados

    Véase también

    Referencias

    1. «GnuTLS». Consultado el 3 de mayo de 2016.
    2. «OpenSSL: Newslog». Consultado el 3 de mayo de 2016.
    3. «wolfSSL product description». Consultado el 3 de mayo de 2016.
    4. «wolfSSL Embedded SSL/TLS». Consultado el 3 de mayo de 2016.
    5. «wolfSSL ChangeLog». Consultado el 3 de mayo de 2016.
    6. RFC6176: Prohibiting Secure Sockets Layer (SSL) Version 2.0
    7. «"CBC-Padding: Security Flaws in SSL, IPsec, WTLS,...", Serge Vaudenay, 2001».
    8. RFC7366: Encrypt-then-MAC for Transport Layer Security (TLS) and Datagram Transport Layer Security
    9. «Rizzo/Duong BEAST Countermeasures». Archivado desde el original el 23 de junio de 2018. Consultado el 7 de julio de 2018.
    10. Möller, Bodo; Duong, Thai; Kotowicz, Krzysztof (September 2014). «This POODLE Bites: Exploiting The SSL 3.0 Fallback». Consultado el 15 de octubre de 2014.
    11. TLSv1.2's Major Differences from TLSv1.1
    12. RFC 6347
    13. «Bard attack». Parámetro desconocido |citeseerx= ignorado (ayuda);
    14. «draft-hickman-netscape-ssl-00». tools.ietf.org.
    15. RFC 6101
    16. RFC 2246
    17. RFC 4346
    18. RFC 5246
    19. draft-ietf-tls-tls13-11 - The Transport Layer Security (TLS) Protocol Version 1.3
    20. «tlswg/tls13-spec branches». tlswg.github.io.
    21. RFC 4347
    22. «[gnutls-devel] GnuTLS 3.4.0 released». 8 de abril de 2015. Consultado el 16 de abril de 2015.
    23. «Released GnuTLS 3.6.4 of the next branch with support for the final version of TLS1.3 [24 Sep 2018]». Consultado el 5 de julio de 2019.
    24. Inc., OpenSSL Foundation,. «/news/openssl-1.1.0-notes.html». www.openssl.org. Archivado desde el original el 17 de marzo de 2018. Consultado el 7 de julio de 2018.
    25. «Major changes between OpenSSL 1.0.0h and OpenSSL 1.0.1 [14 Mar 2012]». 14 de marzo de 2012. Archivado desde el original el 5 de diciembre de 2014. Consultado el 20 de enero de 2015.
    26. «Major changes between OpenSSL 1.0.1l and OpenSSL 1.0.2 [22 Jan 2015]». Archivado desde el original el 4 de septiembre de 2014. Consultado el 22 de enero de 2015.
    27. «[wolfssl] wolfSSL 3.6.6 Released». 20 de agosto de 2015. Consultado el 24 de agosto de 2015.
    28. «[wolfssl] wolfSSL TLS 1.3 support updated to draft 23». 12 de marzo de 2018. Consultado el 12 de marzo de 2018.
    29. «"Secure or Compliant, Pick One" Steve Marquess blog». 27 de diciembre de 2013. Archivado desde el original el 27 de diciembre de 2013. Consultado el 7 de julio de 2018.
    30. «Search - Cryptographic Module Validation Program - CSRC». csrc.nist.gov. Archivado desde el original el 26 de diciembre de 2014. Consultado el 7 de julio de 2018.
    31. "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
    32. «OpenSSL and FIPS 140-2». Archivado desde el original el 28 de mayo de 2013. Consultado el 18 de mayo de 2013.
    33. «wolfCrypt FIPS 140-2 Information - wolfSSL Embedded SSL/TLS Library».
    34. RFC 4492
    35. «openssl/engines/ccgost/README.gost». Archivado desde el original el 15 de abril de 2013. Consultado el 15 de abril de 2013.
    36. RFC 5054
    37. RFC 4279
    38. RFC 5489
    39. RFC 2712
    40. «Changes between 0.9.6h and 0.9.7 [31 Dec 2002]». Consultado el 29 de enero de 2016.
    41. «Changes between 0.9.8n and 1.0.0 [29 Mar 2010]». Consultado el 29 de enero de 2016.
    42. «wolfSSL (Formerly CyaSSL) Release 3.9.0 (03/18/2016)». 18 de marzo de 2016. Consultado el 5 de abril de 2016.
    43. RFC 5280
    44. RFC 3280
    45. RFC 2560
    46. RFC 6698, RFC 7218
    47. RFC 5288, RFC 5289
    48. RFC 6655, RFC 7251
    49. RFC 6367
    50. RFC 5932, RFC 6367
    51. RFC 6209
    52. RFC 4162
    53. «Sweet32: Birthday attacks on 64-bit block ciphers in TLS and OpenVPN». sweet32.info.
    54. RFC 7905
    55. «gnutls 3.6.0». 21 de septiembre de 2017. Consultado el 7 de enero de 2018.
    56. «gnutls 3.4.12». 20 de mayo de 2016. Archivado desde el original el 13 de octubre de 2016. Consultado el 29 de mayo de 2016.
    57. «openssl/CHANGES at OpenSSL_1_0_1-stable · openssl/openssl». Consultado el 20 de enero de 2015.
    58. https://sweet32.info
    59. «wolfSSL (Formerly CyaSSL) Release 3.7.0 (10/26/2015)». 26 de octubre de 2015. Consultado el 19 de noviembre de 2015.
    60. Negotiation of arbitrary curves has been shown to be insecure for certain curve sizes Mavrogiannopoulos, Nikos and Vercautern, Frederik and Velichkov, Vesselin and Preneel, Bart (2012). A cross-protocol attack on the TLS protocol. Proceedings of the 2012 ACM conference on Computer and communications security. pp. 62-72. ISBN 978-1-4503-1651-4.
    61. RFC 7027
    62. Simon, Josefsson,; Yoav, Nir,; Manuel, Pégourié-Gonnard,. «Elliptic Curve Cryptography (ECC) Cipher Suites for Transport Layer Security (TLS) Versions 1.2 and Earlier». tools.ietf.org.
    63. Simon, Josefsson,; Manuel, Pégourié-Gonnard,. «Curve25519 and Curve448 for Transport Layer Security (TLS)». tools.ietf.org.
    64. Simon, Josefsson,; Manuel, Pégourié-Gonnard,. «Additional Elliptic Curves for Transport Layer Security (TLS) Key Agreement». tools.ietf.org.
    65. «"An overview of the new features in GnuTLS 3.5.0"». 2 de mayo de 2016. Consultado el 9 de diciembre de 2016.
    66. «OpenSSL 1.1.0x Release Notes». 25 de agosto de 2016. Archivado desde el original el 18 de mayo de 2018. Consultado el 18 de mayo de 2018.
    67. «OpenSSL  GitHub Issue #487 Tracker». 2 de diciembre de 2015. Consultado el 18 de mayo de 2018.
    68. «OpenSSL 1.1.1x Release Notes». 1 de mayo de 2018. Consultado el 18 de mayo de 2018.
    69. «OpenSSL  GitHub Issue #5049 Tracker». 9 de enero de 2018. Consultado el 18 de mayo de 2018.
    70. «wolfSSL (Formerly CyaSSL) Release 3.4.6 (03/30/2015)». 30 de marzo de 2015. Consultado el 19 de noviembre de 2015.
    71. RFC 3749
    72. RFC 5746
    73. RFC 6066
    74. RFC 7301
    75. RFC 6091
    76. RFC 4680
    77. RFC 5077
    78. RFC 5705
    79. RFC 7366
    80. RFC 7507
    81. RFC 7627
    82. RFC 7685
    83. RFC 7250
    84. «gnutls 3.2.0». Archivado desde el original el 31 de enero de 2016. Consultado el 26 de enero de 2015.
    85. https://lists.gnupg.org/pipermail/gnutls-devel/2017-February/008309.html
    86. «gnutls 3.4.4». Archivado desde el original el 17 de julio de 2017. Consultado el 25 de agosto de 2015.
    87. «%DUMBFW priority keyword». Consultado el 30 de abril de 2017.
    88. http://www.openssl.org/news/secadv_20141015.txt
    89. «OpenSSL 1.1.0 Release Notesl». (enlace roto disponible en Internet Archive; véase el historial, la primera versión y la última).
    90. «Major changes between OpenSSL 1.0.1f and OpenSSL 1.0.1g [7 Apr 2014]». 7 de abril de 2014. Archivado desde el original el 20 de enero de 2015. Consultado el 10 de febrero de 2015.
    91. https://lists.gnupg.org/pipermail/gnutls-devel/2016-October/008194.html
    92. https://habrahabr.ru/post/134725/, http://forum.rutoken.ru/topic/1639/, https://dev.rutoken.ru/pages/viewpage.action?pageId=18055184 (en ruso)
    93. «git.openssl.org Git - openssl.git/commitdiff». git.openssl.org.
    94. «wolfSSL Asynchronous Intel QuickAssist Support - wolfSSL». 18 de enero de 2017.
    95. RFC 7512
    96. «libp11: PKCS#11 wrapper library». 19 de enero de 2018 via GitHub.
    Este artículo ha sido escrito por Wikipedia. El texto está disponible bajo la licencia Creative Commons - Atribución - CompartirIgual. Pueden aplicarse cláusulas adicionales a los archivos multimedia.