1 / 36

第五章 公钥密码体制

第五章 公钥密码体制. 公钥密码体制的基本原理 RSA 算法 ElGamal 密码体制 椭圆曲线密码体制. 公钥密码体制. 常规密钥密码体制 采用的是对称方法,使用相同的密码。 缺点: 从加密的算法和密码,可以推导出解密的算法和密码。 在多个发送者和单一接收者来说,不方便。 如何安全地分发密钥。. 公钥密码体制. 能够有效计算公钥 PK 和私钥 SK。 从已知的公钥 PK 不能推导出私钥 SK。 发送方用公钥 PK 进行加密,而接收方用私钥 SK 进行解密, 还原出明文,即: D SK ( E PK ( P )) = P。. 公钥密码学的历史.

Download Presentation

第五章 公钥密码体制

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 第五章公钥密码体制 • 公钥密码体制的基本原理 • RSA算法 • ElGamal密码体制 • 椭圆曲线密码体制

  2. 公钥密码体制 • 常规密钥密码体制采用的是对称方法,使用相同的密码。 缺点: • 从加密的算法和密码,可以推导出解密的算法和密码。 • 在多个发送者和单一接收者来说,不方便。 • 如何安全地分发密钥。

  3. 公钥密码体制 • 能够有效计算公钥PK和私钥SK。 • 从已知的公钥PK不能推导出私钥SK。 • 发送方用公钥PK进行加密,而接收方用私钥SK进行解密,还原出明文,即: DSK(EPK(P))= P。

  4. 公钥密码学的历史 • 76年Diffie和Hellman发表了“密码学的新方向”,奠定了公钥密码学的基础 • 公钥技术是二十世纪最伟大的思想之一 • 改变了密钥分发的方式 • 可以广泛用于数字签名和身份认证服务 • 78年,RSA算法 • PKI

  5. 公开密钥密码体制 如:银行有很多客户,每个客户都用公钥加密,而银行则用密钥解密。

  6. 公钥算法应用:保密

  7. 公钥算法应用:认证

  8. 基本思想和要求 • 涉及到各方:发送方、接收方、攻击者 • 涉及到数据:公钥、私钥、明文、密文 • 公钥算法的条件: • 产生一对密钥是计算可行的 • 已知公钥和明文,产生密文是计算可行的 • 接收方利用私钥来解密密文是计算可行的 • 对于攻击者,利用公钥来推断私钥是计算不可行的 • 已知公钥和密文,恢复明文是计算不可行的 • (可选)加密和解密的顺序可交换

  9. 如何设计一个公钥算法 • 公钥和私钥必须相关,而且从公钥到私钥不可推断 • 必须要找到一个难题,从一个方向走是容易的,从另一个方向走是困难的 • 如何把这个难题跟加解密结合起来 • 计算可行和不可行的界

  10. 公钥密码学的研究情况 • 与计算复杂性理论密切相关 • 计算复杂性理论可以提供指导 • 但是需求不尽相同 • 计算复杂性通常针对一个孤立的问题进行研究 • 而公钥密码学往往需要考虑一些相关的问题比如,密码分析还需要考虑已知明文、选择明文等相关的情形 • 讨论的情形不同 • 计算复杂性考虑最坏的情形 • 而对于公钥密码学则是不够的 • 一个困难问题必然会导致一个保密性很好的密码系统吗? • 不一定,还需要有好的构造

  11. RSA RSA算法由三位科学家Rivest、Shamir和Adleman提出。 选择密钥的步骤: 1.随机选择两个大素数p和q。 2.计算公开的模 n=p*q 。 3.计算欧拉函数 Φ(n)=(p-1)*(q-1)。 4.随机选一整数 e,1≤e<Φ(n) ,(Φ(n),e)=1, 即Φ(n)和e互素。 5.计算d ,满足 ed mod Φ(n) =1。 得到公钥和私钥,公钥为( e , n ),私钥为d。

  12. RSA 加密/解密过程: 1.将明文划分为一个个数据块P,其中0≤P<n。 2.C为P对应的密文。则: 加密:C= Pe (mod n) 解密:P= Cd (mod n)

  13. RSA 举例: 1.选择p=7,q=17。 2.计算n=p*q=119,Φ(n)=(p-1)*(q-1)=96。 3.选e=5,因为5和96互素。 4.根据5d mod 96=1,得d=77。 5.公钥为(5,117),密钥为77。 如:明文为P=6 密文: C=Pe mod n = 65 mod 119 =41。 解密:P=Cd mod n = 4177 mod 119= 6。

  14. RSA

  15. RSA的安全性 基本原理:根据数论,寻求两个大素数比较容易,而将它们的乘积分解开则相当困难。

  16. 素数:只能被1和它本身整除的自然数;否则为合数。素数:只能被1和它本身整除的自然数;否则为合数。 每个合数都可以唯一地分解出素数因子 6 = 2 ·3 999999 = 3·3·3·7·11·13·37 27641 = 131·121 从2 开始试验每一个小于等于√27641 的素数。 整数n的十进制位数 因子分解的运算次数 所需计算时间(每微秒一次) 50 1.4x1010 3.9小时 75 9.0x1012 104天 100 2.3x1015 74年 200 1.2x1023 3.8x109年 300 1.5x1029 4.0x1015年 500 1.3x1039 4.2x1025年

  17. 对RSA的攻击方法 • 1、强力攻击(穷举法):尝试所有可能的私有密钥 • 2、数学分析攻击:各种数学方法,等价与两个素数乘积的因子分解 • 3、对RSA实现的攻击

  18. 90年代大数分解的进程 分解数 尺寸bits 分解日期 分解算法 RSA-100 330 1991.4 二次筛法 RSA-110 364 1992.4 二次筛法 RSA-120 397 1993.6 二次筛法 RSA-129 425 1994.4 二次筛法 RSA-130 430 1996.4 数域筛法 RSA-140 463 1999.2 数域筛法 RSA-155 512 1999.8 数域筛法

  19. RSA-155的分解 • 1999.8.22,荷兰H.Riele领导的来自6个国家的研究人员组成的团队找到了一个512-bit RSA 密钥的一个素因子 • 512-bit RSA在电子商务中所占的比例为95% • 用了5个月的时间,计算机时间估计为 • 8000mips years

  20. 对RSA的攻击 • 对RSA的具体实现存在一些攻击方法,但不是针对基本算法的,而是针对协议的。 • 对RSA的选择密文攻击 • 对RSA的公共模攻击 • 对RSA的小加密指数攻击 • 对RSA的小解密指数攻击 • 时间性攻击:取决于解密算法的运算时间

  21. 对RSA的选择密文攻击 现在E让A对y签名,即解密y, A向E发送u=yd mod n 而E计算 tu mod n=r-1yd mod n =r-1xdcd mod n =cd mod n =m • 例1:E监听A的通信,收集由A的公开密钥加密的密文c,E想知道消息的明文m,使 m=cd mod n • 他首先选择随机数r,使r<n. 然后用A的公开密钥e计算 x=re mod n y=xc mod n t=r-1 mod n • 如果x=re mod n,则 r=xd mod n

  22. 对RSA的公共模攻击 c1=me1 mod n c2=me2 mod n 由于e1和e2互素,所以可以用扩展的Euclid算法找到r,s使 re1+se2=1, 假设r是负数,可以用扩展的Euclid算法计算c1-1,而 (c1-1)-r*c2s= m mod n • 一种可能的RSA实现方法是给每个人相同的n,但指数d和e不同。 • 问题:如果相同的消息曾用两个不同的指数加密,而这两个指数是互素的,则明文可以不用任何一个解密密钥来恢复。 • 令m为明文消息,两个加密密钥为e1,e2,两个密文消息为c1,c2 注意:不要让一群用户共享一个模n

  23. 对RSA的小加密指数攻击 • 如果使用一个较小的e值,则进行RSA签名和加密会很快,但也不安全。 • 如果用相同e值的不同公开密钥加密e(e+1)/2个线性相关的消息,则系统是可破的。如果有少于这些的消息或消息不相关,则无问题。 • 比如:消息为mj,使用同样的指数e, 模数分别为q1,q2,…qs(两两互素),则密文为mjemod q1, mjemod q2,… mjemod qs,根据中国剩余定理,对于较小的e,可以解出mj。 • 解决办法:加密前将消息与随机值混合,并保证m与n有相同的长度。

  24. 对RSA的小解密指数攻击 • 使用较小的d会产生穷尽解密攻击的可能 • 当d为n的1/4长度时,而e小于n时,可以恢复d,当e,d是随机选择的时,这种情况很少发生,当e很小时不会发生。 • 注意:应选择一个大的d值

  25. 实现要求 • 若要使RSA安全,p与q必为足够大的素数,使分析者没有办法在多项式时间内将n分解出来。 • 目前介于1024比特和2048比特之间的RSA算法是安全的。

  26. 素数的选取 • 为了抵抗现有的整数分解算法,对RSA模n的素因子 p和q还有如下要求: (1)|p-q|很大,通常 p和q的长度相同; (2)p-1 和q-1分别含有大素因子p1和q1 (3)P1-1和q1-1分别含有大素因子p2和q2 (4)p+1和q+1分别含有大素因子p3和q3

  27. 加密指数e的选取 • 为了提高加密速度,通常取e为特定的小整数,如EDI国际标准中规定 e=216+1,ISO/IEC9796中甚至允许取e=3。这时加密速度一般比解密速度快10倍以上。e=216+1优于e=3之处在于它能够抵抗对RSA的小加密指数攻击

  28. 实现中的问题 (1)如何计算ab mod n (2)如何判定一个给定的整数是素数? (3)如何找到足够大的素数p和q ?

  29. ElGamal加密算法 • 选择: 一个素数p,p的一个原根α ,一个整数a,令 β = αa mod p,公开{p, α , β },保密a. • 对于明文信息x, 加密: 秘密选择随机数r, 计算 (y1,y2)=(αr mod p, xβr mod p)作为密文 • 解密: y2(y1a) –1=(xβr)((αr )a)-1 = x mod p 信息有扩张

  30. 椭圆曲线密码介绍 • 1985年Miller,Koblitz 独立提出 y2+axy+by=x3+cx2+dx+e • 曲线上的点连同无穷远点O的集合 • 运算定义: • 若曲线三点在一条直线上,则其和为O • O用作加法的单位:O = -O; P+O = P • 一条竖直线交X轴两点P1、P2,则P1+P2+O=O,于是P1 = -P2 • 如果两个点Q和R的X轴不同,则画一连线,得到第三点P1,则Q+R+P1=O,即Q+R=-P1 • 2倍,一个点Q的两倍是,找到它的切线与曲线的另一个交点S,于是Q+Q=2Q=-S

  31. 椭圆曲线密码示意图

  32. 有限域上椭圆曲线 • 有限域上椭圆曲线 • y2x3+ax+b mod p • p是奇素数,且4a3+27b20 mod p • 针对所有的0<= x <p,可以求出有效的y,得到曲线上的点(x,y),其中x,y < p。记为Ep(a,b) • Ep(a,b)中也包括O • 加法公式: • P+O=P • 如果P=(x,y),则P+(x,-y)=O,(x,-y)点是P的负点,记为-P。而且(x,-y)也在Ep(a,b)中 • 如果P=(x1,y1),Q=(x2,y2),则 P+Q=(x3,y3)为x3=2-x1-x2 (mod p)y3=(x1-x3)-y1 (mod p)其中,如果PQ,则  = (y2-y1)/(x2-x1) 如果P=Q,则  = (3x12+a)/(2y1)

  33. 椭圆曲线用于加密 • 找到一个难题: • 考虑等式Q=kP,其中Q、P属于Ep(a,b),k<p • 已知k和P,计算Q,是容易的 • 已知Q和P,计算k,是困难的 • 选择Ep(a,b)的元素G,使得G的阶n是一个大素数 • G的阶是指满足nG=O的最小n值 • 秘密选择整数r,计算P=rG,然后 • 公开(p,a,b,G,P),P为公钥 • 保密r • 加密M:先把消息M变换成为Ep(a,b)中一个点Pm • 然后,选择随机数k,计算密文Cm={kG,Pm+kP) • 如果k使得kG或者kP为O,则要重新选择k. • 解密Cm: (Pm+kP)-r(kG)=Pm+krG-rkG=Pm • 加密信息有扩张

  34. 椭圆曲线密码的安全性 • 难点: 从P和kP获得k • 对椭圆曲线研究的时间短 • 椭圆曲线要求密钥长度短,速度快 • 对比: ECC RSA*Pollard rho分析方法

  35. ECC和RSA性能比较

  36. DES和RSA性能比较(同等强度)

More Related