1.古典密码
古
典
密
码
一
般
性
说
明:
- 假设讨论的语言是某种语言的文字,设字母表为X = {x0, x1, · · · , xm−1}
- 为方便起见,字母表用0-(m-1)之间的数字表示为Zm={0,1,…,m-1}
- 例如,英文字母表为X = {a, b, c, · · · , z},也可表示为Z26={0,1,…,25}
- 字母不区分大小写
- 习惯约定: 明文,密文,密钥都是Z26 的整数,用k来加密明文字符m,得到密文字符c
- 加密时通常舍弃标点、空格(普通文本中17% − 18%是空格,冗余度太高,会泄露信息)
2.代换和置换
设
明
文
为
x
=
{
x
1
,
x
2
,
· · ·
,
x
n
},K =
{
σ
1
, σ
2
,
· · ·
, σ
n
}
是
一
系
列
变
换,加密
成
密
文
y
= (
y
1
,
y
2
,
· · ·
,
y
n
)
,
即
E k ( x ) = ( σ 1 ( x 1 ) , σ 2 ( x 2 ) , · · · , σ n ( x n )) = ( y 1 , y 2 , · · · , y n ) = y
K取值的不同,形成两种基本加密技术:代换和置换
(1)代换或代替或替换
根
据
代
换
是
对
每
个
字
母
逐
个
进
行
还
是
对
多
个
字
母
同
时
进
行
,
古
典
密
码
又可分为
:
单
字
母
代
换
密
码
和
多
字
母
代
换
密
码。
- 单字母代换密码:对于一个给定的加密密钥,明文空间中一个元素被代换为密文空间中的唯一元素,单字母代换密码分为:
①单 表 代 换 密 码明 文 所 有 字 母 到 密 文 字 母 的 变 换 相 同 , 是 同 一 种 映 射 ,即 σ 1 = σ 2 =· · ·=σn,如: 恺 撒 密 码、仿射密码②多表 代 换 密 码明 文 每 个 字 母 采 用 不 同 的 变 换 映 射 为 密 文 字 母如 : 维 吉 尼 亚 密 码 、 弗 纳 姆 (Vernam) 密 码 、 转 子 机 (rotormachine)
①移位密码shift cipher/加法密码
移
位
密
码
是
最
简
单
的
单表代换密码
。
移
位
密
码
的
基
础
是
数
论
中
的
模
运
算
,
英
文
有
26
个
英
文
字
母
,
因
此
一
般
定
义在Z
26
上
。
移
位
代
换
密
码
的
加
密
和
解
密
变
换
分别
为
:
c
=
E
k
(
m
) = (
m
+
k
)(
mod q
)
,
(0
≤
k
<
q
)
m
=
D
k
(
c
) = (
c
−
k
)(
mod q
)
k=0
时
,
是
恒
等
变
换。显然
,
密
钥
空
间
中
元
素
个
数
为
q。
如
果
是
对
英
文
字
母
表
进
行
移
位
代
换
的
密
码
,
则
q
取
26
c =
E
k
(
m
) = (
m
+
k
)(
mod
26)
密
钥
k
取
0,
…
,25
的
随
机
数
,
密
码
密
钥
空
间
为
25
,
用
穷
举
攻
击
最
坏
情
况
需
要尝试
25
次
就
可
以
破
解
②凯撒密码-Caesar Cipher
③加法密码
- 在凯撒密码基础上,引入密钥k取0,…,25的随机数,形成单表代换密码-加法密码
- k, x, y ∈ {0, 1, ..., 25}
- Encryption: y ≡ x + k mod 26
- Decryption: x ≡ y - k mod 26
Example
- k = 7
- Plaintext = ATTACK = 0, 19, 19, 0, 2, 10
- Ciphertext = haahr = 7, 0, 0, 7, 17
- 注意:模26, 如,19 + 7 = 26 ≡ 0 mod 26
④仿射加密 /仿射变换-Affiffiffine Cipher
- 仿射加密是一种单表代换加密。
- 仿射加密的加密代换的数学描述为: c = Ea,b(m) = am + b (mod 26)
- 仿射加密的解密代换的数学描述为: m = Da,b(c) = a−1(c − b) (mod 26)
- 其中密钥是(a,b),且a, b ∈ Z26,gcd(a,26) = 1(否则,无逆元)
- 仿射加密目的:扩大密钥空间
仿射变换实例:
密 钥 (a,b) = (7, 3) , 满 足 gcd(7,26) = 1加 密 : c = 7m + 3 ( mod 26)解 密 : m= 7 − 1 ( c − 3)( mod 26)对 明 文 ”hot” 采 用 仿 射 变 换 加 密 , 并 解 密 测 试 结 果”hot” 对 应 7 , 14 , 19c(h)= 7 ∗ 7 + 3 ( mod 26) = 0 → ac(o)= 7 ∗ 14 + 3 ( mod 26) = 23 → xc(t)= 7 ∗ 1 9 + 3 ( mod 26) = 6 → g仿 射 加 密 后 变 为 密 文 ”axg”7 mod 26 的 逆 元 是 15 , 带 入 解 密 公 式 计 算 可 逆 向 解 密
如
何
破
解
仿
射
加
密
?
穷 举 攻 击gcd ( a , 26) = 1 , a ∈ { 1 , 3 , 5 , 7 , 9 , 11 , 15 , 17 , 19 , 21 , 23 , 25 }密 钥 空 间 为 12*26=312仿 射 密 码 的 缺 陷 , 即 明 文 和 密 文 之 间 的 映 射 关 系 是 固 定 的 。 因 此 , 使 用 字母频 率 统 计 方 法 一 样 可 以 轻 而 易 举 破 解 该 密 码
- 多字母代换密码:明文空间中的多个字母同时被映射为密文空间中多个字母,如:Hill密码,Playfair密码。(即用多个单表,明文字母用不同的密文字母代换。)
实
际
应
用
中
多
是
几
种
密
码
算
法
结
合
起
来
做
成
加
密
产
品。
①维吉尼亚密码(Vigenere Cipher)
采
用
多
个代
换
字
母
表
,
每
个
明
文
字
母
按
照
需
要
随
时
转
换
到
不
同
字
母
表
进
行代换
,
实
质
是
多
重
凯
撒
密
码
选
个
关
键
词
,
如
K
=
k
0
k
1
. . .
k
d
−
1,d是
关
键
词
长
度
,
密
钥
是
关
键
词
的
重复
,
重
复
关
键
词
直
到
与
明
文
长
度匹配。
维
吉
尼
亚
密
码
的
加
密
代
换
的
数
学
描
述
为
:
ci
=
E
p
i
=
p
i
+
k
i mod d
(
mod
26)
维
吉
尼
亚
密
码
的
解
密
代
换
的
数
学
描
述
为
:
pi
=
D
c
i
=
c
i
−
k
i mod d
(
mod
26)
Vigenere
密
码
可
以
被
看
作
是
d
个
联
合
的
加
法
密
码。
- 同一个明文字母,用不同密钥字母加密产生不同密文字母
- 同一个明文字母组经相同密钥字母加密,产生相同密文组,且间距是关键词的长度倍数
- 若知道关键词长度d,则Vigenere密码的破解实际上就是对d个单表移位密码的破解
- 两种方法确定Vigenere cipher关键词长度:Kasiski test(卡西斯基测试),Friedman test
②Playfair密码
- 明文双字母作为一个单元转换成密文双字母,Playfair是一种多字母代换密码
- 首先生成5×5的密钥矩阵(字母不重复),在剩余位置顺序填入其它字母
- 将I和J视作同一字,或者将P和Q视作同一字
加密代换描述为:
明
文
两个一
组
,
若
字
母
相
同
,
将
X
加到
第
一个
字
母
后
,
重
新
分
组
。
若
最
后剩下一个
字
母
,
也
加
入
X
如
:
balloon
变
换
为
ba l
x
lo on
如
果
两
字
母
同
行
,
则
各
自
用
它
右
侧
字
母
代
换
(
字
母
在
最
右
方
取
最
左
方
字
母代换
)
如
果
两
字
母
同
列
,
则
各
自
用
下
侧
字
母
代
换
若
两
字
母
不
同
行
也不
同
列
,
在
矩
阵
中
找
出
另
外
两
字
母
,
使
四
个
字
母
成
为一个长
方
形
四
个
角
解
密
过
程
:
加
密
过
程
的
逆。如:
ballon
加
密
后
生
成
密
文
ibsupmna
③Hill密码
基
本
思想
:
把
明
文
分
成
由
n
个
字
母
构
成
的
分
组
,
利
用
Z
26
上
的
线
性
变
换
每次替换
为
n
个
密
文
分
组
密
钥
是
一个
n
∗
n
变
换
矩
阵
,
解
密
时
对密
文
做
一
次
逆
变
换
就
行
注
意
:
密
钥
矩
阵
必
须
是
可
逆
的
(
满
足
行
列
式
和
26
互
质
)
,
否
则
就
不
可
能
解密。
加
密
代
换
的
数
学
描
述
为
:
Ci
=
KM
i
mod
26
,
i
= 1
,
2
, . . . ,
j
解
密
代
换
的
数
学
描
述
为
:
Mi
=
K
−
1
C
i
mod
26
,
i
= 1
,
2
, . . . ,
j
Hill密码实例:
(2)置换或换位
置
换
密
码
(Permutation cipher)
,
又
称
换
位
密
码
(
Transposition cipher)
:
明文字
母
保
持
不
变
,
只
是
利
用
置
换
打
乱
字
母
位
置
和
次
序
。
置
换
密
码
算
法描述
:
令
b
为
正
整数
,
表
示
消
息
分
组
的
大
小
K
由
定
义
在
集
合
{
1
,
2
, . . . ,
b
}
上
的
置
换
组
成
,
也
就
是
(1
,
2
, . . . ,
b
)
的
重
排
对
于
明
文
分
组
(
x
1
,
x
2
, . . . ,
x
b
),
密
钥
(
置
换
)
σ
= (
σ
(1)
, σ
(2)
, . . . , σ
(
b
))
定
义
加密变
换
E
σ
(
x
1
,
x
2
, . . . ,
x
b
) = (
x
σ
(1)
,
x
σ
(2)
, . . . ,
x
σ
(
b
)
)
解
密
变
换
为
:
其
中
σ
−
1
为
置
换
σ
的
逆
变
换
D
σ
−
1
(
y
1
,
y
2
, . . . ,
y
b
) = (
y
σ
−
1
(1)
,
y
σ
−
1
(2)
, . . . ,
y
σ
−
1
(
b
)
①转轮机 Rotor Machines
其
本
质
是
复
杂
的
多
表
代
换
密
码
系
统
,
由
连
续
多
次
代
换
来构
造。
基 本 原 理 :包 括 一 系 列 圆 柱 体 , 每 个 圆 柱 体 表 示 一个代 换每 个 圆 柱 体 输 入 输 出 由 内 部 连 线 连 接每 当 一个 字 母 加 密 后 , 各 圆 柱 体 旋 转 , 改 变 代 换 表