公钥密码技术.pptVIP

  • 6
  • 0
  • 约6.48千字
  • 约 26页
  • 2019-09-23 发布于湖北
  • 举报
公钥密码算法主要内容 概述 公钥密码提出的背景 公钥密码的基本思想 公钥密码的应用 RSA公钥密码体制 ElGamal公钥密码体制 椭圆曲线密码体制 4.1概述 4.1.1 公钥密码提出的背景 1.密钥管理的困难性问题 传统密钥管理两两分别用一对密钥时则n个用户需要 n(n-1)/2个密钥,当用户量增大时密钥空间急剧增大。 2.系统的开放性问题 对称密码体制的密钥分发方法要求密钥共享各方互相信任,因此它不能解决陌生人间的密钥传递问题 3.数字签名问题 对称加密算法难以实现抗抵赖的安全需求。 4.1.2 公钥密码的基本思想 公钥密码也称为非对称密码。使用公钥密码的每一个用户都分别拥有两个密钥:加密密钥与解密密钥,它们两者并不相同,并且由加密密钥得到解密密钥在计算上是不可行的。每一个用户的加密密钥都是公开的。 单向陷门函数 单向陷门函数可以被定义为如下函数f: (1)给出f的定义域中的任意元素x, f(x)的计算是容易的; (2)给出y=f (x)中的y要计算x时,若知道设计函数f时结合进去的某种信息(该信息称为陷门),则容易计算;若不知道该信息,则难以计算。 设计公钥密码体制可以转换为寻找单向陷门函数。目前人们主要是基于如下的数学上的困难问题来设计单向函数和公钥密码体制: (1)大整数分解问题(如公钥密码体制RSA); (2)有限域上的离散对数问题(如公钥密码体制ElGamal): (3)椭圆曲线上的离散对数问题(如公钥密码体制ECC)。 4.1.3 公钥密码的应用 (1) 机密性的实现 发送方用接收方的公钥加密消息,接收方用自己的私钥来解密。 (2) 数字签名 发送方用自己的私钥来签名消息,接收方通过发送方对应的公钥来鉴别消息,并且发送方不能对自己的签名进行否认。 (3) 密钥分发和协商 发送方和接收方基于公钥密码系统容易实现在公开信道上的大规模的密钥分发和协商。 4.2 RSA公钥密码体制 RSA公钥算法是由MIT的Rivest, Shamir和Adleman在I 978年提出来的。RSA方案是被最广泛接受并实现的通用公开密钥密码算法,目前已成为公钥密码的国际标准。该算法的数学基础是初等数论中的欧拉定理,其安全性建立在大整数因子分解的困难性之上。 4.2.1 RSA的算法描述 (1)密钥的生成 1. 选择两个大素数 p,q,(p,q为互异素数,需要保密), 2. 计算n = p×q, ?(n) = (p-1)×(q-1) 3. 选择整数 e 使 (?(n),e) =1, 1e ?(n) 4. 计算d,使d = e-1mod ?(n), 得到:公钥 为{e,n}; 私钥为{d} (2)加密(用e,n): 明文:M n, 密文C = Me(mod n). (3) 解密(用d,n): 密文C, 明文M = Cd(mod n) 验证: C d mod n=(M e ) d mod n =M ed mod n≡ M mod n (由Euler定理推论) 例 1: 假定B取p=47,q=71,那么n=47X71=3337, φ(n)=46X70 =3220. 设B取79,采用欧几里得算法可得 d = e-1mod(p-1)(q-1) = 79-1 mod3220 = 1019 因此,B的公钥为(3337,79),私钥为1019。 假定A要发送消息668给B,他首先要获取B的公钥(3337,79),然后计算: c = 68870mod3337 = 1570; 并把密文发送给B。B收到密文后,用私钥进行解密得: m =od3337 = 688. (2)如何快速的产生大素数 通常使用的过程是随机选取一个需要的数量级的奇数并检验这个数是否是素数。 几乎所有的检验素性的方法都是概率性的。 一般的,选取一个素数的过程如下: 1)随机选一个奇数n(例如使用伪随机数产生器); 2)用某种概率性算法(如Miller-Rabin算法)对n进行一次素性检验,如果n没有通过检验,转到步骤1; 3)重复步骤2足够多次,如果n都通过了检测,则认为n为素数。 Miller-Rabin( n )算法 将 n-1写成2km的形式,其中m是一个奇数 在{2,…,n-2}中随机的选取一个整数a 计算b=am mod n; if (b==1) return TRUE; for(i=0;ik;i++) { if(b==n-1) return TRUE; else b=b?b mod n; } ret

文档评论(0)

1亿VIP精品文档

相关文档