第十四讲 数字签名(上)
数字签名技术原理

数字签名技术原理数字签名技术是一种通过数字方式来确认文件或信息完整性、真实性和不可抵赖性的技术手段。
它在现代信息安全领域起着至关重要的作用,被广泛应用于电子商务、电子政务、金融交易等领域。
数字签名技术的原理和实现方式对于保障信息安全至关重要,下面我们来详细了解一下数字签名技术的原理。
首先,数字签名技术基于非对称加密算法。
非对称加密算法是指使用一对密钥,即公钥和私钥,来进行加密和解密操作。
公钥可以公开,任何人都可以使用它来加密信息,但只有持有对应私钥的人才能解密。
数字签名技术利用这一特性,发送方使用私钥对信息进行加密生成数字签名,接收方使用发送方的公钥对数字签名进行解密验证,从而确认信息的完整性和真实性。
其次,数字签名技术还依赖于哈希函数。
哈希函数是一种能够将任意长度的输入数据转换为固定长度哈希值的函数。
在数字签名技术中,发送方首先对待签名的信息进行哈希运算,得到哈希值,然后使用私钥对哈希值进行加密生成数字签名。
接收方同样对接收到的信息进行哈希运算得到哈希值,然后使用发送方的公钥对数字签名进行解密得到原始哈希值,最后比对两个哈希值来确认信息的完整性和真实性。
此外,数字签名技术还涉及到数字证书的应用。
数字证书是由权威的数字证书认证机构颁发的,用于证明公钥的合法性和真实性。
在数字签名技术中,发送方的数字签名需要携带数字证书一起发送给接收方,接收方利用数字证书来验证发送方的公钥的合法性,从而确保数字签名的可信度。
总的来说,数字签名技术利用非对称加密算法、哈希函数和数字证书等技术手段来实现信息的完整性、真实性和不可抵赖性。
它在保障信息安全方面发挥着重要作用,能够有效防止信息被篡改、伪造和否认。
随着信息技术的不断发展,数字签名技术也在不断完善和应用,为信息安全提供了有力保障。
综上所述,数字签名技术的原理是基于非对称加密算法、哈希函数和数字证书的应用,通过这些技术手段来实现信息的完整性、真实性和不可抵赖性。
它在现代信息安全领域扮演着至关重要的角色,对于保障信息安全具有重要意义。
数字签名概述

数字签名概述091120112 扈钰一、引言政治、军事、外交等活动中签署文件, 商业上签定契约和合同以及日常生活中在书信、从银行取款等事务中的签字, 传统上都采用手写签名或印鉴。
签名起到认证、核准和生效作用。
随着信息时代的来临, 人们希望通过数字通信网络进行迅速的、远距离的贸易合同的签名,数字或电子签名法应运而生,并开始用于商业通信系统, 诸如电子邮递、电子转帐、办公室自动化等系统中。
由此,能够在电子文件中识别双方交易人的真实身份,保证交易的安全性和真实性以及不可抵懒性,起到与手写签名或者盖章同等作用的签名的电子技术手段,称之为电子签名。
数字签名是电子签名技术中的一种,两者的关系密切。
目前电子签名法中提到的签名,一般指的就是"数字签名"。
数字签名与传统的手写签名的主要差别在于:(1)签名:手写签名是被签文件的物理组成部分,而数字签名不是被签消息的物理部分,因而需要将签名连接到被签消息上。
(2)验证:手写签名是通过将它与其它真实的签名进行比较来验证,而数字签名是利用已经公开的验证算法来验证。
(3)签名数字消息的复制品与其本身是一样的,而手写签名纸质文件的复制品与原品是不同的。
二、数字签名的含义及作用数字签名(又称公钥数字签名、电子签章)是一种类似写在纸上的普通的物理签名,但是使用了公钥加密领域的技术实现,用于鉴别数字信息的方法。
数字签名主要有以下几个作用:1、收方能确认或证实发方的签字,但不能伪造;2、发方发出签名后的消息,就不能否认所签消息;3、收方对已收到的消息不能否认;4、如果引入第三者,则第三者可以确认收发双方之间的消息传送,但不能伪造这一过程。
三、数字签名原理数字签名采用了双重加密的方法来实现防伪、防赖。
通过一个单向函数对要传送的报文进行处理,得到的用以认证报文来源并核实报文是否发生变化的一个字母数字串。
一套数字签名通常定义两种互补的运算,一个用于签名,另一个用于验证。
数字签名

