数字签名

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

原理

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

特点

播报
编辑
每个人都有一对“钥匙”(数字 身份 ),其中一个只有她/他本人知道( 私钥 ),另一个公开的( 公钥 )。签名的时候用私钥,验证签名的时候用 公钥 。又因为任何人都可以落款声称她/他就是你,因此 公钥 必须向接受者信任的人( 身份 认证机构 )来注册。注册后 身份认证 机构给你发一 数字证书 。对 文件签名 后,你把此 数字证书 连同文件及签名一起发给接受者,接受者向 身份认证 机构求证是否真地是用你的密钥签发的文件。 [2]
在通讯中使用数字签名一般具有以下特点: [2]

鉴权

公钥加密系统 允许任何人在发送信息时使用公钥进行加密,接收信息时使用私钥解密。当然,接收者不可能百分之百确信发送者的真实 身份 ,而只能在 密码系统 未被破译的 情况 下才有理由确信。 [2]
鉴权的重要性在财务数据上表现得尤为突出。举个例子,假设一家银行将指令由它的分行传输到它的中央管理系统,指令的格式是(a,b),其中a是账户的账号,而b是账户的现有金额。这时一位远程 客户 可以先存入100元,观察传输的结果,然后接二连三的发送格式为(a,b)的指令。这种方法被称作 重放攻击 [2]

完整性

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

不可抵赖

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

主要功能

播报
编辑
网络的安全,主要是 网络信息安全 ,需要取相应的 安全技术措施 ,提供适合的 安全服务 。数字签名机制作为保障 网络信息安全 的手段之一,可以解决伪造、抵赖、冒充和篡改问题。数字签名的目的之一就是在网络环境中代替传统的手工签字与印章,有着重要作用: [3]
(1)防冒充(伪造)。私有密钥只有签名者自己知道,所以其他人不可能构造出正确的。 [3]
(2)可 鉴别 身份。由于传统的手工签名一般是双方直接见面的,身份自可一清二楚。在网络环境中,接收方必须能够 鉴别 发送方所宣称的身份。 [3]
(3)防 篡改 (防破坏信息的完整性)。对于传统的手工签字,假如要签署一份200页的合同,是仅仅在合同末尾签名呢?还是对每一页都签名?如果仅在合同末尾签名,对方会不会偷换其中的几页? 而对于数字签名,签名与原有文件已经形成了一个混合的整体数据,不可能被篡改,从而保证了数据的 完整性 [3]
(4)防 重放 。如在日常生活中,A向B借了钱,同时写了一张借条给B,当A还钱的候,肯定要向B索回他写的借条撕毁,不然,恐怕他会再次用借条要求A还钱。在数字签名中,如果采用了对签名报文添加 流水号 时间戳 等技术,可以防止 重放 攻击。 [3]
(5)防 抵赖 。如前所述,数字签名可以鉴别身份,不可能冒充伪造,那么,只要保好签名的报文,就好似保存好了手工签署的合同文本,也就是保留了证据,签名者就无法抵赖。那如果接收者确已收到对方的签名报文,却抵赖没有收到呢? 要预防接收者的 抵赖 。在数字签名体制中,要求接收者返回一个自己的签名表示收到的报文,给对方或者第三方或者引入第三方机制。如此操作,双方均不可抵赖。 [3]
(6)机密性(保密性)。手工签字的文件(如同文本)是不具备保密性的,文件一旦丢失,其中的信息就极可能泄露。数字签名可以加密要签名消息的杂凑值,不具备对消息本身进行加密,当然,如果签名的报名不要求机密性,也可以不用加密。 [3]
保证信息传输的完整性、发送者的身份认证、防止交易中的抵赖发生。 [4]
数字签名技术 是将摘要信息用发送者的私钥加密,与 原文 一起传送给接收者。接收者用发送者的公钥解密被加密的摘要信息,然后用 HASH函数 对收到的 原文 产生一个摘要信息 [8] ,与解密的摘要信息对比。如果相同,则说明收到的信息是完整的,在传输过程中没有被修改,否则说明信息被修改过,因此数字签名能够验证信息的完整性。 [4]
数字签名是个加密的过程, 数字签名验证 是个解密的过程。 [4]

签名过程

