解构区块链
上QQ阅读APP看书,第一时间看更新

3.1 密码学基本概念

信息加密(information encryption)作为保障消息安全传递的一种方式,其历史相当久远,可能要追溯到公元前2000年。虽然那个时代的技术与当代不可同日而语,但已具备加密的概念和雏形。例如在畅销书《失落的密符》中有这样一系列的情节:追寻宝藏的教授偶然得到一串字母“YUOEMSTDIINHREKY”,但不知何意,束手无策中被线索指引到一幅壁画前,在不起眼的角落发现了画中的一个幻方(magic square),于是豁然开朗。

幻方是一种n×n的格子,称为n阶幻方,要求将数字1~n2不重复、不遗漏地填入各个格子,使得每行、每列、每条对角线的数字之和(称为幻和)都相等。优秀的幻方还能做到四个象限的数字之和也相等,如图3.1(a)和(b)所示分别为两名大数学家亲自设计的幻方:4阶丢勒幻方(Durer's magic square)和8阶富兰克林幻方(Franklin's magic square)。n阶幻方的幻和可以计算为)。

图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)价值相对性——信息的价值越高,受到攻击的可能性就越大;反之,假如破解成本远高于信息的价值,那么信息基本就是“高枕无忧”的。

正因为如此,应避免过度运用加密技术,而是应该根据信息对象属性、应用场景等各种因素来设计合理的保密方案。