PKI基础知识总结--进化简史

自从互联网发明以来,工程师和黑客之间的斗争就生生不息。你正在看的这篇文章,是怎样安全地发送到你手机的?你发送的私密信息,不怕黑客拦截吗?网络支付,真的安全吗?这篇文章带你了解网络安全必修课—PKI

1.什么是PKI

是一套体系,实现了

身份认证:防止身份被冒充;

校验机制:防止数据被篡改;

加密传播:第三方无法窃听。

PKI进化史

客户端和服务端之间通过HTTP协议进行通信,HTTP协议位于TCP/IP四层模型当中的应用层。

客户端和服务端之间通过请求/响应的方式进行通信。

起初,数据以明文形式传输,黑客随意拦截篡改,风险极大。

安全保卫战就此打响

随后,密钥出现了,将数据用密钥加密,以密文的方式发送。

首先登场的是对称加密,通信双方先约定一个密钥,然后发送方用它加密,接收方用它解密,整个过程只存在一个密钥。

约定好密钥后,后续的通信都是加密发送的,看起来暂时安全了,但是道高一尺,魔高一丈,如果第一次通信就被拦截了,那么密钥就会泄露给第三方,第三方仍然可以解密后续的所有通信内容。

 

机智的工程师们接着开动脑筋,发明了非对称加密,非对称加密存在一对密钥,一个公钥和一个私钥,用公钥加密的内容只能用私钥解密,用私钥加密的内容只能用公钥解密。

接下来将“非对称加密”和“对称加密”结合起来使用。

建立通信的时候,服务端首先把自己的公钥发给客户端

客户端收到公钥后,使用公钥key1对自己的密钥key2加密,发送给服务端

服务端使用自己的私钥解开了公钥key1加密的内容,得到了客户端的密钥key2,之后双方使用key2进行对称加密的方式会话。

这样做的好处是什么?

即使第三方一开始就截取了公钥key1,由于不知道私钥是什么,也无从解密

这下总该安全了吧。。并没有。

第三方也有一套公钥和私钥

第三方截取了公钥之后,把自己的公钥key3发送给客户端

客户端不知道公钥被偷换过,仍然按照之前的流程,使用key3加密自己的私钥,发送给服务端,再次被第三方截获,第三方使用自己的私钥解密,得到了密钥key2,再使用之前截获的key1加密key2,发给服务端

服务端和客户端都不知道key2其实已经泄露了,后续通信仍使用key2加密,由于第三方已经掌握了key2,所以可以轻松解密。

可以看出,问题的关键在于客户端无法鉴别公钥的真伪,工程师们再次开动脑筋,引入了一个权威的证书颁发机构CA,重点来了(敲黑板),服务端向权威机构申请一个证书,证书中包含了公钥,并且可以证明公钥的真伪。

到底什么是证书呢?

证书是由权威机构(CA)颁发的文件,包含以下信息

权威机构有一套公钥和私钥,各大浏览器和操作系统已经维护了所有证书机构的名称和公钥,私钥只有证书机构自己保管

服务方向证书机构CA提交公钥、组织信息等信息并申请认证;

CA通过线上、线下等多种手段验证申请者提供信息的真实性,如组织是否存在、企业是否合法等;

信息审核通过后,CA将明文信息进行哈希计算得到摘要,并将摘要用机构私钥加密得到签名,把签名写入证书,随后向申请者签发认证文件。

客户端向服务端发送请求时,服务端不再直接返回自己的公钥,而是把申请的证书返回给客户端。

客户端收到证书后,首先要验证证书的真伪。根据证书信息,找到本地维护的机构公钥,解密证书的签名得到摘要,再使用和证书机构一样的哈希算法计算得到一个摘要,然后比较自己计算的摘要和解密出的摘要是否一致,如果一致,说明证书是有效的。

证书验证成功后,客户端使用证书中的公钥key1加密自己的密钥key2,发给服务端,跟“非对称加密“”过程一样,服务端使用私钥解密得到key2,之后双方使用key2,进行对称加密的通信。

在这样的流程下,第三方还有破坏空间吗?

几乎不可能

如果第三方伪造证书,冒充服务端证书呢

因为证书的签名是由服务端公钥等信息生成的,并且经过了证书机构的私钥加密,第三方也无法篡改,所以如果修改了证书中的公钥信息,那么验签是无法通过的。

虽然很绕,但是这次终于安全了!

所以现在明白,浏览网站时弹出此证书不受信任时该怎么做才安全了吧。

这,就是HTTPS。HTTPS在HTTP协议的基础上增加了SSL/TLS安全层,刚才介绍的一些列认证流程就是在SSL层中完成的,其中证书机构CA、证书验证服务是PKI体系中的重要组成部分。

TLS是SSL的升级版,他们都是为了在传输过程中保护敏感信息,但是大多数人仍然习惯说SSL而不是TLS。

SSL证书从根本上是使用“非对称加密”和“对称加密”的混合物来进行Internet通信。


END

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值