上一篇介绍了密码学中的一些术语概念http://www.zuidaima.com/blog/2759127586540544.htm,以及保证信息安全传输的大致实现过程。
这篇文章说一下密码学在web领域中的应用。
我们知道http协议中浏览器与web服务器之间的数据包分为三部分(请求行/响应行,消息头,实体内容)。数据都是以明文的方式传输。
若是用户登录某个网站时提交的用户名和密码,很容易被黑客截取到,安全性几乎为零。
HTTPS协议概述:
HTTPS协议可以认为是HTTP+TLS
TLS(Transport Layer Security):是传输层的加密协议,介于应用层与传输层之间,对应用层数据进行加密的一种协议,前身为SSL协议,是由网景公司提出来的,就是为了保证信息的安全传输,后来由IETF 讨论和规范后,改名为TLS。一般SSL和TLS说的都是同一个协议。
下图为浏览器与服务器实现stl的交互大致过程:
若浏览器与web服务器顺利进行到第四步且浏览器比较一致的话,浏览器与服务器正式进行业务通信。
可以看出https协议对于在web领域中起到的作用。国内为什么现在的网站大部分却都是http协议的呢?很少是全网https?
下图为浏览器与服务器实现http的交互过程:
- 可以看出浏览器与服务器建立tcp连接后(三次握手),http协议用户直接就与服务器进行业务通信;相比之下https协议要比前者多了至少四次握手,大大增加了建立连接的延时,再加上国内网络环境的因素,加大用户关掉你网页的可能性,所以对https服务器的性能等各方面要有比较高的要求。
- 部署https服务器,需要申请证书,需要人民币,除非你能保证用户的客户端软件是你自己开发的,否则客户端会提示无效证书从而中断连接;或者想12306一样自己搞个根证书放在首页,让人下载并添加为信任的根证书。
上图https协议的交互过程中,客户端只是对服务器的身份进行了认证(单向认证),有些场景可以还需要对客户端进行身份认证(双向认证),比如我们公司现在做的营业执照电子化系统,企业登录时就要求对登录者做身份认证;像银行网站可能也需要对登录者做身份认证。
目前从事信息安全这方面工作时间不是很长,没有对各种加密的算法具体实现过程,PKCS(The Public-Key Cryptography Standards):一组公钥密码学标准,等相关知识的深入学习。
文中有误的地方,欢迎指出。