在车联网安全--TLS 握手过程详解里面,我们了解到握手时,Server 会向 Client 发送 Server Certificate,用于证明自己的身份合法,为什么会有这一步呢?
我们回顾一下数字签名的过程:
Bob 使用自己的公钥对“Hello Alice”的 Hash 值进行加密,那么相应就只能由 Bob 的公钥进行解密,并比对;
但如果在某种极端情况下(这是前提),Alice 收到的 Bob PublicKey 被黑客篡改了,那么 Bob 与 Alice 的通信就会变成黑客与 Alice 的通信,并且 Alice 还难以察觉。
那么 Bob 为了证明 Bob PublicKey 就是自己的,就需要通过数字证书来证明。
还是以身份证为例,身份证可以用于证实我就是我,前提条件就是该证是由国家权威机构进行颁发;那么同样道理,数字证书在网络世界被当作身份证,前提也是有第三方权威机构进行颁发,这个机构就叫做 Certificate Authority(CA)机构。
CA 机构一般是获得工信部《电子认证服务许可证》的机构,作为独立第三方权威机构提供电子认证服务,包括数字证书申请、签发、更新、撤销、查询及签名验签等服务。
那么如何申请数字证书呢?
根据中国电子银行网《六问六答,什么是数字证书?》讲到,可以通过线下或线上两种方式申请数字证书。携带个人有效身份证件(例如身份证、护照等),前往 CA 机构或者 CA 机构授权的注册机构现场办理数字证书。根据实际业务情况填写相关资料,并出示身份证件,便可申请数字证书。另外,CA 机构为顺应业务办理线上化、数字化、便捷化的需求,也提供数字证书线上申请方式。
这里提到的注册机构就是 Registration Authority,数字证书注册审批机构,主要受理证书申请请求、验证申请人身份,从而影响 CA 机构对于证书的签发。
为啥又要单独分 RA 呢?个人理解,还是为了功能解耦,比如说公司里某某合同验收付款最后签字的是老板,但验收过程可能还是下级去执行,不然老板要累蒙。
那 Bob 向 RA 提出证书申请需要哪些信息呢?实际身份、申请目的、证书用途。RA 在收到 Bob 的申请后就开启身份真实性验证,如果验证成功,就会同时告诉 Bob 和 CA:Bob 的身份没有问题,可以给他颁发证书了。
然后 Bob 就拿着这个批准去向 CA 申请证书签发,签发的信息包括:Bob 的真实信息(例如他的公钥、用户名)、证书属性(版本号、有效期、序列号等等);与此同时,CA 还会为 Bob 单独生成一个密钥对(公私钥,关键),然后用 CA 私钥对上述证书进行签名,得到证书的数字签名,最后连同证书一同发给 Bob。
如下图:
我们在浏览器随便找个证书看看,基本信息如下图:
这里面包含了发证机构上图红框、使用者的公钥、证书有效期、签名所使用 Hash 算法等等。
那么 Bob 把证书发给 Alice 后,Alice 首先要使用 CA 为 Bob 生成的公钥(不是证书里的 Bob 公钥)对证书进行验签,验签成功,她才认为证书里的公钥确实是 Bob 的,那么他们就可以继续这个公钥进行下一步的密钥协商。
那么有朋友会说,如果黑客模拟 CA 机构在 Bob 和 Alice 握手时传递了一个假的证书,这不就出问题了吗?
确实有这个可能,但一般来说,CA 的公钥一般是以根证书的形式预装的,很难被修改,例如上图中 Root Certificate 2010,就是受信任的根证书颁发机构,如下:
在汽车领域里, 一般也由产线系统向 V2X-CA 机构申请证书,最后写入到 OTP 或者 HSM 独占 NVM 中,这个步骤要求在绝对可信环境,所以根证书也很难被做手脚。
最后,讲到这里就不能不提 PKI(公钥基础设施)技术,它应该是目前主流的车联网信息安全解决方案,旨在保护 V2X 的安全通信,这里面涉及到的细节还没有完全搞明白,搞懂了再跟大家聊聊。
有兴趣的可以看看华为车联网 C-V2X 安全证书服务方案。
END
作者:快乐的肌肉
文章来源:汽车MCU软件设计
推荐阅读
更多物联网安全,PSA 等技术干货请关注平台安全架构(PSA)专栏。欢迎添加极术小姐姐微信(id:aijishu20)加入PSA 技术交流群,请备注研究方向。