查看: 1386|回复: 9

[密码学习] 浅谈密码学之古典密码

简洁模式
发表于 2022-1-29 14:27:37 | 2022-1-29 22:55编辑 | 显示全部楼层
浅谈密码学
古典密码
古典密码最早开始实用于希腊各邦之间战争的各种秘密信息的传递于军事情报的运输之中。在希罗多德的《历史》一书中曾记载,在公园前5世纪波斯于希腊各个城邦之间的冲突时就诞生了最古早的信息隐藏技术即隐写术故事是由一位希腊的流亡者德玛拉托斯在亲眼目睹波斯正在集结军事力量试图通知斯巴达人,因此他用了一个巧妙的方法——刮去一对折叠木片上的石蜡,将试图送给希腊人的秘密消息写在木片的底层,然后用石蜡覆盖住,因此他成功的将消息传递了出去这种掩饰信息存在性的保密通讯法称之为隐匿法(steganigraphy)或隐写术。但与此同一个时代的古斯巴达人却有着更高级的密码加密技术,即密码法(cryptography)从此就引出了我们接下来要讲的古典密码。古典密码虽然在形式上种类繁多但是在总体的思想上确实非常的简单,即移位法(transposition)和代换法(substitution)接下来我们就一一介绍
(一)        移位法(Transposition)
所谓的移位法,就是将明文中的字母进行调动顺序。听上去也许十分简单,不过这种加密方法对于简短的信息加密效果不佳比如:cat,能靠移位的加密方法十分的简单cat,cta,act,atc,tac,tca。不过一旦字母数量一增加,排列方式的数目就会急剧的升高,除非知晓加密过程否则几乎不可能将明文破译出。“For example,considet this short sentence”这句话虽然只有短短35个字母但却有超过50,000,000,000,000,000,000,000,000,000,000种排列方式。因此在加密信息时如果将一句话中的字母任意顺序打乱那么它的安全程度一定会非常高,可是这样有一个小小的缺点,即移位法所带来的的回文谜的数量多到惊人,例如cat重组的回文act,lived重组为devil所以一般在信息的传递过程中明文和密文的接收者会通常之间有一套自己所谓约定俗成的规律而我们将其整理称之为xx密码
①        篱笆式移位法(2栅栏)
这是一种简单的位移密码,即把明文中奇数位字母排成一排、偶数位字母排在另一排,再把偶数位字母接到奇数位字母后面。例如:
THY SECRET IS THY PRISONER;IF THOU LET IT GO,THOU ART A PRISONER TO IT

T  Y  E  R  T  S  H  P  I  O  E  I  T  O  L  T  T  O  H  U  R  A  R  S  N  R  O  T
  H  S  C  E  I  T  Y  R  S  N  R  F  H  U  E  I  G  T  O  A  T  P  I  O  E  T  I

TYERTSHPIOEITOLTTOHURARSNROTHSCEITYRSNRFHUEIGTOATPIOETI
缺点:篱笆密码法并非一种强的加密法,其加密原理限制篱笆的最高数量不可能超过明文字母数,而实际加密时更要把篱笆数目减少,因此有些密码分析员甚至能用手直接解出明文。
②        斯巴达密码棒
早在公元前404年,古希腊斯巴达城邦就用了一种十分有趣的移位密码——斯巴达棒(Skytale)如下图图一
以此来举例斯巴达密码棒的使用方式:假设明文为:Send more troops to southern Flankand(往南翼增兵)按照图中所示的方法将纸带缠绕在密码棒上,逐行写下明文。写好后将明文从密码棒上取下来,结果就呈现为:stsferolnouadotnmphkoseartrneond,本质上就是打乱明文的字母顺序。
③        栅栏密码(Rail-fence Cipher)
在移位密码中,扰乱字母位置生成密文的方式有很多。较为简单的扰乱方法就是在明文中树立一个个“栅栏”,沿着栅栏的树立的方向重写明文以得到密文。一般栅栏密码别名为列移位密码(Columnar Transposition Cipher)
二栅栏在上文中以及提到过了,因此本次采用四栏 加密来演示。明文:Transposition Cipher加密得:
T             O               N                       R
  R         P    S         O     C               E        S
    A    S         I     I            I        H
      N              T                  P
