openssl ciphers命令¶
支持的 CipherSuite 列表:
$ openssl ciphers -V | column -t
看一下 EECDH+AES128 具体包含哪些 Cipher Suites:
$ openssl ciphers -V 'EECDH+AES128' | column -t
0xC0,0x2B - ECDHE-ECDSA-AES128-GCM-SHA256 TLSv1.2 Kx=ECDH Au=ECDSA Enc=AESGCM(128) Mac=AEAD
0xC0,0x2F - ECDHE-RSA-AES128-GCM-SHA256 TLSv1.2 Kx=ECDH Au=RSA Enc=AESGCM(128) Mac=AEAD
0xC0,0xAE - ECDHE-ECDSA-AES128-CCM8 TLSv1.2 Kx=ECDH Au=ECDSA Enc=AESCCM8(128) Mac=AEAD
0xC0,0xAC - ECDHE-ECDSA-AES128-CCM TLSv1.2 Kx=ECDH Au=ECDSA Enc=AESCCM(128) Mac=AEAD
0xC0,0x23 - ECDHE-ECDSA-AES128-SHA256 TLSv1.2 Kx=ECDH Au=ECDSA Enc=AES(128) Mac=SHA256
0xC0,0x27 - ECDHE-RSA-AES128-SHA256 TLSv1.2 Kx=ECDH Au=RSA Enc=AES(128) Mac=SHA256
0xC0,0x09 - ECDHE-ECDSA-AES128-SHA TLSv1 Kx=ECDH Au=ECDSA Enc=AES(128) Mac=SHA1
0xC0,0x13 - ECDHE-RSA-AES128-SHA TLSv1 Kx=ECDH Au=RSA Enc=AES(128) Mac=SHA1
说明:
第 1 个字段是 这个 CipherSuite 的 value,
第 2 个字段是 CipherSuite 的名字 ,
第 3 个字段是本 Cipher Suite 是用于哪个 SSL/TLS 版本的协议,
第 4 个字段 Kx 是 key exchange 算法
第 5 个字段 Au 是 authentication 算法
第 6 个字段 Enc 是 encryptation 算法
第 7 个字段 Mac 是 MAC 算法,用于创建消息摘要
看一下 EECDH+CHACHA20 具体包含哪些 Cipher Suites:
$ openssl ciphers -V 'EECDH+CHACHA20' | column -t
0xCC,0xA9 - ECDHE-ECDSA-CHACHA20-POLY1305 TLSv1.2 Kx=ECDH Au=ECDSA Enc=CHACHA20/POLY1305(256) Mac=AEAD
0xCC,0xA8 - ECDHE-RSA-CHACHA20-POLY1305 TLSv1.2 Kx=ECDH Au=RSA Enc=CHACHA20/POLY1305(256) Mac=AEAD
Cipher Suites:
ECDHE+CHACHA20:ECDHE+CHACHA20-draft:ECDSA+AES128:ECDHE+AES128:RSA+AES128:RSA+3DES
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS;
ssl_prefer_server_ciphers on;
加密套件解读:
ECDHE-RSA-AES128-GCM-SHA256 为例
ECDHE:秘钥交换算法
RSA:签名算法
AES128:对称加密算法
GCM-SHA256:签名算法
默认项:
秘钥交换算法:RSA
签名算法:RSA
模式:CBC
AES256-SHA256 也就是 RSA-RSA-AES256-CBC-SHA256
备注
这 5 类算法组合在一起,称为一个 CipherSuite: 1. authentication (认证算法) 2. encryption (加密算法 ) 3. message authentication code (消息认证码算法 简称 MAC) 4. key exchange (密钥交换算法) 5. key derivation function (密钥衍生算法)
要禁用¶
EXP , EXPORT:
一定要禁用。
EXPORT 表示上世纪美国出口限制弱化过的算法,早已经被攻破,TLS 的 FREAK 攻击就是利用了这类坑爹的算法。
eNULL, NULL:
一定要禁用。
NULL 表示不加密!默认是禁用的。
aNULL:
一定要禁用。
表示不做认证 (authentication) ,也就是说可以随意做中间人攻击。
ADH:
一定要禁用。
表示不做认证的 DH 密钥协商。
参考¶
Linux man page: https://linux.die.net/man/1/ciphers
SSL/TLS CipherSuite 介绍: https://blog.helong.info/blog/2015/01/23/ssl_tls_ciphersuite_intro/
https://blog.helong.info/blog/2015/09/06/tls-protocol-analysis-and-crypto-protocol-design/