1、网络安全概论 普通高等教育“十一五”国家级规划教材 “信息化与信息社会”系列丛书 刘建伟 2011年9月25日 专题:双钥密码体制(一) RSA公钥密码算法 二 三 一 ElGamal公钥签名算法 公钥密码体制的基本概念 一 四 其它公钥密码 专题:双钥密码体制(一) RSA公钥密码算法 二 三 一 ElGamal公钥签名算法 公钥密码体制的基本概念 一 四 其它公钥密码 1.1 公钥密码的历史 在对称密钥密码体制中,加密运算与解密运算使用同样的密 钥。但是,在公开的计算机网络上安全地传送和保管密钥是一个 严峻的问题。 1976年,Diffie和Hellman在奠基性论文 “密码学的新方向”中
2、 提出公开密钥密码体制的概念:使密钥交换、管理容易,并可实 现数字签名。 New Directions in Cryptography, IEEE IT-22, 1976 公钥密码体制的基础,是计算复杂度理论。 单向函数/单向陷门函数 计算上困难问题/NP完全问题 一 Whitefield Diffie,Martin Hellman,New Directionsin Cryptography,1976。 二 公钥密码学的出现使大规模的安全通信得以实现 解决了密钥分发问题; 三 公钥密码学还可用于另外一些应用:数字签名、防 抵赖等; 四 公钥密码体制的基本原理 陷门单向函数(trapdooron
3、e-way function) 五 公钥密码是密码学历史上一个伟大的革命性成果。 1.2 公钥密码学 1.3 理论基础单向函数 定义1:令函数f是集A到集B的映射,用f: AB 表 示。若对于任意x1x2 ,x1, x2A,有f(x1) f(x2) ,则称 f为单射,或1-1映射,或可逆的函数。 定义2:一个可逆函数f: AB ,若它满足: (1) 对所有x A,易于计算f(x); (2) 对“几乎所有x A”,由f(x)求x极为困难,以至 于几乎是不可能的,则称f是一个单向函数。 注意:定义中的“极为困难”是相对现有的 计算机资源和算法而言。 1.4 理论基础陷门单向函数 x x f D x
4、 E x f z z z z = = ) ( ( ) ( ) ( 定义3:陷门单向函数是一类满足下述条件的单向函数: f z : A z B z ,zZ,Z是陷门信息集合。 (1)对所有zZ,在给定z下容易找到一对算法E z 和D z , 使对所有xA,易于计算f z 及其逆,即: (2)对所有zZ,当只给定E z 和D z 时,对所有x A,很 难从y=f z (x)计算出x。 区别:单向函数是求逆困难的函数,而陷门单向 函数(trapdoor one way function)是在不知道陷门 信息下求逆困难的函数。当知道陷门信息后,求逆 易于实现。 1.5 用于构造双钥密码的单向函数 大整
5、数分解FAC ( Factorization Problem ) 离散对数DL (Discrete Logarithm) 多项式求根 背包问题 (Knapsack problem) Diffie-Hellman问题DHP 二次剩余问题QR (Quadratic Residue) 模n的平方根问题 (SQROOT) 1.6 公钥密码体制的原理 公钥密码技术,又称非对称密码技术或双钥密码技术 ( Public-key/Two-key/Asymmetric ) ,其加密和解密 数据使用不同的密钥。 明文 abc 加密器 密文 #& 解密器 不同明文 abc 1.7 公钥密钥体制的密钥管理 公钥密钥体
6、制解决了密钥的发布和管理 问题,通信双方可以公开其公开密钥,而 保留私有密钥。 发送方可以用人人皆知的接受方公开密钥 对发送的信息进行加密,安全的传送给该接 受方,然后由接受方用自己的私有密钥进行 解密。 1.8 公钥密码体制的特点 包括两个密钥: 由私钥及其他密码信息容易计算出公开密钥 而由公钥及算法描述,计算私钥却非常困难。 公开密钥(public-key),可以被任何人知道,用于加密 或验证签名 私钥( private-key),只能被消息的接收者或签名者知 道,用于解密或签名 1.9 公钥加密方案 Alice 消息M 加密机 C=E K1 (M) 解密机 M=D K2 (C) Bob
7、消息M Bob公钥 K1 Bob私钥 K2 Eve 窃听者 注意:当Alice给Bob发信息时,她必须采用Bob的公钥K1 对消息加密,而不是采用Alice的公钥对消息加密。Bob采 用自己的私钥K2对密文解密。这是同学们最容易搞混的 地方。 1.10 公钥算法的用途 用于公钥加密 (Public Key Encryption- -PKE) 用于加密任何消息 任何人可以用公钥加密,私钥的拥有者 可以解密 任何公钥加密方案能够用于密钥分配方 案PKDS 许多公钥加密方案也是数字签名方案 用于数字签名 (Signature Schemes) 用于生成对某消息的数字签名 私钥的拥有者生成数字签名 任
8、何人可以用公钥验证签名 用于交换秘密信息,常用于交换对 称加密算法的密钥 用于公钥分发 (Public-Key DistributionSchemesPKDS) 1.11 公钥的安全性 依赖于数学上足够大的困难性。 类似与对称算法,穷搜索(exhaustive search)在理论上是能 够破解公钥密码,但实际上,当密钥足够长 (512bits) 时, 破解极其困难。 一般情况下,我们已经找到了一些已知的困难问题(hard pro blem) 目前,通常要求足够大的密钥长度 (512 bits) 密钥太长会导致加密速度比对称算法慢,因此通常仅仅用于 密钥传递,而不用于实时的数据加密。 专题:双
9、钥密码体制(一) RSA公钥密码算法 二 三 一 ElGamal公钥签名算法 公钥密码体制的基本概念 一 四 其它公钥密码 二、RSA公钥密码算法 其安全性依赖于大整数分解的难度(integer fact orization problem) 参数有:n=pq, = (p-1)(q-1) 为欧拉函数 公钥为e,并满足 (e, ) = 1 私钥为d, d=e -1mod encryption: decryption: ) (n n m c m e mod = n m c c d mod = ) (n ) (n RSA算法, 1978由Rivest, Shamir, Adleman提出。 2.1
10、RSA公钥算法说明 Ron Rivest, Adi Shamir和Leonard Adleman 1977年研制并且1 978年首次发表。 密码分析者尚不能证明其安全性,但也不能否定其安全性。 RSA是一种分组密码,其理论基础是一种特殊的可逆模指数 运算,其安全性基于分解大整数的困难性。 既可以用于加密,也可用于数字签名。 硬件实现时,比DES慢约1000倍。软件实现时比DES慢约10 0倍。永远不会比对称钥算法快。 已被许多标准化组织(如ISO、ITU、IETF和SWIFT等)接 纳,目前多数公司使用的是RSA公司的PKCS系列; RSA-155(512 bit), RSA-140于1999
11、年分别被分解; 2.1 RSA公钥算法说明 设n是两个不同奇素数之积,即n = pq,计算其欧拉函 数值(n)=(p-1)(q-1) 。 随机选一整数e,1e(n), (n),e)=1. 因而在模(n) 下,e有逆元: 取公钥为n,e,秘密钥为d.(p,q不再需要,应该被舍弃,但 绝不可泄露) 定义加密变换为 解密变换为 ) ( mod 1 n e d = n e PubKey Z x n x x E = , mod ) ( n d ivateKey Z y n y y D = , mod ) ( Pr位数:1024以上,素性应该证明 p-1,q-1有大的素因子 p+1,q+1也要有大的素因子
12、 e不能太小,最常用的e值为3,17 ,65537(2 16 +1) 软件/硬件 软件与硬件结合,并行算法等 密钥 选择 算法 实现 2.2 RSA算法的关键技术 2.3 RSA算法的使用 设B的公开密钥为(e,n),A对消息m加密 A计算:c=m emod n 给B,只有B能解密 B计算:m=c dmod n 特点: -即使A和B从来不认识,都可进行保密通讯,只要知道B的公钥。 -速度慢,它不适用于对图像、话音等进行实时数据加密。 要求对公开密钥进行保护,防止修改和替换。 1、加解密 2.3 RSA算法的使用 A的公开密钥为(e,n),私钥为d,A对消息m的数字签名 为:s=H(m) dmo
13、d n,H(x)为公开的杂凑(hash)函数。 任何人都可验证A对m的签名的有效性 H(m)=s emod n 功能:防止非法篡改、伪造、A的抵赖与否认、对A的 假冒等。 要求对公开密钥进行保护,防止修改。 2、数字签名与身份认证 2.3 RSA算法的使用 A的公钥为(e 1 ,n 1 ),私钥为d 1B的公钥为(e 2 ,n 2 ),私钥为d 2 , n1n2 A对B发消息m,并签名: A计算: c=(m e2 ) mod n 2 ) d1mod n 1 A将c 给B,并告诉其是A发的; B验证:m=(c e1 ) mod n 1 ) d2mod n 2 3、加密和数字签名同时使用 2.3
14、RSA算法的使用 A,B使用对称密码(如IDEA或DES)加密消息m; A,B可用RSA交换单钥加密体制的密钥; B随机产生工作密钥k,找到A的公开密钥(e,n),B对工 作密钥k加密: B计算c=k emod n 给A, 只有A能解密: A计算k=c dmod n A,B共同用k在单钥加密体制下进行保密通讯。 4、密钥交换 2.4 RSA算法的举例说明 1. 选p 1 =47, p 2 =71, 则n=4771=3337, (n)=4670 =3220。若 选e=79,可计算d=e -1 (mod 3220)=1019 2. 公开钥n=3337和e=79,秘密钥d=1019。销毁p 1 和p
15、 2 。 3. 另明文为x=688 232 687 966 668 3,分组得x 1 =688, x 2 =232,x 3 =687, x 4 =966, x 5 =668, x 6 =3 4. 对x 1 加密为:(688) 79mod 3337=1570=C 1 5. 同样可计算出其它各组密文:y=1570 2756 2714 2423 158 6. 对C 1 解密:(1570) 1019mod 3337=668=x 1 类似地可解出其它各组密文,恢复出明文。2.5 RSA算法的安全性 密钥长(bit) 所需MIPS年 116 400 129 5000 512 30000 768 200 0
16、00 000 1024 300 000 000 000 2048 300 000 000 000 000 2.6 等价密钥长度与单钥体制比较 单钥体制 RSA体制 单钥体制 RSA体制 56 b 384 b 112 b 1792 b 64 b 512 b 128 b 2304 b 80 b 768 b 专题:双钥密码体制(一) RSA公钥密码算法 二 三 一 ElGamal公钥签名算法 公钥密码体制的基本概念 一 四 其它公钥密码 ElGamal于198 5年基于离散 对数问题提 出了一个既 可用于数字 签名又可用 于加密的密 码体制;(此 数字签名方 案的一个修 改被NIST采 纳为数字签
17、名标准DSS) ElGamal,Schnor r和DSA签名 算法都非常 类似。事实上 ,它们仅仅是 基于离散对数 问题的一般数 字签名的三个 例子。 ElGamal方案 未申请专利。 但受到DH专 利的制约(D H专利已经 在1997年4月2 9日到期)。 三、ElGamal公钥签名算法 3.1 ElGamal公钥密码算法 其安全性依赖于离散对数问题(discrete logarithms problem) 参数: GF(p)上的本原元g 秘密钥: x in GF(p) * (except 0) 公钥:y=g x modp 选择一个随机数:k encryption: decryption:
18、) , ( mod ) , ( s r p my g m k k = p sr m x mod = ElGamal公钥加密算法, 1985 专题:双钥密码体制(一) RSA公钥密码算法 二 三 一 ElGamal公钥签名算法 公钥密码体制的基本概念 一 四 其它公钥密码 1 Rabin密码体制,是RSA的一个特例。 2 背包密码体制。 3 McEliece 体制。1978年,提出了一种基于纠错编码的公开 钥密码系统,该系统使用了一类Goppa纠错码。 4 LUC密码体制。新西兰学者Smith提出。 5 1985年,Neal Koblitz和V .S.Miller将椭圆曲线(ECC)用 于公开钥密码,并用椭圆曲线实现了DH算法。 6 有限自动机体制。中国学者陶仁骥等提出。 7 概率加密体制。 四、其它公钥密码 谢谢!