密码学:三个时代的对决交锋

码技术(Cryptography)包含了密码学(Cryptography)和密码分析学(Cryptanalysis)两大分支,一方为红军(守),一方为蓝军(攻),两者缺一不可。

自古以来,密码学领域加密和解密的故事不断被演绎,你方唱罢,我方登场。

当前人创造一种看似完美的加密技术,经过若干年,又会被后人通过先进技术解密。在这加密-解密-再加密-解密的过程中,展现出不可估量的人类智力,激发让人探寻的无穷乐趣。

本期,让我们盘点密码学领域的重要历史节点,看看前辈大佬们如何运用密码学交锋,留下一段段里程碑式的传奇故事。

古典密码学时期

凯撒大帝:置换密码

在古典密码学时期,密码学主要用于军事的密文传递。公元前58年左右,Caesar(凯撒大帝)使用的凯撒密码就是运用军事命令的传递。他将每一个字母都进行了位移,以防止他的敌人在截获凯撒的军事命令之后,直接获取到他的真实情报。

加密方法:

加密的双方首先要对字母的位移数字达成共识,比如,我们约定好的加密位移的数字是3,那么,我发送的每一个字母都要经过3个位移,(A变成D,B变成E,C变成F… …)假设我的明文是“attack” ,经过位移为3的凯撒加密之后,就会变成“dwwtfn”。成功拿到密文的人,再通过把密文的每个字母减3的方式,就能得到真实的明文信息。

解密方法:

首先通过频率分析或者样式单词分析的方法,判定是否用的是凯撒密码。如果是,则可以使用穷举的办法,按照字母系统寻找偏移量。由于使用恺撒密码进行加密的语言一般都是字母文字系统,因此密码中可能是使用的偏移量也是有限的,26个英文字母,至多偏移25位。

频率分析是基于某些字母在英文写作中出现不同频率的事实 – 例如,E通常最常出现,其次是T和A;而Q和Z出现次数最少(见下图)。

英文字母频率

参考如下加密文本:

PZ AOL TVZA MYLXBLUA SLAALY PU AOPZ ZLUALUJL

如果算上字母,你会注意到L的出现频率高于其他任何字母(8次)。因此,如果这是替换密码并且原始消息是英语,则L代表E是安全的猜测,L与字母表中的E相距7个空格。如果位移量是7,则这组密码文本将变成:

IS THE MOST FREQUENT LETTER IN THIS SENTENCE

对于非常短的消息,手动执行暴力攻击或频率分析可能很容易,但对于整个段落或文本页面来说可能会非常耗时。

近代密码学时期

Enigma(转轮密码机):多表替代密码

Enigma(转轮密码机)由德国工程师Arthur Scherbius创造,在二战时是德军用来传播信息的加密机,彼时,英法联军完全不知道德国正在借用此机器传递信息。

加密方法:

Enigma的加密原理是多表替代——通过不断改变明文和密文的字母映射关系,对明文字母们进行着连续不断的换表加密操作。

密码机设计有3个转轮,在每个转轮的边缘上标记26个德文字母,借以表示转轮的26个位置。经过巧妙的设计,每次转轮旋转后,都会停留在这26个位置中的某个位置上。在转轮组内,转轮们相互接触的侧面之间,都有相对应的电路触点,可以保证转轮组的内部构成通路。

于是,输入的字母K,经过第一个转轮,变成输出字母R;之后这个R进入第二个转轮,咱们假设它又变成了C;尔后,这个C再进入第三个转轮,假设又变成了Y。如此,初始字母K历经3次轮转,变成了谁也认不出来的Y。

解密方法:

二战时期,阿兰·麦席森·图灵(Alan Mathison Turing)基于前人的经验,从Enigma的整个密文入手,设计了“图灵炸弹机”来进行破解。

因为德国人会在特定时间发送特定的电报,而“天气”和“希特勒”这两个词是“明文库”中最常见的两个单词。所以,图灵采用基于明文的攻击,在早上六点多的电报密文中寻找“天气”和“希特勒”两个单词加密后的密文,就能根据明文和密文的对应关系计算出密钥。

关于这段历史的更多趣闻,感兴趣的小伙伴可参见电影《模仿游戏》。

现代密码学时期

在1976年以前,所有的加密方法都是同一种模式:加密、解密使用同一种算法,即对称加密算法(symmetric encryption algorithm)。在交互数据的时候,彼此通信的双方就必须将规则告诉对方,否则没法解密。那么加密和解密的规则( 简称密钥 )的保护就显得尤其重要,传递密钥成为了最大的隐患。

当密码学进入现代时期,从艺术变成科学,开始建造完备的体系,这一隐患被得以有效解决。同时,多种密码学技术的诞生,也让原本神秘变换的密码学世界变得更加精彩纷呈。

重大历史节点:

  • 1976年,是现代密码学的开端,密码学开始由艺术转为科学,并建立一套完整的理论体系。两位美国计算机学家迪菲(W.Diffie)、赫尔曼(M.Hellman)提出了一种崭新构思,可以在不直接传递密钥的情况下,完成密钥交换。这被称为“ 迪菲赫尔曼密钥交换 ”算法,开创了密码学研究的新方向。

  • 1977年,三位麻省理工学院的数学家罗纳德·李维斯特(Ron L. Rivest)、阿迪·萨莫尔(Adi Shamir)和伦纳德·阿德曼(Leonard M. Adleman)一起设计了一种算法,可以实现非对称加密。这个算法用他们三个人的姓氏首字母命名,叫做 RSA 算法。

    【 加密方式需要两个密钥:公开密钥,简称公钥( public key );私有密钥,简称私钥(private key),公钥加密,私钥解密。RSA算法也具有缺陷 : 效率相对较低 , 字节长度限制等,在实际应用中我们往往会结合对称性加密一起使用 , 秘钥使用RSA算法 】

  • 1978年,Ron L. Rivest,Leonard M. Adleman以及 Michael L. Dertouzos提出了同态加密(Homomorphic Encryption)概念。允许对密文进行特定的代数运算后依然能得到加密的结果,将该结果解密以后的结果与对明文进行同样运算的结果会保持一致。

  • 1982年,姚期智先生提出安全多方计算,即MPC。主要探讨n个参与方必须各自输入信息去计算一个约定的函数。除了计算的正确性,这一计算过程还必须保障每个参与方输入数据的隐私。

  • 1989年,麻省理工学院研究人员Goldwasser、Micali 及 Rackoff提出了“零知识证明”的概念。指的是证明者能够在不向验证者提供任何有用的信息的情况下,使验证者相信某个论断是正确的。

随着人类科技水平的不断进步,密码学和密码分析学技术得以推陈出新,这驱动着密码从业者不断突破创新,让密码学技术发挥出应有价值,得以运用在社会生活的各个角落。