数据加密技术入门
网络与通信
数据加密其实不算一门新兴的学科,早在4000多年前的古埃及时期就有了应用记录,比如历史上著名的循环移位恺撒密码(Caesar’s Cipher)就是一例(其原理很简单,就是讲字母挨个移位,以移位数4为例,将cpcw变为gtga,解密时反向移动4位即可)。而现代的密码学主要有两个方向(本文重点在第二种方向,因为PGP软件的以前最大热点就是RSA算法)。
其一是传统的加密方式,原理可以用以下流程简单地表示:原始信息→用密钥加密成密文→传递→用密钥解密成原始信息。其特点是加密密钥和解密密钥完全一致,密钥需要通过安全的渠道传输,否则加密就形同虚设。这种加密方式的代表是IBM于70年代中期提出的DES(数据加密标准),其特点是技术成熟,经历了多年实践和理论的检验。其中Triple-DES是目前最常用的。当然现在还有新兴CAST和IDEA等算法,它们都属于传统方式,传统方式加密与解密过程如(图1)所示。

其二就是“公开密钥密码体制”(Public-key crypto-system),它源于1976年Diffie和Hellman两人提出的密钥交换协议。其特点是加密密钥和解密密钥不相同,其中加密密钥是公开的,故称为“公钥”;解密密钥私人保存,故称“私钥”。公钥与私钥在数学上有某种联系,即从私钥可以很容易求出公钥,而要从公钥反方向推出私钥却非常困难。这样,用私钥解开公钥加密的密文很方便,而只知道公钥的人从网上截获密文后,要推导出私钥解开密文是很难的。而且这一特性还可以很方便的用在“数字签名”上(数字签名是现在很时兴的技术)。加密与解密的全过程如(图2)表示,一目了然。

你可能会觉得有点玄,为什么反向会这么困难呢?打个简单的比方:在数学上有一些函数,要推出反函数很困难,而反函数推出函数却很容易。其关键就在于先进的算法,当然这属于数学家和密码学家研究的范畴,我们就不必深究了。
下面讲讲公开密钥密码体制的经典算法:RSA算法。这是1977年Ron Rivest,Adi Shamir,Len Adleman3人提出的,RSA正是3人姓名的首字母。RSA算法的核心问题是大自然数的素数(质数)拆分。即如果已知2个素数,求其乘积很容易,反过来如果已知其乘积要拆分为2个素数则很困难(当乘积相当大的时候)。这就和上述的基本原理对应了。当然,具体实现还要通过一些中间变量,其中涉及到较复杂的数学推证,这里就不多说了。另外值得一提的是,自然数的素数分解问题现在还没有被证明是只能穷举实现,不过几十年过去了,仍然没有较好的计算方法出现。