Está en la página 1de 8

Introducción

Este artículo se centra en proporcionar ejemplos claros y simples para la


cadena de cifrado. Se basan en diferentes escenarios en los que utiliza el
protocolo de Seguridad de la capa de transporte (TLS).

Recomendaciones para una cadena de


cifrado
Escenarios
Las cadenas de cifrado se basan en la recomendación de configurar su política
para obtener una lista blanca para sus cifrados como se describe en la Hoja
de trucos de protección de la capa de transporte (Regla: solo admite cifrados
criptográficos fuertes) . Los últimos y más fuertes cifrados están disponibles
únicamente con TLSv1.2, los protocolos más antiguos no los admiten. Adjunte
todos los protocolos admitidos por el escenario.

No hemos incluido ningún ChaCha20-Poly1305cifrado, todavía. Una razón es que


todavía no hemos encontrado varias evaluaciones, la otra es que las
implementaciones de nuevas cifras pueden ser más problemáticas.
Finalmente, hemos compilado las versiones más antiguas de diferentes
agentes de cliente que aún son compatibles con una cadena de
cifrado. Proporcionamos esta información de acuerdo con los cifrados y
protocolos admitidos por los navegadores, bibliotecas, bots en base a la lista
de ssllabs de capacidades de agente de usuario y pruebas por nuestra cuenta.

Hemos verificado esto a fondo, pero acepte que todos los datos se
proporcionan sin ninguna garantía de ningún tipo. La lista de los clientes
admitidos más antiguos supone que el servidor admite todos los cifrados según
el escenario (póngase en contacto con los autores si encuentra algún error o
si puede proporcionar datos adicionales).

Las cadenas de cifrado recomendadas se basan en diferentes escenarios:


Cadena de cifrado OWASP 'A' (compatibilidad avanzada y amplia del
navegador, por ejemplo, para la mayoría de las versiones más nuevas del
navegador):

 Recomendado si controla el servidor y los clientes. Asegúrese de verificar la


compatibilidad antes de usarlo.
 Incluye únicamente los cifrados más seguros Perfect Forward Secrecy (PFS) .
 Protocolos: TLSv1.3, TLSv1.2(y más reciente o mejor).
 Clientes más antiguos que son compatibles: Android 4.4.2, BingPreview, enero
de 2015, Chrome 32 / Win 7, Chrome 34 / OS X, Edge 12 / Win 10, Firefox 27 /
Win 8, Googlebot, febrero de 2015, IE11 / Win 7 + MS14 -066, Java8b132,
OpenSSL 1.0.1e, Safari 9 / iOS 9, Yahoo Slurp, junio de 2014, YandexBot,
septiembre de 2014.
OWASP Cipher String 'B' (Amplia compatibilidad con los navegadores,
verifique la compatibilidad con otros protocolos antes de usarlo, por ejemplo,
IMAPS):

 Recomendado si solo controla el servidor, los clientes usan sus navegadores y si


verifica la compatibilidad antes de usarlo para otros protocolos que no sean https.
 Incluye únicamente los cifrados PFS más y más fuertes .
 Protocolos: TLSv1.2(y más nuevos o mejores).
 Clientes más antiguos que son compatibles: Android 4.4.2, BingPreview, enero
de 2015, Chrome 30 / Win 7, Chrome 34 / OS X, Edge 12 / Win 10, Firefox 27 /
Win 8, Googlebot, febrero de 2015, IE11 / Win 7, IE 11 / WinPhone 8.1,
Java8b132, OpenSSL 1.0.1e, Opera 17 / Win 7, Safari 5 / iOS 5.1.1, Safari 7 /
OS X 10.9, Yahoo Slurp jun 2014, YandexBot sep 2014

OWASP Cipher String 'C' (compatibilidad más amplia, compatibilidad con la


mayoría de los navegadores heredados, bibliotecas heredadas (aún
parcheadas) y otros protocolos de aplicación además de https, por ejemplo,
IMAPS):

 Puede usar esto si solo controla el servidor, sus clientes usan navegadores
