加密的理论基础是替代和换位。替代主要用于扰乱,使用不同的位、字符或字符分组来替换原来的位、字符或字符分组。换位主要用于扩散,并不使用不同的文本来替换原来的文本,而是对原有的值进行置换,即重新排列原来的位、字符或字符分组以隐藏其原有意义。
对称加密是一种加密与解密采用相同密钥的加密算法。其特点是速度快,效率高,所以被广泛使用在很多加密协议的核心当中,也是我们平时接触得比较多的一种加密方式。
图1 对称加密算法加密解密过程
常见的对称加密算法主要有以下几种:
对称加密需要双方进行加密通信前先协商分配好密钥,一般来说密钥分发可以是以下几种方式:
受对称加密算法自身的特点影响,当多用户之间使用对称加密算法进行通信时,密钥数量成指数增长,对密钥的分发和管理带来巨大的挑战。当用户数量为n,密钥数量最多为n*(n-1)/2。比如有100个用户,则最多需要4950个密钥。
随着技术的发展,对称加密的密钥分发也出现了一些新的解决方法,如非对称加密算法,Diffie–Hellman算法等。采用这类算法使得对称加密密钥的协商与管理变得更简单和可靠。采用非对称加密时n个用户只需维护n个密钥对,大大减小了密钥规模。
Diffie-Hellman算法(简称DH算法)是Whitefield Diffie和Martin Hellman在1976年公布的一种秘钥交换算法。它是一种建立秘钥的方法,而不是加密方法。基于这种秘钥交换技术:通信双方在完全没有对方任何预先信息的条件下,可以通过不安全信道协商一个密钥。这个密钥一般作为对称加密的密钥应用在双方后续数据传输的加密上。
和非对称加密算法的理论基础一样,DH算法也是基于一个数学难题,即计算离散对数的难度。具体来说,假设Alice需要与Bob需要协商一个秘钥,是这样一个过程:
图2 DH算法密钥协商过程
示例:
经计算,Alice与Bob本次协商的密钥为36。