第3章密码学基础
“一轮明月不孤单,
晚起朝落无埋怨。
吴刚吃惊尔登门,
嫦娥煮饭待客欢。”
Alice吟起诗来,Bob倒是比吴刚还吃惊,不过Bob可不是等闲之辈,立马看出端倪来。
“好的,一起吃饭!”Bob一语双关,又加了一句: “你是孔子学院毕业的?”
Alice哈哈大笑,“你答应得这么爽快,显然漏掉了半句话。”见Bob一脸蒙圈,Alice调皮地说: “友情提示,你只看到一条斜线,划个V字试试?”
无论是民间的谜语、藏头诗,还是军队的密电码,无论是娱乐、游戏,还是决定生死存亡的行动,都有隐藏信息的需要。加密与破译的对抗有许多惊心动魄的故事,有些被拍成了令人荡气回肠的电影。例如《U571》和《模仿游戏》,表现的是同一个历史事件的前后两段,先是盟军巧妙地从轴心国潜艇上猎取恩尼格玛(Enigma,意为谜)密码机,然后是布莱切利庄园一群以“计算机和人工智能之父”艾伦·图灵(Alan Turing)为代表的密码专家,成功破译史上*强密码,*终挽救了千百万生命,拯救了世界。再例如《风语者》,印第安原住民纳瓦霍族人应征入伍,成为通信兵,他们用独特的方言来进行无线电通信,让敌方听到了也完全不知所云,技术上��无破解之道。
3.1密码学基本概念
信息加密(information encryption)作为保障消息**传递的一种方式,其历史相当久远,可能要追溯到公元前2000年。虽然那个时代的技术与当代不可同日而语,但已具备加密的概念和雏形。例如在畅销书《失落的密符》中有这样一系列的情节: 追寻宝藏的教授偶然得到一串字母“YUOEMSTDIINHREKY”,但不知何意,束手无策中被线索指引到一幅壁画前,在不起眼的角落发现了画中的一个幻方(magic square),于是豁然开朗。
幻方是一种n×n的格子,称为n阶幻方,要求将数字1~n2不重复、不遗漏地填入各个格子,使得每行、每列、每条对角线的数字之和(称为幻和)都相等。**的幻方还能做到四个象限的数字之和也相等,如图3.1(a)和(b)所示分别为两名大数学家亲自设计的幻方: 4阶丢勒幻方(Durers magic square)和8阶富兰克林幻方(Franklins magic square)。n阶幻方的幻和可以计算为n2×(n2 1)。
图3.1幻方示例
于是执着寻宝的教授将16个密文字母按顺序填到丢勒幻方中,再对照幻方中对应的数字,按从小到大的次序写下字母,一句话就出现了: “YOUR MIND IS THE KEY”(你的思想是关键),其中KEY(也有钥匙之意)与Bob的话一样也是个双关语。
早期的加密方法只用于字母等文字信息,以手工处理为主,一般采用“置换法”,例如以一定规律打乱字母次序、将字母替换为另一个字母、用数字来表示字母等,这类方法被称为古典加密法。受限于较弱的密码分析能力,这些技术在当时还是具有较强的先进性和**性的。
然而,随着数据统计能力的提高,各种置换法共同存在的大漏洞逐渐显示出来,就是无论怎么改头换面,文章中各字母出现的频率(即字频)并没有改变。因此,破译者并不需要费劲猜测加密手段,也不需要拼命尝试,只要有足够长的密文,就可以根据密文字母的字频对照图3.2的数据,推测出各个字母的原形。例如,字母e在英文单词中很常用,字频*高; 字母t位居次席,且作为首字母的概率****,无疑是随处可见的定冠词“the”在起作用。虽然恩尼格密码机将古典加密法推向**,通过快、中、慢三个转轮实现字母映射关系为每字母一变,复杂性大增,难以简单通过字频来分析,但本质上仍然属于替换法范畴,很难抵抗穷举排序等暴力攻击。
图3.2英文字母字频柱状图和首字母字频折线图
1946年2月14日,随着世界上**台计算机艾尼阿克(ENIAC)的诞生,密码分析技术跨入了新阶段,曾经威名远播的Greece、Caesar、Playfair、Vigenere、Vernam、Hill等古典加密法永远退出了历史舞台。同时伴随着高等数学研究不断取得新成果,信息加密领域开启了“数学 电脑”的现代加密法时代,加密技术也升级成为密码科学。
现代密码技术几乎都是针对二进制数据,不论数据是文本、图片、音频、视频还是程序。如图3.3所示,信息加密的基本原理是: 把明文(plaintext)用加密(encryption)方法结合密钥(key)生成保密的密文(cryptograph或ciphertext),只有使用正确的解密(decryption)方法结合解密密钥才能成功还原出明文。换句话说,如果运用的解密方法不符,特别是解密密钥不正确,即使采用高性能计算机,破译的难度依然极大。
图3.3加密和解密原理图
信息加密“五要素”模型是原则性的框架,可以依不同技术而有所变化,例如,加密和解密密钥可以是不同数值,可以不使用密钥,也可以不支持解密。需要注意的是,所谓明文并非是“可读”的代名词,而只是一次加密过程的输入或一次解密过程的输出,已经加密的密文也可以成为另一次加密的“明文”,即加密可以无限迭代、层层嵌套。多次加密的过程是一种栈式运算,后进行的加密应该先作解密。
现代加密法有三大类技术,如图3.4所示,包括: 对称密钥加密、非对称密钥加密、单向函数加密。加密技术的合理运用可以产生三方面的作用。
保密性: 通过改变原始信息的数据构成,使得信息即使遭窃取、截获、泄露,也难以获取原始信息,达到保护信息内容**的目的。
完整性: 敏锐发现信息内容发生的任何变化,如信息被篡改(或传输过程发生误码)、伪造,从而保障原始信息的“原封不动”。
确权性: 鉴别并确定信息的归属方,一方面可以用来证明信息的真正拥有者(所有权),另一方面也可用以判定信息来源,防止抵赖。
图3.4现代加密法分类
信息加密技术是一把“双刃剑”,既有防范自己的信息受到侵害的作用,又有投入成本上升、系统复杂性增大、信息传递延迟等副作用。同时,加密和破解永远是“矛尖还是盾固”的关系,一个在明处,一个在暗处,即便采用*先进的信息加密技术,也达不到**的**,**始终具有相对性。
(1) 计算相对性——普通电脑难以破译的密码,高性能电脑或许就能轻松攻破,因为难度实际上取决于计算能力; 还有可能研究出一种数学方法,可以极大地降低计算工作量。
(2) 时间相对性——目前很**的密码,随着时间的推移,**性会衰减,因为在攻击者持续不断地尝试下,被攻破的概率将逐步上升。
(3) 价值相对性——信息的价值越高,受到攻击的可能性就越大; 反之,假如破解成本远高于信息的价值,那么信息基本就是“高枕无忧”的。
正因为如此,应避免过度运用加密技术,而是应该根据信息对象属性、应用场景等各种因素来设计合理的保密方案。
3.2对称密钥加密
对称密钥加密(symmetric key cryptography),又称为私钥加密、单钥加密,因同一个密钥既用于加密又用于解密而得名。
密钥实际上就是一串二进制数据。既然对称加密方法的密钥也要用于解密,那么密钥一定要被妥善保护好、绝不示人,这是其称为私钥的原因。又由于密文的合法接受者也需要这个私钥,所以如何在通信双方间**地分享密钥就显得非常重要。
对称密钥加密是实现信息保密的主要手段,具有如下技术特点:
密钥是关键(Key is key)。现代加密技术的加密算法可以公布,加密代码也可以公开,只要保护好密钥,密文就是**的。
密钥长度决定**性。密钥越长则加密强度越大,因为穷举密钥几乎是尝试破解的**方式,那么密钥每增加1位,就可以给破解者的计算工作量增加1倍,密钥增加1字节,破解工作量就是原来的256倍,相当于原本1天就可破解,现在则需要将近1年。
对称加密算法被设计为具有很高的计算效率,可面向大量数据的加密,如文件、数据库、流媒体等,然而密钥的**生成、**分发、**存储、**使用需要较大的管理工作量。
对称密钥加密可分为流式加密和分组加密两大类,前者适用于流媒体应用,例如在线播放音乐或视频,后者应用范围更广,适用于绝大多数需要数据加密的场合。常用的对称密钥加密技术有BLOWFISH、TEA、DES、AES、IDEA、SM4、RC4等,本章选取其中具有代表性的SM4和DES来展开算法细节。
在比特币核心系统中并没有直接采用对称密钥加密技术,这应该与比特币提倡信息透明化有关,而且存储的信息也比较单一。但是在区块链扩展应用中,当需要对保存的私密信息进行保护时,对称密钥加密技术就有用武之地了。