HTTPS协议(包含DH和RSA)

本文详细介绍了HTTPS协议,包括其基于HTTP与SSL/TLS的安全增强,以及PKI体系、DH密钥交换和RSA加密等核心概念。在HTTPS的流程中,阐述了客户端与服务器如何通过加密通信建立安全连接。此外,还探讨了密钥交换和身份验证的过程。
摘要由CSDN通过智能技术生成

一、什么是HTTPS

        全称hyper text transmission protocol secursocketlayer,其实就是HTTP加上SSL,但是自从SSL3.0以后就更名TLS了,所以抓到的报文基本上都是TLS的报文,目前使用最广泛的是TLS1.2,最新的版本是TLS1.3。

二、PKI体系

        如A要给B发送消息

        1、A先将原始数据利用hash加密为信息摘要,再利用A非对称加密的私钥将其加密为数字签名;

        2、数字签名;原始信息;数字证书(含有A的公钥)三者打包并用对称加密的密钥将其加密为加密信息;

        3、对称加密的密钥使用B的公钥加密为密钥信封;

        4、将加密信息和密钥信封传给B;

        5、B使用B非对称加密的私钥将密钥信封解密获得对称加密的公钥;

        6、B利用对称加密的公钥解开加密信息获得数字签名;原始信息;数字证书

        7、B从数字证书中获得A非对称加密的公钥,将数字签名解密为信息摘要;

        8、B利用hash将原始信息也加密成信息摘要,观察两个是否相等以判定信息是否被修改。

三、DH密钥交换

        1、A,B双方要交换密钥

        2、A选择一个极大素数base交给B,B选择base的原根m;

        3、A任意选择一个数x,B任意选择一个数y;

        4、A计算(base的x次方)mod m交给B;

        5、B计算(base的y次方)mod m交给A;

        6、A计算 {[(base的y次方)mod m]的x次方}mod m=(base的yx次方)mod m;

        7、B计算 {[(base的x次方)mod m]的y次方}mod m=(base的xy次方)mod m;

        8、利用(base的yx次方)mod m作为以后使用的密钥。

四、RSA加密

        1、A选择两个极大素数p,q;

        2、A计算n=pq;

        3、A计算n的欧拉函数=(p的欧拉函数)*(q的欧拉函数)=(p-1)(q-1);

        4、A选择一个与(n的欧拉函数)互质并且小于(n的欧拉函数)的数e;

        5、A计算出e对于(n的欧拉函数)的模反元素d;

        6、自此(e,n)为公钥,(d,n)为私钥;

        7、设有明文M,则加密为 (M的e次方)mod n=C 其中C为加密后的密文;

        8、解密为:(C的d次方)mod n=M;

        (设有两个极大素数p,q
            n = p * q
            φn = φp*φq = (p-1)*(q-1)
            设e<φn 且e与φn互质
            设φn%(d*e-1)==0(即d为φn和e的模反元素)
           (d,n)为私钥,(e,n为公钥)

五、HTTPS的流程

        1、clien用c代替,sever用s代替;

        2、c与s建立三次握手;

        3、c发送client hello报文,里面含有加密套件,tls版本号,随机数a和压缩方法;

        4、s发送sever hello报文,里面含有加密套件,tls版本号,另一个随机数b和压缩方法和会话ID;

        5、s发送certificate证明自己是可信任的,发送key exchange交换pubkey,发送hello down;

        6、c验证s的certificate后,判断其是可信任的,发送key exchange交换pubkey,如果certificate中有密钥的话,则用密钥加密;

        7、c发送change cipher spec改变密钥规范;

        8、c发送encrypted handshake message表示一切就绪,可以进行加密通信;

        9、s发送change cipher spec改变密钥规范;

        10、s发送encrypted handshake message表示一切就绪,可以进行加密通信。

        PS:如果是dh密钥交换,个人认为client hello中的随机数a是base,sever hello中的随机数b是mod,两个pubkey则是c和s各自想一个其他数后与a,b进行模幂运算后的值,假设c随机想的数是e,s随机想的数是f,则最后的密钥则应该是(a的ef次方)mod b,不知道对不对,求指正。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值