| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 网络协议 -> 数字签名技术 -> 正文阅读 |
|
[网络协议]数字签名技术 |
目录 一、数字签名数字签名(又称公钥数字签名)是只有信息的发送者才能产生的别人无法伪造的一段数字串,这段数字串同时也是对信息的发送者发送信息真实性的一个有效证明。它是一种类似写在纸上的普通的物理签名,但是在使用了公钥加密领域的技术来实现的,用于鉴别数字信息的方法。一套数字签名通常定义两种互补的运算,一个用于签名,另一个用于验证。数字签名是非对称密钥加密技术与数字摘要技术的应用。 所谓数字签名就是附加在数据单元上的一些数据,或是对数据单元所作的密码变换。这种数据或变换允许数据单元的接收者用以确认数据单元的来源和数据单元的完整性并保护数据,防止被人(例如接收者)进行伪造。它是对电子形式的消息进行签名的一种方法,一个签名消息能在一个通信网络中传输。基于公钥密码体制和私钥密码体制都可以获得数字签名,主要是基于公钥密码体制的数字签名。包括普通数字签名和特殊数字签名。普通数字签名算法有RSA、ElGamal、Fiat-Shamir、Guillou- Quisquarter、Schnorr、Ong-Schnorr-Shamir数字签名算法、Des/DSA,椭圆曲线数字签名算法和有限自动机数字签名算法等。特殊数字签名有盲签名、代理签名、群签名、不可否认签名、公平盲签名、门限签名、具有消息恢复功能的签名等,它与具体应用环境密切相关。 二、数字签名技术
数字签名技术大多基于哈希摘要和非对称密钥加密体制来实现。 2.1、基于哈希算法的数字签名与验证哈希函数是一种"压缩函数",利用哈希函数可以把任意长度的输入经由散列函数算法变换成固定长度的输出,该输出的哈希值就是消息摘要,也称数字摘要。 在正式的数字签名中,发送方首先对发送文件采用哈希算法,得到一个固定长度的消息摘要( Message Digest); 再用自己的私钥对消息摘要进行签名,形成发送方的数字签名。 数字签名将作为队件和原文一起发送给接收方;接收方首先用发送方的公钥对数字签名进行解密得到发送方的数字摘要,然后用相同的哈希函数对原文进行哈希计算,得到一个新的消息摘要,最后将消息摘要与收到的消息摘要做比较。具体过程如下图所示?: ? 2.2、基于非对称密钥加密体制的数字签名与验证目前已有多种实现数字签名的算法,但是采用公钥算法要比采用对称加密算法更容易实现。 为了进行签名,A使用其私钥SKA对报文X进行D运算,如下图。A把经过D运算得到的密文传送给B,B为了核实签名,用A的公钥进行E运算,还原出明文X。 ? ?除A外没有别人持有A的私钥,所以除A外没有别人能够产生密文DSKA(X)。这样B就相信报文是A签名发送的。以此实现报文鉴别。 其他人如果篡改了报文,但由于无法得到A的私钥SKA来对X进行加密,那么B对篡改的报文进行解密后,就会得到不可读的报文,以此判断报文的完整性。 若A要抵赖曾发送过报文给B,B可以X及DSKA(X)出示给进行公证的第三方,第三方就很容易通过PKA去证实A确实发送X给了B,以此判断不可否认性。 这三项功能的关键点在于:第三方无法持有A的私钥SKA。 上述过程仅对报文进行了数字签名,未对报文进行加密。因为截获到密文DSKA(X)并知道发送者的身份时,可通过查阅手册即可获得发送者的公钥PKA,因此可以知道报文的内容。 下图可同时实现数字签名和加密传输。图中SKA和SKB分别代表A和B的私钥,PKA和PKB分别代表A和B的公钥。 ? 三、数字签名的作用1、防冒充(伪造):私有密钥只有签名者自己知道,所以其他人不可能构造出正确的。? 2、鉴别身份:由于传统的手工签名一般是双方直接见面的,身份自可一清二楚。在网络环境中,接收方必须能够鉴别发送方所宣称的身份。? 3、防篡改(防破坏信息的完整性):签名与原有文件已经形成了一个混合的整体数据,不可能被篡改,从而保证了数据的完整性。 4、防重放:采用了对签名报文添加流水号、时间戳等技术,可以防止重放攻击。 5、防抵赖。在数字签名体制中,要求接收者返回一个自己的签名表示收到的报文,给对方或者第三方或者引入第三方机制。如此操作,双方均不可抵赖。 6、机密性(保密性)。手工签字的文件(如同文本)是不具备保密性的,文件一旦丢失,其中的信息就极可能泄露。可以对数字签名的报文进行加密。 |
|
网络协议 最新文章 |
使用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/26 6:30:05- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |