HTTPS -握手、证书和密钥协商

第一,学习思路

第二,HTTPS议定书层面

SSL和TLS为数据安全通信提供支持。

三,HTTPS的设计思想

1.服务器生成公钥对A,并将公钥和其他信息info发送给CA申请证书;

2.CA组织有一组自己的公钥对,CA组织从信息中生成数字摘要,并用私钥加密摘要。CA组织在操作系统中有一组证书,其中存储了公钥。

3.CA向服务器发送信息和加密的数字摘要生成证书;

4、服务器

访问https网站时,浏览器首先检查证书是否已被吊销。如果证书已被吊销,将显示一条警告消息:“该组织的证书已被吊销。安全证书问题可能表示有人试图欺骗您或拦截您发送到服务器的数据。建议关闭此网页,不要继续浏览该网站。”

5.2.信任链

CA的组织结构是一个树形结构。一个根CA下有多个midca,并且midca可以包含多个midca。

根CA和mid CA都可以给用户颁发证书,分别是根证书和中间证书。最终用户用来验证公钥的证书称为最终用户证书。

如果最终用户证书是由mid CA颁发的,则需要在握手阶段将中间证书发送给客户端。

证书链验证过程:

六、密钥协商过程

在TLS握手阶段,确定双方使用的密码套件。

(密钥协商、证书验证和数据加密是三个独立的过程)

例如:

TLS _ DHE _ RSA _带_ AES_256_CBC_SHA

DHE_RSA:表示握手过程中使用的非对称加密算法(DHE用于密钥交换,RSA用于证书)。如果只有一个带有,则意味着使用相同的算法来交换信息和证书。

(可选的密钥交换算法包括RSA、DH、ECDH、ECDHE。可选的主要证书算法包括:RSA,DSA,ECDSA。两者可以独立选择并且不冲突)

AES_256_CBC_SHA:加密信道的对称加密算法和哈希算法。

七、密钥交换算法

在握手过程中,双方通过密钥交换算法确定后续通信的密钥。

常见的密钥交换算法:RSA和DH密钥交换算法。

7.1,RSA密钥交换过程:

a-& gt;B

b:把公钥放在证书里。

a:用随机数算法生成一个密钥,用公钥加密发送给b。

RSA面临的问题:一旦私钥泄露(私钥参与协商过程),那么密钥就可以解密它之前监听过的所有密文(前向不安全),安全性取决于私钥是否保存完好。

7.2.更安全的DH类密钥交换算法。

DH密钥算法有:DH,DHE,ECDH,ECDHE。

DH(静态DH算法,密钥交换总是选择同一个私钥,所以每次私钥都是一样的)。

DHE(临时DH算法,每个连接生成一个临时DH密钥,所以同一个密钥绝不会被使用两次。前向保密)

7.3.DHE密钥交换算法的简单说明(基于离散对数问题):

a-& gt;B

a:生成一个随机数x(作为自己的私钥),其中a = g x mod p(g的x次方模p),其中p为大素数,g为生成数,将a发送给b。

B:生成一个随机数Y(作为你的私钥),B = g y mod p,把B发给A..

答:计算键1 = b x mod p。

b:计算key 2 = a y mod p。

根据数理逻辑,key1=key2,所以密钥交换成功。

DHE的安全性体现在只传输A、B、P和G,中间没有私钥X和Y。在这四个数已知的情况下,很难区分X和Y(取决于离散性),这就保证了安全性。

DH密钥计算示例:

假设g =10,p = 7,x = 3,a = 6,Y = 11,B = 5。

key1 = ((g^x)mod p)^y模p =((10^3)mod 7)^11模7 =6

key2 = ((g^y)mod p)^x模p =((10^11)mod 7)^3模7 =6

7.4.基于椭圆离散对数问题的密钥交换算法

ECDHE的运算用点乘运算代替了DHE中的模幂运算,速度更快,更难反转。

a-& gt;B

答:生成一个随机数ra,计算Pa(x,y) = Ra * Q(x,y),Q(x,y)是全世界公认的一种椭圆曲线算法的基点。向服务器发送Pa(x,y)。

b:生成随机值Rb,计算Pb(x,y)= Rb * Q(x,y)。将Pb(x,y)发送到客户端。

答:计算Sa(x,y) = Ra * Pb(x,y)。

b:计算Sb(x,y) = Rb * Pa(x,y)。

算法保证Sa =Sb = S,提取S的X向量作为密钥(预主密钥)。