https加密原理

加密流程

加密流程

1.客户端发起请求,将自己支持的加密算法套件(Cipher Suite)发给服务端。

2.服务端收到请求后,将收到的cipher与自己支持的对比,从中选出一种加密算法和HASH算法,以证书的形式返回给客户端 证书中还包含了 公钥 颁证机构 网址 失效日期等等,如果不支持则连接断开。

3.客户端收到服务端响应后会做以下几件事
  3.1 验证证书的合法性
  颁发证书的机构是否合法与是否过期,证书中包含的网站地址是否与正在访问的地址一致等
  证书验证通过后,在浏览器的地址栏会加上一把小锁(每家浏览器验证通过后的提示不一样 不做讨论)
  3.2 生成随机密码
  如果证书验证通过,或者用户接受了不授信的证书,此时浏览器会生成一串随机数,然后用证书中的公钥加密。       
  3.3 HASH握手信息
  用最开始约定好的HASH方式,把握手消息取HASH值, 然后用 随机数对称加密 “握手消息+握手消息HASH值(签名)” 并一起发送给服务端
  在这里之所以要取握手消息的HASH值,主要是把握手消息做一个签名,用于验证握手消息在传输过程中没有被篡改过。

4.服务端拿到客户端传来的密文,用自己的私钥来解密握手消息取出随机数密码,再用随机数密码 解密 握手消息与HASH值,并与传过来的HASH值做对比确认是否一致。
然后用随机密码加密一段握手消息(握手消息+握手消息的HASH值 )给客户端

5.客户端用随机数解密并计算握手消息的HASH,如果与服务端发来的HASH一致,此时握手过程结束,之后所有的通信数据将由之前浏览器生成的随机密码并利用对称加密算法进行加密
因为这串密钥只有客户端和服务端知道,所以即使中间请求被拦截也是没法解密数据的,以此保证了通信的安全

非对称加密算法:RSA,DSA/DSS 在客户端与服务端相互验证的过程中用的是对称加密
对称加密算法:AES,RC4,3DES 客户端与服务端相互验证通过后,以随机数作为密钥时,就是对称加密
HASH算法:MD5,SHA1,SHA256 在确认握手消息没有被篡改时

转自:https://www.cnblogs.com/zery/p/5164795.html

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • http(超文本传输协议) 一种属于应用层的协议 缺点: 通信使用明文(不加密),内容可能会被窃听 不验证通信方的...
    rockyMJ阅读 4,021评论 0 0
  • 博文出处:HTTPS加密原理,欢迎大家关注我的博客,谢谢! Header HTTP、HTTPS在我们日常开发中是经...
    俞其荣阅读 9,675评论 11 224
  • http/https最大的差异在于https使用了加密传输数据。 https 基于tcl/ssl加密,大致上是先使...
    trry_ing阅读 3,207评论 0 2
  • 引言 HTTPS的使用越来越广泛,淘宝、京东、当当等大型网站几乎全站采用HTTPS。本文参考了若干文章并结合自己理...
    阿堃堃堃堃阅读 5,040评论 0 5
  • 对称加密 特点:加密、解密采用同一密钥。优点:加密速度快缺点:因用同一密钥加解密,在密文传输过程中需要把密钥也进行...
    剑老师阅读 4,712评论 0 2

友情链接更多精彩内容