按照从左到右,从上至下的顺序来重写明文,得到密文为:tonrrpsocesasiiihntp
同时也不一定非要按照z字形线路爱来撰写明文也可以通过表格来
T        R        A        N        S
P        O        S        I        T
I        O        N        C        I
P        H        E        E        S
按照从上至下、从左至右的顺序重写明文,得到密文为:tpiproohasnenicestis。当然也可以从下向上,自右向左写明文,这样就会得到密文:sitsrcinensah oorpipt。这样加密比前一个更加具有隐蔽性。
不过如果明文长度为质数,那么可以在明文之后适当扩充字母来达到合适的长度。英文中最常见的扩充字母就是X,因为根据下表X的使用频率最低
A 8.19  B 1.47  C 3.83  D 3.91  E 12.25  F 2.26  G 1.71
H 4.57  I 7.10  J 0.14   K 0.41   L 3.77   M 3.34  N 7.06
O 7.26   P 2.89   Q 0.09   R 6.85   S 6.36   T 9.41
U 2.58   V 1.09   W 1.59   X 0.21   Y 1.58   Z 0.08
因此破译人很容易猜出X为扩充字母。如果想使密码安全性更高,那么使用英文中出现频率较高的字母也是一个好办法如使用E,K,T,W,O一类。以下举例:明文:Transposition Cipher扩充字母:KETWO得到以下5x5表格
T        R        A        N        S
P        O        S        I        T
I        O        N        C        I
P        H        E        R        S
K        E        T        W        O
自上而下、从左到右重写明文,可得密文:stisonicrw  asnetroohe  tpipk
④        带秘钥的栅栏移位密码
以上的栅栏密码的特点是:无论栅栏如何设计、如何设计重写明文的顺序,只要密码破译者知道了栅栏的使用方法和重写明文的顺序,就可以轻易的破解栅栏移位密码。因此,最好在栅栏移位密码中嵌入秘钥,让栅栏位移密码根据秘钥重写明文的顺序,这样可以大大增加栅栏位移密码的隐蔽性。
常见的秘钥嵌入方法为:根据秘钥确定栅栏密码中各列的重写顺序,老规矩明文还是Transposition Cipher,这次我们以自然对数e=2.7182818284为秘钥。以秘钥e中小数点后出现的7,1,8,2,4作为保留放在第一排
7        1        8        2        4
T        R        A        N        S
P        O        S        I        T
I        O        N        C        I
P        H        E        R        S
按照设置的编号顺序从小到大,从上至下重写明文,可以得到密文:roohnicrstist Pipasne。。
此外也可以用英文单词作为秘钥,比如秘钥为:my keys。将英文字母与它在26个字幕中出现顺序一致,可以判断出m,y,k,e,s分别对应13/25/11/05/19同理
13        25        11        05        19
T        R        A        N        S
P        O        S        I        T
I        O        N        C        I
P        H        E        R        S
从小到大、从上至下重写明文得到密文为:nicrasnetpips tisrooh
虽然这种方式嵌入秘钥可以扰乱栅栏中列的重写顺序,但是栅栏中行的重写顺序依旧是固定的,因此我们还可以同时扰乱行的重写顺序来进一步提高隐蔽性。此类栅栏位移密码称之为双格栅栏位移密码(Double Transposition Cipher)。在此就不过多举例,有兴趣的朋友可以自己动手试一试。


⑤        卡登格子(Cardan Grille)
格子密码幼教棋盘密码。在加密时,首先将合社个字置于棋盘左上方的方格中,在白色格子中从上至下、从左至右撰写明文。在写完18个后将棋盘旋转90°,白色格子就被置于左上角了。继续在白色格子中从上至下、从左到右撰写明文。最后,移除格子,从左至右,从上至下重写明文就得到密文了
下图作为举例加密明文:“I will be at the national grand opera today”

        L                T                I
I                E                N       
        L                H                O
W                A                A       
        B                E                N
I                T                T       
A                D                T       
        R                E                A
L                O                O       
        A                R                Y
G                P                D       
        N                A                .







A        L        D        T        T        I
I        R        E        E        N        A
L        L        O        H        O        O
W        A        A        R        A        Y
G        B        P        E        D        N
I        N        T        A        T        .