antiguos y otras bibliotecas antiguas o si usa otros protocolos que no sean https.
 Incluye únicamente cifrados PFS .
 Tenga en cuenta los riesgos adicionales y las nuevas vulnerabilidades que
pueden aparecer son más probables que las anteriores.
 Planee eliminar SHA-1 y TLSv1, TLSv1.1 para https en el mediano plazo.
 Protocolos: TLSv1.3, TLSv1.2, TLSv1.1, TLSv1(y más nuevo o mejor).
 Clientes conocidos más antiguos que son compatibles: Android 2.3.7 / 4.0.4,
Baidu, enero de 2015, BingPreview, diciembre de 2013, Chrome 27 / Win 7,
Chrome 34 / OS X, Edge 12 / Win 10, Firefox 10.0.12 ESR / Win 7 , Firefox 21 /
Win 7 + Fedora 19, Googlebot Oct 2013, IE 7 / Vista, IE 10 / WinPhone 8.0, Java
7u25, OpenSSL 0.9.8y, Opera 12.15 / Win 7, Safari 5 / iOS 5.1.1, Safari 5.1. 9 /
OS X 10.6.8, Yahoo Slurp Oct 2013, YandexBot Mayo 2014

OWASP Cipher String 'D' (compatibilidad heredada, más amplia con


navegadores antiguos reales y bibliotecas heredadas y otros protocolos de
aplicación como SMTP):

 Tenga cuidado, utilice esta cadena de cifrado solo si se ve obligado a admitir PFS
que no sea para clientes antiguos reales con bibliotecas muy antiguas o para
otros protocolos además de https.
 Tenga en cuenta los riesgos existentes (por ejemplo, cifrados sin PFS, cifrados
con 3DES) y las nuevas vulnerabilidades que pueden parecer más probables.
 No utilice cifras débiles basadas en, 3DESpor
ejemplo TLS_RSA_WITH_3DES_EDE_CBC_SHA, ( , DES-CBC3-SHA)
 Nunca utilice aún más inseguro o sistemas de cifrado basado en
mayores RC2, RC4, DES, MD4, MD5, EXP, EXP1024, AH, ADH, aNULL, eNULL, SEEDni IDEA.
 Se prefieren los cifrados PFS , excepto todos los cifrados DHE que usan SHA-1
(para evitar posibles problemas de incompatibilidad causados por la longitud
del parámetro DH ).
 Planifique moverse a 'A' para https o al menos 'B' de lo contrario en el mediano
plazo.
 Protocolos: TLSv1.3, TLSv1.2, TLSv1.1, TLSv1(y más nuevo o mejor).
Tabla de los cifrados (y su prioridad de alta (1) a baja (por ejemplo, 18))

IANA, OpenSSL y otras bibliotecas criptográficas usan nombres ligeramente diferentes para los mismos cifrados.

Esta tabla enumera los nombres utilizados por IANA y por openssl entre paréntesis []. Además, puede encontrar los valores
hexadecimales inequívocos definidos por IANA. Mozilla ofrece una tabla de correspondencia de nombres de cifrado más grande.
La
Cifrar Amplia
Nombre de cifrado: Avanzado compatibilidad Legado
valor compatibilidad
IANA, [OpenSSL] (A) más amplia (D)
HEX (B)
(C)

TLS_AES_256_GCM_SHA384 (TLSv1.3) , 0x1302 1 1 1 1


[ TLS_AES_256_GCM_SHA384]

TLS_CHACHA20_POLY1305_SHA256 (TLSv1.3) ,
0x1303 2 2 2 2
[ TLS_CHACHA20_POLY1305_SHA256]

TLS_AES_128_GCM_SHA256 (TLSv1.3) ,
0x1301 3 3 3 3
[ TLS_AES_128_GCM_SHA256]

TLS_DHE_RSA_WITH_AES_256_GCM_SHA384,
0x009f 44 44 44 44
[ DHE-RSA-AES256-GCM-SHA384]

TLS_DHE_RSA_WITH_AES_128_GCM_SHA256,
0x009e 55 55 55 55
[ DHE-RSA-AES128-GCM-SHA256]
La
Cifrar Amplia
Nombre de cifrado: Avanzado compatibilidad Legado
valor compatibilidad
IANA, [OpenSSL] (A) más amplia (D)
HEX (B)
(C)

TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,
0xc030 66 66 66 66
[ ECDHE-RSA-AES256-GCM-SHA384]

TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,
0xc02f 77 77 77 77
[ ECDHE-RSA-AES128-GCM-SHA256]

TLS_DHE_RSA_WITH_AES_256_CBC_SHA256,
0x006b 8 8 8
[ DHE-RSA-AES256-SHA256]

TLS_DHE_RSA_WITH_AES_128_CBC_SHA256,
0x0067 99 99 99
[ DHE-RSA-AES128-SHA256]

TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384,
0xc028 10 10 10
[ ECDHE-RSA-AES256-SHA384]

TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,
0xc027 11 11 11
[ ECDHE-RSA-AES128-SHA256]

TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA,
0xc014 12 12
[ ECDHE-RSA-AES256-SHA]
La
Cifrar Amplia
Nombre de cifrado: Avanzado compatibilidad Legado
valor compatibilidad
IANA, [OpenSSL] (A) más amplia (D)
HEX (B)
(C)

TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,
0xc013 13 13
[ ECDHE-RSA-AES128-SHA]

TLS_RSA_WITH_AES_256_GCM_SHA384,
0x009d 14
[ AES256-GCM-SHA384]

TLS_RSA_WITH_AES_128_GCM_SHA256,
0x009c 15
[ AES128-GCM-SHA256]

TLS_RSA_WITH_AES_256_CBC_SHA256,
0x003d dieciséis
[ AES256-SHA256]

TLS_RSA_WITH_AES_128_CBC_SHA256,
0x003c 17
[ AES128-SHA256]

TLS_RSA_WITH_AES_256_CBC_SHA,
0x0035 18 años
[ AES256-SHA]

TLS_RSA_WITH_AES_128_CBC_SHA,
0x002f 19
[ AES128-SHA]
La
Cifrar Amplia
Nombre de cifrado: Avanzado compatibilidad Legado
valor compatibilidad
IANA, [OpenSSL] (A) más amplia (D)
HEX (B)
(C)

TLS_DHE_RSA_WITH_AES_256_CBC_SHA,
0x0039 14 20
[ DHE-RSA-AES256-SHA]

TLS_DHE_RSA_WITH_AES_128_CBC_SHA,
0x0033 15 21
[ DHE-RSA-AES128-SHA]

Observaciones:

Las versiones anteriores de Internet-Explorer y Java NO admiten parámetros Diffie-Hellman superiores a 1024 bits. Entonces los
cifrados TLS_DHE_RSA_WITH_AES_256_CBC_SHAy TLS_DHE_RSA_WITH_AES_128_CBC_SHAse movieron hasta el final para evitar posibles
problemas de incompatibilidad.
Otra opción: elimine estos dos cifrados de su lista .
Ejemplos de cadenas de cifrado
OpenSSL
Cadena de
Sintaxis de OpenSSL
cifrado

Avanzado TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:TLS_AES_128_GCM_SHA256:DHE-
(A) RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-
SHA384:ECDHE-RSA-AES128-GCM-SHA256

TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:TLS_AES_128_GCM_SHA256:DHE-
Amplia
RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-
compatibilidad
SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-
(B) SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256

TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:TLS_AES_128_GCM_SHA256:DHE-
La
RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-
compatibilidad
SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-
más amplia SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-
(C) SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA

TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:TLS_AES_128_GCM_SHA256:DHE-
RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-
SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-
Legado
SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-
(D) SHA:ECDHE-RSA-AES128-SHA:AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-
SHA256:AES128-SHA256:AES256-SHA:AES128-SHA:DHE-RSA-AES256-SHA:DHE-RSA-AES128-
SHA

¿Cómo usar estas cadenas de cifrado?


Infórmese cómo configurar de forma segura la configuración de los servicios o
hardware que utiliza, por ejemplo, BetterCrypto.org: Crypto Hardening
Aplicado (DRAFT) , Mozilla: Seguridad / Servidor TLS .

Recomendamos utilizar una de las cadenas de cifrado descritas anteriormente.

Configuraciones de ejemplo
apache
Cadena de cifrado 'B':
SSLProtocol +TLSv1.2 # for Cipher-String 'A', 'B'
#SSLProtocol +TLSv1.2 +TLSv1.1 +TLSv1 # for Cipher-String 'C', 'D'
SSLCompression off
SSLHonorCipherOrder on
SSLCipherSuite 'DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:ECDHE-
RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-
SHA256:DHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-
SHA256'
#add optionally
':!aNULL:!eNULL:!LOW:!3DES:!MD5:!EXP:!PSK:!DSS:!RC4:!SEED:!ECDSA:!ADH:!IDEA
:!3DES'
Observaciones:

 La cadena de cifrado se compila como una lista blanca de cifrados individuales


para obtener una mejor compatibilidad incluso con versiones antiguas de
OpenSSL.
 Monitoree el rendimiento de su servidor, por ejemplo, el protocolo de enlace TLS
con DHE dificulta la CPU aproximadamente 2.4 veces más que ECDHE,
cf. Vincent Bernat, 2011 , Blog de nmav, 2011 .
 Verifique su cadena de cifrado usando su biblioteca de cifrado, por ejemplo,
openssl usando la cadena de cifrado 'B':

openssl ciphers -V "DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-


SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-
AES256-SHA256:DHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-
AES128-SHA256"
#add optionally
':!aNULL:!eNULL:!LOW:!MD5:!EXP:!PSK:!DSS:!RC4:!SEED:!ECDSA:!ADH:!IDEA' to
protect
#older Versions of OpenSSL
#use openssl ciphers -v "..." for openssl < 1.0.1:

0x00,0x9F - DHE-RSA-AES256-GCM-SHA384 TLSv1.2 Kx=DH Au=RSA


Enc=AESGCM(256) Mac=AEAD
0x00,0x9E - DHE-RSA-AES128-GCM-SHA256 TLSv1.2 Kx=DH Au=RSA
Enc=AESGCM(128) Mac=AEAD
0xC0,0x30 - ECDHE-RSA-AES256-GCM-SHA384 TLSv1.2 Kx=ECDH Au=RSA
Enc=AESGCM(256) Mac=AEAD
0xC0,0x2F - ECDHE-RSA-AES128-GCM-SHA256 TLSv1.2 Kx=ECDH Au=RSA
Enc=AESGCM(128) Mac=AEAD
0x00,0x6B - DHE-RSA-AES256-SHA256 TLSv1.2 Kx=DH Au=RSA Enc=AES(256)
Mac=SHA256
0x00,0x67 - DHE-RSA-AES128-SHA256 TLSv1.2 Kx=DH Au=RSA Enc=AES(128)
Mac=SHA256
0xC0,0x28 - ECDHE-RSA-AES256-SHA384 TLSv1.2 Kx=ECDH Au=RSA Enc=AES(256)
Mac=SHA384
0xC0,0x27 - ECDHE-RSA-AES128-SHA256 TLSv1.2 Kx=ECDH Au=RSA Enc=AES(128)
Mac=SHA256

PRECAUCIÓN: Usted no debe utilizar versiones anteriores de OpenSSL si


utiliza esta cadena de cifrado! ¡Recomendamos encarecidamente verificar si
funciona!

También podría gustarte