美文网首页
快速理解https实现的原理

快速理解https实现的原理

作者: wadelin | 来源:发表于2017-03-12 13:35 被阅读0次

快速理解https实现的原理


一、为什么要用https?

http是在网络协议的应用层,用户通过http协议访问网站时,浏览器和服务器之间是明文传输,这就意味着用户填写的密码、帐号、交易记录等机密信息都是明文,随时可能被泄露、窃取、篡改,被黑客加以利用。


二、https是什么?

HTTPS(全称:Hyper Text Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。

SSL(Security Socket Layer)全称是加密套接字协议层,它位于HTTP协议层和TCP协议层之间,用于建立用户与服务器之间的加密通信,确保所传递信息的安全性,同时SSL安全机制是依靠数字证书来实现的。

SSL基于公用密钥和私人密钥,用户使用公用密钥来加密数据,但解密数据必须使用相应的私人密钥。使用SSL安全机制的通信过程如下:用户与服务器建立连接后,服务器会把数字证书与公用密钥发送给用户,用户端生成会话密钥,并用公共密钥对会话密钥进行加密,然后传递给服务器,服务器端用私人密钥进行解密,这样,用户端和服务器端就建立了一条安全通道,只有SSL允许的用户才能与服务器进行通信。


三、看实例

客服端Client向服务端server post一个hello字符串:

问题: 如何做到 client发送给server的 hello 字符串,即使被中间人拦截到了,也无法得知字符串的内容?

解决这个问题,就得了解https的交互过程:

https交互过程图

这样如果遇到中间人攻击(客户端的请求被中间人劫持),就会伪装成“假冒客服端”和服务器通信,也可以伪装成“假冒服务器端”和客服端通信,导致传输过程中内容泄密,中间人劫持的过程图(盗的图):

中间人攻击过程图

为了解决此问题,引入了数字证书的概念。


四、数字证书

服务器首先生成公私钥,将公钥提供给相关机构(CA),CA将公钥放入数字证书并将数字证书颁布给服务器,此时服务器就不是简单的把公钥给客户端,而是给客户端一个数字证书,数字证书中加入了一些数字签名的机制,保证了数字证书一定是服务器给客户端的。

中间人发送的伪造证书,不能够获得CA的认证,此时,客户端和服务器就知道通信被劫持了。加入了CA数字签名认证的SSL会话过程如下所示:

CA认证保存数据安全性

五、数字证书的作用

1、身份授权:确保浏览器访问的网站是经过CA验证的可信任的网站。

2、分发公钥:每个数字证书都包含了注册者生成的公钥(验证确保是合法的,非伪造的公钥),在SSL握手时会通过certificate消息传输给客户端。

3、验证证书合法性:客户端接收到数字证书后,会对证书合法性进行验证,只有验证通过后的证书,才能够进行后续通信过程。


六、数字证书的效验

申请者拿到CA的证书并部署在网站服务器端,那浏览器发起握手并接收到证书后,如何确认这个证书就是CA签发的呢?怎样避免第三方伪造这个证书?答案就是数字签名(digital signature)。数字签名是证书的防伪标签,目前使用最广泛的SHA-RSA(SHA用于哈希算法,RSA用于非对称加密算法)。数字签名的制作和验证过程如下:

1、数字签名的签发:首先是使用哈希函数对待签名内容进行安全哈希,生成消息摘要,然后使用CA自己的私钥对消息摘要进行加密。

数字签名

2、数字签名的校验:使用CA的公钥解密签名,然后使用相同的签名函数对签名证书内容进行签名,并和服务端数字签名里的签名内容进行比较,如果相同就认为校验成功。

数字签名的效验

以上只是个人快速理解https实现原理的日记,欢迎讨论,不喜勿喷哦!

参考文献:

http://www.admin5.com/article/20150505/597061.shtml

http://web.jobbole.com/88724/

http://blog.csdn.net/alex8046/article/details/51909772

http://wetest.qq.com/lab/view/110.html

相关文章

  • 快速理解https实现的原理

    快速理解https实现的原理 一、为什么要用https? http是在网络协议的应用层,用户通过http协议访问网...

  • C Hash表 散列表,又叫哈希表

    1: 理解HASH表的原理,为什么能实现基于名字快速查找;2: 理解HASH算法;3: 编写HASH表; 原理 算...

  • https原理的理解

    本文是对原理的阐述,不涉及具体的加密流程 缘起 http由于是明文传输,在传输敏感信息的时候是很不安全的,所以要对...

  • HashMap实现原理

    HashMap实现原理解读 原文链接:https://blog.csdn.net/fenglibing/artic...

  • HTTPS实现原理

    参考自文章。 HTTPS实现原理 HTTPS分为证书验证和数据传输阶段: 证书验证阶段(非对称加密,公钥私钥) 1...

  • Https实现原理

    参考文章:https://blog.csdn.net/zhongzh86/article/details/6938...

  • 深入理解多线程(四)—— Moniter的实现原理

    在深入理解多线程(一)——Synchronized的实现原理[https://www.jianshu.com/p/...

  • HTTPS 的实现原理

    HTTPS的整体过程分为证书验证和数据传输阶段,具体的交互过程如下:

  • HTTPS 的实现原理

    大家可能都听说过 HTTPS 协议之所以是安全的是因为 HTTPS 协议会对传输的数据进行加密,而加密过程是使用了...

  • 转:线程池

    【深入理解线程池的实现原理 - 今日头条】https://m.toutiaocdn.com/group/67341...

网友评论

      本文标题:快速理解https实现的原理

      本文链接:https://www.haomeiwen.com/subject/jgmtnttx.html