【正确答案】
B
【答案解析】 要想找出正确答案,首先需要弄懂数字签名的定义,在ISO7498-2标准中,数字签名的定义如下:“附加在数据单元上的一些数据,或者对数据单元所做的密码变换,这种数据和变换允许数据单元的接收者用以确认数据单元来源和数据单元的完整性,并保护数据,防止被人(例如接收者)进行伪造”。它是不对称加密算法的典型应用,依靠公钥加密技术来实现。在公钥加密技术里,每一个使用者都有一对密钥:一把公钥和一把私钥,公钥可以自由发布,但私钥则秘密保存。
具体而言,数字签名的应用过程如下:数据源发送方使用自己的私钥对数据校验和或其他与数据内容有关的变量进行加密处理,完成对数据的合法“签名”,数据接收方则利用对方的公钥来解读收到的“数字签名”,并将解读结果用于对数据完整性的检验,以确认签名的合法性。数字签名技术是在网络系统虚拟环境中确认身份的重要技术,完全可以代替现实过程中的“亲笔签字”,在技术和法律上有保证。在公钥与私钥管理方面,数字签名应用与加密邮件PGP(Pretty Good Privacy)技术正好相反。在数字签名应用中,发送者的公钥可以很方便地得到,但他/她的私钥则需要严格保密。
为了更好地说明数字签名,引用一个较为通俗易懂的方法。
1)A有两把钥匙,一把是公钥,另一把是私钥。
2)A把公钥送给B、C、D,每人一把。
3)D要给A写一封保密的信。他写完后用公钥加密,就可以达到保密的效果。
4)A收到信后,用私钥解密,就看到了信件内容。注意,只要私钥不泄露,这封信就是安全的,即使落在别人手里,它也是无法被解密的。
5)A给D回信,决定采用“数字签名”。他写完后先用Hash函数,生成信件的摘要(Digest)。
6)然后,A使用私钥,对这个摘要加密,生成“数字签名”(Signature)。
7)A将这个签名,并附在信件下面,一起发送给D。
8)D收到信后,取下数字签名,用A的公钥解密,得到信件的摘要。由此证明,这封信确实是A发出的。
9)D再对信件本身使用Hash函数,将得到的结果与上一步得到的摘要进行对比。如果两者一致,就证明这封信未被修改过。
10)复杂的情况出现了。C想欺骗D,他偷偷使用了D的电脑,用自己的公钥换走了A的公钥。此时,D实际拥有的是C的公钥,但是还以为这是A的公钥。因此,C就可以冒充A,用自己的私钥做“数字签名”,写信给D,让D用假的公钥进行解密。
11)后来,D感觉不对劲,发现自己无法确定公钥是否真的属于A。她想到了一个办法,要求去找“证书中心”(Certificate Authority,CA)为公钥做认证。证书中心用自己的私钥,对A的公钥和一些相关信息一起加密,生成“数字证书”(Digital Certificate)。
12)A拿到数字证书以后,就可以放心了。以后再给D写信,只要在签名的同时,再附上数字证书就行了。
13)D收信后,用CA的公钥解开数字证书,就可以拿到真实的公钥了,然后就能证明“数字签名”是否真的是A签的。
根据上面的分析可知,选项B是正确的。
所以,本题的答案为B。