这是目前工作中遇到的一些知识点搜集整理。
首先,PKI(Public Key Infrastructure)是一个体系。
公钥基础设施是一个包括硬件、软件、人员、策略和规程的集合,用来实现基于公钥密码体制的密钥和证书的产生、管理、存储、分发和撤销等功能。
PKI体系是计算机软硬件、权威机构及应用系统的结合。它为实施电子商务、电子政务、办公自动化等提供了基本的安全服务,从而使那些彼此不认识或距离很远的用户能通过信任链安全地交流。
— 百度百科
说白了,PKI还是提供了彼此身份确认的服务,确保通信的安全。
接下来,打开百度的网址,进一步了解PKI体系中的各种角色。
我跟你对话,如果确认彼此就是自己要对话的人?那么我们可以互相亮出身份证,来证实彼此身份是可靠的。
那么,在网络通信里,也需要用到这样的介质,那就是数字证书。
点开百度网址左边的小锁图标,浏览器会显示如下,告诉你这个连接是安全的。
浏览器之所以能确认百度的身份,就是因为数字证书。点击这个按钮,进一步可以看到证书相关信息。
信息大概可以分为 3 类:
证书相关的其他信息
基于此,当浏览器访问https的网址,就会检查证书的有效性,通过后使用证书里的信息(主要是公钥)与网址进行通信。
数字证书的关键在于公钥,也就是非对称加密算法。它有2个角色:
利用这种方式,不需要发送用来解密的私有密钥,也就不必担心密钥被攻击者窃听而盗走。
另外,就算你知道了公开密钥和密文,想要恢复到信息原文是异常困难的。因为解密过程就是在对离散对数进行求值,这并非轻而易举就能办到。
再退一步讲,如果能对一个非常大的整数做到快速地因式分解,那么密码破解还是存在希望的。但就目前的技术来看是不太现实的。
上面在上述的公开密钥加密方式还是存在一个问题:
比如,A 正准备和 B 服务器建立公开密钥加密方式下的通信,A 也确实收到了公开密钥。但是 A 不知道这个公开密钥是不是真的来自于 B,或许在传输途中,真的公开密钥已经被攻击者替换掉了。
所以,还需要一套机制来证明过程中的这些内容都是可靠的,这里就需要开头提到的PKI体系了,其核心是证书的产生和分发层级。
证书的产生则来自一位的重要角色:数字证书认证机构(CA,Certificate Authority)。
全世界有大概几十家左右的根CA(Certificate Authority),计算机上都会预置这些CA的数字证书。比如Amazon、Verisign这种,他们有一整套的机制保证自己是可信的。基于此,他们有自己的数字证书,及与之匹配的私钥。
网站若想拿到自己的证书,就可以找个子CA,填好信息付好年费,就可以拿到证明了。当浏览器访问网站的时候,看到你有业内权威开的证明,自己也核对没问题后就无条件信任你了。
在这里,PKI 体系必须为用户提供安全和透明的服务,用户不必考虑 PKI 体系中的证书是怎样生成、更新、撤销及恢复的,密钥是如何管理的,只要用户自己能够方便地获得数字签名即可。
PKI体系在汽车行业的应用场景非常广泛,如远程车控、近场车控、安全启动、Ethernet通信安全等等。在此处讲一个优先级最高的“远程车控”的实例。
企业应该先行建立自己的PKI体系,即引入一个PKI供应商,将证书的颁发、申请、吊销等公用模块建立起来。接下来,在其之上,建立各应用的流程。
手机端、云端与车端Tbox,都在本地生成自己的私钥,并在云端申请完自己的证书。这也需要制定相应的业务流程。
三端都需要妥善保管好自己的私钥,手机端可以将私钥存储在TEE中,云端可存储的选择会较多,车端可存储在HSM或TEE中。若没有这些硬件的存储方式,可以使用软件的白盒加密方法,安全性也有一定保障。白盒加密也就是说即使遭遇白盒攻击,其密钥也较难被破解。
大家都具备证书与私钥后,业务流程就变的相当简单了。
所以,基于PKI体系的方案是更加可靠的。
参考文章:
https://zhuanlan.zhihu.com/p/237155609
https://www.cnblogs.com/pingguo-softwaretesting/p/14970453.html
https://zhuanlan.zhihu.com/p/377562137