null应用密码学手册
——数字签名 应用密码学手册
——数字签名 null《Handbook of Applied Cryptography》: Chapter 11
《数字签名理论》:赵泽茂
《应用密码学》: 孙淑玲
《应用密码学:
、算法与C源程序》W.迪菲参考书籍null11.1 引言
11.2 数字签名机制的框架
11.3 RSA和相关的签名方案
11.4 Fiat-Shamir签名方案
11.5 DSA和相关签名方案
11.6 一次数字签名
11.7 其他数字签名
11.8 带附加功能的签名主要
:11.1 引言11.1 引言本章要研究的问题 本章要考虑的技术是如何设计手写签名的数字相似物——数字签名null研究背景 计算机网络的产生把我们带进一个信息化社会。在信息社会里,大量传输和存储信息的安全保密和防伪问题成为人们关注的一个重要课题。 普遍的观点认为,现代密码技术是解决信息安全的最有效地方法,因此,密码学的研究成为当前国际上的一个热点。null数字签名的产生重要证书、证件采用的防
伪技术是使用特殊材料或
者信息隐藏等网
络1.否认
2.伪造
3.冒充
4.篡改数字签名nullISO/IEC 9796是数字签名的第一个国际
,1991公布。
1994年美国政府正式颁发了美国数字签名标准DSS(Digital Signature Standard)
1995年我国也制定了自己的数字签名标准(GB15851-1995)
2004年我国颁发《中华人民共和国电子签名法》数字签名标准null数字签名的原理null数字签名的功能1.机密性
2.完整性
3.身份验证
4.防伪造
5.防抵赖
6.防重放攻击null用户登录
认证
数据完整性
不可抵赖性
大型网络的公钥证书中
电子交易和电子货币等领域数字签名技术的应用null准备知识1.Hash函数(即杂凑函数)(见参考书籍1/1.9)
2.冗余函数
3.整数因子分解问题(见参考书籍1/3.2)
4.计算两个整数的最大公因子的欧几里得算法
(见参考书籍1/2.1.4)
5.扩展的欧几里得算法(见参考书籍1/2.107)
6.模n平方根的困难性(见参考书籍1/3.5.2)
7.求a模素数p的平方根(见参考书籍1/3.39)
8.模n的二次剩余集(见参考书籍4/11.3.9)
9.剩余类集合
10.勒让德符号(见参考书籍4/11.3.10)
11.雅可比符号(见参考书籍4/11.3.11)11.2 数字签名机制的框架 11.2 数字签名机制的框架 基本定义1.数字签名是一个数字串,它将一条数字形式的消息与某发
起实体相关联。2.数字签名生成算法是产生数字签名的某种方法。3.数字签名验证算法是检验一个数字签名是否可信(即是否
真的是由指定的实体生成)的某种方法。4.数字签名方案(或机制)由签名生成算法和相关的验证算
法组成。5.数字签名的签名过程包括数字签名生成算法,以及某种将
数据格式化为可签名消息的方法。6.数字签名的验证过程包括验证算法,以及某种由消息恢复
数据的方法。null数字签名机制中的记号null带附录的数字签名方案:要求初始消息作为验证算法的输入
DSA、ElGamal和Schnorr签名方案
消息可以是任意长度
带消息恢复的数字签名方案:消息可从签名自身恢复,不要求初始消息作为验证算法的输入
RSA、Rabin等公钥签名方案
通常消息的长度固定数字签名方案的分类null数字签名方案的分类数字签名方案带消息恢复带附录随机化的确定性的随机化的确定性的 针对一个数字签名方案,如果有︱ R ︱>1,则称此签名方案是随机化数字签名方案,否则称它是确定性数字签名方案。null带附录的数字签名方案null带消息恢复的数字签名方案null从带消息恢复的方案得到带附录的签名方案先杂凑消息m;
再对该杂凑值h(m)签名null敌手的目标是:伪造签名
完全攻克:敌手能计算出私钥
选择性伪造:敌手能对一个特殊的消息或者预先选定的一类消息构造出正确的签名
存在性伪造:敌手能伪造至少一个消息的签名,但敌手对被伪造签名所对应的消息几乎没有控制能力签名方案的攻击类型11.3 RSA和相关签名方案11.3 RSA和相关签名方案RSA签名方案
有关RSA签名的可能攻击
实际中的RSA签名
Rabin签名方案
ISO/IEC 9796规范
PKCS #1规范nullRSA是以它的三个发明者Ron Rivest,Adi Shamir和Leoard Adleman的名字命名。
RSA算法既可以用于加密,也可以用于数字签名。因为其加密变换是双射的,所以只要互换加密与解密的角色就可以得到数字签名方案。
RSA的安全性基于大数分解的困难性,该算法已经经受住了多年深入的密码
,密码分析者既不能证明也不能否认RSA的安全性,这恰恰说明该算法有一定的可信度。RSA签名方案null实体A执行如下操作:
随即产生大小相近的两个不同大素数p和q
计算 n=p×q,其欧拉函数值(n)=(p-1)(q-1)
随机选一整数e,1e<(n),满足gcd((n), e)=1
利用扩展的欧几里德算法,计算惟一的整数d, 1<d <(n),满足de ≡1 mod (n)
公钥为(n,e) ;私钥为d。(p, q不再需要,可以销毁。)RSA签名方案的密钥生成null实体A执行如下操作:RSA的签名生成与验证为验证A的签名s且恢复消息m,B执行如下操作:nullRSA签名实例讲解1)若Bob选择了p=11和q=13
2)那么,n=11 × 13=143, (n)=10×12=120
3)再选取一个与(n)=120互质的数,例如e=7
4)找到一个值d=103满足e×d≡1 mod (n)
(7×103=721,除以120余1)
5)(n=143,e=7)为公钥,d=103为私钥。
6)Bob在一个目录中公开公钥:n=143和e=7
7)现假设Bob想发送消息85给Alice,他用自己的密钥
(d=103)进行签名:85103(mod 143)=6,于是发送消息85
和签名6给Alice
8)当Alice接收到消息85和签名6时,用Bob公开的公钥
(e=7)进行验证:67(mod 143)=85,跟Bob发送的消
息一致,于是确定该消息是由Bob所发送,且没有被修改。nullRSA签名和RSA加密的异同点相同点都使用一对密钥:公钥(n,e)和私钥d不同点RSA加密:用公钥加密,用私钥解密,多人加密,一人解密
s=me mod n
m=sd mod n
RSA签名:用私钥签名,用公钥验证,一人签名,多人验证
s=md mod n
m=se mod nnull整数因子分解 (公钥为(n,e) )
de≡1 mod (n)
分解n=p×q
再计算出(n)=(p-1)(q-1)
由(n)和e,推导出私钥d
RSA的乘性质
s1=m1d mod n
s2=m2d mod n
(s1×s2)=(m1×m2)d mod n
要求冗余函数R具有非乘性,即R(a×b)≠R(a) ×R(b) (必要条件)有关RSA签名的可能攻击为了防止此攻击,签署者必须选择p和q,使得分解n是一个计算上不可行的任务。为了防止此攻击,要求冗余函数R的非乘性。null通常是:实体A将消息先签名再加密,然后发给B
假设(nA,eA)和(nB,eB)分别是A和B的公钥
有以下问题:
1.重分组问题
2.冗余函数的选择
3.参数的选取
4.带宽效率
5.系统范围参数
6.消息长短的比较实际中的RSA签名null(1)参数的选取:p,q,e,d。
(2)不可使用公共模数。
(3)明文的熵要尽可能的大。
(4)尽量使用散列函数。
(5)若RSA的模数n=2k bits,则:
若消息的长度
规定了一套数字签名程序,并采用一种带消
息恢复的数字签名机制
主要特点:
基于公钥密码学
未指定特定签名算法,但必须是k bits映射为k bits
用于签署有限长度的消息
提供消息恢复
描述了必需的消息填充
RSA、Rabin算法ISO/IEC 9796 规范null公钥密码技术标准(PKCS)是包含RSA加密和签名的技术的一套规范
PKCS #1
不采用RSA签名方案的消息恢复特性
采用带附录的签名机制
使用Hash函数(MD2或MD5)PKCS#1规范11.4 Fiat-Shamir签名方案11.4 Fiat-Shamir签名方案是由Fiege-Fiat-Shamir身份识别方案转变而来的
安全性基于计算模n平方根的困难性
签名生成的计算量远远小于RSA签名
适合于需快速执行签名生成、且不限制密钥空间存储量的应用
实体A对消息签名后,再由实体B来验证签名的有效性。具体包含:
密钥生成
签名生成和验证null随机产生不同的私密素数p和q(保密,最好用完丢弃),计算n=p×q,并公开n。
选择正整数k及k个与n互素、且互不相同的随机整数作为私钥s1, s2, … ,sk(1≦si