https加密原理

以为http的数据都是以明文传送,会有很大的安全问题,所以出现的https协议。https就是在http协议的基础上增加了一个安全层,可以对数据进行加密和解密(例如SSL、TLS等)。

https加密解密的原理:证书+非对称加密+对称加密

在讲解原理前先认识几个简单的加密方式:

对称加密

服务器和客户端都使用相同的钥匙对数据作处理。

单单使用这样的加密方式安全性并不高,hanker劫取客户端的钥匙,再把钥匙发给服务端,那么后续的数据对hanker都是可见的。

非对称加密

服务端会有两个钥匙,私钥和公钥。私钥加密后只能公钥解密,公钥加密后只能私钥解密。

非对称加密可以保证客户端到服务端的数据安全,但是服务端到客户端并不安全,公钥可以被多个客户端拥有。

对称+非对称加密

客户端获取服务端公钥后,用公钥将对称加密的钥匙进行加密发给服务端,之后两端都使用对称加密通信。

两种方式的结合看似很安全,其实还是存在问题。如果hanker比服务端先收到请求,hanker自己有一套公钥和私钥,将请求发送服务端后将拿到的服务端公钥,再将自己的公钥发给客户端,客户端就会将自己的钥匙发给hanker再有hanker发给服务端。此后CS两端的通信对于hanker都是可见的。

出现这样问题的原因在于客户端不知道发送消息的是不是客户端,为了解决这个问题就要引入证书这个概念。

证书

证书是由服务端向权威的CA机构申请后得到的。申请时需要服务器的各种信息,例如服务器的域名服务器的公钥以及服务器所有者的身份信息(可以用于追究法律责任)等,CA机构对数据进行哈希运算(将数据运算后生成一个固定长度的字符串——数据指纹或数据摘要,两个相似数据的数据指纹差别也会非常大,并且这个运算不可逆即不可能通过数据指纹获取原数据),然后对数据指纹用CA机构的私钥进行加密(CA机构也有自己的一套私钥和公钥,公钥在浏览器或者设备出厂时内置好了),这样就得到了签名。签名+服务器的信息就是证书。

有了证书后,客户端发送请求后,服务器就会将证书响应给客户端。客户端会对服务器信息作与CA相同的哈希算法,然后用CA的公钥对签名进行解密,最后将二者对比,如果相同就说明发消息的是服务端而不是hanker,同时将服务器信息中的公钥拿到。后面的通信使用对称加密即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值