最终生成密文:a ldtt ii re ena llohoow aarayg bpedn intat
格子密码还可以存在很多种变式:格子可以被设计的更加复杂,格子数量可大可小。使用方法也多种多样:可以旋转任意角度,可以正反使用栅格,栅格的旋转中心点和旋转方向也可以任意设置。
(二)        代换法(Substitution)
早在公元4世纪,婆罗门学者跋舍业业所写的《爱欲经》即曾提到过用代替法加密信息。《爱欲经》鼓励妇女学习64种技艺,比如烹饪,服饰,制作香水等,在第45项中曾提到过秘密书信,理由是可以帮助妇女隐瞒她们的暧昧关系。其中一种方法便是:先将字母随意配对,再用配对字母取代信息里的原始字母。
例如以下配对:
A  D  H  I K  M O R S  U W Y Z
↓ ↓ ↓ ↓↓ ↓↓↓↓ ↓↓↓↓
V  X  B  G J  C Q L  N  E F  P T
这样一来,发信人可以吧meet at midnight改写成CUZZ  VZ CGXSGIBZ.
替代密码在军事上首次运用于凯撒大帝的《高卢战记》中,凯撒大帝本人非常青睐这种信息加密方式,声称这是一种加密技术的革新。替代密码的缺点是在传输大量的文字和信息时,统计学可以根据同个字母在文本中出现的频率进行暴力破解越是大量的文本易被识别概率就越大。
①        凯撒密码(Caesar Cipher)
凯撒密码其实就是明文中的所有字母都在字母表上向后(或向前)按照一个固定数目进行偏移后被替换成密文。举例当秘钥为3时
明文:ABCDEFGHIJKLMNOPQRSTUVWXYZ ;
密文:DEFGHIJKLMNOPQRSTUVWXYZABC。
这种加密方式在现代看来极易被破解,只要知道字母的偏移量(即秘钥数字),可是对当时人来说确是天方夜谭。
同时凯撒密码也同时衍生出来了一个变种其中最著名的当属回转13密码(rotate by 13 place, ROT 13)即凯撒密码秘钥为13。ROT 13最大的特点就是它的加密过程和解密过程几乎相同,都是在对应字母上往后/往前偏移13个字母所以又称为回转13.虽然回转13非常好被破解,但是有趣的地方在于不少单词被偏移了13个单位之后会得到另一个完全同的单词,例如abjurer(发誓放弃)变成了nowhere(任何地方都不)chechen(车臣)变成了purpura(紫癜)。
②        埃特巴什码(Atbash Cipher)
埃特巴什码它使用字母表中的最后一个字母代表第一个字母,倒数第二个字母代表第二个字母
明文: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
密文:Z Y X W V U T S R Q P O N M L K J I H G F E D C B A
③        关键字密码(keyword Cipher)
首先先绘制一个空白字母代换表格,我们选取substitution当成秘钥并填入空白字母表中,注意要去除单词中重复的字母
a        b        c        d        e        f        g        h        i        j        k        l        m        n        o        p        u        r        s        t        u        v        w        x        y        z


s        u        b        t        i        o        n        a        c        d        e        f        g        h        j        k        l        m        p        q        r        v        w        x        y        z


④        猪圈密码(Piggen Cipher)
不仅字母可以带换成字母,甚至我们可以把符号带换成字母。在密码设计者有趣的设计中产出了很多有趣的代换密码最著名的莫过于猪圈密码了,因为代换的符号看起来像是被圈养在猪圈里一样。18世纪共济会常常使用这种密码来进行密码通信,因此也被称之为共济会密码(Masonic Cipher)
下面是猪圈密码的对照表
⑤        跳舞小人密码
跳舞小人是来自于《福尔摩斯探案集》中的一个小故事下面是对照表格


我们可以根据福尔摩斯的破案心路历程可以看出其实这个代换密码的缺陷。即字母与字母,字母与符号一一对应,意味着文字中相同的明文字母的密文代换结果也一定相同。每种语言本身都有独特的规律个特性,利用这一点便不难从密文中探寻蛛丝马迹,然后用计算机暴力的穷举法便可以轻易破除。这种分析法被称之为频率分析攻击。
因为app原因表格和图片可能有缺失可以打开以下连接: https://shimo.im/docs/DGvHCwgTGKQX8rJh/  《浅谈密码学》,可复制链接后用石墨文档 App 或小程序打开
3-5天后更新近代密码学
现代密码算法由于过于复杂可以写但是我认为要推广给大家还是尽量用我的概括法来进行通俗化处理回重新发帖如果觉得有用可以给我点个赞鼓励一下哦
本帖子中包含更多图片或附件资源

您需要 登录 才可以下载或查看,没有帐号?加入学院

登录帐号可查看完整回帖内容
| 发表于 2022-1-31 07:58:54 | 发自安卓客户端 | 显示全部楼层
感谢分享
| 发表于 2022-1-31 09:17:04 | 发自安卓客户端 | 显示全部楼层
谢谢帮忙复习密码学
| 发表于 2022-7-3 00:51:58 | 发自安卓客户端 | 显示全部楼层
感谢分享
登录帐号可查看完整回帖内容
| 发表于 2022-7-4 09:25:36 | 来自小霸王手机 | 显示全部楼层
感谢分享
| 发表于 2022-7-4 09:41:24 | 发自安卓客户端 | 显示全部楼层 发帖际遇
感谢分享
登录帐号可查看完整回帖内容
| 发表于 2022-10-5 20:04:14 山东| 发自安卓客户端 | 显示全部楼层 发帖际遇
感谢分享
尚未登录
您需要登录后才可以回帖 登录 | 加入学院