数字签名:信息经过hash生成摘要,摘要经过私钥加密后就为数字签名。
数字证书:公钥和一些相关信息经过”证书中心”(certificate authority,简称CA)的私钥加密后就为数字证书。
为什么要把消息先hash再用私钥加密获得签名,而不是直接用私钥加密原始消息获得签名呢?
因为:
1. 有些私钥加密算法对输入数据有一定的长度和格式要求,原始消息多种多样,而hash算法的输出正好是固定格式的,可以很容易处理成私钥加密算法的输入。
2. 降低攻击者用有规律的字符串来不断要求私钥加密研究,从而**私钥的可能性。因为数据经过hash后一般是无规律的。
这就要求我们研究优良的hash算法,常见的hash算法有:MD4,MD5,Sha1,Sha-2,Sha-3等等。
为何需要CA
有一个人或机构,他想要采用私钥公钥这种方式加密解密信息与人通信。
他首先要将自己的私钥保存好,只能自己知道,不能被别人知道。
然后他要将公钥传送给和他通信的人,这一步存在一个问题:
怎样保证公钥在传送的过程中没有被别人篡改,若被第三方篡改成了自己的公钥,
那么以后第三方就可以冒充他来和别人通信了。
他当然可以通过各种途径发布自己的公钥,这样别人就能从各途径下载公钥来比对,总不至于所有途径都被篡改了吧,但是这样存在一个问题,假如很多机构都通过很多途径发布自己的公钥,别人就需要收集每个机构的发布途径,然后下载来比对,这显然不是一个好的解决方法。还有一种方法。
我们只需要保证自己准确获取到一个机构的公钥,这个机构就是CA。然后希望使用私钥公钥这种方式加密通信的机构都向CA申请自己的数字证书。我们只需要拿到这个数字证书,然后确定数字证书里的明文信息(包括机构信息,机构公钥等)未被篡改,这样我们就能用未被篡改的机构公钥来和机构通信。
CA的公钥一般在CA的证书里,CA的证书一般会随着操作系统一起安装。