在认证方面,经常会出现这样几个词:CA、证书、PKI、X.509等等,每次一看到这些词就头大,今天我试着将这几个词理一下。
1、A要与B安全通信,现在A需要知道跟它现在通信的到底是B还是别人,也就是说A并不信任B
2、B要向A出示自己的证书,然后B说这是我的证书,签字的单位(认证单位)是C单位。
3、那么A查看自己的信任域,看看自己到底信不信任C单位,假设不信任C单位。
4、A向C单位请求查看证书,C将自己的证书发给A,自己的证书由D单位签发。
5、A接着查看自己的信任域,看看到底信不信任D单位,如果不信任,重复4,如果信任,那么OK,我信任了D单位,就相当于信任了D单位下所有的子节点及子节点签发的证书。
可以很明显的看出,这种关系构成了一种信任链。这个很重要。
证书
在认证过程中,最重要的交互手段就是证书,证书的作用是将公钥与安全实体做绑定,绑定的动作由签发单位完成,在公钥密码体制中,当Alice希望和Bob通信时,为了防止别人知道通信内容,需要使用Bob的公钥对消息加密后,通过不安全信道到达Bob端,Bob通过自己的私钥对消息解密才能看到消息的内容。那么问题来了?Alice怎么得到Bob的公钥呢?一种很显然的方法是Bob建立一个Web站点,然后Bob将自己的公钥放在站点上,然后公开给所有人。
这种做法有两个弊端,一,不是所有人都有能力搭建web站点的;二,Bob站点的内容很容易篡改,而Bob并不知道。比如,Cr