产生背景;
对称算法的不足:
-
密钥管理困难
传统密钥管理,两两分别用一个密钥时,则n个用户需要
C(n,2)=n(n-1)/2个密钥,当用户量增大时,密钥空间急剧增大,如:
n=100时, C(100,2)=4995
n=5000时, C(5000,2)=12497500 -
密钥必须通过某一信道协商,对这个信道的安全性的要求比正常的传送消息的信道安全性要高。
-
数字签名的问题。
传统加密算法无法实现扛抵赖的需求。
公钥加密算法定义:
- 公钥加密算法需要两个密钥:公开密钥(Public Key:简称公钥)和私有密钥(Private Key:简称私钥)。公钥与私钥是一对,如果用公钥对数据进行加密,只有用对应的私钥才能解密。因为加密和解密
使用的是两个不同的密钥,所以这种算法叫作公钥加密算法,也叫非对称加密算法。 - 公钥密码算法是基于数学函数(如单向陷门函数)而不是基于代换和置换。
- 公钥可以被任何人知道,用于加密消息以及验证签名;私钥仅仅自己知道的,用于解密消息和签名。
公钥密码方案组成
- 明文:算法的输入,它是可读的消息或者数据。
- 加密算法:加密算法对明文的各种形式的变换。
- 公钥和私钥:算法的输入,这对密钥如果一个用于加密,则另一个用于解密。公钥是公开的,私钥是保密的。给定公钥要计算出私钥在计算上是不可行的。
- 密文:算法的输出,取决于明文和密钥,对于给定的消息,两个不同的密钥产生两个不同的密文。
- 解密算法:该算法接收密文和匹配的密钥,生成明文.
公钥密码工作原理
- A要向B发送信息,A和B都要产生一对用于加密和解密的公钥和私
钥。 - A的私钥保密,A的公钥告诉B;B的私钥保密,B的公钥告诉A。
- A要给B发送信息时,A用B的公钥加密信息,因为A知道B的公钥。
- A将这个消息发给B(已经用B的公钥加密消息)。
- B收到这个消息后,B用自己的私钥解密A的消息。其他所有收到这个报文的人都无法解密,因为只有B才有B的私钥。
公钥密码系统满足的要求
• 同一算法用于加密和解密,但加密和解密使用不同的密钥。
• 两个密钥中的任何一个都可用来加密,另一个用来解密,加密和解密次序可以交换。
• 产生一对密钥(公钥和私钥)在计算上是可行的。
• 已知公钥和明文,产生密文在计算上是容易的。
• 接收方利用私钥来解密密文在计算上是可行的。
• 仅根据密码算法和公钥来确定私钥在计算上不可行。
• 已知公钥和密文,在不知道私钥的情况下,恢复明文在计算上是不可行的
公钥密码两种基本模型:
- 加密模型
发送方用接收方的公钥作为加密密钥,用接收方私钥作解密密钥,由于该私钥只有接收方拥有,因此即只有接收者才能解密密文得到明文。 - 认证模型
发送方用自己的私钥对消息进行变换,产生签名。接收者用发送者的公钥对签名进行验证以确定签名是否有效。只有拥有私钥的发送者才能对消息产生有效的签名,任何人均可以用签名人的公钥来检验该签名的有效性。
结合成一张图
-
RA代表A的私钥,UA代表A的公钥。
-
优点:
(1)密钥分配简单。
(2)密钥的保存量少。
(3)可以满足互不相识的人之间进行私人谈话时的保密性要求。
(4)可以完成数字签名和身份认证。 -
缺点:
(1)公钥密码是对大数进行操作,计算量特别浩大,速度远比不
上私钥密码体制。
(2)公钥密码中要将相当一部分密码信息予以公布,势必对系统
产生影响。
(3)在公钥密码中,若公钥文件被更改,则公钥被攻破。
对称密码和非对称密码对比
- 目前提出的公钥密码体制的密钥长度已经足够抵抗穷举攻击,但也使它加密和解密速度变慢,因此公钥密码体制一般用于加密小数据,如会话钥,目前主要用于密钥管理和数字签字。 公钥密码体制所使用的可逆函数的计算复杂性与密钥长度是比线性函数增大更快函数。密钥长度太大又会使得加密和解密运算太慢而不实用.对公钥密码算法的第二种攻击是从公钥计算出私钥。目前为止,还没有在数学上证明这个方面是不可行的.