意义:公钥密码学的发展是整个密码学发展历史中最伟大的一次革命,也许能够说是惟一的一次革命。轮起色和DES是密码学发展的重要标志,可是它们都是基于代替和置换这些初等方法上。算法
提出背景:为了解决传统密码中最困难的两个问题而提出。1、密码分配;2、数字签名安全
特色:1、公钥算法是基于数学函数而不是基于代替和置换;2、公钥密码是非对称的,使用两个独立的密钥。函数
传统密码和公钥密码的区别加密
几个误解:spa
一、公钥密钥比传统密码安全blog
任何加密方法的安全性依赖于密钥长度和破译密文所须要的计算量数学
二、公钥密码将替代传统密码随机数
因为现有公钥密码计算量大,不太可能取代传统密码,主要用在密钥管理和签名中密码
公钥密码体制方法
公钥算法依赖于一个加密密钥和一个与之相关的解密密钥,这些算法具备以下特色:
一、仅根据密码算法和加密密钥来肯定解密密钥在计算上是不可行的;
二、对于有些算法(如RSA)还知足如下特色
两个密钥中的任何一个均可用来加密,另外一个用来解密。
公钥密码体制有6个组成部分:明文、加密算法、公钥、私钥、密文、解密算法
其加密的主要操做步骤以下:
一、每一个用户产生一对密钥,其中一个存于公开的寄存器或文件中以供访问,称为公钥。另外一个则保持私密,称为私钥。每一个用户均可以拥有不少其余用户的公钥。
二、若A要发消息给B,则A用B的公钥来加密消息,因为只有B有私钥,故而也只有B能够对消息解密,其余任何接受者都不能解密消息。
此外公钥体制还能够用于认证,具体操做以下:
一、A向B发送消息前,先用A的私钥对消息加密,由于B只有用A的公钥才能对消息解密,所以该消息能够用于认证源和数据完整性。
因为对整个消息的认证加密过于耗费计算时间和存储空间,能够对此进行改进。只对一个称为认证符的小数据块进行加密,该认证块是整个消息的函数,对该消息的任何修改必然会引发认证符的变化,所以用发送方的私钥对认证符进行加密,加密的结果可做为数字签名,它能验证消息源、消息和通讯序列的有效性。
为了同时保证加密和认证,则须要先用发送方的私钥进行数字签名,再用接收方的公钥对整个消息进行加密。不过这种方法的缺点是每次通讯中要执行四次复杂的公钥算法。
公钥密码体制的应用
通常,公钥密码体制的应用分三类:
一、加密/解密:发送方用接收方公钥对信息加密
二、数字签名:发送方用自身的私钥对消息“签名”
三、密钥交换:通讯双方交换会话密钥(传统密码的密钥)
对公钥密码的要求
一、接收方B产生一对密钥在计算上是容易的
二、已知公钥和要加密的消息M,发送方A产生相应的密文在计算上是容易的
C = E(PUb,M)
三、接收方B使用私钥对接收的密文解密以恢复明文在计算上是容易的
M = D(PRb,C) = D(PRb,E(PUb,M))
四、已知公钥PUb,攻击者要肯定私钥PRb在计算上是不可行的
五、已知公钥PUb和密文C,攻击者要恢复明文M在计算上是不可行的
六、对于部分公钥密码应用,还应知足加密和解密函数的顺序能够交换
M = D(PUb,E(PRb,M)) = D(PRb,E(PUb,M))
事实上,要知足上述条件便是要找到一个单向陷门函数。单向陷门函数知足下列性质:
若k和X已知,求Y = fk(X) 容易计算
若k和Y已知,求X = fk-1(Y) 容易计算
若Y已知但k未知,则求X = fk-1(Y)是不可行的
以上计算上容易是指:一个问题能够在输入长度的多项式时间内获得解决,即若输入长度为n位,计算的时间复杂度为na,a为常数。
计算上不可行是指:解决一个问题所需时间比输入规模的多项式增加更快。如输入长度是n位,计算时间复杂度是2n。
公钥密码分析
一、穷举攻击:解决办法是使用长密钥,可是长密钥将使加密/解密变慢(公钥密码加密/解密时间对密钥长度的非线性增加),所以限制了公钥密码的应用。
二、根据公钥计算私钥:目前未能作数学上的证实肯定该攻击不可行,但也没有可行的办法作这样的攻击。
三、穷举消息攻击(公钥体制特有):根据消息自己的特色(公钥常常用来传递传统密码的密钥)来进行对消息的穷举攻击,如发送56位DES密钥。解决办法就是在要发送的消息后附加一个随机数。