恺撒密码在密码学中(或称恺撒加密、恺撒变换、变换加密)是一种最简单且最广为人知的加密技术。凯撒密码作为一种最为古老的对称加密体制,在古罗马的时候都已经很流行,他的基本思想是:通过把字母移动一定的位数来实现加密和解密。明文中的所有字母都在字母表上向后(或向前)按照一个固定数目进行偏移后被替换成密文。例如,当偏移量是3的时候,所有的字母A将被替换成D,B变成E,以此类推。据历史记载恺撒是率先使用加密函的古代将领之一,因此这种加密方法被称为恺撒密码。
概述
恺撒密码作为一种最为古老的对称加密体制,在古罗马的时候都已经很流行,它的基本思想是:通过把字母移动一定的位数来实现加密和解密。例如,密匙是把明文字母的位数向后移动三位,那么明文字母B就变成了密文的E,依次类推,X将变成A,Y变成B,Z变成C,由此可见,位数就是恺撒密码加密和解密的密钥。这个加密方法是以恺撒的名字命名的,当年恺撒曾用此方法与其将军们进行联系。
恺撒密码通常被作为其他更复杂的加密方法中的一个步骤,例如维吉尼亚密码。恺撒密码还在现代的ROT13系统中被应用。但是和所有的利用字母表进行替换的加密技术一样,恺撒密码非常容易被破解,而且在实际应用中也无法保证通信安全。
原理
密码的使用最早可以追溯到古罗马时期,《高卢战记》有描述恺撒曾经使用密码来传递信息,即所谓的“恺撒密码”,它是一种替代密码,通过将字母按顺序推后起3位起到加密作用,如将字母A换作字母D,将字母B换作字母E。据历史记载恺撒是率先使用加密函的古代将领之一,因此这种加密方法被称为恺撒密码。这是一种简单的加密方法,这种密码的密度是很低的,只需简单地统计字频就可以破译。现今又叫“移位密码”,只不过移动的位数不一定是3位而已。
密码术可以大致别分为两种,即易位和替换,当然也有两者结合的更复杂的方法。在易位中字母不变,位置改变;替换中字母改变,位置不变。将替换密码用于军事用途的第一个文件记载是恺撒著的《高卢战记》。恺撒描述了他如何将密信送到正处在被围困、濒临投降的西塞罗。其中罗马字母被替换成希腊字母使得敌人根本无法看懂信息。苏托尼厄斯在公元二世纪写的《恺撒传》中对恺撒用过的其中一种替换密码作了详细的描写。恺撒只是简单地把信息中的每一个字母用字母表中的该字母后的第三个字母代替。这种密码替换通常叫做恺撒移位密码,或简单的说,恺撒密码。
公式
加密公式:密文=(明文+位移数)Mod 26
解密公式:明文=(密文-位移数)Mod 26
举例说明
恺撒密码的替换方法是通过排列明文和密文字母表,密文字母表示通过将明文字母表向左或向右移动一个固定数目的位置。例如,当偏移量是左移3的时候(解密时的密钥就是3):
明文字母表 | A B C D E F G H I J K L M N O P Q R S T U V W X Y Z |
密文字母表 | D E F G H I J K LM N O P Q R S T U V W X Y Z A B C |
使用时,加密者查找明文字母表中需要加密的消息中的每一个字母所在位置,并且写下密文字母表中对应的字母。需要解密的人则根据事先已知的密钥反过来操作,得到原来的明文。例如:
明文 | THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG |
密文 | WKH TXLFN EURZQ IRA MXPSV RYHU WKH ODCB GRJ |
特定名称
根据偏移量的不同,还存在若干特定的恺撒密码名称:
偏移量 | 恺撒密码名称 |
10 | Avocat(A→K) |
13 | ROT13 |
-5 | Cassis (K 6) |
-6 | Cassette (K 7) |
破译密码
即使使用唯密文攻击,恺撒密码也是一种非常容易破解的加密方式,有以下两种情况需要考虑:
一、攻击者知道密码中使用了某个简单的替换加密方式,但是不确定是恺撒密码。 这种情况下,攻击者可以通过使用诸如频率分析或者样式单词分析的方法,马上就能从分析结果中看出规律,得出加密者使用的是恺撒密码。
二、攻击者知道使用了恺撒密码,但是不知道其偏移量。 由于使用恺撒密码进行加密的语言一般都是字母文字系统,因此密码中可能是使用的偏移量也是有限的,例如使用26个字母的英语,它的偏移量最多就是25(偏移量26等同于偏移量0,即明文;偏移量超过26,等同于偏移量1-25)。因此可以通过穷举法,很轻易地进行破解。其中一种方法是在表格中写下密文中的某个小片段使用所有可能的偏移量解密后的内容——称为候选明文,然后分析表格中的候选明文是否具有实际含义,得出正确的偏移量,解密整个密文。例如,被选择出的密文片段是"EXXEGOEXSRGI",从下表中的候选明文,我们可以很快看出其正确的偏移量是4。也可以通过在每一个密文单词的每一个字母下面,纵向写下整个字母表其他字母,然后可以通过分析,得出其中的某一行便是明文。
偏移量 | 候选明文 |
0 | e x x e g o e x s r g i |
1 | d w w d f n d w r q f h |
2 | c v v c e m c v q p e g |
3 | b u u b d l b u p o d f |
4 | a t t a c k a t o n c e |
5 | z s s z b j z s n m b d |
… | … |
24 | g z z g i q g z u t i k |
25 | f y y f h p f y t s h j |
凯撒系统
此系统因罗马时代的发明人Julius Caesar(盖乌斯·尤利乌斯·恺撒)得名。传说被恺撒大帝使用过。
恺撒系统的密码是自己选的一个单词。
例如,选用mountain,写出以下的字母序列:mountaibcdefghjklpqrsvwxyz。
看出来了吗?就是在正常字母序列中抽掉你的密码mountain。由于mountain中有两个n,把第二个去掉。
然后,把正常字母序列写在这个序列下面:
Mountaibcdefghjklpqrsvwxyz.......密文字母序
Abcdefghijklmnopqrstuvwxyz.......明文字母序
在加密的时候,用上面那个序列里的字母代替原文中的字母写成密文。例如,m代替a,o代替b。解密时方向相反。所以,加密heishere的结果是:btcqbkpt。
如果你的文本中有数字,那么不妨写一个36字符的序列,并把数字加在你的密码中。
评价:这种方法比简单移位系统安全,可以在你的日记中使用。但是,如果加密的文字有(大约)400字符以上,那么攻击者手工花费1天时间即可破解,因为英文和其它语言中每个字母都有一定的使用频率,破解者根据这些频率就可以破译。
投稿