1、加密和认证的概念
加密
将数据资料加密,使得非法用户即使取得加密过的资料,也无法获取正确的资料内容,所以数据加密可以保护数据,防止监听攻击。
其重点在于数据的安全性。
身份认证
用来判断某个身份的真实性,确认身份后,系统才可以依不同的身份给予不同的权限。
其重点在于用户的真实性。
两者的侧重点是不同的。
2、公钥和私钥的概念
在现代密码体制中,加密和解密是采用不同的密钥(公开密钥和私有秘钥),也就是非对称密钥密码系统,每个通信方均需要两个密钥,即公钥和私钥。这两把密钥可以互为加解密。公钥是公开的,不需要保密,而私钥是由个人自己持有,并且必须妥善保管和注意保密。
一个公钥对应一个私钥。
密钥对中,让大家都知道的是公钥,不告诉大家,只有自己知道的,是私钥。
如果用其中一个密钥加密数据,则只有对应的那个密钥才可以解密。
如果用其中一个密钥可以进行解密数据,则该数据必然是对应的那个密钥进行的加密。
3、加密和认证的过程
非对称密钥密码的主要应用就是公钥加密和公钥认证,而公钥加密的过程和公钥认证的过程是不一样的,下面详细讲解一下两者的区别。
加密过程
例如有两个用户Alice和Bob,Alice想把一段明文通过双钥加密的技术发送给Bob,Bob有一对公钥和私钥,那么加密解密的过程如下:
1) Bob将他的公开密钥传送给Alice。
2) Alice用Bob的公开密钥加密她的消息,然后传送给Bob。
3) Bob用他的私人密钥解密Alice的消息。
过程如下图。
身份认证
身份认证和加密就不同了,主要用户鉴别用户的真伪。这里我们只要能够鉴别一个用户的私钥是正确的,就可以鉴别这个用户的真伪。
还是Alice和Bob这两个用户,Alice想让Bob知道自己是真实的Alice,而不是假冒的,因此Alice只要使用公钥密码,对文件签名,发送给Bob,Bob使用Alice的公钥对文件进行解密,如果可以解密成功,则证明Alice的私钥是正确的,因而就完成了对Alice的身份鉴别。
整个身份认证的过程如下:
Alice用她的私人密钥对文件加密,从而对文件签名。
Alice将签名的文件传送给Bob。
Bob用Alice的公钥解密文件,从而验证签名。
整个流程如下:
其实这个验证流程还是有漏洞:
后来,Bob感觉不对劲,发现自己无法确定公钥是否真的属于Alice。
比如第三个人Tom想欺骗Bob,Tom偷偷使用了Bob的电脑,用自己的公钥换走了Alice的公钥。此时,Bob实际拥有的是Tom的公钥,但是还以为这是Alice的公钥。因此,Tom就可以冒充Alice,用自己的私钥做成"数字签名",写信给Bob,让Bob用假的Alice公钥进行解密。这样Tom就成功伪装成Alice了。
如何避免这种情况呢?
有一个办法,Alice去找"证书中心"(certificate authority,简称CA),为公钥做认证。
证书中心用自己的私钥,对Alice的公钥和一些相关信息一起加密,生成"数字证书"(Digital Certificate)。
Alice拿到数字证书以后再给Bob写信,只要在签名的同时,再附上数字证书就行了。
Bob收信后,用CA的公钥解开数字证书,就可以拿到Alice真实的公钥了,然后就能证明"数字签名"是否真的是Alice签的。
这样的话,Tom就很难冒充Alice来欺骗Bob了。