2.2 搅拌机
计算机技术的发展,加上数学家们的努力,让密码学有了算力的支持,算法也升级换代,从而使密码学从艺术过渡到了技术,产生了现代密码学:对称密码体制和非对称密码体制。
对称密码体制的核心为“置乱”:
(1)要求从密文中不能获得明文的统计特征,即满足扩散要求;
(2)要求从密文中不能获得密钥的统计特征,即满足混淆要求。
我们不妨称之为信息“搅拌”。
2.2.1 ASCII编码
ASCII编码表明一个字母可以表达为8个0、1的串,为了使人们易于查看,又表示成两位十六进制数,见表2.1。
表2.1 ASCII编码表示例
不管明文是用何种文字书写的,都可以将“字”编码成一个二进制数。例如,把A打破变为01000001,再打乱(运算)这个“数”,这就是加密。
2.2.2 公开算法
以前,算法和密钥都是保密的。20世纪70年代,美国国家标准局向公众征集加密算法,IBM提交的算法胜出并作为DES(Data Encryption Standard)向社会公布。这是密码史上第一次公开算法,目的有三:一是让公众评判算法的优劣,二是体现算法开发者的自信,三是希望该算法得到更广泛的应用。这次不光公开了算法,连密钥的长度也公开了:DES的密钥长度为64位,实际为56位,另外8位为校验位。
2.2.3 信息搅拌
可以把DES当作一台信息搅拌机,对64位的数据组进行搅拌,搅拌时用到如下方法:
(1)基于二进制的置换表置换,如把第58位调到第1位,把第50位调到第2位……这就“打破”了字符的整体性;
(2)使用子密钥进行异或;
(3)扩展和压缩变换(使用S盒替换表);
(4)打乱、重组(使用P盒置换表)。
2.2.4 搅拌16次
对64位密钥进行置换及位移,即通过“搅拌”生成一个48位子密钥,再通过“搅拌”生成第二个子密钥,如此,一共生成16个子密钥。
拿第1个子密钥对明文进行信息搅拌,再拿第2个子密钥对前述结果进行第2次信息搅拌,如此,直至完成16次信息搅拌。这就是对一组信息的搅拌过程。
2.2.5 加密与解密
按64位,即8个字符的密钥长度,对明文M进行分组,也就是8个字符一组,最后一组不足8个字符时用空格补齐。然后,对每组进行上述信息搅拌,得到密文。
当然,上述信息搅拌是有规律的,我们称之为算法。通过算法实现加密,再用相同的密钥进行逆过程,实现解密。