数字签名 数字证书


什么是数字签名
An introduction to Digital Signatures,by David Youd
原文:http://www.youdzone.com/signature.html


                             

Bob 有两个秘钥,一个叫公钥,另一个叫私钥。


任何有需要的人都可以得到Bob的公钥,但是私钥只有Bob自己持有。秘钥被用来加密信息。加密信息意味着“打乱”它,只有拥有合适秘钥的人可以读取它。其中一个可以加密数据,另一个可以解密数据。
Susan(以下展示的)能够用Bob的公钥加密信息,Bob用自己的私钥来解密这个信息。Bob的任何同事都可以看到Susan发送的信息,但是没有Bob的私钥这些数据没有任何用处。


Bob用它的私钥和适合的程序,可以把他的数字签名附到文件和其他数据上。
数字签名就像Bob附到数据上的“印章”,能够唯一标示Bob而且很难伪造。另外,签名能够保证对数据的任何修改都可以发现。


Bob签署一个文件的时候,Bob的软件将把该文件压缩(crunch down)成几行,这个处理过程被称作hashing。这几行数据被称作信息摘要。(这个信息摘要不可能被还原到最初的数据。)


Bob的程序用Bob的私钥加密这个信息摘要,加密后的结果就是数字签名。


最后Bob的程序把数字签名附到文档上,这样所有被Hash的数据就被签署了。


Bob 现在把签署的文件发给Pat。
首先Pat的程序会用Bob的公钥将签名中得信息摘要解析出来,如果解析成功,那么就证明是Bob签署了这个文档,因为只有Bob拥有他自己的私钥。然后Pat的程序用同样的Hash方法将该文档的数据进行Hash,得出一个信息摘要,如果这个信息摘要和从签名中解析出得信息摘要相同,那么Pat就知道Bob签署的数据没有被篡改。


情况变得复杂了…

Doug(小伙子心情有点不爽)想要欺骗Pat。Doug发送给Pat一段签署的信息和一个看似是Bob得公钥,Pat是不知情的,他会把Doug发给他的公钥当成是Bob的公钥,然后进行通信。那么Pat怎么才能知道Bob的公钥是真的呢?

碰巧的是Susan在公司的证书认证中心工作,Susan可以用Bob的公钥和Bob的一些个人信息为Bob制作一个证书。


现在Bob的同事可以用认证中心的公钥,从证书中拿到Bob的公钥,以确保他的公钥确实属于他。事实上Bob的公司没有人会认同一个没有证书的签名。如果私钥被泄露或者不在需要,Susan可以废除这个证书。

假设,Bob给Pat发送了一个签署文件,如果要检验文档上的签名,Pat的程序首先使用Susan的(证书认证机构的)公钥检查Bob证书上的签名,如果可以成功消除证书上的加密,则证明证书是Susan颁发的。证书解除加密后,Pat的程序能够检查出Bob的信息是否和证书上的信息一致。

然后Pat的程序从证书里面拿到Bob的公钥,用它去检查Bob的签名。如果Bob的公钥能够成功解密该签名,Pat就能确认这个签名是被Bob的私钥加密的。然后用文件的内容Hash出一个信息摘要,将这个信息摘要和签名中信息摘要对比,如果一致则证明数据没有被篡改。

猜你喜欢

转载自deyimsf.iteye.com/blog/2092701