信息安全——数字签名

加解密、签名、验签、数字签名、数字证书 阅读详情

一、数字签名背景

        假定A发送一条包含认证码的消息给B,他们之间仍然可能存在争议,例如A可以否认发过该消息,B无法证明A确实发了该消息。另外B也可以伪造一个不同的消息,但声称是从A收到的。也就是说,虽然保证了信息的完整性,但无法保证信息的抗否认性。

        在现实生活中,这种情况同样存在,所以在人们的工作和生活中,许多事物的处理需要当事者签名。例如,商业合同、政府部门的文件、财务的凭证等都需要当事人的签名。签名起到确认、核准、生效和负责等多种作用。

        实际上,签名是证明当事者身份和数据真实性的一种信息,具有保证信息的真实性和完整性的功能。在传统的以书面文件为基础的事务处理中,采用书面签名的方式,如手印、签字、印章等。书面签名得到司法部门的支持和承认,具有一定的法律效力。

        在以计算机文件为基础的现代事务处理中,应采用电子形式的签名,即数字签名(digitalsignature),它是一种防止源点或终点抵赖的鉴别技术,用于防范通信双方的欺骗。

        数字签名利用公钥密码体制进行,其安全性取决于密码体制的安全程度。

        在中国,数字签名是具法律效力的,正在被普遍使用。2000 年,中华人民共和国的新《合同法》首次确认了电子合同、电子签名的法律效力。2005 年4月1日起,中国首部《电子签名法》正式实施。

二、数字签名原理

2.1、数字签名须满足的要求

        在传统文件中,手写签名长期以来被用做用户身份的证明,或表明签名者同意文件的内容。实际上,签名体现了以下几个方面的保证:

  • (1)签名是可信的。签名使文件的接收者相信签名者是慎重地在文件上签名的。
  • (2)签名是不可伪造的。签名证明是签字者而不是其他的人在文件上签字。
  • (3)签名不可重用。签名是文件的一部分,不可能将签名移动到不同的文件上。
  • (4)签名后的文件是不可变的。在文件签名以后,文件就不能改变。
  • (5)签名是不可抵赖的。签名和文件是不可分离的,签名者事后不能声称他没有签过这个文件。

        手印、签名、印章等传统的书面签名基本上满足以上条件,所以得到司法部门的支持。因为一个人不能彻底伪装自己的笔迹,同时也不能逼真地模仿其他人的笔迹,而且公安部门有专业的机构进行笔迹鉴别。公章的刻制和使用都受到法律的保护和限制,刻制完全相同的两枚印章是做不到的,因为雕刻属于金石艺术,每个雕刻师都有自己的艺术风格,和笔迹一样,要彻底伪装自己的风格和逼真模仿别人的风格是不可能的。人的指纹具有非常稳定的特性,终身不变,据专家计算,大约50亿人才会有一例相同的。

        而在计算机上进行数字签名并使这些保证能够继续有效则还存在一些问题。有人可能会考虑到将自己手写的签名扫描到计算机中,在需要签名的地方将其粘贴上去。这种方法实际是存在问题的。

        首先,计算机文件易于复制,即使某人的签名难以伪造,但是将有效的签名从一个文件剪辑和粘贴到另一个文件是很容易的。这就使这种签名失去了意义。

        其次,文件在签名后也易于修改,并且不会留下任何修改的痕迹。

        所以,简单扫描手写签名是不能满足要求的。目前,人们对数字签名的要求是:要保证能够验证作者及其签名的日期时间;必须能够认证签名时刻的内容;签名必须能够由第三方验证,以解决争议。

根据这些特征,为了方便使用,更进一步的要求如下:

  • (1)依赖性:签名的产生必须依赖于被签名的信息。
  • (2)唯一性:签名必须使用某些对发送者来说是唯一的信息,以防止双方的伪造与否认。
  • (3)可验性:必须相对容易识别和验证该数字签名。
  • (4)抗伪造:伪造该数字签名在计算上是不可行的,根据一个已有的数字签名构造消息是不可行的;对一个给定消息伪造数字签名是不可行的。
  • (5)可用性:在存储器中保存-一个数字签名副本是现实可行的。

        人们利用公钥密码体制产生数字签名。用户用自己的私钥对原始数据的散列值进行加密,所得的数据即为数字签名。信息接收者使用信息发送者的公钥对附在原始信息后的数字签名进行解密后获得散列值,并通过与自已收到的原始数据产生的散列值对照,便可确认原始信息是否被篡改。这样就保证了消息来源的真实性和数据传输的完整性。

        有几种公钥算法都能用做数字签名,这些公钥算法的特点是不仅用公钥加密的消息可以用私钥解密,而且反过来用私钥加密的消息也可以用公钥解密。

2.2、签名方法

        从协议上区分,数字签名可以分为直接数字签名方法和仲裁数字签名方法。

2.2.1、直接数字签名

        先来看直接数字签名方法,其基本协议非常简单:

  • (1) A用它的私钥对文件加密,从而对文件签名。
  • (2) A将签名后的文件传给B。
  • (3)B用A的公钥解密文件,如果能够顺利地解出明文,则表示签名验证成功。

        一方面,保证了文件在签名后不会被修改;另一方面,A不可否认自己对这份文件的义务和责任。

        在实际过程中,这种做法的效率太低了。假设A传送的文件非常庞大,那么对整份文

        件进行加密就太浪费时间和资源了。并且有时候文件内容并不需要保密,例如政府的公告等。所以,数字签名协议常常与散列函数一起使用。A并不对整个文件签名,而是只对文件的散列值签名。数字签名协议原理如图所示。

        在下面的协议中,散列函数和数字签名算法是事先协商好的:

  • (1)A产生文件的散列值。
  • (2)A用她的私钥对散列值加密,以此表示对文件的签名。
  • (3)A将文件和签名送给B。
  • (4)B用A发送的文件产生文件的散列值,同时用A的公钥对签名的散列值解密。如果签名的散列值与自己产生的散列值匹配,则签名是有效的。

        采用这种方式,既保证了信息的完整性,又保证了信息的抗否认性,如果还需要保证信息的保密性,则可以加入对称或者非对称的加密方式。

        由于两个不同的文件具有相同的160位散列值的概率为1/2^160 ,所以在这个协议中使用散列函数的签名与使用文件的签名是一样安全的。

        以上的协议属于直接数字签名,这种签名方法只牵涉通信方。它假定接收方知道发送方的公钥。签名通过使用发送方的私钥加密来产生。但这种体制有个共同的弱点:方案的有效性依赖于发送方私钥的安全性。

        如果发送方随后想否认发送过某个签名消息,他可以声称用来签名的私钥丢失或被盗用,并有人伪造了他的签名。通常需要采用与私钥安全性相关的行政管理控制手段制止这种情况,但威胁依然存在。

        改进的方式:如可以要求被签名的信息包含一个时间戳(日期与时间)。但同样存在问题: A的私钥确实在时间T被窃取,敌手可以伪造A的签名及早于或等于时间T的时间戳。

为了解决直接数字签名中存在的问题,引入了仲裁者。

2.2.2、仲裁数字签名(对称密钥签名)

        从发送方A到接收方B的签名消息首先送到仲裁者S,S对消息及其签名进行一系列测试,以检查其来源和内容,然后将消息加上日期并与已被仲裁者验证通过的指示一起发给B。

        仲裁者在这一类签名模式中扮演敏感和关键的角色。所有的参与者必须极大地相信这一仲裁机制工作正常。

        首先,在协议执行以前,各方都不必有共享的信息,从而可防止共谋;其次,只要仲裁者的私钥不被泄露,任何人包括发送方都不能发送重放的消息;最后,对任何第三方(包括A)来说,X发往Y的消息都是保密的。当然,功能越齐全,付出的通信成本也越高。

三、数字签名算法

        数字签名的算法很多,应用最为广泛的三种是RSA签名、DSS签名和基于ECC密码体制的ECDSA数字签名。

3.1、几种算法简介

  1. RSA(Rivest-Shamir-Adleman): RSA算法是一种非对称加密算法,既可以用于加密数据也可以用于生成数字签名。它基于大数分解的难题,具有较高的安全性,但计算量较大。
  2. DSA(Digital Signature Algorithm): DSA是一种基于离散对数问题的数字签名算法。它较RSA算法计算量更小,适用于资源受限的环境,但在密钥生成过程中需要更长的时间。
  3. ECDSA(Elliptic Curve Digital Signature Algorithm): ECDSA是一种基于椭圆曲线密码学的数字签名算法。与RSA和DSA相比,ECDSA在相同的安全性水平下使用更短的密钥长度,计算速度更快,适用于资源有限的环境。
  4. EdDSA(Edwards-curve Digital Signature Algorithm): EdDSA是一种基于扭曲爱德华曲线密码学的数字签名算法。它继承了ECDSA的优点,并在安全性、效率和实现简洁性上有所改进。

3.2、RSA数字签名

假定RSA的公钥密码系统已经建立,若用户A要对某报文(或其他文件或数据分组)实现数字签名,并发送给B(B可能是用户,也可能是仲裁中心),则数字签名算法如下:

3.2.1、签名的实现

用户A使用自己的私钥SK对报文进行解密运算形成了签名,然后将报文和签名一起发送出去。

不过一般使用的方式是对明文的散列值进行加密。

实际上是用私钥对明文或者散列值进行解密运算的过程。注意,这里说的“解密运算”,并不是指将密文转换为明文的过程,而应该理解为一种广义的转换运算。

3.2.2、签名的验证

接收方B将接收到的签名用发送方A的公钥进行加密运算得到。同样,这里的“加密运算”也应该理解为一种广义的转换运算。如果是对散列值进行加密,用相同的散列函数处理接收到的报文得到新的散列码,若这个散列码和解密的签名相匹配,则认为签名是有效的,否则认为报文被篡改或受到攻击者欺骗。这是因为只有发送方知道自己的私钥,因此只有发送方才能产生有效的签名。

3.3、其他数字签名

另外还有一些其他特殊的签名:

3.3.1、不可否认签名

        对于不可否认签名,在得不到签名者配合的情况下其他人不能正确地对签名进行验证,从而可以防止非法复制和扩散签名者所签署的文件。这对保护软件等电子出版物的知识产权有积极意义。只有授权用户才能验证签名并得到软件开发者的服务,而非法复制者不能验证签名,从而无法获取服务。

3.3.2、盲签名

        需某个人对某数据签名,而又不能让他知道数据的内容。在无记名投票选举和数字化货币系统中往往需要这种盲签名,因此盲签名在电子商务和电子政务系统中有着广泛的应用前景。它和普通签名相比有两个特点,一个是签名者不知道所签署的数据内容,另一个是在签名被接收者泄露后,签名者不能追踪签名。

Java信息安全实战项目:数字签名与加密解密 MD5(Message-Digest Algorithm 5)是一种广泛使用的密码散列函数,它可以产生出一个128位(16字节)的散列值(hash value),用于确保信息传输完整一致。MD5算法可以被看作是文件的“指纹”,对于文件中的每一个字节,MD5都会计算出一个16字节的“指纹”。MD5的原理包括以下几个步骤:填充:首先将待散列的消息填充至长度满足64位的整数倍,填充位的最后一个字节包含原数据长度的低8位,其余填充位则为0。添加长度值。 阅读详情

相关推荐

【渗透工具】内网多级代理工具Venom详细使用教程

Venom是一款为渗透测试人员设计的使用Go开发的多级代理工具。Venom可将多个节点进行连接,然后以节点为跳板,构建多级代理。渗透测试人员可以使用Venom轻松地将网络流量代理到多层内网,并轻松地管理代理节点。

TT小子的博客 3757

《计算机系统与网络安全》第五章 消息认证与数字签名

消息认证又叫报文认证,是消息的接收者验证消息的真实性和完整性的过程与技术。真实性就是验证消息发送者他是真实的而非假冒的。也就是说假如消息的发送者声称是张三,我们要验证一下这个张三他是否是真的张三,这个又叫做信源鉴别,就是信息的源头鉴别它的真伪。另外还要验证消息的完整性,就是验证消息在传送或者存储过程当中没有被篡改,存放、乱序或者延迟等攻击。这个消息认证是防止主动攻击的重要技术,这个主动攻击主要针对真实性和完整性进行攻击,主要包括假冒,假冒某个合法的实体发送一个消息。

猫头虎技术团队:授渔优于赠鱼,兴趣引领智慧,探索之乐尤显珍贵。商务合作+:Libin9iOak ,万粉变现+:优快云WF,猫头虎承诺每年免费为100名C站创作者做账号流量诊断服务!全网搜:猫头虎技术团队,点击文章底部名片或直接私信我一切皆可谈,快找虎哥! 3215

磁栅尺的基本原理

一、磁栅尺简介 磁栅尺(Magnetic scale)是一种常见于工业自动化设备领域的线性位移测量方案,因为其耐用性强,对环境要求不高,逐渐替代了对环境要求苛刻的光学直线测量方案。 作为自动化设备领域里不多见的精密位移检测方案,磁栅尺使用广泛,尤其适用于检测行程长、测量精度要求高、工况复杂的大型机床。磁栅尺安装方便,抗干扰能力强,抗冲击性强,不易受到振动、粉尘、水垢、油污等影响,耐高温和耐低温性能也较为突出。 二、磁栅尺基本组成与原理 磁栅尺主要由两个部分组成,磁尺和读磁头。 磁尺 磁尺是磁栅尺

Luckboy_shy的博客 1万+

数字签名和数字证书使用详解

需要注意的是,这个例子中使用的密钥库文件和密码都是保存在代码中的,实际使用中应该使用更安全的方式来保存密钥库和密码。需要注意的是,这个例子中使用的密钥库文件和密码都是保存在代码中的,实际使用中应该使用更安全的方式来保存密钥库和密码。以下是使用Java进行数字签名的实例,该实例使用了Java标准库中的java.security包和java.util.Base64包,签名过程包括:生成密钥对、使用私钥签名数据,验证过程包括:使用公钥验证签名。然后,它将数字签名添加到请求头中,并发送 HTTP POST 请求。

swadian2008的博客 1万+

pyinstaller+scrapy打包出现错误:OSError: could not get source code

错误如下: Traceback (most recent call last): File "scrapy\utils\defer.py", line 55, in mustbe_deferred File "scrapy\core\spidermw.py", line 60, in process_spider_input File "scrapy\core\scraper.py", line 152, in call_spider File "scrapy\utils\misc.py

kin的博客 1759

【Qt】QByteArray详解

对象共享同一份数据,直到修改时才进行深拷贝,以节省内存和计算资源。:可存储任意二进制数据(如图片、音频、协议数据),不依赖字符编码。与编码(如 UTF-8、Latin-1)之间的桥梁(例如。• 补零规则确保奇数字符串能正确解析,避免数据截断。:内部自动分配和释放内存,无需手动管理。将输入的字符串视为十六进制编码数据,返回实际数据长度(不包括结尾的。的输入必须是有效的十六进制字符(,但针对 Qt 框架做了优化。:处理加密后的二进制结果(如。• 如果输入字符串长度为奇数,• 若输入长度为奇数,自动在。

CSUC的博客 1598

【0513】数字签名

数字签名 签名将信息和拥有信息的实体可信地联系起来。 数字签名的目的同样是保证信息的完整性和真实性,即消息内容没有被篡改,而且签名也没有被篡改,消息只能始发于所声称的发送方。 定义: 数字签名是一种鉴别机制,它可以使一个报文附加上一段起到签名作用的代码,这个代码可以保证报文的来源和完整性。 数字签名应该具有的特性: (1)签名是不可伪造的; (2)签名是不可抵赖的; (3)签名是可信的,任何人都可以验证签名的有效性; (4)签名是不可复制的,对一个消息的签名不能通过复制变成另一个消息的签名; (5)签名的消

weixin_44164249的博客 1870

T265摄像头插着开机后,需要重新插拔才能正常启动

T265摄像头插着开机后,需要重新插拔才能正常启动

qq_35598561的博客 1079

数字签名,数字证书,证书链原理(图文详解)

数字证书:数字证书是用来认证公钥持有者身份合法性的电子文档,以防止第三方冒充行为。由CA证书授权中心颁发。 数字签名:谈及数字签名,就如小时候老师叫把卷子或者作业带回去给家长签字。只不过数字签名非物理用笔签名,是通过计算机电子签名,这过程就涉及身份认证和信息加密。

qq_38425803的博客 6677

【从零搭建到实战运行】基于PX4-1.13与XTDrone的FAST-LIVO2 Gazebo仿真全流程解析

本文详细解析了从零开始搭建基于PX4-1.13飞控、XTDrone仿真框架与Gazebo的FAST-LIVO2无人机仿真平台的全流程。内容涵盖环境配置、Livox雷达插件定制、算法部署与参数调试,旨在帮助开发者快速构建完整的激光-惯性-视觉SLAM仿真环境,并解决集成过程中的常见问题。

weixin_29218509的博客 520

【SpringBoot香樟转转】debugDay01

在学黑马程序员的苍穹外卖项目,刚开始学,想用maven编译一下代码,结果报错,找不到符号。本着先理解原则,看着能找到这个变量呀。

m0_72696598的博客 1737

数字签名信息安全

想知道更多关于区块链技术知识,请百度【链客区块链技术问答社区】 链客,有问必答!! 数字签名在信息安全,包括身份认证、数据完整性、不可否认性以及匿名性有着重要应用,是现代密码学的重要分支。签名隶属于公钥密码学。签名过程:发送方用自己的私钥对发送信息进行所谓的加密运算,得到一个hash值,该hash值就是签名。使用时需要将签名和信息发给接收...

weixin_34067102的博客 459

【模型】OpenClaw 接入阿里云永久免费模型方案

Qwen2.5-7B-Instruct 模型为例。

海兰 4472

汽车信息安全--数字签名

数字签名是通过非对称加密和数字摘要技术实现的电子签名手段,用于验证消息发送者身份并确保信息完整性。它解决了传统加密无法防止发送者抵赖的问题,具有不可伪造、不可修改和不可抵赖三大特性。我国2005年颁布的《电子签名法》已赋予其法律效力。数字签名技术包含签名生成和验证两个关键过程,广泛应用于合同签署等需要身份认证的重要场景,是确保电子文件真实性的核心技术。

2401_86537184的博客 757

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

数字签名:信息安全的新屏障

数字签名是一种基于公钥密码学的加密技术,主要用于验证电子文档的真实性和完整性。数字签名具有以下特点:1. 不可伪造性:数字签名基于私钥生成,只有私钥持有者才能生成有效的签名。2. 不可抵赖性:签名者无法否认其签名行为,因为签名与公钥相对应,公钥可以公开验证。3. 可验证性:任何人都可以使用签名者的公钥对签名进行验证,确保数据的完整性和真实性。4. 抗篡改性:一旦数据被篡改,数字签名将失效,从而保证数据的完整性。

jiamisoft的博客 775

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

信息安全: 数字签名signature

数字签名是一种用于验证数字信息(如文件、消息、交易等)真实性、完整性和发送者身份的技术,本质上是传统手写签名在数字世界的安全替代方案。它通过密码学手段,确保信息在传输或存储过程中未被篡改,且能证明发送者的身份(防止抵赖),它的核心功能就两个字:认证。

weiweiliude2的专栏 630

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

数字签名在信息安全是什么?

List item 1数字签名在信息安全,包括身份认证、数据完整性、不可否认性以及匿名性有着重要应用,是现代密码学的重要分支。签名隶属于公钥密码学。签名过程:发送方用自己的私钥对发送信息进行所谓的加密运算,得到一个hash值,该hash值就是签名。使用时需要将签名和信息发给接收方。接受者用发送方公开的公钥和接收到的信息对签名进行验证,通过认证,说明接收到的信息是完整的、准确的,否则说明消息来源不对。 简单描述数字签名:私钥签名;公钥验签。 1 普通签名 签名只是用一把私钥,并且是发送方自己进行地签名动..

MachineGunJoe666 2146

信息安全工程师(19)HASH函数与数字签名

信息安全工程师——HASH函数与数字签名篇

m0_73399576的博客 1261

信息安全基础--加解密和数字签名

信息安全已经是这个时代强烈注重的问题,所以,不管时个人还是企业,在设计自己的系统时,一定会加上信息安全的机制。 先说说基础: 1.什么是对称加密? 简言之,对于消息的加密和解密,都是用同样的密钥,密钥越大,加密越强,但是加解密过程就越慢。 2.什么是非对称加密? 非对称加密,有一对密钥(公钥和私钥),一个密钥加密,另一个密钥就可以解密。因为公钥是发给很多人的,若用来解密就会不安全,即遵从

younger的博客 960

数字签名:保障信息安全的重要一环

数字签名的安全性取决于多个因素,包括密码学方法的强度、密钥管理的安全性、数字证书的可靠性等。近年来,随着量子计算技术的发展,一些新的密码学方法不断涌现,例如基于量子密钥分发的数字签名方案。针对这些问题,需要采取一系列措施,例如加强密钥管理的安全措施、研发更高效的数字签名算法、建立完善的信任体系等。同时,也需要加强研究和创新,不断提高数字签名的安全性和效率,以应对日益复杂的信息安全挑战。数字签名,一种在信息安全领域中至关重要的技术,它通过使用密码学方法,验证信息的完整性和来源。

SafePloy_SH的博客 316

信息安全技术之03数字签名与认证测试卷

信息安全技术之03数字签名与认证测试卷 一、单选题 二、多选题 叮嘟!这里是小啊呜的学习课程资料整理。好记性不如烂笔头,今天也是努力进步的一天。一起加油进阶吧!

小啊呜的博客 3708
上一篇: Spring-5.0.x源码下载及本地环境搭建
下一篇: 信息安全——密钥管理
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值