数字签名的理解:
1.张三有两把钥匙,一把是公钥,另一把是私钥。
2.张三把公钥送给他的朋友们----李四、王五、赵六----每人一把。
3.李四给张三写信,写完后用张三的公钥加密,达到保密的效果。
4.张三收信后,用私钥解密,看到信件内容。
5.张三给李四回信,写完后用Hash函数,生成信件的摘要(digest)。
6.张三使用私钥,对这个摘要加密,生成"数字签名"(signature)。
7.张三将这个签名,附在信件下面,一起发给李四。
8.李四收信后,取下数字签名,用张三的公钥解密,得到信件的摘要。由此证明,这封信确实是张三发出的。
9.李四再对信件本身使用Hash函数,将得到的结果,与上一步得到的摘要进行对比。如果两者一致,就证明这封信未被修改过。
数字签名的缺陷:
王五想欺骗李四,他偷偷使用了李四的电脑,用自己的公钥换走了张三的公钥。因此,他就可以冒充张三,写信给李四。
解决的办法:数字证书
1.李四发现,自己无法确定公钥是否真的属于张三。她想到了一个办法,要求张三去找"证书中心"(certificate authority,简称CA),为公钥做认证。证书中心用自己的私钥,对张三的公钥和一些相关信息一起加密,生成"数字证书"(Digital Certificate)。
2.张三拿到数字证书以后,就可以放心了。以后再给李四写信,只要在签名的同时,再附上数字证书就行了。
3.李四收信后,用CA的公钥解开数字证书,(检查证书的签名,检查证书的主题 是否为张三的,这样就能相信公钥就是张三的公钥了)
就可以拿到张三的真实的公钥了,然后就能证明"数字签名"是否真的是张三签的。
王五再想写信给李四时,直接冒充张三,使用张三的证书显然不行了,因为他没有张三的私钥,写信内容无法签名验证通过。
注意:
CA是负责签发证书、认证证书、管理已颁发证书的机关。它要制定政策和具体步骤来验证、识别用户身份,并对用户证书进行签名,以确保证书持有者的身份和公钥的拥有权。
如果用户想得到一份属于自己的证书,他应先向 CA 提出申请。在 CA 判明申请者的身份后,便为他分配一个公钥,并且 CA 将该公钥与申请者的身份信息绑在一起,并为之签字后,便形成证书发给申请者。 如果一个用户想鉴别另一个证书的真伪,他就用 CA 的公钥对那个证书上的签字进行验证,一旦验证通过,该证书就被认为是有效的。
=================银行系统数字签名使用
有三种证书:建行CA认证中心的根证书、建行网银中心的服务器证书,每 个网上银行用户在浏览器端的客户证书。有了这三个证书,
就可以在浏览器与建行网银服务器之间建立起SSL连接。这样,您的浏览器与建行网银服务器之间就有 了一个安全的加密信道。
您的证书可以让与您通讯的对方 验证您的身份(您确实是您所声称的那个您),同样,您也可以用与您通讯的对方的证书 验证他的身份
(他确实是他所声称的那个他),而这一验证过程是由系统自动完成的。
银行系统一般做法是:
1. 用对方的公钥加密数据,对方收到后用自己的私钥解密;
2. 用你自己的私钥签名数据,对方收到后用你自己的公钥验证签名。
网银在传递数据过程中要把”传递的数据“用自己的私钥进行签名,而且要把”传递的数据“用公钥进行加密
客户端有自己的私钥和一个数字证书,其中私钥和服务器中的公钥成对,而且数字证书中的公钥和服务器上的私钥成对匹配.
过程如下:
(1)客户A准备好要传送的数字信息(明文)。
(2)客户A对数字信息进行哈希(hash)运算,得到一个信息摘要。
3)客户A用自己的私钥(SecretKey)对信息摘要进行加密得到客户A的数字签名,并将其附在数字信息上。
4)客户A随机产生一个加密密钥(DES密钥),并用此密钥对要发送的信息进行加密,形成密文。
5)客户A用双方共有的公钥(PublicKey)对刚才随机产生的加密密钥进行加密,将加密后的DES密钥连同密文一起传送给银行B。
6)银行B收到客户A传送过来的密文和加过密的DES密钥,先用自己的私钥(SecretKey)对加密的DES密钥进行解密,得到DES密钥。
7)银行B然后用DES密钥对收到的密文进行解密,得到明文的数字信息,然后将DES密钥抛弃(即DES密钥作废)。
8)银行B用双方共有的公钥(PublicKey)对客户A的数字签名进行解密,得到信息摘要。银行B用相同的hash算法对收到的明文再进行一次hash运算,得到一个新的信息摘要。
9)银行B将收到的信息摘要和新产生的信息摘要进行比较,如果一致,说明收到的信息没有被修改过。
分享到:
相关推荐
首先,我们要理解什么是代码签名数字证书。这是一种由权威的证书颁发机构(CA)颁发的证书,用于验证软件的开发者身份和代码的完整性。它包含了开发者的信息、公钥以及CA的数字签名。当用户下载或安装已签名的软件时...
在IT安全领域,数字签名和数字证书是两个关键概念,它们在确保数据的完整性和身份验证方面发挥着至关重要的作用。本文将详细解释这两个概念,以及它们之间的关系,并结合C#编程语言,探讨如何实现证书和签名功能。 ...
### 数字签名与数字证书详解 #### 一、数字签名概览 数字签名是一种用于验证电子文档完整性和...数字签名确保了信息的真实性和完整性,而数字证书则为数字签名提供了信任基础,共同构成了现代互联网安全体系的基石。
《看图片 读故事:轻松理解数字签名和数字证书》一文通过生动的故事和直观的图像,深入浅出地解析了数字签名与数字证书的概念及其工作原理,为读者提供了清晰的思维导图,帮助理解这一复杂的IT安全领域知识。...
首先,我们需要理解什么是数字签名。数字签名并非我们日常生活中手写的签名,而是通过一种加密算法,使用私钥对数据进行的一种特殊标记。这个过程类似于物理世界中的印章,但具有更高的安全性。在C或C++编程中,开发...
在IT行业中,数字证书签名和打包是确保软件安全和可靠性的关键步骤。这些技术主要用于验证软件作者的身份,防止恶意代码篡改,并确保用户...对于任何在Windows平台上发布软件的人来说,理解和掌握这些技术至关重要。
在IT领域,数字证书和数字签名是网络安全的重要组成部分,它们为网络通信提供了身份验证和数据完整性保障。本文将深入探讨这两个概念以及如何实现它们。首先,我们从标题“数字证书及其简单数字签名的实现”出发,...
在探讨公钥私钥加密解密、数字证书以及数字签名之前,我们需要先理解几个核心概念。 **1. 密钥对:** - 在非对称加密技术中,存在两种密钥——私钥和公钥。私钥由密钥对的所有者持有且必须保密,而公钥则是由密钥...
在IT领域,加密、RSA数字签名以及数字证书是网络安全中至关重要的概念,它们共同构建了互联网上安全通信的基础。下面将详细阐述这些知识点,并结合"EncryptMethod"这一压缩包文件中的可能内容进行分析。 首先,加密...
无论是个人用户还是企业,都必须对这些基本概念有深刻的理解和掌握,以便在日益复杂的网络环境中保护好自己的信息安全。随着技术的不断进步和安全威胁的不断演变,对这些核心概念的持续研究和应用将是信息安全领域...
这份"Java 数字签名、数字证书生成源码"的压缩包提供了实现这些功能的代码示例,对于理解和应用Java安全机制非常有帮助。 数字签名是一种用于验证电子信息完整性和发送者身份的技术。它结合了非对称加密算法(如RSA...
数字签名生成.txt文件可能包含了关于如何创建和验证数字签名的步骤和示例代码。在实际应用中,数字签名不仅用于电子邮件的安全传输,还广泛应用于HTTPS协议(网站的SSL/TLS证书)、软件发布(确保软件未被篡改)以及...
实验目的旨在让学生了解 PKI 体系、用户证书申请和 CA 颁发证书过程、认证服务的安装及配置方法、使用数字证书配置安全站点的方法、使用数字证书发送签名邮件和加密邮件的方法。 一、实验目的 本实验的目的是验证...
总的来说,ZXCA自信数字证书制作工具是一个全面的解决方案,旨在帮助用户理解和应用数字证书技术,提高数据安全性和隐私保护。无论是个人还是小企业,都能从中受益,通过掌握数字证书的使用,提升网络环境下的信息...
Java 数字签名与数字证书是网络安全领域中的重要概念,它们在确保数据的完整性和来源的可信性方面扮演着关键角色。在这个"Java 数字签名、数字证书生成源码"压缩包中,包含了实现这些功能的源代码,对于理解Java安全...
### 数字签名与数字证书:理解安全通信的关键 在当今高度数字化的世界中,信息安全成为了一个不可忽视的话题。数字签名与数字证书作为确保网络通信安全的重要技术手段,它们的存在极大地提升了数据传输的安全性和...
数字签名证书是网络安全领域中...理解和正确使用数字签名证书,对于个人和组织来说,是保护自身信息安全的重要手段。在x64位系统下,遵循证书规则并启用驱动签名,能进一步增强系统的安全性,防止恶意驱动程序的侵入。
综上所述,通过对加密算法、数字摘要、数字签名、数字证书的理解以及OpenSSL的实际操作,我们可以有效地保护数据的安全性和完整性,确保在线通信的安全可靠。同时,结合HTTPS和Tomcat7等技术的应用,能够进一步增强...
SM2算法包括密钥生成、加解密和数字签名等操作。在数字证书中,SM2用于生成公钥和私钥对,公钥包含在证书中,私钥由证书持有者保管。 SM3密码杂凑算法是国密的哈希函数,类似于国际上的SHA系列算法。它将任意长度的...