公钥加密——RSA浅析

1. 公钥加密思想

 “New Directions in Cryptography

——Whitfield DiffieHellman  1976

【误解】

☒公钥加密比传统加密抗密码分析。

任何加密方案的安全性取决于密钥长度计算量。没有任何原理说明公钥加密更优越;

☒传统加密过时了

当前公钥加密方案计算开销很大,传统加密淘汰的可能性还没法预测;

☒与传统加密的密钥分发相比,公钥密码分发更简单。

公钥密码的密钥分发只是相对安全,分发还是需要某种协议、中心代理等,并不简单或高效。

【组成】

公钥加密方案由6部分组成

  1. 明文
  2. 加密算法
  3. 公钥
  4. 私钥
  5. 密文
  6. 解密算法

     每个用户都有一对密钥,一个为私人所有,另一个密钥是公共可用的,根据应用的不同,发送者要么使用自己的私钥,要么使用接收者的公钥,或者两个都使用。

【应用】

广义上,公钥密码系统分为如下三类,并不是所有的公钥算法都能适用下述所有应用:

  • 加密/解密:利用接收方公钥加密消息
  • 数字签名:利用发送方私钥签名消息
  • 密钥交换:双方联合操作交换会话密钥

算法

加密/解密

数字签名

密钥交换

RSA

Y

Y

Y

Diffie-Hellman

N

N

Y

DSS

N

Y

N

椭圆曲线ECC

Y

Y

Y

 

2. 典型公钥算法

  • 对称算法主要基于扩散和混乱
  • 非对称体制则基于某些数学特性——其安全性依赖于数学上的计算困难

 

RSA算法

最初的公钥方案是1977年由Ron RivestAdi Shamir,Len AdlemanMIT开发并与1978年首次发表。RSA方案从此便占据了绝对统治地位,成为最广泛接收和实现的公钥加密方案。

RSA的数学原理

Fermat费尔马小定理】

p是素数;a不是p的倍数,即ap互素,则

  • a^p   ≡ a   mod p

【欧拉函数】

欧拉函数Φ(n)定义为小于n且与n互素的正整数个数,有

  • n为素数时,Φ(n)=n-1
  • np×q,若pq都是素数,则:

Φ(n) = Φ(p×q) =φ(p)φ(q) 

Φ(n) = (p-1)(q-1)

【费尔马小定理的欧拉推广】

a任意,n是两个素数的乘积:
a^Φ(n) ≡ 1  mod n
 

RSA算法的构造

  1. 构造一个大数n=p×q p, q 是两个不同的质数,则Φ(n)= (p-1)(q-1)
  2. Φ(n)中找一对因子
    1. 选择一个与Φ(n)互素的整数e
    2. 计算d,使ed  mod Φ(n) =1
  3. 公钥{en},私钥{dn}

加密:C=M^e  mod n

解密:M=C^d  mod n

实际上构造了一种指数乘幂运算的单向陷门函数

  • 对明文M做计算得到密文C =M^e mod n
  • 但反向计算由密文C,指数e,求底数M则很难。除非知道陷门信息d

 

RSA的加密解密

【加密】

c=m^e mod n

RSA是分组密码,对于某个n,明文消息转为二进制数据,分成比n小的数据分组。

【解密】

证明:

c^d mod n=m

c^d mod n=(m^e mod n)^d mod n

  =(m^(ed) mod n^d) mod n

  =(m^(ed) mod n) mod (n^d mod n)

  =(m^(ed) mod n) mod 0

  =m^(ed) mod n

  =m^((n)+1) mod n

  =m^((n))*m mod n(费马小定理欧拉推广)

  =1*m mod n

  =m  

(解密后的每组密文是模n运算的结果, 所以也是小于n的数。但每组密文通过计算得到位数不定。可用补0法填满n位.)

 

RSA的安全性

RSA算法的安全性是基于大数分解的困难性。

  • 知道公开的密钥(e,n),不知道n的因子pq,无法计算出φ(n),也就无法计算eφ(n)的逆元d。所以算法计算中要求pq要丢弃。所以一旦分解出n的因子pq,就可以攻破RSA密码体制。
  • RSA的攻击是否等同于大数分解一直未能得到理论上的证明,因为没能证明破解RSA就一定需要作大数分解。目前,RSA的一些变种算法已被证明等价于大数分解。不管怎样,分解n是最显然的攻击方法。

 

攻击RSA

穷举攻击

   密钥越大越安全,但同时算法计算越慢

大部分分析破译都集中在分解n

   分解n=pq,就可以计算φ(n),就可从e求得d

假如一组用户,共用一个模n,容易产生“共模攻击”

 

RSA的应用问题

 

  • 计算速度慢
    • 运算量大,速度受局限,尤其在嵌入式设备中。一般只用于加密少量数据。选取较小的e,使加密易于实现,但也增加了不安全性,e,d都较大才保险。
  • 产生密钥烦琐
    • 为保障安全性,n位数要足够大。随机素数产生相应的复杂。电子安全交易协议中要求采用2048位长的密钥。
  • 多方通信时公钥管理复杂

           要确定对方是不是假冒,判别给的公钥是不是期望的人的公钥,因此仍需要额外的措施进行可信保障。

你可能感兴趣的:(网络安全)