`
deyimsf
  • 浏览: 67938 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

数字签名 数字证书

阅读更多

什么是数字签名
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出一个信息摘要,将这个信息摘要和签名中信息摘要对比,如果一致则证明数据没有被篡改。

  • 大小: 26.4 KB
  • 大小: 70.5 KB
  • 大小: 200.1 KB
  • 大小: 59.6 KB
  • 大小: 24.2 KB
  • 大小: 57.7 KB
  • 大小: 75.8 KB
  • 大小: 102.2 KB
分享到:
评论

相关推荐

    加密 RSA 数字签名 数字证书 实例

    在IT领域,加密、RSA数字签名以及数字证书是网络安全中至关重要的概念,它们共同构建了互联网上安全通信的基础。下面将详细阐述这些知识点,并结合"EncryptMethod"这一压缩包文件中的可能内容进行分析。 首先,加密...

    数字签名和数字证书

    在IT安全领域,数字签名和数字证书是两个关键概念,它们在确保数据的完整性和身份验证方面发挥着至关重要的作用。本文将详细解释这两个概念,以及它们之间的关系,并结合C#编程语言,探讨如何实现证书和签名功能。 ...

    数字签名数字证书工具

    用于生成数字证书、添加数字签名的工具。 免费时间戳URL: 目前列出的时间戳服务都在国外;在添加时间戳的时候,要确保的你的网络能访问国外,否则会签名不成功。 Verisign 时间戳URL: ...

    代码签名数字证书(含私钥)_过期证书_过期数字签名强制签名工具_数字签名_证书

    代码签名数字证书是软件开发和分发过程中一个关键的安全组件,尤其在确保用户信任和防止恶意软件方面。本文将深入探讨过期证书、过期数字签名的处理、强制签名工具以及数字签名证书的相关知识。 首先,我们要理解...

    代码签名数字证书(含私钥),数字签名是使用自己的私钥签名,C,C++

    代码签名数字证书在IT行业中扮演着至关重要的角色,特别是在软件开发和发布环节。它是一种用于验证软件来源真实性和完整性的安全机制。标题提到的“代码签名数字证书(含私钥)”是开发者用来签署其软件的工具,确保...

    轻松理解数字签名和数字证书

    ### 数字签名与数字证书详解 #### 一、数字签名概览 数字签名是一种用于验证电子文档完整性和来源的技术手段,常被应用于电子商务、电子政务以及其他需要确保信息安全传输的领域。数字签名通过加密技术实现,具体...

    公钥私钥加密解密数字证书数字签名详解.docx

    ### 公钥私钥加密解密、数字证书与数字签名详解 #### 一、基础知识概述 在探讨公钥私钥加密解密、数字证书以及数字签名之前,我们需要先理解几个核心概念。 **1. 密钥对:** - 在非对称加密技术中,存在两种密钥...

    数字证书签名和打包

    在IT行业中,数字证书签名和打包是确保软件安全和可靠性的关键步骤。这些技术主要用于验证软件作者的身份,防止恶意代码篡改,并确保用户下载的是未经修改的原版软件。 数字签名是一种利用公钥加密技术来验证软件或...

    数字签名证书生成器IDSignMSO

    在IT行业中,数字签名证书是确保软件安全性和完整性的关键元素。数字签名证书生成器如IDSignMSO,是开发者和软件发行者的重要工具,它能够帮助他们为自己的应用程序创建合法且可信赖的数字签名。下面我们将深入探讨...

    java数字签名(签名生成,用证书验证签名)

    "java数字签名(签名生成,用证书验证签名)" java数字签名是指使用公钥加密技术,通过证书认证和签名验证来确保数据的安全和可靠性。数字签名的生成和验证过程 涉及到证书的申请、颁发和验证等多个方面。 在数字...

    看图片 读故事:轻松理解数字签名和数字证书 pdf

    《看图片 读故事:轻松理解数字签名和数字证书》一文通过生动的故事和直观的图像,深入浅出地解析了数字签名与数字证书的概念及其工作原理,为读者提供了清晰的思维导图,帮助理解这一复杂的IT安全领域知识。...

    Java 数字签名、数字证书生成源码.zip

    Java 数字签名和数字证书是网络安全领域中的重要概念,它们在确保数据的完整性和来源的可信性方面扮演着关键角色。这份"Java 数字签名、数字证书生成源码"的压缩包提供了实现这些功能的代码示例,对于理解和应用Java...

    数字签名证书,数字签名证书是什么

    数字证书则是数字签名的载体,包含以下关键信息:证书持有者的身份信息(如名称和组织)、公钥、证书颁发机构的数字签名、证书的有效期等。当用户访问一个网站或安装一个软件时,浏览器或操作系统会检查该证书,以...

    java 国密算法实现包含SM2 SM3 SM4和数字签名、数字证书的验证

    下面将详细介绍这些算法以及它们在Java中的实现,以及如何进行数字签名和数字证书的验证。 1. **SM2算法**:SM2是一种基于椭圆曲线密码学(ECC)的公钥加密算法,用于非对称加密。它提供了密钥交换、签名和验证的...

    深入理解加密、解密、数字签名和数字证书

    "深入理解加密、解密、数字签名和数字证书" 加密、解密、数字签名和数字证书是信息安全领域的重要概念,在电子商务和网络银行等领域中尤其重要。在本文中,我们将深入探讨这些概念的定义、原理和应用。 加密和解密...

    使用数字证书进行PKCS#7数字签名

    越来越多的应用需要我们使用USB接口数字证书进行PKCS#7数字签名。本文分别介绍了使用微软CryptoAPI方式和OpenSSL Engine方式进行数字签名。特别地,提出了OpenSSL Engine简化方式,这种方式更为灵活方便易行。

    C# 证书操作,数字签名

    史上资料最全的资料,和示例程序,C#RSA证书操作,用cer,pfx证书进行RSA加解密带Makecert,exe工具,参考资料,很全,微软数字证书...我们可以使用signcode.exe和自己的"数字证书"签署自己的软件,给软件加上数字签名

    数字签名与数字证书

    ### 数字签名与数字证书:理解安全通信的关键 在当今高度数字化的世界中,信息安全成为了一个不可忽视的话题。数字签名与数字证书作为确保网络通信安全的重要技术手段,它们的存在极大地提升了数据传输的安全性和...

Global site tag (gtag.js) - Google Analytics