播报
编辑
发送报文时,发送方用一个哈希函数从报文文本中生成报文摘要,然后用发送方的私钥对这个摘要进行加密,这个加密后的摘要将作为报文的数字签名和报文一起发送给接收方,接收方首先用与发送方一样的哈希函数从接收到的原始报文中计算出报文摘要,接着再用公钥来对报文附加的数字签名进行解密,如果这两个摘要相同、那么接收方就能确认该报文是发送方的。 [5]
数字签名有两种功效:一是能确定消息确实是由发送方签名并发出来的,因为别人假冒不了发送方的签名。二是数字签名能确定消息的完整性。因为数字签名的特点是它代表了文件的特征,文件如果发生改变,数字摘要的值也将发生变化。不同的文件将得到不同的数字摘要。 一次数字签名涉及到一个哈希函数、接收者的 公钥 、发送方的 私钥 [5]

使用方法

播报
编辑
你可以对你发出的每一封 电子邮件 进行数字签名。这不是指落款,普遍把落款讹误成签名。
在我国大陆,数字签名是具 法律效力 的,正在被普遍使用。2000年,中华人民共和国的新《 合同法 》首次确认了 电子合同 电子签名 法律效力 。2005年4月1日起,中华人民共和国首部《 电子签名法 》正式实施。

邮件证书

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

实现方法

播报
编辑
数字签名 算法 依靠 公钥加密 技术来实现的。在 公钥 加密技术 里,每一个使用者有一对密钥:一把公钥和一把 私钥 公钥 可以自由发布,但 私钥 则秘密保存;还有一个要求就是要让通过公钥推算出私钥的做法不可能实现。 [7]
普通的数字签名 算法 包括三种算法: [7]
1. 密码 生成 算法
2.标记 算法
3.验证 算法
数字签名技术大多基于哈希摘要和非对称密钥加密体制来实现。如果签名者想要对某个文件进行数字签名,他必须首先从可信的第三方机构(数字证书认证中心CA)取得私钥和公钥,这需要用到 PKI技术 [7]
1.有哈希算法的数字签名与验证
图1 数字签名及其验证
哈希函数是一种“压缩函数”,利用哈希函数可以把任意长度的输入经由散列函数算法变换成固定长度的输出,该输出的哈希值就是消息摘要,也称数字摘要。在正式的数字签名中,发送方首先对发送文件采用哈希算法,得到一个固定长度的 消息摘要 ( Message Digest);再用自己的 私钥 ( Secret key,SK)对 消息摘要 进行签名,形成发送方的数字签名。数字签名将作为队件和原文一起发送给接收方;接收方首先用发送方的 公钥 对数字签名进行解密得到发送方的 数字摘要 ,然后用相同的 哈希函数 对原文进行哈希计算,得到一个新的消息摘要,最后将消息摘要与收到的 消息摘要 做比较。具体过程如图1所示。 [7]
2.基于非对称密钥加密体制的数字签名与验证
图2 基于非对称密钥的数字签名与验证
发送方首先将原文用自己的 私钥 加密得到数字签名,然后将原文和数字签名一起发送给接收方。接收方用发送方的公钥对数字签名进行解密,最后与原文进行比较,如图2所示数字签名是 电子商务 电子政务 中应用普遍、技术成熟、可操作性强的一种 电子签名 方法。它采用了规范化的程序和科学化的方法,用于鉴定签名人的身份以及对一项电子数据内容的认可。使用数字签名技术能够验证文件的原文在传输过程中有无变动,确保传输电子文件的完整性、真实性和 不可抵赖性 [7]

签名步骤

播报
编辑

Java签名步骤

1、将applet的 class文件 打包成*.jar(可以在命令行中输入jar查看帮助) [7]
2、首先我们要生成一个keystore 否则在签名的时候报如下错误 [7]
jarsigner 错误: java.lang.RuntimeException: 密钥库装入: C:\Documents and Settings\ij2ee\.keystore (系统找不到指定的文件。). (这边的ij2ee 是当前系统 用户名 ) [7]
生成keystore的语句:keytool -genkey -alias 别名你可以自己写 -keyalg RSA -keystore .keystore [7]
下面是会出现的数字签名的一些步骤操作: [7]
  • 输入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、创建一个 数字证书 [7]
在命令行中输入如下指令,peakCA和peakCALib自己起名字好了,3650是有效天数,就是10年左右,在创建证书的的时候,需要填写证书的一些信息和证书对应的 私钥 密码 [7]
keytool -genkey -alias peakCA -keyalg RSA -keysize 1024 -keystore peakCALib -validity 3650
4、将证书导出到证书文件中 [7]
在命令行中输入如下指令,peakCA和peakCALib任意起名字,******是输入的 密码 [7]
keytool -export -alias peakCA -file peakCA.cer -keystore peakCALib -storepass ****** -rfc
5、授权jar文件,在命令行中输入如下指令 [7]
jarsigner -keystore peakCALib myapplet.jar peakCA

office签名步骤

1、要保护文档内容的 真实性 ,可以添加不可见的数字签名。 已签名文档的底部有“签名”按钮。 [7]
2、单击“文件”选项卡。 [7]
3、单击“信息”。 [7]
4、在“权限”下,单击“保护文档”、“保护 工作簿 ”或“保护 演示文稿 ”。 [7]
5、单击“添加数字签名”。 [7]
6、阅读 Word Excel PowerPoint 中显示的消息,然后单击“确定”。 [7]
7、在“签名”对话框中的“签署此文档的目的”框中,键入目的。 [7]
8、单击“签名”。 [7]
9、在对文件进行数字签名后,将出现“签名”按钮,并且文件会变为只读以防止修改。 [7]

应用例子

播报
编辑
假如 Alice 向 Bob 传送数字信息,为了保证信息传送的 保密性 真实性 完整性 不可否认性 ,需要对传送的信息进行数字加密和签名,其传送过程为: [3]
  1. 1.
    Alice 准备好要传送的数字信息(明文); [3]
  2. 2.
    Alice 对数字信息进行 哈希运算 ,得到一个信息摘要; [3]
  3. 3.
    Alice 用自己的 私钥 对信息摘要进行加密得到 Alice 的数字签名,并将其附在数字信息上; [3]
  4. 4.
    Alice 随机产生一个加密密钥,并用此密码对要发送的信息进行加密,形成 密文 [3]
  5. 5.
    Alice 用 Bob 的公钥对刚才随机产生的加密密钥进行加密,将加密后的 DES 密钥连同密文一起传送给Bob; [3]
  6. 6.
    Bob 收到 Alice 传送来的密文和加密过的 DES 密钥,先用自己的私钥对加密的 DES 密钥进行解密,得到 Alice随机产生的加密密钥; [3]
  7. 7.
    Bob 然后用随机密钥对收到的密文进行解密,得到 明文 的数字信息,然后将随机密钥抛弃; [3]
  8. 8.
    Bob 用 Alice 的公钥对 Alice 的数字签名进行解密,得到信息摘要; [3]
  9. 9.
    Bob 用相同的哈希算法对收到的 明文 再进行一次 哈希运算 ,得到一个新的信息摘要; [3]
  10. 10.
    Bob 将收到的信息摘要和新产生的信息摘要进行比较,如果一致,说明收到的信息没有被修改过。 [3]

区分攻击

播报
编辑
如何区分数字签名攻击呢?有两个方法: [7]
1. 查看数字签名的详细信息,我们应该查看该数字签名的详细信息,点击“详细信息”按钮即可。 [7]
我们会发现正常 EXE 和感染(或捆绑 木马 )后的EXE数字签名的区别。
正常EXE的数字签名详细信息。
被篡改后的EXE数字签名信息无效。 [7]
2.使用数字签名验证 程序 sigcheck.exe (可以百度一下找这个工具,著名系统工具包Sysinternals Suite的组件之一。) [7]

异常结果

数字签名异常的结果为: [7]
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

正常结果

数字签名正常的结果为: [7]
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

网络安全

播报
编辑
2023年11月27日报道,国家安全部表示网络空间看似无形隐匿,实则谍影重重,充满硝烟暗战,数字签名等网络资产及服务,都有可能被境外间谍情报机关利用实施网络攻击窃密活动。 [9]
2024年1月2日,印度“News9Live”新闻网报道称,相机制造巨头尼康、索尼和佳能计划推出新技术,对抗深度伪造。 [10]