目录
一、http的缺点
http采用明文通信,数据可能会被窃听;(可窃听)
http不验证通信双方身份,通信方身份可能会被伪装;(可伪装)
http报文无法验证完整性,可能会被篡改(可篡改)
二、https协议简介:
1、对称加密
对称加密,加解密采用的公钥和私钥是一样的。
优点是:速度快。缺点是:不安全,如果有人截获这个密钥,它就能伪装成合法用户进行通信。
2、非对称加密
非对称加密有一个秘钥对,叫做公钥和私钥,私钥自己持有,公钥可以公开的发送给使用的人。使用公钥进行加密的信息,只有和其配对的私钥可以解开。
优点:安全,因为他不需要把私钥暴露出去。缺点:相对于对称加密来讲效率比较低。
(在正式的使用场景中一般都是对称加密和非对称加密结合使用,使用非对称加密完成秘钥的传递,然后使用对称秘钥进行数据加密和解密。)
3、身份认证
身份认证的过程由CA数字证书完成。证书由公钥、证书主体、数字签名组成。
客户端发起SSL请求,服务端将数字证书发给客户端,客户端对数字证书进行验证,如果证书不是伪造的,客户端获取对称密钥交换的非对称密钥(公钥)。
数字证书的作用:
1)密钥(公钥)的分发。数字证书包含注册者的公钥,在SSL握手时会发给客户端。
2)身份认证。确保服务端是经过CA验证的网站。
证书的申请流程:
(1)公司(实体)的服务器生成公钥和私钥,以及CA数字证书请求。
(2)RA(证书注册及审核机构)检查实体的合法性(在注册系统里面是否注册过的正规公司)。
(3)CA(证书签发机构)签发证书,发送给申请者实体。
(4)证书更新到repository(负责数字证书及CRL内容存储和分发),实体终端后续从repository更新证书,查询证书状态等。
4、数字证书认证
利用数字签名对数字证书进行防伪认证。目前使用(SHA-RSA, SHA用于哈希算法,RSA用于非对称加密)
数字证书的制作与验证:
(1)数字证书的签发。用哈希函数对消息进行摘要,然后用CA的私钥对消息摘要加密。
(2)数字签名校验。用CA的公钥解密签名,再用相同的签名函数(哈希函数)对证书进行签名。与服务端数字签名里的签名内容比较,相同就校验成功。
5、数据完整性验证
使用MAC算法来保证网络传输中数据被篡改,保证数据的完整性。
MAC算法可以将密钥和任意长度的数据转换成固定长度的数据。发送者在密钥的作用下,利用MAC算法计算出消息的MAC值,并将其添加在需要发送的消息之后,并发送给接收者。接收者利用同样的密钥和MAC算法计算出消息的MAC值,并与接收到的MAC值比较。如果二者相同,则报文没有改变;否则,报文在传输过程中被修改或者污染,接收者将丢弃该报文.
三、https通信过程
核心:
用非对称加密算法来交换对称密钥+数字证书验证身份+对称密钥加解密后来传输的数据
1、client向server发送请求https://baidu.com,然后连接到server的443端口。
服务端必须要有一套数字证书,可以自己制作,也可以向组织申请。区别就是自己颁发的证书需要客户端验证通过,才可以继续访问,而使用受信任的公司申请的证书则不会弹出提示页面,这套证书其实就是一对公钥和私钥。
2、传送证书
这个证书其实就是公钥,只是包含了很多信息,如证书的颁发机构,过期时间、服务端的公钥,第三方证书认证机构(CA)的签名,服务端的域名信息等内容。
3、客户端解析证书
这部分工作是由客户端的TLS来完成的,首先会验证公钥是否有效,比如颁发机构,过期时间等等,如果发现异常,则会弹出一个警告框,提示证书存在问题。如果证书没有问题,那么就生成一个随即值(秘钥)。然后用证书对该随机值进行加密。
4、传送加密信息
这部分传送的是用证书加密后的秘钥,目的就是让服务端得到这个秘钥,以后客户端和服务端的通信就可以通过这个随机值来进行加密解密了。
5、服务段加密信息
服务端用私钥解密秘密秘钥,得到了客户端传过来的私钥,然后把内容通过该值进行对称加密。
6、传输加密后的信息
这部分信息是服务端用私钥加密后的信息,可以在客户端被还原。
7、客户端解密信息
客户端用之前生成的私钥解密服务端传过来的信息,于是获取了解密后的内容。
参考文献: