英文原文地址:git
http://www.youdzone.com/signature.html算法
若下文有任何错误,请告知我,谢谢。79996286@qq.com安全
主角介绍:Bob and Alicegrunt
提起RSA加密算法,公钥和私钥,多数文章都要使用Bob和Alice这两位人物。他们的创造者名叫Rivest,是RSA之父。他为了在避免在描述中使用A和B,就以这两个字母开头,建立一男一女两个角色,就是咱们在任何文章上都能看到的Alice和Bob了。这是一些题外话,下面就来进入咱们的数字证书入门学习吧。post
什么是数字证书学习
Bob有两把钥匙,一把叫公钥(public key),一把叫私钥(private key)。加密
Bob的公钥能够公开供其余人使用,他只保留本身的私钥。公钥和私钥用来加解密数据,若是使用任意一把来加密数据,那么只有使用另一把才能解密数据。spa
Susan想给Bob写信,她可使用Bob的公钥将内容加密之后发送给Bob,Bob收到之后,使用私钥解密以便阅读内容。Bob的的其余同事即便截获了Susan发送给Bob的信件,因为没有Bob的私钥,也没法解密,从而确保数据安全。以上就是使用公钥和私钥加解密的过程演示。操作系统
多说一句,若是Bob给Susan回信,如何保证数据安全呢?他可使用Susan的公钥加密消息后发给Susan,Susan使用本身的私钥解密后阅读。因此保护好本身的私钥是多么重要的事情啊。
如今Bob决定给Pat写一份信,信件的内容不用加密,可是要保证Pat收到信件后,可以确认信件的确是Bob发出的,而不是别人冒充Bob发给Pat的,应该若是作呢?
Bob将信件经过hash软件计算一下,获得一串消息摘要(有的文章也称之为“hash值”)。这一过程可以保证2点:一、过程不可逆。即不能经过消息摘计算出信件的内容。二、消息摘要不会重复。即若是信件有任何改动,再次hash计算出的消息摘要必定不会和改动前的消息摘要一致。
而后,Bob使用本身的私钥,将消息摘要加密。加密后的结果,咱们称之为“数字签名”。如今,Bob就能够将信件连同数字签名一块儿发给Pat。
Pat收到信件之后,会作2件事:一、使用Bob的公钥将数字签名解密,若是顺利解密,说明的确是Bob签发的数字签名,不是别人签发的,由于Bob的私钥没有公开。二、Pat使用hash软件对信件再次进行hash计算,和解密数字签名获得的消息摘要对比,若是一致,说明信件没有篡改,确实是Bob发出的。这就是数字签名的过程。它可以确保签名人发出的消息不被篡改,也能证实的确是签名人发出的消息。
ok,一切看上去是那么的完美,使用公钥私钥,即能加解密消息,又能够数字签名。说了那么多,尚未提到文章的主题----数字证书(不要和数字签名搞混了)。
先来作一道CISP的试题:
那类人对单位的信息安全威胁最大:a、高层领导 b、信息主管 c、安全管理员 d、心怀不满的员工
三长一短选最短,三短一长选最长,so答案就是d,也是咱们下面引入的主角,Doug,our disgruntled employee。
Doug要欺骗Pat,冒充Bob给Pat写信,他应该怎么作的?既然Bob的公钥是公开的,Doug能够冒充Bob,将他本身的公钥发给Pat,让Pat误认为收到的公钥就是Bob的,而后就能够冒充Bob给Pat发消息了(这里咱们只谈理论,不谈具体实现方式)。因此问题的核心就是,如何确保公钥不被冒充?
使用数字证书能够确保公钥不被冒充。数字证书是通过权威机构(CA)认证的公钥,经过查看数字证书,能够知道该证书是由那家权威机构签发的,证书使用人的信息,使用人的公钥。它有如下特色:
一、由专门的机构签发的数字证书才安全有效。
二、签发数字证书是收费的。
三、不会被冒充,安全可信。
四、数字证书有使用期限,过了使用期限,证书变为不可用。CA也能够在试用期内,对证书进行做废操做。
五、CA的公钥已经集成到操做系统中了。如上图。
生成数字证书的流程的以下:
一、持有人将公钥以及身份信息发送给权威机构。
二、权威机构负责对持有人的身份进行验证,确保公钥和持有人的信息准确无误。
三、权威机构使用本身私钥对持有人公钥进行数字签名,生成数字证书。
四、为了确保证书不被篡改,权威机构对数字证书进行hash计算(指纹算法),生成摘要(指纹),使用本身的私钥对摘要进行数字签名,放到数字证书中。
五、对持有人收费。
附:
几篇好的文章,对个人帮助很大,谢谢做者:
http://www.ruanyifeng.com/blog/2011/08/what_is_a_digital_signature.html
http://blog.csdn.net/ly131420/article/details/38400583