(2)可鉴别身份。由于传统的手工签名一般是双方直接见面的,身份自可一清二楚。在络环境中,接收方必 须能够鉴别发送方所宣称的身份。
(3)防篡改(防破坏信息的完整性)。对于传统的手工签字,假如要签署一份200页的合同,是仅仅在合同末尾 签名呢?还是对每一页都签名?如果仅在合同末尾签名,对方会不会偷换其中的几页?而对于数字签名,签名与原 有文件已经形成了一个混合的整体数据,不可能被篡改,从而保证了数据的完整性。
感谢观看
1、要保护文档内容的真实性,可以添加不可见的数字签名。已签名文档的底部有“签名”按钮。 2、单击“文件”选项卡。 3、单击“信息”。 4、在“权限”下,单击“保护文档”、“保护工作簿”或“保护演示文稿”。 5、单击“添加数字签名”。 6、阅读 Word、Excel或 PowerPoint中显示的消息,然后单击“确定”。 7、在“签名”对话框中的“签署此文档的目的”框中,键入目的。 8、单击“签名”。 9、在对文件进行数字签名后,将出现“签名”按钮,并且文件会变为只读以防止修改。
实现方法
数字签名算法依靠公钥加密技术来实现的。在公钥加密技术里,每一个使用者有一对密钥:一把公钥和一把 私钥。公钥可以自由发布,但私钥则秘密保存;还有一个要求就是要让通过公钥推算出私钥的做法不可能实 现。
普通的数字签名算法包括三种算法:
1.密码生成算法;
2.标记算法;
3.验证算法。
数字签名技术大多基于哈希摘要和非对称密钥加密体制来实现。如果签名者想要对某个文件进行数字签名, 他必须首先从可信的第三方机构(数字证书认证中心CA)取得私钥和公钥,这需要用到PKI技术。
数字签名正常的结果为: 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
信息安全技术-数字签名

数字签名,其实是伴随着数字化编码的信息一起发
送并与发送的信息有一定逻辑关联的数据项。 送并与发送的信息有一定逻辑关联的数据项。
数字签名是指信息发送者使用公开密钥算法的主要
技术,产生别人无法伪造的一段数字串。 技术,产生别人无法伪造的一段数字串。
数字签名(有名公钥数字签名、电子签章),附加 数字签名(有名公钥数字签名、电子签章),
在数据单元上的一些数据,或者是对数据单元所 在数据单元上的一些数据, 作的密码变换。这种变换允许数据单元的接受者 作的密码变换。 用以确定数据单元的来源和数据单元的完整性并 保护数据,防止被人(如接受者)进行伪造。 保护数据,防止被人(如接受者)进行伪造。
数字签名技术
• 1 数字签名的基本原理
数字签名的过程: 数字签名的过程:
• 2 数字签名的使用 • 安全的数字签名使接收方可以确认文件确 实来自声称的发送方。 实来自声称的发送方。鉴于签名私钥只有 发送方自己保存, 发送方自己保存,他人无法做一样的数字 签名,因此他不能否认他参与了交易。 签名,因此他不能否认他参与了交易。
• 使用:发送方的密钥对 使用: • 发送方用自己的私钥进行加密 • 接收方用发送方的公钥进行解密 • 一对多的关系:任何拥有发送方公钥的人 一对多的关系: 都可以验证数字签名的正确性。 都可以验证数字签名的正确性。
• 实际中,相当长的文件,将文件按比特划 实际中,相当长的文件, 分成一块一块, 分成一块一块,用相同的密钥独立地签每 一块,速度太慢。 一块,速度太慢。 • 通常,引入可公开的密码散列函数(hash 通常,引入可公开的密码散列函数( function,也叫摘要函数、哈希函数)。 function,也叫摘要函数、哈希函数)。 它取任意长度的信息作为自变量, 它取任意长度的信息作为自变量,结果产 生规定长度的信息摘要。 生规定长度的信息摘要。
数字签名

