密码套件

科技工作者之家 2020-11-17

密码套件Cipher suite)是传输层安全(TLS)/安全套接字层(SSL)网络协议中的一个概念。在TLS 1.3之前,密码套件的名称是以协商安全设置时使用的身份验证、加密、消息认证码(MAC)和密钥交换算法组成。TLS 1.3中的密码套件格式已经修改。在目前的TLS 1.3草案文档中,密码套件仅用于协商加密和HMAC算法。

密码套件概念的结构和使用在定义协议的文档中被定义。TLS密码套件注册表(TLS Cipher Suite Registry)中提供了密码套件命名的参考表。

历史密码的使用自创建以来一直是安全套接字层(SSL)传输协议的一部分。对于大多数用途,SSL已成功通过TLS。但是,原始的SSL草案并未使用名称密码套件。相反,客户端和服务器从一小组密码中选择以确保其连接的能力称为密码选择。直到SSL v3(SSL的最后一个版本)才使用名称密码套件。自TLS以来,每个版本都在其标准化中使用了密码套件。密码套件的概念和目的自该术语首次被提出以来并没有改变。它已经并且仍然被用作描述机器支持的算法的结构,以便两台机器决定使用哪些算法来保护它们的连接。改变的是密码套件中支持的算法版本。每个版本的TLS都增加了对更强版本算法的支持,并移除了对已识别为不安全算法版本的支持。

拟议的TLS 1.3草案标志着密码套件在机器间的协调方式发生了变化。为两台通信机选择的密码套件由握手过程决定。在TLS 1.3草案中对握手过程进行了修改,以减少需要发送的消息数量。与历史版本和当前版本的TLS相比,这样可以减少处理,减少数据包流量并提高效率。1

使用在创建一个TLS连接后,一次也称TLS握手协议的握手发生。在这个握手,一条ClientHello和一条ServerHello消息被发出。首先,客户端按照偏好的顺序发送它支持的密码套件的列表。然后服务器回复它从客户端的列表中选择的密码套件。要测试服务器支持的TLS密码套件,可以使用SSL/TLS扫描器软件。1

详细描述在TLS 1.0 - 1.2中每个密码套件的名称(例如TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256)定义一个密钥交换算法、一个批量加密算法、一个消息认证码(MAC)算法,以及一个伪随机函数(PRF)。

密钥交换算法,例如ECDHE_RSA,用于决定客户端与服务器之间在握手时如何身份验证。

批量加密算法,例如AES_128_GCM,用于加密消息流。它还包括密钥大小及显式和隐式初始化向量(密码学随机数)的长度。

消息认证码****算法,例如SHA256,用于创建消息摘要,消息流每个数据块的加密散列。

伪随机函数,例如TLS 1.2的伪随机函数使用MAC算法的散列函数来创建一个主密钥——连接双方共享的一个48字节的私钥。主密钥在创建会话密钥(例如创建MAC)时作为一个熵来源。

算法示例

密钥交换/协商:RSA、Diffie–Hellman、ECDH、SRP、PSK

身份验证:RSA、DSA、ECDSA

块密码:RC4、3DES、AES、IDEA、DES、Camellia。在旧版本的SSL中,RC2也被使用过。

消息身份验证:对于TLS来说,密钥散列消息认证码使用MD5或一种SHA散列算法。对于SSL,则SHA、MD5、MD4及MD2都可使用。2

在TLS 1.3(草案)中在TLS 1.3中,密码套件表示一个AEAD加密算法和一个用在HKDF中的散列算法。例如,TLS_AES_128_GCM_SHA256表示使用AES_128_GCM加密消息,SHA256是HKDF中的底层散列算法。非AEAD加密算法(诸如AES_128_CBC)不允许使用。

因为TLS 1.3密码套件的结构不同于以前的版本,为TLS 1.3定义的密码套件不能在TLS 1.2中使用,反之亦然。

密钥交换算法使用TLS扩展协商。2

编程参考在编程层面,密码套件被引用为:

CipherSuite cipher_suites:客户端支持的加密选项的列表;

CipherSuite cipher_suite:服务器从客户端的cipher_suites以及相关ServerHello消息中选定的加密包。2

漏洞密码套件与其包含的算法一样安全。如果密码套件中的加密或认证算法的版本存在已知漏洞,那么密码套件和TLS连接就容易受到攻击。因此,针对TLS和密码套件的常见攻击称为Down Grade Attack。当现代客户端连接到使用旧版TLS或SSL的旧服务器时,会发生TLS降级。

当开始握手时,现代客户端将提供它支持的最高协议。如果连接失败,它将自动再次使用较低协议(如TLS 1.0或SSL 3.0)重试,直到与服务器握手成功。降级的目的是使新版本的TLS与旧版本兼容。但是,攻击者可能会利用此功能并使其成为客户端自动降级到支持密码套件的TLS或SSL版本,其中的算法以弱安全性和漏洞而闻名。这导致了诸如POODLE之类的攻击。

避免此安全漏洞的一种方法是禁用服务器或客户端能够降级到SSL3.0的能力。这个修复的缺点是它会使一些传统硬件无法被新硬件访问。如果传统硬件需要SSL 3.0支持,则有一个经过批准的TLS_FALLBACK_SCSV密码套件,用于验证是否因恶意意图而触发降级。2

本词条内容贡献者为:

宋春霖 - 副教授 - 江南大学

科技工作者之家

科技工作者之家APP是专注科技人才,知识分享与人才交流的服务平台。