(1)防冒充(伪造)。私有密钥只有签名者自己知道,所以其他人不可能构造出正确的。
(2)可鉴别身份。由于传统的手工签名一般是双方直接见面的,身份自可一清二楚。在网络环境中,接收方必须能够鉴别发送方所宣称的身份。
(3)防篡改(防破坏信息的完整性)。对于传统的手工签字,假如要签署一份200页的合同,是仅仅在合同末尾签名呢?还是对每一页都签名?如果仅在合同末尾签名,对方会不会偷换其中的几页? 而对于数字签名,签名与原有文件已经形成了一个混合的整体数据,不可能被篡改,从而保证了数据的完整性。
(4)防重放。如在日常生活中,A向B借了钱,同时写了一张借条给B,当A还钱的候,肯定要向B索回他写的借条撕毁,不然,恐怕他会再次用借条要求A还钱。
在数字签名中,如果采用了对签名报文添加
流水号、时间戳
等技术,可以防止重放攻击。
(5)防抵赖。如前所述,数字签名可以鉴别身份,不可能冒充伪造,那么,只要保好签名的报文,就好似保存好了手工签署的合同文本,也就是保留了证据,签名者就无法抵赖。那如果接收者确已收到对方的签名报文,却抵赖没有收到呢? 要预防接收者的抵赖。
在数字签名体制中,要求接收者
返回一个自己的签名表示收到的报文,给对方或者第三方或者引入第三方机制
。如此操作,双方均不可抵赖。
(6)机密性(保密性)。手工签字的文件(如同文本)是不具备保密性的,文件一旦丢失,其中的信息就极可能泄露。数字签名可以加密要签名消息的杂凑值,不具备对消息本身进行加密,当然,如果签名的报名不要求机密性,也可以不用加密。
普通的数字签名算法包括三种算法:
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 传送数字信息,为了保证信息传送的保密性、真实性、完整性和不可否认性,需要对传送的信息进行数字加密和签名,其传送过程为:
-
Alice 准备好要传送的数字信息(明文);
-
Alice 对数字信息进行哈希运算,得到一个信息摘要;
-
Alice 用自己的私钥对信息摘要进行加密得到 Alice 的数字签名,并将其附在数字信息上;
-
Alice 随机产生一个加密密钥,并用此密码对要发送的信息进行加密,形成密文;
-
Alice 用 Bob 的公钥对刚才随机产生的加密密钥进行加密,将加密后的DES密钥连同密文一起传送给Bob;
-
Bob 收到 Alice 传送来的密文和加密过的DES密钥,先用自己的私钥对加密的 DES 密钥进行解密,得到 Alice随机产生的加密密钥;
-
Bob 然后用随机密钥对收到的密文进行解密,得到明文的数字信息,然后将随机密钥抛弃;
-
Bob 用 Alice 的公钥对 Alice 的数字签名进行解密,得到信息摘要;
-
Bob 用相同的哈希算法对收到的明文再进行一次哈希运算,得到一个新的信息摘要;
-
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
)是只有信息的发送者才能产生的别人无法伪造的一段数字串,这段数字串同时也是对信息的发送者发送信息真实性的一个有效证明。它是一种类似写在纸上的普通的物理签名,但是在使用了公钥加密领域的技术来实现的,用于鉴别数字信息的方法。一套
过程。
在当今数字化的信息世界里,数字化文档的认证性、完整性和不可否认性是实现信息安全的基本要求。
的扩展。
在微软 (Microsoft) 、Adobe等软件产品中,我们常常需要输入序列号,那么序列号是什么?它背后用到的技术是什么?它实现算法又是什么?然后什么是
?它和手写的签名又有什么区别和联系?本文将为你揭晓答案。消息摘要是一种通过对任意长度的输入数据进行处理,生成固定长度的输出字符串的算法。它也被称为哈希函数或散列函数。无论输入数据的长度如何,消息摘要算法生成的输出都是固定长度的。常见的摘要长度包括128位、256位等。不同的输入数据应该生成不同的摘要。
基于公钥密码学的原理,使用了非对称密钥加密算法。它使用了两个密钥:私钥(私有密钥)和公钥(公共密钥)。私钥只有文档的签名者拥有,并且必须保密保存。公钥可以被任何人访问。
通过使用公钥密码学和哈希函数的组合,实现了对数字文档的完整性、真实性和身份的验证。它在身份验证、电子合同、软件分发、电子邮件安全和数据完整性等方面具有广泛的应用。
是一种加密技术,用于验证数字文档的完整性、真实性和身份。它使用了公钥密码学的原理和技术,以及哈希函数来实现。
序言签名的作用无非就是证明某个文件上的内容确实是我写的/我认同的,别人不能冒充我的签名(不可伪造),我也不能否认上面的签名是我的(不可抵赖)。我们知道,手写签名之所以不能伪造,是因为每一个人的笔迹都是独一无二的,即使模仿,也可以通过专家鉴定分别出来。而不可抵赖,是因为每个人的笔迹都有固定特征,这些特征是很难摆脱的。正是这两点特性使得手写签名在日常生活中被广泛承认,比如签合同、借条等等。而
,...
大数定理(Law of Large Numbers)是概率论中的一个重要原理,它描述了在独立重复试验中,随着试验次数的增加,样本均值会逐渐趋近于总体均值。大数定理有两个主要形式:弱大数定理和强大数定理,其中强大数定理更为严格,它指出在一些条件下,样本均值收敛到总体均值的概率为1。然后,接收者比较这个哈希值与
得到数字指纹。
数字指纹又称为信息摘要,是指发送方通过HASH算法对明文信息计算后得出的数据。采用数字指纹时,发送方会将本端对明文进哈希运算后生成的数字指纹(还