将相王侯CTF—古典密码(凯撒密码、维吉尼亚密码、培根密码等)给儿子的寄语
古典密码的概念:
古典密码是密码学中的其中⼀个类型,其⼤部分加密⽅式都是利⽤【替换式密码】或【移项式密码】,有时则是两者的混合。
其于历史中经常使⽤,但现代已经很少使⽤,⼤部分的已经不再使⽤了。
⼀般⽽⾔,经典密码是基于⼀个拼⾳字母(像是 A-Z)、动⼿操作或是简单的设备。它们可能是⼀种简单的密码法,以致于不可信赖的地步,特别是有新技术被发展出来后。
【经典密码】通常很容易被破解。许多经典密码可单单经由密⽂⽽破解,
所以它们容易受到唯密⽂攻击法攻击(cipher text only attack)。
有些经典密码(像是【凯撒密码】)的密钥个数有限,所以这类密码可以使⽤暴⼒破解尝试所有的密钥。鸡肉炒香菇
【替代式密码】有⽐较⼤的密钥数,但是容易被频率分析,因为每个密码字母各代表了⼀个明⽂字母。
【多字母替代式密码】,像是维吉尼亚密码使⽤多个替换防⽌了简单的频率分析,
然⽽,更先进的技术卡西斯基试验就可⽤来破解这类密码。
古典密码的起源和分类
⼀. 古典密码
密码(Cryptology)是⼀种⽤来混淆的技术,它希望将正常的、可识别的信息转变为⽆法识别的信息。
密码学是⼀个即古⽼⼜新兴的学科,密码学⼀词源⾃希腊⽂“krypto's”及“logos”两字,直译即为“隐藏”及“讯息”之意。
密码学是⼀门拥有⼏千年历史的学科。
密码学的发展⼤概经历了三个阶段: 古典密码阶段、近代密码阶段、现代密码阶段。
古典密码阶段是指从密码的产⽣到发展成为近代密码之间的这段时期密码的发展历史。
写秋天的诗【古典密码】是密码学中的其中⼀个类型,其⼤部分加密⽅式都是利⽤ 替换式密码 或 移项式密码,有时则是两者的混合。
其于历史中经常使⽤,但现代已经很少使⽤,⼤部分的已经不再使⽤了。
古典密码通常来说要对算法和密钥保密,因为很多古典密码⼀旦算法泄露,就不存在秘密⽽⾔了。
⼆. 古典密码的分类
古典密码⼤致上可以分为【替换式密码】和【移项式密码】
【替换式密码】:
【代换密码】是通过字母(或是字母群)作原系统的替换,直到消息被替换成其它难以解读的字符串
【替换式密码】分为单字母替换和多字母替换,单字母替换⼜可继续划分为单表替换密码和夺标替换密码。
【凯撒密码】是典型的单字母替换式密码,它使⽤⼀个密码字母集。
但我们也可以使⽤多字母替换式密码,使⽤多个密码字母集。加密由两组或多组密码字母集组成,加密者可⾃由的选择然后⽤交替的密码字母集加密消息。
这么做将会增加解码的困难度,因为密码破解者必须找出这两组或多组密码字母集。
次北固山下意思另⼀个著名的多字母替换式密码,称作【维吉尼亚密码】,亦作维吉尼亚⽅格。
这个密码更难解密,通过维吉尼亚⽅格,它有26组不同⽤来加密的密码字母集。每个密码字母集就是多移了⼀位的凯撒密码。
【移项式密码】
它们字母本⾝不变,但它们在消息中顺序是依照⼀个定义明确的加密算法改变。
许多移位式密码是基于⼏何设计的。
⼀个简单的加密(也易被破解),可以将字母向右移1位。
例如,明⽂"Hello my name isAlice.“将变成"olleH ym eman siecilA.”。
⼀个典型的移位式密码被称为栅栏密码,先选择⼀个关键字,把原来的消息由左⽽右、由上⽽下依照关键字长度转写成长⽅形。
接着把关键字的字母依照字母集顺序编号,例如A就是1、B就是2、C就是3等。依照编号⼤⼩调换位置,得到密⽂。
Kerckhoffs原则
密码学上的【柯克霍夫原则】(Kerckhoffs’sprinciple)由奥古斯特·柯克霍夫在19世纪提出:即使密码系统的任何细节已为⼈悉知,只要密钥(key)未泄漏,它也应是安全的。
【Kerckhoffs准则】认为,⼀个密码系统的安全性不是取决于其算法对于攻击者来说是否保密,
⽽是建⽴在它所选择的密钥对于攻击者来说是否保密。
典型替换式密码的加解密原理
1. 凯撒密码
在密码学中,凯撒密码(英语:Caesar cipher),或称凯撒加密、凯撒变换、变换加密,是⼀种最简单且最⼴为⼈知的加密技术。
它是⼀种替换加密的技术,明⽂中的所有字母都在字母表上向后(或向前)按照⼀个固定数⽬进⾏偏移后被替换成密⽂。
例如,当偏移量是3的时候,所有的字母A将被替换成D,B变成E,以此类推。
这个加密⽅法是以罗马共和时期恺撒的名字命名的,当年恺撒曾⽤此⽅法与其将军们进⾏联系。
凯撒密码的替换⽅法
通过排列明⽂和密⽂字母表,密⽂字母表⽰通过将明⽂字母表向左或向右移动⼀个固定数⽬的位置。例如,当偏移量是左移3的时候(解密时的密钥就是3):
明⽂字母表:ABCDEFGHIJKLMNOPQRSTUVWXYZ
密⽂字母表:DEFGHIJKLMNOPQRSTUVWXYZABC
使⽤时,加密者查找明⽂字母表中需要加密的消息中的每⼀个字母所在位置,并且写下密⽂字母表中对应的字母。
乐婉需要解密的⼈则根据事先已知的密钥反过来操作,得到原来的明⽂。例如:
明⽂:HEETIAN LAB
密⽂:KHHWLDQ ODE
凯撒密码的加密、解密⽅法还能够通过同余的数学⽅法进⾏计算。
⾸先将字母⽤数字代替,A=0,B=1,…,Z=25。此时偏移量为n的加密⽅法即为:
解密⽅法为:
2.维吉尼亚密码
在凯撒密码中,字母表中的每⼀字母都会作⼀定的偏移。
例如当偏移量为3时,A就转换为了D、B转换为了E……因为凯撒密码中所有字母的偏移量是⼀样的,因此容易受到字母频率攻击分析,攻击者可以根据密⽂中出现字母的频率来猜测是由明⽂中那个字母经过偏移得到的
下图为英语语⾔材料中的字母频率:
⽽【维吉尼亚密码】则是由⼀些偏移量不同的恺撒密码组成。
为了⽣成密码,需要使⽤表格法。
这⼀表格包括了26⾏字母表,每⼀⾏都由前⼀⾏向左偏移⼀位得到。具体使⽤哪⼀⾏字母表进⾏编译是基于密钥进⾏的,在过程中会不断地变换。
下图是⽤来加解密的维吉尼亚表格:
江乡故人偶集客舍
例如,假设明⽂为:HEETIAN
然后选择某⼀关键词并重复⽽得到密钥,如关键词为LAB时,密钥为:LABLABL
对于明⽂的第⼀个字母H,对应密钥的第⼀个字母L,于是使⽤表格中L⾏字母表进⾏加密,得到密⽂第⼀个字母S。
类似地,明⽂第⼆个字母为E,在表格中使⽤对应的A⾏进⾏加密,得到密⽂第⼆个字母E。以此类推,可以得到:
明⽂:HEETIAN
密钥:LABLABL
密⽂:SEFEIBY
解密的过程则与加密相反。
例如:根据密钥第⼀个字母L所对应的L⾏字母表,发现密⽂第⼀个字母S位于H列,因⽽明⽂第⼀个字
母为H。
密钥第⼆个字母A对应A⾏字母表,⽽密⽂第⼆个字母E位于此⾏E列,因⽽明⽂第⼆个字母为E。以此类推便可得到明⽂。
⽤数字0-25代替字母A-Z,维吉尼亚密码的加密⽂法可以写成同余的形式:
解密⽅法为:
3. 培根密码
培根密码的本质是将字母⽤⼀串⼆进制数替换,但是表⽰的过程中,没有采取0和1的形式,⽽使⽤a和b来代替。我的飞天梦
下⾯是⼀个常⽤的培根密码加密表: