https加密过程

create on in computer_base with 0 comment and 83 view

https,即http + ssl,它的加密过程是怎么样的呢?

  1. 客户端发起https请求,告诉服务端支持哪些加密算法。
  2. 服务端接收请求,然后发送CA数据证书给客户端。

数据证书是什么?
CA数据证书由两部分组成:
1). 原始信息
非对称加密算法的公钥(通常为RSA算法生成的公钥),服务器信息,其它信息(使用的对称加密算法,hash算法)。
2). 数字签名
使用hash算法计算原始信息,生成一段摘要,然后再使用CA私钥加密这段摘要,得到的即是数字签名。

  1. 客户端接收响应,做如下操作:
    1). 验证收到的CA证书合法性
    - 证书的颁发机构是否合法。
    - 证书中包含的网站地址是否与正在访问的地址一致。
    - 使用hash算法计算证书中的原始信息得到一个摘要,使用CA公钥(由来见文末注释)解密数字签名得到一个摘要,验证这两个摘要是否一致。(防止原始信息被攻击者更改)
    2). 如果证书受信任,加密数据,发送给服务端 (后续操作主要是:客户端要与服务器进行一次测试)
    - 生成一串随机数密码,并用证书中的公钥加密 —— 得到已加密的随机数。
    - 使用约定的hash算法计算握手消息 —— 得到一个hash值。
    - 使用随机数加密(对称加密)握手消息 —— 得到已对称加密的消息。
    - 向服务端发送前三项的信息。

  2. 服务端接收信息

    • 使用私钥解密,获得随机数。
    • 使用随机数解密(对称解密),获得握手消息。
    • 使用hash计算握手消息,验证是否与客户端发来的hash值一致。
    • 使用随机数加密一段握手消息,使用hash计算握手信息,将他们发送给客户端。
  3. 客户端接收响应

    • 解密并计算握手消息的hash,用此hash与服务端发来的hash进行对比,若一致,之后所有通信数据将由之前浏览器生成的随机密码并利用对称加密算法进行加密。

注释:

  1. 客户端CA公钥的由来:

证书有两种:
- 根证书
由最高证书颁发机构管理,每个操作系统及浏览器在安装时,这些证书将保持在系统内,并授于信任,不能被删除。
- 非根证书
由二级证书颁发机构颁发的证书,服务器申请的证书即为该类型的证书。

客户端根据证书来决定去哪个二级颁发机构获取证书对应的公钥1,但该公钥并不是能解密数字签名(经证书的私钥加密得到)的公钥2,它是使用了根证书的私钥对公钥2进行加密而得到的,所以,要得到公钥2,需要使用根证书的公钥去解密公钥1。

😁😂😃😄😅😆😇😈😉😐😑😒😓😔😕😖😗😘😙😠😡😢😣😤😥😦😧😨😩😰😱😲😳😴😵😶😷😸😹🙀🙁🙂🙃🙄🙅🙆🙇🙈
🙂