复习完密码学的基本概念后,下面对古典密码进行简单的复习。下图列出的是经典密码体制的框图。(由于比较懒就直接放笔记的照片了⁄(⁄ ⁄•⁄ω⁄•⁄ ⁄)⁄)

  古典密码学大体上可以分为 代换密码置换密码

  (1)代换密码

  构造一个或多个密文字母表,然后用密文字母表中的字母或字母组来代替明文字母或字母组。各字母或字母组的相对位置不变,但其本身改变了。

  (2)置换密码

  又称换位密码。把明文中的字母重新排序,字母本身不变,但其位置改变了。

  2.1 移位密码算法 Shift Cipher

  设 M = C = Z26,对任意的 key∈Z26, x∈M, y∈C.

  定义ekey(x) = x + key (mod 26)

  同时dkey(y) = y – key (mod 26)

  注:26个英文字母与模26剩余类集合{0,1,…,25}建立一一对应。

  移位密码很容易受到唯密文的攻击

  例子:凯撒密码(key = 3)

   若此时明文为venividivici.则密文为:yhqlylglylfl.若解密只需将密文左移三位即可。

  2.2 仿射密码算法

  加密函数取形式为:e(x) = ax + b (mod 26), a,b∈Z26.

  要求唯一解的充要条件是gcd(a,26)=1.

  注:之所以要求a与26互素。目的是为了保证逆元存在。同时,因为a与26互素,所以a可取φ(26)个。φ(26)=φ(2)φ(13)=1×12=12.故a可取12个。

  该算法描述为:

设 M = C = Z26

  K = {(a,b)∈Z26×Z26; gcd(a,26)=1}

对 key=(a,b)∈K, x∈M, y∈C,

定义 ekey(x) = ax + b (mod 26) 和 dkey(y) = a-1(y-b) (mod 26).

  在Z26中,满足gcd(a,26)=1的a只有12个值(1,3,5,7,9,11,15,17,19,21,23,25),因此仿射密码的密钥空间大小为12×26=312个。

  对于Z26中与26互素的元素,相应的乘法逆元为:

1-1 mod 26 = 1     3-1 mod 26 = 9     5-1 mod 26 = 21   7-1 mod 26 = 15   

9-1 mod 26 = 3    11-1 mod 26 = 19   15-1 mod 26 = 7    17-1 mod 26 = 23   

19-1 mod 26 = 11   21-1 mod 26 = 5    23-1 mod 26 = 17   25-1 mod 26 = 25

  求逆元过程(以9-1 mod 26 = 3为例)

  9·9-1≡1 (mod 26)

  9x≡1 (mod 26) 其中x≡9-1 (mod 26)

  x = x-1+9-1·26 (mod 26)

   = 9-1(1+26)  (mod 26)

   = 3       (mod 26)

 ∴ 9-1≡3 (mod 26)

  仿射密码算法例子

 设 k=(7,3),注意到7-1 mod 26 = 15,

  加密函数:ek(x) = 7x + 3 (mod 26)

  解密函数:dk(y) = 15(y-3) (mod 26) = 15x-19 (mod 26)

  易见 dk(ek(x)) = dk(7x + 3) = 15(7x + 3)-19 = x+45-19 = x (mod 26)

  若加密明文为hot,则有如下步骤:

  ① 转换字母h、o、t为数字7、14、19

  ② 然后加密:

 

  ③ 解密有:

  2.3 单表代换密码 —— 分析

 (1)密钥量一般比较小,难以抵抗穷尽搜索攻击

 (2)即使密钥量很大,但因为没有将明文字母的频率隐藏起来,所以也很容易受到频数分析法的攻击

  2.4 单表代换的优缺点

优点:

  明文字符的形态一般将面目全非。

缺点:

  a.明文的位置不变

  b.明文字符相同,则密文字符也相同。从而导致:

   ① 若明文字符被加密成密文字符a,则明文中e的出现次数就是密文中字符a的出现次数;

   ② 明文的更随关系反映在密文之中。因此,明文字符的统计规律就完全暴露在密文字符的统计规律之中,形态变但位置不变。 

  2.5 单表代换密码的统计分析举例

  密文为:YIFQFMZR…CFWDJNZDIR(共168个字母)

  分析:∵Z出现20次,出现的频率约为0.12

∴猜测D(Z)=e

∵出现至少10次的密文字母为C、D、F、J、M、R、Y,出现频率约在0.06到0.095之间

∴猜测{D(C),D(D),D(F),D(J),D(M),D(R),D(Y)}={t,z,o,i,n,s,h,r}…

以此类推

  不太明白的话可以参考[2.3_单表代替密码的分析]

  2.6 多表代换密码

  多表代换密码是一系列(两个以上)代换表依次对明文消息的字母进行代换的方法。可以分为:非周期多表代换密码 和 周期多表代换密码。

  非周期多表代换密码:代换表是非周期的无限序列。

  周期多表代换密码:代换表个数有限,重复使用。

  2.6.1 维吉尼亚密码 Vigenére cipher

  设 m 是某固定的正整数,定义P=C=K=(Z26)m,对一个密钥 k=(k1,k2,…,km),定义

ek(x1,x2,…,xm) = (x1+k1,x2+k2,…,xm+km)

dk(y1,y2,…,ym) = (y1-k1,y2-k2,…,ym-km)

  且所有的运算都在Z26中。

  简单地说,可以将其描述为如下形式:

密钥 K=(k1,k2,…,kn),

明文 P=(p1,p2,…,pn),

密文 C=(c1,c2,…,cn).

加密:ci=pi+ki (mod 26)

解密:pi=ci-ki (mod 26)

  密钥一般是一个单词或一句话去除后面的重复字母后构成。

  本质:多个移位密码

  密钥量:对于n为密钥,密钥量有

  例子:

  2.6.2 希尔密码 Hill cipher

  设m是某个固定的正整数,P=C=(Z26)m,又设K={m×m可逆阵,Z26};对任意k∈K,定义

ek(x) = xk

则dk(y) = yk-1

  其中所有的运算都是在Z26中进行。

  其中明文、密文和密钥可以写成如下形式:

 

  注意:

    k必须满足条件:

  1.非奇异矩阵,即|k|≠0,

  2.gcd(|k|,26)=1 (mod 26)

  加密:


 

  解密:

 

  例子1:

  例子2:

  介绍完希尔密码后,接下来对希尔密码的特点进行介绍:

(1)完全隐藏了单字母的频数;

(2)字母和数字的对应可以改成其他方案,使得更不容易被攻击成功;

(3)能比较好地抵抗频数法的分析,对抗唯密文攻击强度较高。

 

  2.7 置换密码 Permutation Cipher 或 Transposition Cipher

  设m是某个固定的正整数,P=C=(Z26)m,且K由所有{1,2,…,m}的置换组成,对一个密钥(即一个置换∏),定义

e(x1,x2,…,xm) = (x∏(1),x∏(2),…,x∏(m))

d(y1,y2,…,ym) = (y-1(1),y-1(2),…,y-1(m))

  其中∏-1是∏的逆置换。

  例子:

  在简单对几种古典密码算法进行介绍后,下一篇将介绍密码破译

版权声明:本文为shirleyya原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/shirleyya/p/15085036.html