PGP(Pretty Good Privacy)工作原理剖析

一、加密和解密(encryption & decryption)



二、传统密码学——加密解密使用同一个key

故key的安全性不言而喻,脑中闪现如下的画面:

a person with a locked briefcase handcuffed to his or her wrist. What is in the briefcase, anyway? It's probably not the missile launch code/ biotoxin formula/ invasion plan itself. It's the key that will decrypt the secret data.

一个行踪诡秘的男子,提着一只精致的手提箱,不,是“铐”着,密切注视周围的一切。手提箱中,可能并不是什么导弹发射代码,病毒公式,或是入侵计划,而是能够解开神秘数据的钥匙!

这种画面只能在《碟中谍》类似的老电影中出现,现在根本没有,原因是有人发明了:


三、公开密钥系统


在现代密码体制中加密和解密是采用不同的密钥(公开密钥),也就是非对称密钥密码 系统,每个通信方均需要两个密钥,即公钥和私钥,这两把密钥可以互为加解密。公钥是公开的,不需要保密,而私钥是由个人自己持有,并且必须妥善保管和注意保密。
公钥私钥的原则:

  • 一个公钥对应一个私钥。
  • 密钥对中,让大家都知道的是公钥,不告诉大家,只有自己知道的,是私钥。
  • 如果用其中一个密钥加密数据,则只有对应的那个密钥才可以解密。
  • 如果用其中一个密钥可以进行解密数据,则该数据必然是对应的那个密钥进行的加密。


常见的公开密钥体系:

Elgamal (named for its inventor, Taher Elgamal)

RSA (named for its inventors, Ron Rivest, Adi Shamir, and Leonard Adleman)

Diffie-Hellman (named, you guessed it, for its inventors)

DSA (the Digital Signature Algorithm invented by David Kravitz)


四、PGP的工作原理

PGP结合了传统和现代的密码学方法,是一种混合的密码体系。其工作过程如下:

1.发送端

(1)首先对明文进行压缩。压缩明文一来可以减少传输量,缩短传输时间,节约成本等;更重要是增加了加密解密的强度。因为解密算法一般是通过分析明文中的pattern(字符码出现的规律等),压缩明文会减少这种”相关性“,因此其”耐解“强度会提高。

(2)PGP产生一个”session key"(它是一个"one-time-only" key,有时效性),该key是根据你的鼠标的随机移动和键盘按键产生的一组随机数。接着该密钥对压缩后的明文进行加密,生成密文。接着,使用接收端传过来的“公开密钥”对“session key" 进行加密(理论上来将,从接收端的”公开密钥“无法计算出接收端的”秘密密钥“,但因为这两个密钥存在计算相关性,只要有足够的时间和计算能力,总会计算出结果),生成发送端的”公开密钥“。最后,将密文和发送端的”公开密钥“一起发给接收端。


2. 接收端

接收端用自己的”秘密密钥“对发送端的”公开密钥“进行解密,得到原来的”session key",用这个key来解密收到的密文,最后解压缩即可。

你可能感兴趣的:(工作,算法)