| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 网络协议 -> 数字签名与数字信封 -> 正文阅读 |
|
[网络协议]数字签名与数字信封 |
目录 1. 什么是数字签名?数字签名是电子签名技术的一种。 大多数应用场景提到的电子签名,实际指的就是数字签名。由于保持技术中立性是制订法律的一个基本原则,基于公钥密码理论的数字签名技术未必是可靠电子签名的唯一技术,因此法律上会使用更广义的概念以适应今后的技术发展。 数字签名背后的思想是模仿传统手写签名,该思想是能够以某种方式"签署"一份数字文档,该签名具有物理签名一样的法律效力。与物理世界中的手写签名相对应,数字签名可以理解为数字世界的电子签名。 简单地说,就是实现签名人身份真实、签署后的文档不可修改、签署行为不可抵赖。数字签名技术是目前最符合可靠电子签名要求、应用最普遍、可操作性最强的技术之一。 2. 数字签名的主要功能数字签名目前只能使用非对称密码算法实现。 数字签名的主要功能包括:
由此可知,数字签名的主要作用:保证信息传输的完整性、发送者的身份认证、 防止交易中的抵赖发生 3. 数字签名和验签的原理3.1 数字签名和验签的步骤流程
整个签名和验签流程如下图所示: 签名人的数字证书是由证书颁发机构(CA)验证申请者真实身份后颁发,证书绑定申请者真实身份信息,可验证签名者身份真实性;数字签名后,数据一旦被修改,数字签名立即失效,接受方即可发现签署后的数据已经被修改,无法在不被发现的情况下修改数据;证书私钥由证书持有者在自己本地生成的,由证书持有者自己负责保管,可确定为签名人专有,签署行为不可抵赖。 3.2 数字签名的制作和验证过程
3.3 RSA算法签名验签过程RSA签名: 明文加上摘要算法运算得到摘要值,然后用摘要值加上签名算法在加上RSA私钥做非对称加密运算得到签名结果。 RSA验签: 明文加上摘要算法运算得到摘要值,然后用RSA公钥加签名算法对签名结果做非对称解密得到摘要值,最后对比两个摘要值的一致性。 3.4?SM2算法签名验签过程SM2签名: 明文加上摘要算法和SM2公钥运算得到摘要值,然后摘要值加上签名算法和SM2私钥做非对称加密得到签名结果。 SM2验签: 明文加上摘要算法和SM2公钥运算得到摘要值,然后摘要值加上签名算法和SM2公钥做非对称加密得到签名结果,最后比较两个签名结果得一致性。 4. 签名分类4.1 PKCS #1签名
PKCS #1 规范规定了使用RSA算法进行签名时摘要格式。摘要格式用ASN.1描述: DigestInfo::=SEQUENCE{ ? ? ? ? digestAlgorithm DigestAlgorithm, ? ? ? ? digest? ?OCTET STRING } 4.2?PKCS #7签名
????????将原文数据、签名证书、签名证书算法、签名数据封装成P7签名格式的数据结构。 ????????因此,在验签的时候只提供签名结果就可以。
????????将签名证书、签名算法、签名数据封装成签名数据。 ????????注:没有原文信息,因此,在验签的时候不光提供签名结果,还要提供明文。 PKCS #7 和RFC2315 规范规定了使用数字签名消息的具体封装格式。数字签名消息封装格式用ASN.1描述: SignedData::=SEQUENCE{ ? ? ? ?version Version, ????????digestAlgorithm DigestAlgorithmIdentifiers, ? ? ? ? contentInfo ContentInfo, ? ? ? ? certificates[0] IMPLICIT ExtndedCertificatesAndCertificates OPTIONAL, ? ? ? ? crls[0] IMPLICIT CertificatesRevocationLists?OPTIONAL, ? ? ? ? signerInfos SignerInfos } 4.3 算法分类
5. 数字信封5.1 什么是数字信封?对称密码算法的优点是加解密运算非常快,适合处理大批量数据,但其密钥的分发与管理比较复杂。而非对称密钥算法的特点是公钥与私钥分离,非常适合密钥的分发与管理;但其运行速度不快,又不适合处理大批量数据。 如果将对称密码算法和非对称密码算法的优点结合起来,则既能处理大批量数据,又能简化密钥分发与管理,于是数字信封机制应运而生。 数字信封并不需要分发和管理对称密钥,而是随机产生对称密钥,采用对称密码算法对大批量数据进行加密,并采用非对称密钥算法对该对称密钥进行加密;解密时,先用非对称密码算法解密后获得对称密钥,然后再使用对称密码算法解密密文数据后获得数据明文。 数字信封的功能类似于普通信封,采用对称密码算法对消息进行加密类似于信纸上的内容,采用非对称密码算法对对称密钥加密类似于外层的信封,信封将信纸包装起来,保证了消息的安全性。 对上述进行总结,我们知道数字信封是将对称密钥通过非对称加密(即:有公钥和私钥两个)的结果分发对称密钥的方法。数字信封是实现信息完整性验证的技术。 5.2?数字信封机制的具体流程数字信封机制的具体流程如下:
数字信封的生成和解开过程如下图所示: ?PKCS #7 规范定义了数字信封消息的具体封装格式。数字信封消息封装格式用ASN.1描述如下: EnvelopeData::=SEQUENCE{ ? ? ? ?version Version, ????????recipientInfos RecipientInfos, ? ? ? ? encryptedContentInfo EncryptedContentInfo } ?RecipientInfos::=SET OF RecipientInfos EncryptedContentInfo::=SEQUENCE{ ? ? ? ? contentType?ContentType, ????????contentEncryptionAlgorithm ContentEncryptionAlgorithmIdentifier, ? ? ? ? encryptedContent[0] IMPLICIT EncryptedContent OPTIONAL } 5.3 签名 、数字信封、证书的关系三者没有任何的关系!!它们三个的作用是不同的。
他们作用不同,所以没有必然的联系!!! |
|
网络协议 最新文章 |
使用Easyswoole 搭建简单的Websoket服务 |
常见的数据通信方式有哪些? |
Openssl 1024bit RSA算法---公私钥获取和处 |
HTTPS协议的密钥交换流程 |
《小白WEB安全入门》03. 漏洞篇 |
HttpRunner4.x 安装与使用 |
2021-07-04 |
手写RPC学习笔记 |
K8S高可用版本部署 |
mySQL计算IP地址范围 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/25 20:26:30- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |