数字签名( digital signature;digitally signed, 又称 公钥数字签名 )是 只有信息的发送者才能产生的别人无法伪造的一段数字串,这段数字串同时也是对信息的发送者发送信息真实性的一个有效证明 。它是一种 类似写在纸上的普通的物理签名,但是在使用了公钥加密领域的技术来实现的,用于鉴别数字信息的方法 。一套数字签名通常定义两种 互补 的运算, 一个用于签名,另一个用于验证 。数字签名是 非对称秘钥加密 技术与 数字摘要 技术的应用。

数字签名的文件的完整性是很容易验证的(不需要骑缝章,骑缝签名,也不需要笔迹专家),而且数字签名具有不可抵赖性(不可否认性)。

简单地说, 所谓数字签名就是 附加在数据单元上的一些数据 ,或是对数据单元所作的密码变换 这种数据或变换允许数据单元的接收者用以确认 数据单元的来源 数据单元的完整性 保护数据 ,防止被人(例如接收者)进行伪造 。它是对电子形式的消息进行签名的一种方法,一个签名消息能在一个通信网络中传输。基于公钥密码体制和私钥密码体制都可以获得数字签名, 主要是基于公钥密码体制的数字签名 。包括普通数字签名和特殊数字签名。普通数字签名算法有RSA、ElGamal、Fiat-Shamir、Guillou- Quisquarter、Schnorr、Ong-Schnorr-Shamir数字签名算法、Des/DSA,椭圆曲线数字签名算法和有限自动机数字签名算法等。特殊数字签名有 盲签名、代理签名、群签名、不可否认签名、公平盲签名、门限签名、具有消息恢复功能的签名 等,它与具体应用环境密切相关。显然,数字签名的应用涉及到法律问题,美国联邦政府基于有限域上的离散对数问题制定了自己的数字签名标准(DSS)。

每个人都有一对“钥匙”(数字身份),其中一个只有她/他本人知道(私钥),另一个公开的(公钥)。 签名的时候用 私钥 (因为私钥只有本人持有,所以可以做签名的依据) ,验证签名的时候用 公钥 (因为公钥和私钥是配对使用的,所以可以作为验签的依据) 又因为任何人都可以落款声称她/他就是你,因此 公钥必须向接受者信任的人(身份认证机构)来注册(CA中心来证明他是他) 。注册后身份认证机构给你发一 数字证书 对文件签名后,你把此数字证书连同文件及签名一起发给接受者, 接受者向身份认证机构求证是否真的是用你的密钥签发的文件 (验证证书的真实性,然后从证书中获取解密算法和公钥对文件进行解密)

在通讯中使用数字签名一般具有以下特点:

公钥加密系统允许任何人在发送信息时使用公钥进行加密,接收信息时使用私钥解密。 当然,接收者不可能百分之百确信发送者的真实身份,而 只能在密码系统未被破译的情况下才有理由确信

鉴权的重要性在财务数据上表现得尤为突出。举个例子,假设一家银行将指令由它的分行传输到它的中央管理系统,指令的格式是(a,b),其中a是账户的账号,而b是账户的现有金额。这时一位远程客户可以先存入100元,观察传输的结果,然后接二连三的发送格式为(a,b)的指令。这种方法被称作重放攻击。

传输数据的双方都总希望确认消息未在传输的过程中被修改。加密使得第三方想要读取数据十分困难,然而第三方仍然能采取可行的方法在传输的过程中修改数据。一个通俗的例子就是同形攻击:回想一下,还是上面的那家银行从它的分行向它的中央管理系统发送格式为(a,b)的指令,其中a是账号,而b是账户中的金额。一个远程客户可以先存100元,然后拦截传输结果,再传输(a,b),这样他就立刻变成百万富翁了。

在密文背景下,抵赖这个词指的是不承认与消息有关的举动(即声称消息来自第三方) 消息的接收方可以通过数字签名来防止所有后续的抵赖行为,因为接收方可以出示签名给别人看来证明信息的来源。

网络的安全,主要是网络信息安全 (网络的建设就是为了传递和共享信息) ,需要取相应的安全技术措施,提供适合的安全服务。数字签名机制作为保障网络信息安全的手段之一,可以解决伪造、抵赖、冒充和篡改问题。数字签名的目的之一就是在网络环境中代替传统的手工签字与印章,有着重要作用:

(1)防冒充(伪造)。私有密钥只有签名者自己知道,所以其他人不可能构造出正确的。

(2)可鉴别身份。由于传统的手工签名一般是双方直接见面的,身份自可一清二楚。在网络环境中,接收方必须能够鉴别发送方所宣称的身份。

(3)防篡改(防破坏信息的完整性)。对于传统的手工签字,假如要签署一份200页的合同,是仅仅在合同末尾签名呢?还是对每一页都签名?如果仅在合同末尾签名,对方会不会偷换其中的几页? 而对于数字签名,签名与原有文件已经形成了一个混合的整体数据,不可能被篡改,从而保证了数据的完整性。

(4)防重放。如在日常生活中,A向B借了钱,同时写了一张借条给B,当A还钱的候,肯定要向B索回他写的借条撕毁,不然,恐怕他会再次用借条要求A还钱。 在数字签名中,如果采用了对签名报文添加 流水号、时间戳 等技术,可以防止重放攻击。

(5)防抵赖。如前所述,数字签名可以鉴别身份,不可能冒充伪造,那么,只要保好签名的报文,就好似保存好了手工签署的合同文本,也就是保留了证据,签名者就无法抵赖。那如果接收者确已收到对方的签名报文,却抵赖没有收到呢? 要预防接收者的抵赖。 在数字签名体制中,要求接收者 返回一个自己的签名表示收到的报文,给对方或者第三方或者引入第三方机制 。如此操作,双方均不可抵赖。

(6)机密性(保密性)。手工签字的文件(如同文本)是不具备保密性的,文件一旦丢失,其中的信息就极可能泄露。数字签名可以加密要签名消息的杂凑值,不具备对消息本身进行加密,当然,如果签名的报名不要求机密性,也可以不用加密。

保证信息传输的完整性、发送者的身份认证、防止交易中的抵赖发生。

数字签名技术是将 摘要信息 (摘要是为了保证原文的完整性) 用发送者的私钥加密 (对摘要加密相当于对原文加密,但是提高了加密速度) ,与原文一起传送给接收者。接收者用发送者的公钥解密被加密的摘要信息,然后用 HASH函数 对收到的原文产生一个摘要信息,与解密的摘要信息对比。如果相同,则说明收到的信息是完整的,在传输过程中没有被修改,否则说明信息被修改过,因此数字签名能够验证信息的完整性。

数字签名是个加密的过程,数字签名验证是个解密的过程。

发送报文时,发送方 用一个哈希函数从报文文本中生成报文摘要 ,然后 用发送方的私钥对这个摘要进行加密 ,这个 加密后的摘要将作为报文的数字签名和报文一起发送给接收方 ,接收方首先用与发送方一样的哈希函数从接收到的原始报文中计算出报文摘要,接着再公钥来对报文附加的数字签名进行解密,如果这两个摘要相同、那么接收方就能确认该报文是发送方的。

数字签名有两种功效:一是能确定消息确实是由发送方签名并发出来的,因为别人假冒不了发送方的签名。二是数字签名能确定消息的完整性。因为数字签名的特点是它代表了文件的特征, 文件如果发生改变,数字摘要的值也将发生变化。 不同的文件将得到不同的数字摘要。 一次数字签名涉及到一个哈希函数、接收者的公钥、发送方的私钥。

你可以对你发出的每一封电子邮件进行数字签名。这不是指落款,普遍把落款讹误成签名。

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

具有数字签名功能的个人安全邮件证书是用户证书的一种,是指单位用户收发电子邮件时采用证书机制保证安全所必须具备的证书。个人安全电子邮件证书是符合 x.509标准 的数字安全证书,结合数字证书和S/MIME技术对普通电子邮件做加密和数字签名处理,确保电子邮件内容的安全性、机密性、发件人身份确认性和不可抵赖性。 具有数字签名功能的个人安全邮件证书中包含 证书持有人的电子邮件地址、证书持有人的公钥、颁发者(CA)以及颁发者对该证书的签名 个人安全邮件证书功能的实现决定于用户使用的邮件系统是否支持相应功能。 MS Outlook 、Outlook Express、Foxmail及CA安全电子邮件系统均支持相应功能。使用个人安全邮件证书可以收发加密和数字签名邮件,保证电子邮件传输中的机密性、完整性和不可否认性,确保电子邮件通信各方身份的真实性。

数字签名算法依靠公钥加密技术来实现的。在公钥加密技术里,每一个使用者有一对密钥:一把公钥和一把私钥。 公钥可以自由发布,但私钥则秘密保存 ;还有一个要求就是要让通过公钥推算出私钥的做法不可能实现。

普通的数字签名算法包括三种算法:

1.密码生成算法;

2.标记算法;

3.验证算法。

数字签名技术大多基于哈希摘要和非对称密钥加密体制来实现。如果签名者想要对某个文件进行数字签名,他必须首先从可信的第三方机构(数字证书认证中心CA)取得私钥和公钥,这需要用到PKI技术。

1.有哈希算法的数字签名与验证

图1 数字签名及其验证

哈希函数是一种“ 压缩函数 ”,利用哈希函数可以 把任意长度的输入经由散列函数算法变换成固定长度的输出 ,该输出的哈希值就是 消息摘要 ,也称数字摘要 。在正式的数字签名中,发送方首先对发送文件采用 哈希算法 ,得到一个固定长度的消息摘要( Message Digest); 再用自己的 私钥 ( Secret key,SK)对消息摘要进行签名,形成发送方的数字签名 数字签名将作为队件和原文一起发送给接收方 ;接收方首先用发送方的 公钥 对数字签名进行解密得到发送方的数字摘要,然后用 相同的哈希函数 对原文进行哈希计算,得到一个新的消息摘要,最后将消息摘要与收到的消息摘要做比较。具体过程如图1所示。

2.基于非对称密钥加密体制的数字签名与验证

图2 基于非对称密钥的数字签名与验证

发送方首先将原文用自己的私钥加密得到数字签名,然后将原文和数字签名一起发送给接收方。接收方用发送方的公钥对数字签名进行解密,最后与原文进行比较,如图2所示数字签名是电子商务、电子政务中应用普遍、技术成熟、可操作性强的一种电子签名方法。它采用了规范化的程序和科学化的方法,用于鉴定签名人的身份以及对一项电子数据内容的认可。使用数字签名技术能够验证文件的原文在传输过程中有无变动,确保传输电子文件的完整性、真实性和不可抵赖性。

Java签名步骤

1、将applet的class文件 打包成*.jar(可以在命令行中输入jar查看帮助)

2、首先我们要生成一个keystore 否则在签名的时候报如下错误

jarsigner 错误: java.lang.RuntimeException: 密钥库装入: C:\Documents and Settings\ij2ee\.keystore (系统找不到指定的文件。). (这边的ij2ee 是当前系统用户名)

生成keystore的语句:keytool -genkey -alias 别名你可以自己写 -keyalg RSA -keystore .keystore

下面是会出现的数字签名的一些步骤操作:

  • 输入keystore密码:

  • 再次输入新密码:

  • 您的名字与姓氏是什么?

  • [Unknown]: ij2ee

  • 您的组织单位名称是什么?

  • [Unknown]: mtk

  • 您的组织名称是什么?

  • [Unknown]: mtk

  • 您所在的城市或区域名称是什么?

  • [Unknown]: suzhou

  • 您所在的州或省份名称是什么?

  • [Unknown]: jiangsu

  • 该单位的两字母国家代码是什么

  • [Unknown]: cn

  • CN=ij2ee, OU=mtk, O=mtk, L=suzhou, ST=jiangsu, C=cn 正确吗?

  • [否]: y

  • 输入的主密码

  • (如果和 keystore密码相同,按回车):

  • 这时候会在jdk的bin目录下生成 .keystore 。把这个.keystore文件移动到 C:\Documents and Settings\当前系统用户的目录下面。

3、创建一个数字证书

在命令行中输入如下指令,peakCA和peakCALib自己起名字好了,3650是有效天数,就是10年左右,在创建证书的的时候,需要填写证书的一些信息和证书对应的私钥密码。

keytool -genkey -alias peakCA -keyalg RSA -keysize 1024 -keystore peakCALib -validity 3650

4、将证书导出到证书文件中

在命令行中输入如下指令,peakCA和peakCALib任意起名字,******是输入的密码。

keytool -export -alias peakCA -file peakCA.cer -keystore peakCALib -storepass ****** -rfc

5、授权jar文件,在命令行中输入如下指令

jarsigner -keystore peakCALib myapplet.jar peakCA

office签名步骤

1、要保护文档内容的真实性,可以添加不可见的数字签名。 已签名文档的底部有“签名”按钮。

2、单击“文件”选项卡。

3、单击“信息”。

4、在“权限”下,单击“保护文档”、“保护工作簿”或“保护演示文稿”。

5、单击“添加数字签名”。

6、阅读 Word、Excel 或 PowerPoint中显示的消息,然后单击“确定”。

7、在“签名”对话框中的“签署此文档的目的”框中,键入目的。

8、单击“签名”。

9、在对文件进行数字签名后,将出现“签名”按钮,并且文件会变为只读以防止修改。

假如 Alice 向 Bob 传送数字信息,为了保证信息传送的保密性、真实性、完整性和不可否认性,需要对传送的信息进行数字加密和签名,其传送过程为:

  1. Alice 准备好要传送的数字信息(明文);

  2. Alice 对数字信息进行哈希运算,得到一个信息摘要;

  3. Alice 用自己的私钥对信息摘要进行加密得到 Alice 的数字签名,并将其附在数字信息上;

  4. Alice 随机产生一个加密密钥,并用此密码对要发送的信息进行加密,形成密文;

  5. Alice 用 Bob 的公钥对刚才随机产生的加密密钥进行加密,将加密后的DES密钥连同密文一起传送给Bob;

  6. Bob 收到 Alice 传送来的密文和加密过的DES密钥,先用自己的私钥对加密的 DES 密钥进行解密,得到 Alice随机产生的加密密钥;

  7. Bob 然后用随机密钥对收到的密文进行解密,得到明文的数字信息,然后将随机密钥抛弃;

  8. Bob 用 Alice 的公钥对 Alice 的数字签名进行解密,得到信息摘要;

  9. Bob 用相同的哈希算法对收到的明文再进行一次哈希运算,得到一个新的信息摘要;

  10. Bob 将收到的信息摘要和新产生的信息摘要进行比较,如果一致,说明收到的信息没有被修改过。

如何区分数字签名攻击呢?有两个方法:

1. 查看数字签名的详细信息,我们应该查看该数字签名的详细信息,点击“详细信息”按钮即可。

我们会发现正常EXE和感染(或捆绑木马)后的EXE数字签名的区别。

正常EXE的数字签名详细信息。

被篡改后的EXE数字签名信息无效。

2.使用数字签名验证程序​​​​​​​sigcheck.exe (可以百度一下找这个工具,著名系统工具包Sysinternals Suite的组件之一。)

数字签名异常的结果为:

C:\Documents and Settings\litiejun\??\modify.exe:

Verified: Unsigned

File date: 15:46 2008-5-23

Publisher: n/a

Description: n/a

Product: n/a

Version: n/a

File version: n/a

数字签名正常的结果为:

C:\Documents and Settings\litiejun\??\che.exe:

Verified: Signed

Signing date: 16:28 2008-4-29

Publisher: n/a

Description: n/a

Product: n/a

Version: n/a

File version: n/a

转自: 百度百科-验证

原文链接: https://baike.baidu.com/item/%E6%95%B0%E5%AD%97%E7%AD%BE%E5%90%8D/212550?fr=aladdin 一、 数字签名 数字签名 (又称公钥 数字签名 )是只有信息的发送者才能产生的别人无法伪造的一段数字串,这段数字串同时也是对信息的发送者发送信息真实性的一个有效证明。它是一种类似写在纸上的普通的物理签名,但是在使用了公钥加密领域的技术来实现的,用于鉴别数字信息的方法。一套 数字签名 通常定义两种互补的运算,一个用于签名,另一个用于验证。 数字签名 是非对称 在数字时代,确保信息的完整性和验证身份变得尤为重要。 数字签名 正是为满足这一需求而生的技术。它不仅保证了信息在传输过程中未被篡改,还能确认信息来源的真实性。本文将概述 数字签名 的原理、应用和重要性。 数字签名 技术是确保数字世界中信息安全和身份验证的重要工具。随着数字化转型的不断深入, 数字签名 的作用愈发显著,从个人的电子邮件到企业的合同签署,再到国家级的信息安全, 数字签名 都扮演着不可或缺的角色。了解和掌握 数字签名 的原理和应用,对于每个数字时代的参与者来说,都是一项必要的技能。概述 数字签名 过程。 在当今数字化的信息世界里,数字化文档的认证性、完整性和不可否认性是实现信息安全的基本要求。 数字签名 是满足上述要求的主要手段之一,也是现代密码学的主要研究内容之一。本文首先介绍 数字签名 的基本概念和基本原理,然后介绍几种常用的 数字签名 实现方案,最后介绍 数字签名 的扩展。 在微软 (Microsoft) 、Adobe等软件产品中,我们常常需要输入序列号,那么序列号是什么?它背后用到的技术是什么?它实现算法又是什么?然后什么是 数字签名 ?它和手写的签名又有什么区别和联系?本文将为你揭晓答案。消息摘要是一种通过对任意长度的输入数据进行处理,生成固定长度的输出字符串的算法。它也被称为哈希函数或散列函数。无论输入数据的长度如何,消息摘要算法生成的输出都是固定长度的。常见的摘要长度包括128位、256位等。不同的输入数据应该生成不同的摘要。 数字签名 基于公钥密码学的原理,使用了非对称密钥加密算法。它使用了两个密钥:私钥(私有密钥)和公钥(公共密钥)。私钥只有文档的签名者拥有,并且必须保密保存。公钥可以被任何人访问。 数字签名 通过使用公钥密码学和哈希函数的组合,实现了对数字文档的完整性、真实性和身份的验证。它在身份验证、电子合同、软件分发、电子邮件安全和数据完整性等方面具有广泛的应用。 数字签名 是一种加密技术,用于验证数字文档的完整性、真实性和身份。它使用了公钥密码学的原理和技术,以及哈希函数来实现。 序言签名的作用无非就是证明某个文件上的内容确实是我写的/我认同的,别人不能冒充我的签名(不可伪造),我也不能否认上面的签名是我的(不可抵赖)。我们知道,手写签名之所以不能伪造,是因为每一个人的笔迹都是独一无二的,即使模仿,也可以通过专家鉴定分别出来。而不可抵赖,是因为每个人的笔迹都有固定特征,这些特征是很难摆脱的。正是这两点特性使得手写签名在日常生活中被广泛承认,比如签合同、借条等等。而 数字签名 ,... 大数定理(Law of Large Numbers)是概率论中的一个重要原理,它描述了在独立重复试验中,随着试验次数的增加,样本均值会逐渐趋近于总体均值。大数定理有两个主要形式:弱大数定理和强大数定理,其中强大数定理更为严格,它指出在一些条件下,样本均值收敛到总体均值的概率为1。然后,接收者比较这个哈希值与 数字签名 中的哈希值是否匹配,从而验证数据的完整性和真实性。:一种非对称加密算法,用于 数字签名 和密钥交换。需要注意的是,虽然这是一个简单的例子,但大数定律在更复杂的概率分布和统计问题中也起着关键作用。 数字签名 是指发送方用自己的私钥对数字指纹进行加密后所得的数据,其中包括非对称密钥加密和 数字签名 两个过程,在可以给数据加密的同时,也可用于接收方验证发送方身份的合法性。采用 数字签名 时,接收方需要使用发送方的公钥才能解开 数字签名 得到数字指纹。        数字指纹又称为信息摘要,是指发送方通过HASH算法对明文信息计算后得出的数据。采用数字指纹时,发送方会将本端对明文进哈希运算后生成的数字指纹(还