0. 准备知识
0.1 加密,认证与证书[1]
在网络中,A给B发消息,如果信息明文传输,那么很容易被窃取、被篡改;
使用了对称加密算法,则A和B之间可以通过密文传输,那么没有密钥将无法获取明文;
但是有个问题,密钥如何传输?传输密钥的过程仍然可能让第三方C获取,那么加密的信息就相当于明文传输了(C有密钥,可以破解)。
于是有了非对称加密,即公钥加密,私钥解密。A把自己的公钥公开,但是只有A自己的私钥才能解密,只要私钥不泄露,就只有自己能够解密;同样,B也有自己的私钥和公钥。
但是又有个问题,所有获取到A公钥的人都可以发信息给A,C可以冒充B给A发消息。如何证明信息是B发送的呢?这里涉及到签名,即B用自己的私钥加密一段信息发送给A,那么A可以用B的公钥解密,证明信息来源是B。
然而,如果B在给A发送公钥的时候就被C截取篡改并把自己的公钥冒充成B的发送给A,那么A就会认为C给自己发的公钥才是B的。所以现在需要证明B的公钥来自B,引入可信任第三方D。D负责给B的公钥做个证书,这个证书根据公钥和B的信息,用D的私钥加密得到个签名,再附上B的公钥和B的一些信息。D把证书发给A,A用D的公钥验证证书来源是D,同时这个证书中的公钥确实是来源于B。由于D的公钥也是通过证书发给A