1 / 93

网络安全技术 郑秋生 中原工学院 Zhongyuan University of Technology 计算机学院 School of Computer Science

网络安全技术 郑秋生 中原工学院 Zhongyuan University of Technology 计算机学院 School of Computer Science. http://www.cs.zzti.edu.cn zqs@zzti.edu.cn. Feb. 20, 2006 网络工程专业 2003 级. 网络安全技术. 第二章:密码技术 --- 公钥加密部分. 公开密钥加密. 一对密钥 公钥公开. 非对称加密部分的主要内容. 随机数的产生 // 密钥对的产生 密钥分配 公钥密码算法

Download Presentation

网络安全技术 郑秋生 中原工学院 Zhongyuan University of Technology 计算机学院 School of Computer Science

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. 网络安全技术郑秋生中原工学院Zhongyuan University of Technology计算机学院School of Computer Science http://www.cs.zzti.edu.cnzqs@zzti.edu.cn Feb. 20, 2006 网络工程专业 2003级

  2. 网络安全技术 第二章:密码技术 ---公钥加密部分

  3. 公开密钥加密 • 一对密钥 • 公钥公开

  4. 非对称加密部分的主要内容 • 随机数的产生 //密钥对的产生 • 密钥分配 • 公钥密码算法 • Diffie-Hellman密钥交换算法 • 背包算法 • RSA算法 • EIGamal算法 • 椭圆曲线密码算法ECC

  5. 随机数(Random number) • 随机数的基本特点 • 随机性 • 均匀分布 • 独立性,难以测试,只能测试足够独立 • 不可预测性 • 其特点决定了适合做密钥。 • 随机数用途,重要的角色,例如 • 会话密钥 //对称 • RSA公钥算法 //非对称 • 认证过程中,避免重放攻击

  6. Random number generation • 真正的随机数难以产生 • 伪随机数 • 计算机语言中提供的随机函数的问题 • 随机数在加密算法中的重要性 • 可能是密钥 • 可能是密钥产生的基础

  7. 基于密码的随机数产生几种方法 1、线性同余法 Xn+1 = (aXn+c) mod m m 模数 m>0 231 a 乘数 0a<m a=75=16807 c 增量 0 c<m X0种子 0  X0<m 线性同余伪随机数缺乏不可预测性 2、循环加密 3、DES输出反馈方式 4、ANSI X.917 伪随机数产生器 5、Blum Blum Shub (BBS) 产生器

  8. 循环 加密

  9. DES 输出反馈模型

  10. ANSI X9.17 Ri=EDEK1,K2(ViEDEK1,K2(DTi)) Vi+1= EDEK1,K2(RiEDEK1,K2(DTi)) 

  11. BBS ( Blum Blum Shub)伪随机数产生器 • (1)首先选择两个大素数p,q pq 3(mod4) • (2)选择s与n互素 • 通过了“下一位”测试(next-bit test) • 不存在多项式时间的算法使得在已知前k位的情况下预测出第k+1位的概率大于0.5 • BBS的安全性同样基于分解n的难度

  12. 对称加密情形下的密钥分发 和密钥管理的问题分析

  13. 密钥的分发(Key Distribution) • 保密通信双方需共享密钥 • 共享密钥要经常更换//几种可能方式 • A选择密钥并手工传递给B • 第三方C选择密钥分别手工传递给A,B • 用A,B原有共享密钥传送新密钥 • 与A,B分别有共享密钥的第三方C传送新密钥给A和/或B • N个用户集需要N(N-1)/2个共享密钥 • //太多的Key? • 解决方案:密钥分发中心KDC (Key Distribution Center)

  14. Key Distribution Center KDC应用于对称加密情形 • 每个用户与KDC有共享密钥(Master Key) • N个用户,KDC只需分发N个Master Key • 两个用户间通信用会话密钥(Session Key) • 会话密钥是临时的、可变的 • 使用共享密钥加密会话密钥,分发之 • 用户必须信任KDC • KDC能解密用户间通信的内容 • //他产生、分发的会话密钥

  15. 对称加密问题的提出 (1)密钥管理量的困难 //无KDC 传统密钥管理:两两分别用一对密钥时,则n个用户需要C(n,2)=n(n-1)/2个密钥,当用户量增大时,密钥空间急剧增大。如: n=100 时, C(100,2)=4,995 n=5000时, C(5000,2)=12,497,500 (2)建立KDC权威、信任机构 (3)数字签名的问题 传统加密算法无法实现抗抵赖的需求。

  16. 公钥加密的起源 • 公钥密码又称为双钥密码和非对称密码,是1976年由Diffie和Hellman在其“密码学新方向”一文中提出的,见划时代的文献: W.Diffie and M.E.Hellman, New Directrions in Cryptography, IEEE Transaction on Information Theory, V.IT-22.No.6, Nov 1976, PP.644-654 • RSA公钥算法 • 是由Rivest,Shamir和Adleman在1978年提出来的, 见 Communitions of the ACM. Vol.21.No.2. Feb. 1978, PP.120-126

  17. 公开密钥密码的重要特性 • 加密与解密由不同的密钥完成 加密: XY: Y = EKU(X) //Public Key 解密: YX: X = DKR(Y) = DKR(EKU(X)) //Private Key • 知道加密算法(公开),从加密密钥(公钥、公开)得到解密密钥(私钥、保密)在计算上是不可行的 • 两个密钥中任何一个都可以用作加密而另一个用作解密 (不是必须的) X = DKR(EKU(X)) = EKU(DKR(X))

  18. 基于公开密钥的加密过程

  19. 用公钥密码实现加密 • 用户产生自己的密钥对(KU,KR) • Public //KU • Private //KR • 公钥KU公开,私钥KR保密 • All  B: //加密 • Y=EKUb(X) • B: //解密 • DKRb(Y)= DKRb(EKUb(X))=X

  20. 基于公开密钥的鉴别过程

  21. 用公钥密码实现鉴别 • 条件: • 两个密钥中任何一个都可以用作加密而另一个用作解密 • 鉴别: • AALL: //Only A • Y=DKRa(X) • ALL: //鉴别、验证 A ? • EKUa(Y)=EKUa(DKRa(X))=X • 鉴别+保密: • AB: • Z= EKUb(DKRa(X)) • B: • EKUa(DKRb(Z))=X

  22. 公钥密钥的应用范围 • 加密/解密 • 数字签名(身份鉴别) • 密钥交换 //会话密钥,数字信封

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

  24. 陷门单向函数trap-door one way function 单向陷门函数是满足下列条件的函数f: //一个Key (1)给定x,计算y=fk(x)是容易的; (2)给定y, 计算x使x=fk-1(y)是不可行的。 (3)存在k,已知k 时,对给定的任何y,若相应的x存在,则计算x使fk-1(x)是容易的。

  25. 公钥密码基于的数学难题 1、背包问题 2、大整数分解问题(The Integer Factorization Problem,RSA体制) 3、有限域的乘法群上的离散对数问题 (The Discrete Logarithm Problem, ElGamal体制) 4、椭圆曲线上的离散对数问题(The Elliptic Curve Discrete Logarithm Problem, 类比的ElGamal体制)

  26. Fermat定理 • Fermat定理: p素数,a是整数且不能被p整除,则: ap-1 1 mod p • 证明: 考虑集合{1,2,…,p-1},对每个数乘以a,得到集合{a mod p,2a mod p,…,(p-1)a mod p},对于p,后者两两不同且都在1与p-1之间,因此两个集合相同,于是: • (p-1)! = 12…(p-1) •  [(a mod p)(2a mod p)…((p-1)a mod p)] mod p •  [a2a…(p-1)a] mod p •  [ap-1(p-1)!] mod p • 注意到(p-1)!与p互素,因此定理成立. • 推论: p素数,a是任意整数,则: ap a mod p

  27. Euler数 • Euler数(n)定义为小于n且与n互素的正整数个数 • p是素数,(p)=p-1 • 若n的因子分解为n=Piai, ai>0,Pi互不相同,则 (n)= Piai(1-1/Pi) • 若gcd(m,n)=1,则(mn)=(m)(n),特别地,若pq且都是素数, (pq)=(p-1)(q-1) • Euler定理:若a与n为互素的正整数,则: • a(n) 1 mod n

  28. Euler数和Euler定理 欧拉定理:a (n) ≡1 (mod n) 其中:① a对n必须是互素的; ② (n) =n(1-1/p1)(1-1/p2)…(1-1/pn) p1,p2,…,pn是r的素数因子 (n) 是n的欧拉函数,它确定1,2,…,n中有多少个是与n互素的。 例如:20=2·2·5,有两个素数2和5,这样, (20) =20(1-1/2)(1-1/5)=8 即20中有8个整数与20是互素的,即它们没有2或5为因子: 1, 3, 7, 9, 11, 13, 17, 19

  29. Euler定理 • a(n) 1 mod n • 证明: R={x1,x2,…,x(n)}为所有小于n且与n互素的正整数,考虑集合 S={(ax1mod n), (ax2mod n),…, (ax(n) mod n)}  (aximod n)与n互素  (aximod n)两两不等: (aximod n) = (axjmod n)  ximod n = xjmod n S有(n)个元素 故S也是所有小于n且与n互素的正整数,因此S=R,从而 xi=(aximod n)((axi)) mod n  (a(n) xi) mod n 注意到xi与n互素,从而得到结论.

  30. Euler定理推论 • 推论: 若n=pq, pq都是素数, k是任意整数,则 • mk(p-1)(q-1)+1 m mod n, 对任意0mn • 证明:若m=0或n,结论是显然的;若m与n互素,注意到(n)=(p-1)(q-1),由Euler定理可得到结论;否则m必定是p或者q的倍数,不妨设m=sp,则0<s<q为正整数,m与q互素,由Euler定理得到: m(q) 1 mod q  (m(q))k(p) 1 mod q  mk(p-1)(q-1)= tq+1 t是整数 等式两边乘以m=sp,得到: mk(p-1)(q-1)+1 = (tq+1)sp = tspq+sp  m mod n

  31. 中国剩余定理 中国剩余定理:设自然数m1,m2,…mr两两互素,并记N=m1m2…mr,则同余方程组 在模N同余的意义下有唯一解。

  32. 证明:考虑方程组, (1<=i<=r) 由于诸mi(1<=i<=r)两两互素,这个方程组作变量替换,令x=(N/mi)*y,方程组等价于解同余方程: (N/mi)y≡1(mod mi)

  33. 若要得到特解yi,只要令 xi=(N/mi)yi 则方程组的解为 x0=b1x1+ b2x2+ …+ brxr (mod N) 模N意义下唯一。

  34. 原根(primitive root) • Euler定理表明,对两个互素的整数a,n, • a(n) 1 mod n • 定义: • 素数p的原根定义:如果a是素数p的原根,则数 • a mod p, a2 mod p, … , ap-1 mod p • 是不同的并且包含1到p-1的整数的某种排列。 • 对任意的整数b,我们可以找到唯一的幂i满足 • b=ai mod p 0<=i<=(p-1)

  35. 离散对数 • 若a是素数p的一个原根,则对任意整数b,b0 mod p,存在唯一的整数i, 1i(p-1),使得: bai mod pi称为b以a为基模p的指数(离散对数),记作inda,p(b).容易知道: inda,p(xy)= [inda,p(x)+inda,p(y)] mod (p) inda,p(xr)= [rinda,p(x)] mod (p) • 离散对数的计算: ygx mod p • 已知g,x,p,计算y是容易的 • 已知y,g,p,计算x是困难的

  36. 经典例子--非对称加密算法 • Diffie-Hellman密钥交换算法 • 背包算法 • RSA算法 • EIGamal算法 • 椭圆曲线密码算法ECC

  37. Diffie-Hellman密钥交换 • 允许两个用户可以安全地交换一个秘密信息,用于后续的通讯过程 • 算法的安全性依赖于计算离散对数的难度 • 素数p的原始根定义:如果a是素数p的原始根,则数 • a mod p, a2 mod p, … , ap-1 mod p • 是不同的并且包含1到p-1的整数的某种排列。 • 对任意的整数b,我们可以找到唯一的幂i满足 • b=ai mod p 0<=i<=(p-1) • i 在离散对数算法中称为以a为基的指数 mod p。记为inda,p(b)

  38. Diffie-Hellman密钥交换 • 算法: • 双方选择素数p以及p的一个原根a • 用户A选择一个随机数Xa < p,计算 Ya=aXa mod p • 用户B选择一个随机数Xb < p,计算 Yb=aXb mod p • 每一方保密X值,而将Y值交换给对方 • 用户A计算出 K=YbXa mod p • 用户B计算出 K=YaXb mod p • 双方获得一个共享密钥(aXaXbmod p) • 素数p以及p的原根a可由一方选择后发给对方

  39. User A User B Generate random Xa < p Calculate Ya=aXa mod p Generate random Xb < p Calculate Yb=aXb mod p Ya Yb Calculate K=(Yb)Xa mod p Calculate K=(Ya)Xb mod p Diffie-Hellman Key Exchange

  40. K = aXaXb A B O A B O K = aXaXo K = aXbXo Diffie-Hellman密钥交换的攻击 • replay攻击 • 中间人攻击图示

  41. Diffie-Hellman密钥交换的攻击 • 中间人攻击 • 1 双方选择素数p以及p的一个原根a(假定O知道) • 2 A选择Xa<p,计算Ya=aXa mod p, AB: Ya • 3 O截获Ya,选Xo,计算Yo=aXo mod p,冒充AB:Yo • 4 B选择Xb<p,计算Yb=aXb mod p, BA: Yb • 5 O截获Yb,冒充BA:Yo • 6 A计算: (Xo)Xa(aXo)XaaXoXa mod p • 7 B计算: (Xo)Xb(aXo)XXbaXoXb mod p • 8 O计算: (Ya)XoaXaXo mod p, (Yb)XoaXbXo mod p • O无法计算出aXaXb mod p • O永远必须实时截获并冒充转发,否则会被发现

  42. 经典例子 • Diffie-Hellman密钥交换算法 • 背包算法 • RSA算法 • EIGamal算法 • 椭圆曲线密码算法ECC

  43. 背包问题 • 背包问题描述:给定重量分别为a1,a2,…an的n个物品,装入一个背包中,要求重量等于一个给定值那么,究竟是那些物品? • 0-1背包问题: • 给定一个正整数S和一个背包向量A=(a1,…,an),其中ai是正整数,求满足方程S = ∑aixi 的二进制向量X=(x1,…,xn)。 • 这是一个NP完全问题,解决这个问题所需要的时间与n呈指数增长

  44. 背包问题用于公钥密码学 • 做法:明文为X,S为密文 • 奥妙在于有两类背包,一类可以在线性时间内求解,另一类则不能 • 把易解的背包问题修改成难解的背包问题 • 公开密钥使用难解的背包问题 • 私钥使用易解的背包问题

  45. 易解的背包问题——超递增背包 • 满足下列条件的背包 • ai > ∑aj (j = 1,…,i-1) • 这样的背包也被称为简单背包 • 求解 • 从最大的ai开始,如果S大于这个数,则减去ai, 记xi为1,否则记xi为0 • 如此下去,直到最小的ai • 例如背包序列{2, 3, 6, 13, 27, 52} • 求解70的背包 • 结果为{2, 3, 13, 52} • 所以,密文70对应的明文为110101

  46. 转换背包 • 简单背包用作私钥 • 如何产生相应的公钥——转换 • 做法: • 选择一个整数 m > ∑ai (i = 1,…,n) • 然后选择一个与m互素的整数w,然后ai' = wai (mod m) (i = 1,…,n) • 这里的ai '是伪随机分布的 • 这样得到的背包是非超递增背包

  47. 基于背包问题的公钥密码系统——MH公钥算法 • 加密 • 将明文分为长度为n的块X=(x1,…,xn) • 然后用公钥A ' = (a1 ', …, an '),将明文变为密文S = E(X) = ∑ai 'xi • 解密 • 先计算S ' = w-1S mod m • 再求解简单背包问题 • S ' = ∑aixi

  48. Eaxmple-从私钥计算公钥 • 私钥{2,3,6,13,27,52} • N=31, m=105 2*31 mod 105= 62 3*31 mod 105=93 6*31 mod 105=81 13*31 mod 105= 88 27*31 mod 105=102 52831 mod 105= 37 • 公钥{62,93,81,88,102,37}

  49. Eaxmple-加密 • 消息=011000 110101 101110 • 明文: 0 1 1 0 0 0 • 背包: 62 93 81 88 102 37 • 密文:93+81=174 • 011000 对应于93+81=174 • 110101对应于62+93+88+37=280 • 101110对应于62+81+88+102=333

  50. Eaxmple-解密 • 解密者知道{2,3,6,13,27,52}, n,m • 计算n(n-1)=1mod(m) • n-1=61 • 174*61 mod 105=9=3+6, 对应于 011000 • 280*61 mod 105=70=2+3=13+52,对应于110101 • 333*61 mod 105=48=2+6+13+27, 对应于101110 • 因此, 消息=011000 110101 101110

More Related