• HTTPS 学习笔记 (1)


    HTTPS

    两个阶段

    一 握手阶段 [四次通信]

    1. Client -> Server
    1. 随机数, 稍后用于生成 "对话密钥"
    2. 支持的"SSL/TLS协议"的版本, 如"TLS 1.2"
    3. 支持的加密方法, 如: "RSA公钥加密"
    4. 支持的压缩方法
    
    1. Server -> Client
    1. 随机数, 稍后用于生成 "对话密钥"
    2. 确认通信加密的协议版本, 如不一致关闭通信
    3. 确认要使用的加密方法
    4. 服务端证书
    
    1. Client -> Server
    1. 加密的随机数, 防止窃听
    2. 编码改变通知, 表示随后的信息都将用双方商定的加密方法和密钥发送
    3. 客户端握手结束通知,表示客户端的握手阶段已经结束。这一项同时
    也是前面发送的所有内容的hash值,用来供服务器校验。
    
    1. Server -> Client
    1. 编码改变通知,表示随后的信息都将用双方商定的加密方法和密钥发送。
    2. 服务器握手结束通知,表示服务器的握手阶段已经结束。这一项同时也
    是前面发送的所有内容的hash值,用来供客户端校验。
    

    握手阶段需要注意一下三点

    1. 生成对话密钥一共需要三个随机数。
    2. 握手之后的对话使用"对话密钥"加密(对称加密),服务器的公钥和私
    钥只用于加密和解密"对话密钥"(非对称加密),无其他作用。
    3. 服务器公钥放在服务器的数字证书之中。
    

    为什么要用 3 个随机数

    "不管是客户端还是服务器,都需要随机数,这样生成的密钥才不会每次都一样。
    由于SSL协议中证书是静态的,因此十分有必要引入一种随机因素来保证协商出
    来的密钥的随机性。
    
    对于RSA密钥交换算法来说,pre-master-key本身就是一个随机数,再加上hello
    消息中的随机,三个随机数通过一个密钥导出器最终导出一个对称密钥。
    
    pre master的存在在于SSL协议不信任每个主机都能产生完全随机的随机数,
    如果随机数不随机,那么pre master secret就有可能被猜出来,那么仅适用
    pre master secret作为密钥就不合适了,因此必须引入新的随机因素,那么
    客户端和服务器加上pre master secret三个随机数一同生成的密钥就不容易
    被猜出了,一个伪随机可能完全不随机,可是是三个伪随机就十分接近随机了
    ,每增加一个自由度,随机性增加的可不是一。"
    

    二 通讯阶段

    正常的http通讯过程, 只不过原文是"会话密钥"加密的

    Q&A

    证书

    证书标准: 证书的格式是由X.509标准定义

    种类:

    根据用途不同大致有以下几种:
    1. SSL证书,用于加密HTTP协议,也就是HTTPS。
    2. 代码签名证书,用于签名二进制文件,比如Windows内核驱动,Firefox插件,Java代码签名等等。
    3. 客户端证书,用于加密邮件。
    4. 双因素证书,网银专业版使用的USB Key里面用的就是这种类型的证书。
    

    SSL证书负责传输公钥,是一种PKI(Public Key Infrastructure,公钥基础结构)证书。

    私钥与公钥的区别

    私钥与公钥可以是一对一或一对多关系
    即私钥唯一对而公钥可以多个
    
    私钥与公钥都以及加解密
    所有公钥加密的数据只有私钥能解
    私钥加密的数据所有公钥都可以解
    其他情况都不能解
    

    HTTPS中的对称加密/非对称加密/HASH算法用途

    算法 种类 用途
    非对称加密算法 RSA, DSA/DSS 握手阶段
    对称加密算法 AES, RC4, 3DES 对称加密算法
    HASH算法 MD5, SHA1, SHA256 验证数据完整性

    证书不被浏览器信任的原因

    1. 证书过期
    2. 证书域名与访问域名不一致
    3. 根证书颁发机构不被系统信任
    

    SSL/TLS

    SSL(Secure Sockets Layer)
    安全套接层
    
    TSL(Transport Security Layer)
    传输安全协议层
    
    区别:
    由网景发明SSL在广泛应用后99年被IETF标准化成TSL协议,因此合称SSL/TSL表示不同的发展阶段
    
    

    网络通信协议层的七个部分

    物理层
    网络链路层
    网络层
    传输层
    会话层
    表示层
    应用层
    
    数据在各层之间的单位都是不一样的,在物理层数据的单位称为比特(bit);在数据链路层,数据的单位称为帧(frame);在网络层,数据的单位称为数据包(packet);传输层,数据的单位称为数据段(segment)
    
    

    证书申请过程

  • 相关阅读:
    14.6 将运算分组为事务
    Android 取得 ListView中每个Item项目的值
    【编程题目】n 个骰子的点数
    【编程题目】扑克牌的顺子
    【编程题目】颠倒栈☆
    【编程题目】输出 1 到最大的 N 位数
    【编程题目】寻找丑数
    【编程题目】在字符串中删除特定的字符
    【编程题目】复杂链表的复制☆
    【编程题目】找出数组中两个只出现一次的数字 ★★(自己没做出来)
  • 原文地址:https://www.cnblogs.com/dongyanglv/p/6650574.html
Copyright © 2020-2023  润新知