上回说到,Alic用对称算法加密邮件内容,再用Bob的公钥加密这个对称算法的密钥。我们先来看看用数字证书来怎么实现的。
第一步,Alic用随机的对称密钥加密了邮件了;
第二步,要用Bob的公钥来加密这个对称密钥,一起传递;
第三步,Bob先要用算法或设备来生成一对钥匙,私钥自己留着,公钥再给Alic。
看起来好像挺容易的。But,公钥怎么给Alic呢?总不能派人专门坐飞机送过去吧?
通过互联网传过去吧。于是问题又来了,互联网那么多环节,怎么知道这个公钥就是Bob的呢?
这个时候,CA登场。就是第三方的认证中心。
于是第四步,Bob就把自己生成的公钥送去CA认证,形成数字证书。
接下来的问题又变成了:
CA怎么知道Bob的公钥就是他本人申请的呢?
这就是为什么我们申请数字证书要填写很多信息,如果在网银申请数字证书,还要复印身份证,要去柜台办理。
折腾了半天,Bob终于有了自己的数字证书,里面有自己的公钥、邮件地址、个人信息等等,他终于可以自由的把证书对外发送了,怎么给Alic都行。
第五步,Alic拿到证书了。接下来的问题有变成了:证书是否是真的?是否有效?
于是,Alic又去找CA中心了,CA就开始了查验工作,然后告诉Alic,OK,我看行!
于是,第六步,Alic开始用Bob的证书加密对称密钥,看起来,好像也是So Easy?
But,当Alic要和B1、B2、BN通讯的时候,麻烦就来了。
第一个麻烦就是Alic的,Alic有一百朋友要发邮件,首先要拿到这一百人的数字证书。
要发给B1时候,他还得去找B1对应的证书。同时要问问CA,这个证书是否还有效?每个人都要管理那么多证书是非常麻烦的事情。
第二个麻烦就是CA的了,总是不停的人来问,Alic是谁?
Bob是谁?
可能这个时候你已经被绕糊涂了,那我们用一幅简单漫画来看一下。
试想一下,当移动互联网、物联网这些海量的个体要相互通信的时候,或者像电子邮件、加密语音电话这些临时点对点通信的时候,通讯量、管理都是很大的问题。
第三个麻烦就是,不同的CA中心发的证书,要做到互通互认也很麻烦。
所以我国的CA建设已经很多年,有数十个CA中心,但数字证书大多数应用都是用来做身份鉴别。做身份鉴别就是大家都往一个地方去证明自己,所以不需要像上面那样保存和管理若干证书。
PKI/CA体系的核心算法就是RSA。设计RSA中的一个人就是Adi Shamir。他早在1984年就意识到了这个问题的麻烦性。
1984年,他写了一篇文章,《Identity-BasedCryptography》讲述了一个新的方法----IBC。
---未完待续---