密码套件:密码,算法和协商安全设置(二)
作者:互联网
上期内容我们分析了什么是密码套件以及它的背景,从算法和密钥、再到数学原理等方面进行详细地探讨,小编我都感觉非常精彩。那么这一期必须精彩继续,让我们接着深入地研究TLS 1.2密码套件的四个不同组件。但是首先看看我们在SSL / TLS中看到的两种不同类型的加密。
两种加密
SSL / TLS的最大困惑之一就是所使用的加密类型,与SSL证书关联的2048位密钥用于帮助协商HTTPS连接,但是它的作用实际上比大多数人认为的要小得多。 我们似乎只专注于私钥的位数,如2048位的私钥,因为它听起来似乎很安全。我们甚至会大胆地认为,“现代计算机要花上四千万万年才能破解此密钥,到那时我们都已经死了!” 但是,可以说,你在连接期间使用的批量加密和对称密钥同等重要,甚至比公/私密钥对还重要。 对称加密涉及两个相同的密钥,顾名思义,它们是对称的。两个密钥都可以执行以下两个功能:加密和解密。这是你实际上与访问的网站进行通信所使用的加密类型。 相反,如果我们使用非对称加密,加解密使用的密钥并不对称,一个密钥用来加密,另一个密钥用来解密。非对称加密通常采用带TLS 1.2的RSA形式,它负责验证数字签名,并且在使用RSA密钥交换时,它从加密计算出对称会话密钥的主密码,但是RSA并不是唯一的密钥交换机制。 对称加密密钥(通常为AES或高级加密标准)的密钥大小范围为128位到256位。对于对称加密,这是完全有效和安全的,在对称加密中,计算难度必须与可用性或者说与其加密性能保持一致。 那些2048位非对称RSA密钥的计算成本很高,并且增加了握手延迟。在某些实际应用中,它们还容易遭受填充攻击。 长话短说,这里既讲了非对称加密也讲了对称加密,但是对称加密在密码套件的上下文中关联性更强。 现在,让我们看一下密码套件的四个不同组件。密钥交换
TLS 1.2密码套件中的第一个位置指定用于将要使用的密钥交换机制。 密钥交换是指用于传输对称会话密钥的实际过程,但这并不是密钥生成过程中使用的唯一算法。握手的密钥交换部分确定用于密钥生成的参数,但是散列算法在通过提供伪随机函数(PRF)(通常作为加密安全的伪随机数生成器“CSPRNG”)提供密钥的过程中也发挥着作用。 我们要明白的重要一点是,所选的密钥交换机制并不完全负责生成实际密钥。 RSA RSA以创建它的绅士的名字命名:Rivest,Shamir和Adleman。这是最常见的非对称密码算法。它使用质数的幂运算,具有广泛的应用范围。使用SSL / TLS,通常会在密钥交换的上下文中看到使用RSA。同样,这是所有这些2048位(以及3072和4096位)密钥的来源。 每次握手,无论是否选择RSA密钥协商机制都会从ClientHello和ServerHello交换随机数。 一旦客户端和服务端决定使用包含RSA密钥交换的密码套件,并且在客户端对服务端进行身份验证之后,RSA的运行方式就非常简单。- 客户端使用服务端发送的公钥来加密预主密钥并进行传输。
- 服务端使用其私钥解密预主密钥。
- 双方都使用PRF,客户端随机数,服务端随机和主机密码来导出主密钥。
- 双方都使用主密钥和更多伪随机函数来计算会话密钥。
- 在交换了随机数(g&p)之后,客户端和服务端都选择了自己的主控机密(分别为a&b),并计算出一个类似的方程式– g amod p = A,&g b mod p =B。
- 每个到达的值(A&B)被发送给对方,并且双方重复相同的操作-B a modp和A b mod p。
标签:TLS,加密,套件,交换,RSA,密码,算法,密钥,Hellman 来源: https://www.cnblogs.com/SSL-https/p/15923743.html