最近一直在看密码学相关的知识,虽然一年前已经看过了,但一段时间没用了,就容易忘记。

所以想在这里写一篇密码学简史,顺便梳理一下相关知识。

密码学对普通人来讲,看起来是很高深的,但实际情况是每天大家都要用到大量密码学的算法。只要你在用手机电脑上网,购物,聊天,那就一定会有很多密码学相关的算法在后面默默地工作着,这些幕后英雄在偷偷地保障着你在数字时代,你的隐私不被窃取,你的聊天记录不会被人看到,你的银行密码不会被人抓到。

每次你在App里面发起一次购物请求,在聊天App里面发出“你好”,后台有大量的加密算法在默默地运行。

而在这里我想慢慢地给大家解释清楚这后面所发生的一切。

密码学简单来说就是把你说的话,发的消息进行各种转换,就算别人看到转换之后的内容,也无法看到你真实说了什么。

所以这里你会第一次接触到两个概念

  1. 明文(PlainText):就是你真实说的话,发的消息
  2. 密文(CipherText):就是经常各种转换内容,别人第一次看到时会一脸懵,不知道具体是什么

大道至简,简单粗暴。

人类的文明史,其实也是密码学的演进史,人类从古至今,其实都是一直在追求如何将明文进行各种转换,变成密文,而不被变人知晓真实内容。

当然魔高一尺,道高一丈,你越是进行各种转换,别人就越想知道,经过几百年,上千年的迭代演进,攻防转换,渐渐地形成了密码学(Cryptography)的概念。

密码学分类

一般可以分为古典密码学(Classic Cryptography)和现代密码学(Modern Cryptography), 分类标准其实也很简单,大概以时间为界,比如1970年以前叫古典密码学,1970年之后就是现代密码学。

古典密码学(Classic Cryptography)

假设你在古代,你不想让别人看到你写的消息,你该怎么做?

最先想到的可能就是对发的消息进行替换?

比如:今天晚上发起攻击

我们可以进行简单替换:“后天早上回家吃饭”

  • 今天-后天
  • 晚上-早上
  • 发起-回家
  • 攻击-吃饭

当然这里只是为了描述这个概念,感兴趣你完全可以自己弄一个对照列表,只有知道这个对照表的人才能解读出真实内容。

或者我们对它的顺序进行各种打乱: 晚发上攻今起天击,而这个顺序对应表只有你知道。

上面这个例子其实就是一种朴素的古典密码学的加密方法:替换密码(Substitution Cipher)。

好了,现在你对古典密码学有了一些基本的概念,它是根据一些经验,手工设计出来的,甚至每个人都能根据一些想法设计出自己的密码。

那历史上又出现过哪些比较有名的加密方法呢,这里我直接截图的维斯百科上对古典密码学的总结归类。

其实真的是百花奇放,各种分门别类,这里我总感觉应该只是收集了一些传播范围比较广的一些加密方法。

凯撒密码 (Caesar Cipher)

我们可以拿一些来看看,进行一些更深入的了解,比如凯撒密码 (Caesar Cipher),它是出现在公元前58年,所以历史真的够久。

它的加密过程其实很简单,就是字母进行平移,比如说每个字母往前移动3位进行替换。

明文: HELLO WORLD
密文: KHOOR ZRUOG

看起来很简单对吧,实际上也是很简单,当然这是以现代人的视角来看,英文字母只有26个,那其实只要暴力偿试移到25次,你就一定能在某一次看到真正的内容。

这里的25次,还有一个叫法是密钥空间大小,也就是我们要暴力破解穷举的次数。

凯撒密码有一个比较有名的变种:ROT13,看名字就知道,位移13次,比如说你想在一些论坛上需要对你发的消息做一些简单的处理,就可以用ROT13进行简单的变换。

这种替换密码,在实际过程中也可能用频率分析(Frequency Analysis)进行破解, 英文字母实际在使用过程中是有一个频率分步表的,比如e:12.7%, a: 8.2%.

替换密码里面有一个比较好玩的叫猪圈密码(Pigpen Cipher), 这把每个字母都放在不同围栏中,这每个围栏看起来就像猪圈一样,把每个字母围起来了,

再用每个围栏来代码真实的字母

看到这些图形是不是很有趣。

栅栏密码(Rail Fence Cipher)

古典密码学里面,还有一些好玩的比如栅栏密码(Rail Fence Cipher)

顾名思义,它是把明文按栅栏那种排列方式依次放入,比如,这是一个三行的栅栏:WE ARE DISCOVERED. RUN AT ONCE

W . . . E . . . C . . . R . . . U . . . O . . . 
. E . R . D . S . O . E . E . R . N . T . N . E 
. . A . . . I . . . V . . . D . . . A . . . C . 

依次放人,从上到下,从左到右,放好之后,我们再按行数把所有的字母拼起来

WECRUO ERDSOEERNTNE AIVDAC

这样我们拿到了密文,看起来不知道说的是什么。

Playfair Cipher

普莱费尔密码Playfair Cipher,由Charles Wheatstone在1854年发明,但以他的朋友Lyon Playfair的名字命名。它在历史上被广泛用于军事通信。具体可能参考维斯百科说明

  • https://en.wikipedia.org/wiki/Playfair_cipher

这里我们列举了一些常见的古典密码学算法,当然以现在的视角去看,可能比较弱,但是放在当时的技术水平,还是能发挥很大的作用的,有很多实际意义,现在我们在理解密码的时候都会去回顾一下,历史上的人们是如何创建各种加密算法。

恩尼格玛密码机(Enigma Machine)

其实在二战的时候就已经发明了一些更高级的密码机:恩尼格玛密码机(Enigma Machine)

这个我也有搞清楚怎么运行的,但后来这个机器加密算法被破解了,而且有相关电影专门讲Enigma,我记得好像看过其中一部电影,里面有图灵,但忘记叫什么名字了。

后来查找了一下就是The Imitation Game (2014),讲的是二站期间图灵破解德国Enigma加密算法的故事,再后来图灵基于此发明了计算机。

现代密码学

与古典密码学相对的就是现代密码学,从我们感知上,古典密码学很多是根据一些生活或者工作经验设计出来了,甚至说每个人都可以设计自己独立的加密方式。但现代密码就要求很多,需要更高的安全性,保密性,完整性校验,然后需要基于某些数学理论基础,能够从理论上被验证的一数学难题。

  • 大整数的因式分解(Integer Factorization)
  • 离散对数问题(Discrete Logarithm, DLP)
  • 椭圆曲线问题(Elliptic Curves)

后面我们再写关于对称加密和非对称加密的内容,详细解读人类在加解密上,螺旋式攻防迭代上升过程。

应该说整个密码学是当今数字世界,互联网的基石,如果密码学被攻破了,那么整个现实世界都有可能坍塌,就比如现在的量子计算机,就对现在的这些加密算法造成了威胁,所以美国NIST一直在准备后量子计算机时代的加密算法(PQC)

  • https://csrc.nist.gov/projects/post-quantum-cryptography

2025年3月11日,PQC时代加密算法经过轮竞争,最终被选取出来了。

这篇就到这里结束了,后面文章再详细介绍。

密码学(Cryptography)简史-古典密码学
Tagged on:

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.