加密套件

 

加密套件是指在ssl通信中,服务器和客户端所使用的加密算法的组合。在ssl握手初期,客户端将自身支持的加密套件列表发送给服务器,服务器根据自己的配置从中尽可能的选出一个套件,作为之后所要使用的加密方式。

 

通常加密套件分3部分,第一部分是密钥交换,这部分会使用非对称加密算法来生成会话密钥,因为非对称算法不会将重要数据在通信中传输;第二部分是对称加密算法,主要是对传输的数据进行加密传输用的,如果性能允许,这里可以不需要,因为非对称加密算法太耗性能,再者有些非对称加密算法有内容长度的限制,所以真正要传输的数据会使用对称加密来进行加密;第三部分是会话校验算法,为了防止握手本身被窜改(这里极容易和证书签名算法混淆)。

 

举例:

我们的主页www.trustasia.com

TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256                          (0xc02f)

TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384                          (0xc030)

TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384                           (0xc028)

TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA                                  (0xc014)

TLS_RSA_WITH_AES_256_GCM_SHA384                                           (0x9d)

TLS_RSA_WITH_AES_256_CBC_SHA256                                            (0x3d)

TLS_RSA_WITH_AES_256_CBC_SHA                                                   (0x35)

TLS_RSA_WITH_CAMELLIA_256_CBC_SHA                                       (0x84)

TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256                           (0xc027)

TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA                                  (0xc013)

TLS_RSA_WITH_AES_128_GCM_SHA256                                           (0x9c)

TLS_RSA_WITH_AES_128_CBC_SHA256                                            (0x3c)

TLS_RSA_WITH_AES_128_CBC_SHA                                                   (0x2f)

TLS_RSA_WITH_CAMELLIA_128_CBC_SHA                                       (0x41)

TLS_RSA_WITH_3DES_EDE_CBC_SHA                                               (0xa)

TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA                               (0xc012)

 

如果浏览器支持ECDHE,RSA,AES,3DES,GCM,SHA256,SHA,SHA384,那么根据我们服务器配置优先级就会选0xc02f这个套件。也就是tls协议,ecdhe-rsa来进行密钥交换,aes128兼gcm的加密方式,用sha256校验会话。

 

加密套件的标识:

每个加密套件是有唯一数字作为标识的,如0xc02f,用openssl来表示的话就是TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256。

 

推荐的加密套件:

目前看来TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256是最佳选择,在chrome浏览器里会提示新型的加密方式

 

优先顺序的逻辑

l  ECDHE+AESGCM 加密是首选的。它们是 TLS 1.2 加密算法,现在还没有广泛支持。当前还没有对它们的已知攻击。

l  PFS (完美前向保密)加密套件好一些,首选 ECDHE,然后是 DHE。

l  AES 128 要好于 AES 256。有一个关于 AES256 带来的安全提升程度是否值回成本的讨论,结果是显而易见的。目前,AES128 要更值一些,因为它提供了不错的安全水准,确实很快,而且看起来对时序攻击更有抵抗力。

l  在向后兼容的加密套件里面,AES 要优于 3DES。在 TLS 1.1及其以上,减轻了针对 AES 的野兽攻击(BEAST)的威胁,而在 TLS 1.0上则难以实现该攻击。在非向后兼容的加密套件里面,不支持 3DES。

l  RC4 是流加密方式,曾今唯一的流加密方式。

 

弃用的算法

l  aNULL 包含了非验证的 Diffie-Hellman 密钥交换,这会受到中间人(MITM)攻击

l  eNULL 包含了无加密的算法(明文)

l  EXPORT 是老旧的弱加密算法,是被美国法律标示为可出口的

l  RC4 包含的加密算法使用了已弃用的 ARCFOUR 算法

l  DES 包含的加密算法使用了弃用的数据加密标准(DES)

l  SSLv2 包含了定义在旧版本 SSL 标准中的所有算法,现已弃用

l  MD5 包含了使用已弃用的 MD5 作为哈希算法的所有算法