https如何实现安全传输,ECDH,RSA,SHA等

这个学期开了应用密码学这门课,了解学习了网络传输,认证的一些需要的加密解密,数字签名的算法,https正好都有这些算法,于是就研究了一下它,对学习密码学有了一定的作用。

https

     使用http,因为传输的时候数据是透明的,容易出现被劫持等问题,则https应运而生,实际上是在http的基础上加上安全套接层,SSL层,更新到改名为TLS握手协议,这个协议是TCP三次握手后进行的,也就说安全层是介于传输层和应用层。

TLS握手协议

     TLS握手协议主要可以分为两个部分,一是对服务器的认证,二是认证后加密传输的数据。使用到的加密算法,服务器的认证用的是非对称加密,传输的数据使用是对称加密。在对服务器的认证实际上是在为了产生传输的数据的加密算法的密钥做准备。

TLS各种info字段的含义

(1)ClientHello

     还没开始进行加密传输,这段信息会带一个client生成的一个随机数,后面生成对称加密算法密钥会用到,还会带本client支持 的加密算法的信息,若有sessionid则带过去,若没则为0;

(2)serverHello

     收到clienthello的信息后,知道client支持的算法,选择合适的算法,返回选择加密数据的对称加密的算法,还带一个随机数。

    若client没sessionid,则分配一个sessionid,若有则复用该session。

(3)Certificate

      传输给client  服务器的CA证书

 ( 4)Server key Exchange

    为了更安全, 一般现在不使用RSA加密输出第三个随机数,而是采用DH算法交换密钥产生第三个随机数,先产生一对DH算法公私钥,把公钥用服务器的RSA私钥签名和公钥发送给Client

(5)Server Hello Done

    已确认准备好进行下一阶段

 ( 6 ) Client Key Exchange

    收到服务器的DH公钥,先用证书的公钥解密签名看是否被删改,然后根据服务器的DH公钥产生客户器的DH公私钥,再把公钥发给服务器,根据服务器的DH私钥加自己的公钥生成第三个随机数,也就是premaster secret,然后根据三个随机数生成对称加密的密钥

 ( 7 ) Change Cipher Spec

通知对方,后续的报文将会被加密

 ( 8 ) Encrypted Handshake Message

   Client Finished 消息,测试第一个加密的信息,成功则TLS握手完成

 ( 9 ) application data 

      已被加密的数据

  (10)Encryted Alert

    告诉对方已传输完毕

   

ECDH算法

在密钥交换协商的阶段使用到这个算法,这个实际上EC(椭圆曲线算法)实现的DH算法,简单来说,A产生公私钥,把公钥传输给B,B根据其生成公私钥,把B公钥给A。然后A,B根据对方的公钥和自己的私钥生成一个key,这两个key是相同的,TLS握手使用这个算法进行密钥交换协商避免了premaster secret这个随机数在网络中传输,更加安全。

session复用

因为每次请求都进行TLS握手过程,很耗时间,于是出现session复用的机制,发送clienthello时,里面会带去sessionid和sessionticket,若没有的话则标为0, 先说他们怎么实现,sessionid,跟cookies的sessionid有点像,当服务器的存sessionkey的map中有,则使用该key进行加密传输,不用进行密钥交换协商。sessionticket,若无sessionkey,则在握手完成后,支持sessionticket的服务器会返回一个new sessionticket存到客户中,该sessionticket是用服务器的RSA公钥加密,就是说只有服务器才能加密,但是这个比较少用,现在还是sessionid的机制用得比较多。简单来说,sessionid是把sessionkey存到服务器中,而sessionticket是存到客户上面,大大减少服务器的压力。

猜你喜欢

转载自blog.csdn.net/weixin_40840879/article/details/83691643