公钥密码/非对称密码:RSA、ElGamal、Diffie Hellman?LBC计算过程

目录

一、公钥密码

1.1、公钥密码特点

1.2、公钥密码解决的问题

1.3、公钥密码与私钥密码的区别

二、公钥密码原理

   2.1、单向函数

2.2、RSA计算过程

2.2.1、RSA生成密钥

2.2.2、RSA加解密

2.3、公钥密码体制

三、RSA的安全性威胁

3.1、强力穷举密钥

3.2、数学攻击 :实质上是对两个素数乘积的分解

3.3、时间攻击:依赖解密算法的运行时间

3.4、其他方法

3.5、使用RSA需注意


一、公钥密码

  • 是密码学一次伟大的革命
  • 使用两个密钥:公密钥、私密钥
  • 加解密的非对称性
  • 利用数论的方法
  • 是对对称密码的重要补充

1.1、公钥密码特点

仅根据密码算法和加密密钥来确定解密密钥在计算上不可行
两个密钥中的任何一个都可用来加密,另一个用来解密。

1.2、公钥密码解决的问题

  • 密钥交换
对称密码进行密钥交换的要求:
已经共享一个密钥
利用密钥分配中心
  • 数字签名
与传统手写的签名比较

1.3、公钥密码与私钥密码的区别

任何加密方法的安全性依赖于密钥的长度和破译密文所需要的计算量。从抗密码分析的角度看,原则上不能说传统密码优于公钥密码,也不能说公钥密码优于传统密码

由于现有的公钥密码方法所需的计算量大,所以取缔传统密码似乎不太可能。

使用公钥密码也需要某种形式的协议,该协议通常包含一个中心代理,并且它所包含的处理过程既不比传统密码中的那些过程更简单,也不比之更有效。

二、公钥密码原理

   2.1、单向函数

若一个函数fA→B为一单向(One-way)函数,则它满足:

      1.  对所有xA,易于计算f(x)。

      2.  几乎所有xA”,由f(x)求x“极为困难(对现有的计算资源和算法而言),以至于实际上不可能做到。

陷门单向函数(Trapdoor one-way function),是这样的单向函数:

在不知陷门信息下,由 f ( x ) x 极为困难”;
当知道陷门信息后,由 f ( x ) x 是易于实现的。
单向函数举例

2.2、RSA计算过程

2.2.1、RSA生成密钥

1.随机选择两个素数: p=17 & q=11                                             素数测试是重要的算法
2.计算密钥长度:n = pq =17×11=187  (秘钥长度为7bit)
3.计算 ø(n)=(p–1)(q-1)=16×10=160
4.选择e 使其gcd(e,160)=1,且e<160: 这里选择 e=7
5.解方程e·d=1 mod ø(N) 且 0≤d≤N确定 d:                                由e求d要使用到扩展Euclid算法
  要使e·d=1 mod 160 且d < 160 
  因为 23×7=161= 1×160+1 故取 d=23                                     d = (k*ø(n)+1)/e   k=1,2,...一个一个试
6.公布公钥: KU={7,187}        n分解为p*q是数学上“整数分解”难题,保障了RSA的安全性
7.保存私钥: KR={23,187}

2.2.2、RSA加解密

给定明文 M = 88
加密:
C = 88 7 mod 187
=(884 mod187)(882 mod187 ) (881mod187)
=11 
解密:
M = 11 23 mod 187 = 88 

2.3、公钥密码体制

           保密公钥体制

具有保密与认证的公钥体制

三、RSA的安全性威胁

计算能力的不断增强和因子分解算法的不断改进,给大密钥的使用造成威胁。
因此我们在选择RSA的密钥大小时应谨慎小心。在现阶段,密钥大小取在1024到2048位是合适的。


3.1、强力穷举密钥


3.2、数学攻击 :实质上是对两个素数乘积的分解

  • 分解 N=p.q, 因此可计算出ø(N),从而确定d
  • 直接确定ø(N),然后找到d
  • 直接确定d

3.3、时间攻击:依赖解密算法的运行时间

由密码分析家P.C.Kocher于1996年提出。被安全专家称为“有创意的攻击”

通过观察系统处理特定函数所花费的时间来寻找密文的信息

计时攻击不仅可以攻击RSA而且可以攻击其他的公钥密码系统
计时攻击的完全不可预知性以及它仅依赖于明文,所以它具有很大的威胁
 

如何避免时间攻击

尽管计时攻击会造成严重的威胁,但是有一些简单可行的解决办法,包括
1.不变的幂运算时间
    保证所有的幂运算在返回结果前执行的时间都相同,这种方法简单,但会降低算法的性能。
2.随机延时
    通过在求幂算法中加入随机延时来迷惑计时攻击者,可提高性能。
3.隐蔽
    在执行幂运算之前先将密文乘上一个随机数,这一过程可使攻击者不知道计算机正在处理的是密文的哪些位,这样可防止攻击者一位一位的进行分析,而这种分析正是计时攻击的本质所在。

3.4、其他方法

迭代攻击、选择明文攻击、公共模攻击、低加密指数攻击等。 

3.5、使用RSA需注意

除了要指定n的大小外,研究者还提出了其他一些限制条件,为了防止可以很容易地分解n,RSA算法的发明者建议p和q还应满足下列条件
1.p和q的长度应仅相差几位。这样对1024位的密钥而言,p和q都应约在1075到10100之间。
2.(p-1)和(q-1)都应有一个大的素因子。
3. gcd(p-1, q-1)应该比较小
另外,已经证明,若e<n,且d<n1/4,则d很容易被确定 
 
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值