欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

数字签名 数字证书 博客分类: 其他javajava 算法 java数字签名证书加密 

程序员文章站 2024-03-25 21:14:10
...

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


                              数字签名 数字证书
            
    
    博客分类: 其他javajava 算法 java数字签名证书加密 

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

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

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

数字签名 数字证书
            
    
    博客分类: 其他javajava 算法 java数字签名证书加密 
Bob签署一个文件的时候,Bob的软件将把该文件压缩(crunch down)成几行,这个处理过程被称作hashing。这几行数据被称作信息摘要。(这个信息摘要不可能被还原到最初的数据。)

数字签名 数字证书
            
    
    博客分类: 其他javajava 算法 java数字签名证书加密 
Bob的程序用Bob的私钥加密这个信息摘要,加密后的结果就是数字签名。

数字签名 数字证书
            
    
    博客分类: 其他javajava 算法 java数字签名证书加密 
最后Bob的程序把数字签名附到文档上,这样所有被Hash的数据就被签署了。

数字签名 数字证书
            
    
    博客分类: 其他javajava 算法 java数字签名证书加密 
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制作一个证书。

数字签名 数字证书
            
    
    博客分类: 其他javajava 算法 java数字签名证书加密 
现在Bob的同事可以用认证中心的公钥,从证书中拿到Bob的公钥,以确保他的公钥确实属于他。事实上Bob的公司没有人会认同一个没有证书的签名。如果私钥被泄露或者不在需要,Susan可以废除这个证书。

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

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

  • 数字签名 数字证书
            
    
    博客分类: 其他javajava 算法 java数字签名证书加密 
  • 大小: 26.4 KB
  • 数字签名 数字证书
            
    
    博客分类: 其他javajava 算法 java数字签名证书加密 
  • 大小: 70.5 KB
  • 数字签名 数字证书
            
    
    博客分类: 其他javajava 算法 java数字签名证书加密 
  • 大小: 200.1 KB
  • 数字签名 数字证书
            
    
    博客分类: 其他javajava 算法 java数字签名证书加密 
  • 大小: 59.6 KB
  • 数字签名 数字证书
            
    
    博客分类: 其他javajava 算法 java数字签名证书加密 
  • 大小: 24.2 KB
  • 数字签名 数字证书
            
    
    博客分类: 其他javajava 算法 java数字签名证书加密 
  • 大小: 57.7 KB
  • 数字签名 数字证书
            
    
    博客分类: 其他javajava 算法 java数字签名证书加密 
  • 大小: 75.8 KB
  • 数字签名 数字证书
            
    
    博客分类: 其他javajava 算法 java数字签名证书加密 
  • 大小: 102.2 KB