数字签名主要方法与功能
数字签名是非对称密钥加密技术与数字摘要技术的应用,分 为普通数字签名和特殊数字签名。 普通数字签名有RSA、EIGamal、Schnorr、椭圆曲线数字 签名算法和有限自动机数字签名算法等。 特殊数字签名有不可否认签名、门限签名、盲签名、代理签 名等。 主要功能: ⑴确认信息是由签名者发送的; ⑵确认消息自签名后到收到为止,未被修改过; ⑶签名者无法否认签名是由自己发送的。
证明
要证结论,只需证 ( m ) m m o d n 由于 d e 则存在t≥1,满足 d e t ( n ) 1 对所有消息m∈ z n , 当gcd(m,n)=1时,根据Euler定理有
d
e
1(m o d ( n ))
(m )
d
e
m
t ( n ) 1
(m o d n ) ( m
注1.Elgamal数字签名每次签名中的k应选择不同, 否则有可能私钥a能被计算出. 2.Elgamal数字签名没有RSA数字签名的效率高, 并且有两倍的消息扩张. 3.Elgaml数字签名有很多种变形 4.存在Elgamal数字签名的变形在某些假设下 能被证明在选择消息攻击下是安全的. 5.就像Elgamal密码体制一样,Elgamal数字签 名也可以推广到合适的循环群中.
数字签名的解决方案
可分为两类:
直接数字签名方案; 基于仲裁的数字签名方案。
直接数字签名
实现比较简单,在技术上仅涉及到通信的源点X 和终点Y双方。 终点Y需要了解源点X的公开密钥Kux。 发送方A可以使用其私有密钥KRx对整个消息报文 进行加密来生成数字签名。 更好的方法是使用KRx对消息报文的散列码进行加 密来形成数字签名。
《数字签名》课件

数字签名的特点
1 不可伪造
数字签名是唯一的,验证过程可确认签名的 真实性。
2 可靠性高
数字签名基于公钥加密算法,具有较高的安 全性和可靠性。
3 易于验证
对数字签名的验证过程相对简单,接收者只 需使用发送者的公钥进行解密。
4 即时性
数字签名的生成和验证过程很快,几乎是实 时的。
数字签名的分类
1
基于HASH
数字签名可确保数据在传输 过程中不被篡改或损坏。
身份认证
数字签名可以验证数据的发 送者身份。
防止抵赖
数字签名提供证据,防止发 送者在后续阶段抵赖其参与 和承诺。
数字签名的基本原理
数字签名基于公钥加密算法,使用发送者的私钥对数据进行加密,接收者使用发送者的公钥进行解密,以验证 数据的完整性和真实性。
数字签名的生成是基于对数据进行哈希处理。
2
基于非对称加密
数字签名的生成和验证基于公钥/私钥对。
3
基于对称加密
数字签名的生成和验证基于对称加密算法。
数字证书的概念
数字证书是由数字证书颁发机构(CA)签发的包含公钥和身份信息的电子文件,用于验证数字签名的真实性 和可信度。
数字证书的种类
个人数字证书
用于个人身份认证和加密通信。
服务数字证书
用于服务器身份认证和数据传输的加密。
组织数字证书
用于组织身份认证和加密通信。
根书
用于签发其他数字证书的根节点证书。
数字证书的作用
数字证书可以确保通信的安全性、防止伪造、篡改和假冒。
数字证书的颁发机构
数字证书的颁发机构(CA)是负责签发和管理数字证书的权威组织,如Verisign、Digicert等。
图文详解什么是数字签名
图文详解什么是数字签名无意间发现一篇好文章通俗易懂的科普了SSL证书部分的公钥、私钥以及证书颁发机构(CA),很多难以用语言解释的文字都能通过图片直观的了解清楚。
下面是文章详情:1.鲍勃有两把钥匙,一把是公钥,另一把是私钥。
2.鲍勃把公钥送给他的朋友们----帕蒂、道格、苏珊----每人一把。
3.苏珊要给鲍勃写一封保密的信。
她写完后用鲍勃的公钥加密,就可以达到保密的效果4.鲍勃收信后,用私钥解密,就看到了信件内容。
这里要强调的是,只要鲍勃的私钥不泄露,这封信就是安全的,即使落在别人手里,也无法解密。
5.鲍勃给苏珊回信,决定采用"数字签名"。
他写完后先用Hash函数,生成信件的摘要(digest)。
6.然后,鲍勃使用私钥,对这个摘要加密,生成"数字签名"(signature)。
7.鲍勃将这个签名,附在信件下面,一起发给苏珊。
8.苏珊收信后,取下数字签名,用鲍勃的公钥解密,得到信件的摘要。
由此证明,这封信确实是鲍勃发出的。
9.苏珊再对信件本身使用Hash函数,将得到的结果,与上一步得到的摘要进行对比。
如果两者一致,就证明这封信未被修改过。
10.复杂的情况出现了。
道格想欺骗苏珊,他偷偷使用了苏珊的电脑,用自己的公钥换走了鲍勃的公钥。
此时,苏珊实际拥有的是道格的公钥,但是还以为这是鲍勃的公钥。
因此,道格就可以冒充鲍勃,用自己的私钥做成"数字签名",写信给苏珊,让苏珊用假的鲍勃公钥进行解密。
11.后来,苏珊感觉不对劲,发现自己无法确定公钥是否真的属于鲍勃。
她想到了一个办法,要求鲍勃去找"证书中心"(certificate authority,简称CA),为公钥做认证。
证书中心用自己的私钥,对鲍勃的公钥和一些相关信息一起加密,生成"数字证书"(Digital Certificate)。
12.鲍勃拿到数字证书以后,就可以放心了。
什么是数字签名?
什么是数字签名?数字签名作为一种重要的信息安全技术,在现代社会中得到了广泛的应用。
那么,什么是数字签名呢?数字签名是一种基于公钥密码学的技术手段,用来保证数字信息的机密性、完整性和不可否认性。
它利用非对称加密算法,确保发送方可以被识别,并确保所传递的信息在传输过程中不被篡改。
那么,数字签名具体是如何实现的呢?下面将从三个方面对数字签名进行深入解析。
1. 数字签名的原理数字签名的原理是利用加密算法生成一对密钥,其中一个是私钥,另一个是公钥。
发送方使用私钥对所传递的信息进行加密,并将加密后的信息与私钥一起发送。
接收方则使用发送方的公钥对接收到的加密信息进行解密,并进行验证。
通过验证过程,接收方可以判断所接收到的信息是否为发送方发送的,并且判断信息在传输过程中是否被篡改。
2. 数字签名的优势数字签名有以下几个优势:(1)机密性:数字签名利用非对称加密算法,确保信息在传输过程中不被窃取。
(2)完整性:数字签名可以确保信息在传输过程中不会被篡改,保证信息的完整性。
(3)不可否认性:数字签名可以确保发送方无法否认发送的信息,保证信息的可信度和真实性。
3. 数字签名的应用领域数字签名广泛应用于各个领域,包括但不限于以下几个方面:(1)电子商务:数字签名可以确保在线交易的安全性,保护消费者的个人信息和交易记录。
(2)电子合同:数字签名可以替代传统的纸质合同,提高签约的效率和安全性。
(3)电子证据:数字签名可以作为电子证据的法律依据,保护各方的合法权益。
(4)数字版权:数字签名可以保护数字内容的版权,防止盗版和篡改。
通过以上三个方面的深入解析,我们对数字签名有了更为清晰的认识。
数字签名作为一种重要的信息安全技术,不仅能够确保信息的机密性、完整性和不可否认性,还广泛应用于各个领域。
在信息时代,数字签名的重要性将愈发凸显。
数字签名
数字签名(Digital Signatures)是一种附加在消息后的一些数据,它基于公钥加密基础,用于鉴别数字信息。
一套数字签名通常定义了两种运算,一个用于签名,另一个用于验证。
数字签名只有发送者才能产生,别人不能伪造这一段数字串。
由于签名与消息之间存在着可靠的联系,接收者可以利用数字签名确认消息来源以及确保消息的完整性、真实性和不可否认性。
(1)数据完整性:由于签名本身与要传递的消息之间是有关联的,消息的任何改动都将引起签名的变化,消息的接收方在接收到消息和签名之后经过对比就可以确定消息在传输的过程中是否被修改,如果被修改过则签名失效。
这也显示出了签名是不能够通过简单的拷贝从一个消息应用到另一个消息上。
(2)真实性:由于与接收方的公钥相对应的私钥只有发送方有,从而使得接收方或第三方可以证实发送者的身份。
如果接收方的公钥能够解密签名,则说明消息确实是发送方发送的。
(3)不可否认性:签名方日后不能否认自己曾经对消息进行的签名,因为私钥被用在了签名产生的过程中,而私钥只有发送者才拥有,因此只要用相应的公钥解密了签名,则可以确定该签名一定是发送者产生的。
但是,如果使用对称性密钥进行加密,不可否认性是不被保证的。
数字签名的作用:①如果他人可以用公钥正确的解开数字签名,则表示数字签名的确是由签名者产生的。
②如果消息M是用散列函数h得到的消息摘要h(M),和消息的接收方从接收到的消息M'计算出散列值h(M'),这两种信息摘要相同表示文件具有完整性。
数字签名机制提供了一种数字鉴别方法,普遍适用于银行,电子商务,电子办公等。
它可以解决下述安全鉴别问题:①接收方伪造:接收方伪造一份文件,并声称这是发送方发送的,②发送者或接受者否认:不承认自己曾经发送或接收过文件。
③第三方冒充:网上的第三方用户冒充发送或接收信息④接收方篡改:接收方对收到的文件进行改动。
数字签名的签名过程:P158图2.2.1 数字签名的签名过程在形成数字签名之前,首先要利用Hash 函数形成一个固定长的消息摘要H(M)。
数字签名技术原理
数字签名技术原理咱先说说啥是数字签名哈。
你可以把数字签名想象成一个超级独特的“电子指纹”。
就好比每个人的指纹都是独一无二的,这个数字签名也是特定于某个发送者的。
比如说你要给朋友发个超级重要的文件,这个数字签名就像是你在文件上盖了一个只有你能盖的超级酷炫的章。
那这个神奇的“电子指纹”是怎么来的呢?这里面就涉及到一些数学魔法啦。
它是通过一种叫做非对称加密算法的东西生成的。
啥是非对称加密呢?简单说就是有两把钥匙,一把叫公钥,一把叫私钥。
公钥就像是你家门上的锁,谁都能看到,谁都能来试着开一下(当然是在合法的情况下啦);私钥呢,那可是你藏在心底的小秘密,只有你自己知道。
当你要对一个文件进行数字签名的时候,你就用你的私钥对这个文件进行加密操作。
这个加密后的东西就是数字签名啦。
这就好比你用你独一无二的小秘密(私钥)在文件上留下了只有你能留下的痕迹。
那接收方怎么知道这个文件是你发的而且没被篡改呢?这时候公钥就派上用场啦。
接收方有你的公钥,他就可以用这个公钥去验证这个数字签名。
如果验证通过了,那就说明这个文件确实是你发的,而且在传输过程中没有被人乱动过。
这就像是接收方拿着你家门上的锁(公钥),去检验你盖的章(数字签名)是不是真的。
如果锁能打开这个章,那就说明章是真的,也就是文件是你发的。
你可能会想,这数字签名为啥这么厉害呢?要是有人偷偷复制了我的数字签名咋办呢?哈哈,这可没那么容易。
因为私钥是非常非常保密的,如果私钥泄露了,那就相当于你的小秘密被别人知道了,这可是超级严重的事情呢。
而且这个数字签名和文件内容是紧密相关的,只要文件内容有一丁点儿的改变,数字签名就验证不过去了。
数字签名在很多地方都超级有用呢。
比如说在网上购物的时候,商家要知道你的订单信息确实是你发的,银行要知道转账请求是你本人发起的。
没有数字签名的话,那网络世界可就乱套啦,就像一群小怪兽在乱跑,谁也不知道哪个是真的哪个是假的。
在这个充满数字信息的大森林里,数字签名就像是守护精灵,保护着我们的信息安全。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1.4.1分块问题(续)
例 子 3 令 n A 8387 7499 62894113 , e A 5,和d A 37726937 ; 以及nB 55465219 , eB 5, d B = 44360237 。注意 n A nB . 假定消息 m 1368797 符合冗余规则,先用 A的秘密密钥签名再用 B的公开 密钥加密。A 计算的过程为:
1.3.2 RSA的乘法特性
RSA 签名方案具有如下的乘 法特性,有时候也称其 为
d 同态特性。 如果 s1 m1d (mod n) 和s2 m2 (mod n)分别
是对消息 m1和 m2的签名,则s s1 s2 (modn) 有特性 s (m1 m2 ) d (mod n)。 如果m m1 m2也具有正确的冗余 特性则s就是对消息m的合法签名。因此,冗 余函数R 应该不具有乘法特性, 也就是,对于基本上所 有的对 a, b, R(a b) R(a) R(b)。对R的这一条件是必须的, 但满足这一条件并不一 定就是安全的。
44360237 ˆ c d B (mod nB ) 38842235 (1) s (mod55465219) 4382681 。 5 ˆ s ˆ e A (mod nA ) 4382681 (2) m (mod62894113) 54383568 。
ˆ 。发生这个问题的原因 注意m 是s大于nB。 m
d 2 d 3 d d d d
rw r s2 m2d d 如果y 0,计算 m (modn)。 d s3 (m3 ) yw y
1.4 RSA 签名的执行 1.4.1 分块问题
一种对RSA 的常用方法是签名一条 消息再对签名 结果加密。必须考虑在 执行这一过程时两个模 的 长度。假定A希望签名再加密一条消 息给B。假定 (n A, e A ) 和(nB,eB )分别是A和B的公开密钥。如果 n A nB,则B有可能不能正确恢复出 消息。
1.4.1分块问题(续)
有几种方法可以克服分 块问题。 (1) 调换顺序。如果先做小 模操作再做大模操作, 不正 确解密的问题将不会出 现。也就是说,如果 n A nB, 则 实体A应该先使用B的公开密钥加密消息, 再用自己的 秘密密钥签名加密的消 息。当然,最好的操作 顺序通 常是先签名消息再加密 签名,原因是如果 A 先加密再 签名,攻击者可以移除 该签名而换上自己的签 名。 虽 然攻击者并不知道具体 签名的内容,这仍然是 对攻击 者十分有利的情形。因 此,调换顺序并不是最 好的解 决方法。
44360237 31229978 (mod 55465219) 30729435 。 5 签名认证. B计算m s e (mod n ) 30729435 (mod 55465219)
31229978 。 最终,由于 m 符合冗余函数要求,B 接受签名并 可以恢复消息m R 1 (m ) 31229978 。
1.3.2 RSA的乘法特性(续)
例 子 2令 n为 RSA 的模 , d为秘密密钥。令k log2 n 是n的比特长度,并且令 t 是一个固定长度的正整 数, 满足t k/2。令w 2t 并令消息m为在区间 [1 , n 2 t 1] 上的整数。冗余函数定 义为R(m) = m 2t ( R(m) 的二进 制表示的最末t比特全为0)。在绝大多数的模n下,R 将都不具有乘法特性。
37726937 (1) s m d A (modn A ) 1368797 (mod62894113) 59847900 。 5 (2) c s eB (modnB ) 59847900 (mod55465219) 38842235 。
为了恢复消息并认证签 名,B 做如下计算:
本讲提要
RSA签名方案 Rabin签名方案
1 RSA数字签名方案
1.1 算法描述
算 法 1 RSA 数字签名方案的密钥产 生 摘要:每个实体产生一 个RSA 公开密钥和对应的秘密 密钥。 每个实体A做如下步骤: (1) 产生两个大的不同随机 素数p和q,两个素数规模大约相 同。 (2) 计算n p q和φ ( p 1)(q 1)。 (3) 选择一个随机整数 e, 1 e φ, 满足(e, φ) 1。 (4) 使用扩展Euclidean算法计算唯一一个整数 d, 1 d φ, 满足e d 1(modφ)。 (5) A的公开密钥是(n, e);A的秘密密钥是d。
第十四讲 数字签名(上)
这一讲和下一讲考虑设计用于模拟手写签名 的数字签名技术。一条消息的数字签名是一 个依赖于仅签名者知晓的秘密而产生的数字, 并需附加被签名的消息。数字签名必须可以 被验证:如果任何一方对文件的签名的真实 性产生争议(导致的原因可能是不诚实的签名 者想否认自己产生的签名,或者是认证者提 出欺诈的权利要求),一个公正的第三方就可 以公平的解决这一问题,而不需要获得签名 者的秘密 (秘密密钥)。
1.4.1分块问题(续)
(3) (续) 对模 n的这一选择并不能完全 解决不正确解 密问题,但是可使出现 不正确解密情况的概率 可以 忽略。假定n A是模并且s m d A (modn A )是对消息 m 的签名。进一步假定 s在最高的k +1 比特位中有一位 为1,而不是首位。由于 s应该小于n A,s的最高必须 为0,因此,s小于一般形式模产生的 结果。在s最高 的k +1 比特位中首位为 1的概率不超过 (1/ 2) k 。当k选 择100 的时候,这一概率可以 忽略。
(3) 预先设定模的形式。这 种方法是仔细选择素数p和q, 以使它们的乘积n 具有特殊的形式:最高 位为1接下来的 连续 k位都是0。 具有这种形式的 t比特的模n可以这样产生。 对于n具有需要形式应该满足 2t 1 n 2t 1 + 2t k 1。随机 选择一个 t/ 2比特的素数p,在2t 1 / p 到2t 1 + 2t k 1 / p 区间 内找一个素数q,这样n p q 就具有需要的形式。 例 子 4假定希望找到一个 12比特的模 n ,满足最高位为 1接 下来连续k 3位为 0。开始任意选择一个6比特的素数p 37。 在 211 /p 56 到 (211 + 28 ) /p 62之间任选择一个素数 q。 q的可能选择为 59和 61 。 如果选择q = 59,则 n 37 59 2183 , 二进制表示为1000100001 11 。如果选择q 61 ,则n 37 61 2257 ,二进制表示为 1000110100 01 。
1.1 算法描述(续)
评述. 冗余函数R和它的逆函数R 1公开选择产生。这个 冗余函数可以部分降低攻击 者通过随机选择数字产 生 合法签名的可能性。 签名认证正确性证明 如果 . s是对消息m的一个签名,则 s m d (modn),这里 m R (m)。由于e d 1(m ) = R 1 ( R(m)) m。
1.4.2 短消息与长消息 由于签名和消息的规模相当,这在消息长的情 况下非常不利。为了解决这一问题,通常采用 Hash函数。签名方案只作用于消息的Hash函数 值,而不是消息的本身。在这种情况下,使用 冗余函数R保障签名方案安全就不再需要。
1.4.2 短消息与长消息 (续)
假定 n是RSA用于算 法 2 的2 k比特的模,算法用于签名k比特 的消息。假定实体A期望签名k t比特的消息。一种办法就是将 消息分成k比特的分组m m1 || m2 || || mt,然后分别对每一块 进行签名。这样产生的签名数据是2 k t比特。另一种办法是 A对消息m进行Hash计算得到比特长度为 l k 的Hash值,再对 Hash值签名。这样产生的签名数据是 k t+2 k比特,这里k t是 原始消息的长度。由于在t 2时,k t+2 k 2 k t,最有效的 办法是使用RSA数字签名对Hash值签名。而当消息的长度小于 k比特时,不使用Hash的RSA数字签名更好。
1.2 例子
例子1 密 钥 产 生 实体 . A选择素数p 7927 ,q 6997 , 并且计算 n p q 55465219 和φ = 7926 6996 55450296 。A 选择 e 5 并且解e d 5 d 1(mod 55450296) ,得到d 44360237 。 A的公开密钥是 (n 55465219 , e 5) ; A的秘密 密钥是 d 44360237 。 签 名 产 生 为了简单,假设冗余函 . 数R是一个单位映射 R(m) m。 为了签名消息 m 31229978 , A 计算m R(m) 31229978 ,并且计算签名s m d (mod n )
1.4.1分块问题(续)
(2) 每个实体两个模。每个 实体把用于签名的模和 加密 的模分开。如果每个实 体的签名的模都小于系 统中所有 用来加密的模,则不正 确解密的情况将不再会 发生。这 种方法可以通过要求加 密的模使用t + 1 比特的数,而签名 模使用t比特的数来实现。
1.4.1分块问题(续)
数字签名有很多应用,包括:认证,数据 真实性,和不可否认。数字签名的一个非 常重要应用是在大规模网络上的公钥数字 证书。数字证书是可信第三方将用户身份 与其的公开密钥绑定的方法,在此之后, 其它实体认证公开密钥的时候都不需要可 信第三方的协助。
数字签名的概念和用途在实用数字签名技 术产生之前就为人们所认识。第一个数字 签名方法是 RSA数字签名方案,它至今仍 然是最为实用数字签名技术。后续的研究 也给出非常丰富的各种数字签名方法。这 些技术常常在功能性和执行性方面提供了 相当大的改进。
1.3 RSA 签名的可能攻击 1.3.1 整数分解
如果一个攻击者可以分解某个实体A的公开模n, 那么攻击者就可以计算φ,并进而使用扩展 Euclidean 算法通过解同余式e d 1 (mod φ)得到 秘密密钥 d 。这一方法使签名系统完全崩溃。为 了阻止这一攻击, A 必须选择p 和q使得分解n在 计算上不可能。