预计阅读本页时间:-
9.2.2 公钥加密技术
由于对信息进行加密和解密的运算量是可控制的,所以私钥加密体系十分有用。但是它也有一个缺陷:发送者与接受者必须同时拥有密钥。他们甚至必须有物理上的接触,才能传递密钥。为了解决这个矛盾,人们引入了公钥加密技术(1976年由Diffie和Hellman提出)。这一体系的特点是加密密钥和解密密钥是不同的,并且当给出了一个筛选过的加密密钥后不可能推出对应的解密密钥。在这种特性下,加密密钥可被公开而只有解密密钥处于秘密状态。
为了让大家感受一下公钥密码体制,请看下面两个问题:
问题1:314159265358979×314159265358979等于多少?
广告:个人专属 VPN,独立 IP,无限流量,多机房切换,还可以屏蔽广告和恶意软件,每月最低仅 5 美元
问题2:3912571506419387090594828508241的平方根是多少?
如果给一张纸和一支笔,加上一大杯冰激凌作为正确答案的奖励,那么大多数六年级学生可以在一两个小时内做出问题1的答案。而如果给一般成年人纸和笔,并许诺回答出正确答案可以免去终身50%税收的话,大多数人还是不能在没有计算器、计算机或其他外界帮助的条件下解答出问题2的答案。虽然平方和求平方根互为逆运算,但是它们在计算的复杂性上却有很大差异。这种不对称性构成了公钥密码体系的基础。在公钥密码体系中,加密运算比较简单,而没有密钥的解密运算却十分繁琐。
一种叫做RSA的公钥机制表明:对计算机来说,大数乘法比对大数进行因式分解要容易得多,特别是在使用取模算法进行运算且每个数字都有上百位时(Rivest等人,1978)。这种机制广泛应用于密码领域。其他广泛使用的还有离散对数(El Gamal,1985)。公钥机制的主要问题在于运算速度要比对称密钥机制慢数千倍。
当我们使用公钥密码体系时,每个人都拥有一对密钥(公钥和私钥)并把其中的公钥公开。公钥是加密密钥,私钥是解密密钥。通常密钥的运算是自动进行的,有时候用户可以自选密码作为算法的种子。在发送机密信息时,用接收方的公钥将明文加密。由于只有接收方拥有私钥,所以也只有接收方可以解密信息。