1.简单密码体制
定义1.1 一个密码体制是满足以下条件的五元组(P,C,K,ε,D) |
---|
1.P表示所有可能的明文组成的有限集 |
2.C表示所有可能的密文组成的有限集 |
3.K表示密钥空间,由所有可能的密钥组成的有限集 |
4.对每一个k∈K,都存在一个加密规则ek∈ε和相应的解密规则dk∈D.并且对每个ek: P->C,dk:C->P,满足条件:对每一个明文x∈P,均有dk(ek(x))=x |
性质4表明使用ek对明文x进行加密,则可使相应的dk对密文进行解密
显然加密函数ek必须是一个单射函数
1.1移位密码
定义1.2 假设a和b均为整数,m是一个正整数。若m整除a-b,则可将其表示为a≡b(mod m) |
下面的密码体制1.1给出了移位密码,因为有26个字母,因此一般定义在Z26上。其中Zm表示集合{0,1,…,m-1},在其上定义两个运算加法+和乘法×,例如Z16中计算11×13=143(mod 16)=8×16+15(mod 16)=15
密码体制1.1 移位密码:令P=C=K=Z26。对0≤K≤25,任意x,y∈Z26,定义ek(x)=(x+K)mod26和dk(y)=(y-K)mod26 |
---|
如果K取3,那么该密码体制为凯撒密码,例如Z(25)移位后为C(2)
1.2代换密码
密码体制1.2 代换密码:令P=C=Z26。K是由26个数字0,1,...,25的所有可能的置换组成,对任意的置换π∈K,定义eπ(x)=π(x)和dπ(y)=π-1(y),这里π-1表示置换π的逆置换 |
---|
下面给出一张置换表,有eπ(a)=X,dπ(A)=d
a | b | c | d | e | f | g | h | i | j | k | l | m |
---|---|---|---|---|---|---|---|---|---|---|---|---|
X | N | Y | A | H | P | O | G | Z | Q | W | B | T |
n | o | p | q | r | s | t | u | v | w | x | y | z |
---|---|---|---|---|---|---|---|---|---|---|---|---|
S | F | L | R | C | V | M | U | E | K | J | D | I |
1.3仿射密码
在仿射密码中,加密函数定义为e(x)=(ax+b)mod 26,a,b∈Z26,为了满足仿射函数是一个单射函数,需要使gcd(a,26)=1,反证可得。例如,假设gcd(a,26)=d>1,那么x=0和x=26/d均是同余方程ax+b≡y的解
定理1.1 设a∈Zm,对任意的b∈Zm,同余方程ax≡b(mod m)有唯一解x∈Zm的充分必要条件是gcd(a,m)=1 |
我们顺便给出一个数论中的概念
定义1.3 设a≥1,m≥2且均为整数。如果gcd(a,m)=1,则称a与m互素。Zm中所有与m互素的数的个数用Φ(m)来表示(这个函数称为欧拉函数) |
数论中用m的素数幂分解的形式给出了Φ(m)的值(任意整数都可以用唯一的方式分解为素数幂的乘积,例如,60=22×3×5。下面给出Φ(m)计算方式
定理1.2 假定 m=∏i=1n piei 这里的pi均为素数且互不相同,ei>0,1≤i≤n。则 Φ(m)=∏i=1n (piei-piei-1) |
---|
根据上述公式可推断出,仿射密码的密钥空间大小是mΦ(m),例如m=60,Φ(m)=2×2×4=16,那么密钥空间为60×16=960
上面介绍了仿射密码的原理。
下面我们分析仿射密码在模26情形下的解密过程,已知gcd(a,26)=1,解密过程就是解同余方程y≡ax+b(mod 26)。由上面的讨论,此同余方程在Z26上只有唯一解,下面给出具体方法找出该解。
首先给出乘法逆的概念
定义1.4 设a∈Zm,若存在a'∈Zm,使得aa'≡a'a≡1(mod m),则a'称为a在Zm上的乘法逆,将其记为a-1mod m。在m固定的情形下,也可将其简记为a-1 |
---|
可证明,a在Zm上存在乘法逆,当且仅当gcd(a,m)=1,并且其你如果存在,则必唯一。如果p为素数,则Zp上任意非零元均有乘法逆存在,一个环如果满足这条性质,将其称为域
考虑同余方程y≡ax+b(mod 26),其等价于如下同余方程:ax≡y-b(mod 26),因为gcd(a,26)=1,故a在Z26上存在乘法逆元a-1,两边同乘以a-1,有a-1(ax)≡a-1(y-b)(mod 26),因此解密变换d(y)=x=a-1(y-b)mod 26
密码体制1.3 仿射密码 令P=C=Z26,且 K={(a,b)∈Z26×Z26:gcd(a,26)=1} 对任意的K=(a,b)∈K,x,y∈Z26,定义 eK(x)=(ax+b)mod 26 和 dK(y)=a-1(y-b)mod 26 |
---|
1.4维吉尼亚密码
前面介绍的移位密码和代换密码中,一旦密钥选定,则每个字母对应的数字都被加密变换成对应的唯一数字(单表代换密码)。下面介绍的维吉尼亚密码是一种多表代换密码
密码体制1.4 维吉尼亚密码 设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上进行 |
---|
每个密钥相当于一个长度为m的字母串,称为密钥字。维吉尼亚密码一次加密m个明文密码
例子:设对应关系A<->0,B<->1,…,Z<->25,m=6,密钥字为CIPHER,对应数字串K=(2,8,15,7,4,17),要加密的明文为thiscr,将明文转化为对应的数字,每六个为一组,使用密钥字进行模26下的加密运算,相应的密文为VPXZGI,如下所示
19 | 7 | 8 | 18 | 2 | 17 |
---|---|---|---|---|---|
2 | 8 | 15 | 7 | 4 | 17 |
21 | 15 | 23 | 25 | 6 | 8 |
维多尼亚密码的密文的密钥空间大小为26m,即使m很小,使用穷尽密钥搜索方法也需要很长时间。在一个具有密钥字长度为m的维多尼亚密码中,一个字母可以被映射为m个字母中的某一个,这样的密码体制被称为多表代换密码
1.5希尔密码
希尔密码也是一种多表代换密码,主要利用线性代换的方法。
设m是一个正整数,定义P=C=(Z26)m,每个明文单位使用x=(x1,x2,…,xm)来表示,同样密文单位使用(y1,y2,…,ym)来表示,具体加密中,y1,y2,…,ym即将被表示为x1,x2,…,xm的线性组合,例如:
y1=(k1x1+k2x2+...+kmxm)mod 26 y2=(k1x1+k2x2+...+kmxm)mod 26 ... ym=(k1x1+k2x2+...+kmxm)mod 26 |
使用矩阵形式,y=xK,密钥K取一个m×m的矩阵,记为K=(ki,j),由此可得,明文为x=yK-1
下面我们给出一个示例
例1.5 假设密钥为:
K=((11,3) T,(8,7) T) 其逆矩阵为 K -1=((7,23) T,(18,11) T) 设要加密的密文为july,可将明文划分为两个加密单元:(9,20)(对应于ju)和(11,24)(对应于ly),分别对其进行加密变换如下: (9,20)((11,3) T,(8,7) T)=(3,4) 和 (11,24)((11,3) T,(8,7) T)=(11,22) 因此密文为DELW。 要解密密文,需进行如下计算: (3,4)((7,23) T,(18,11) T)=(9,20) 和 (11,22)((7,23) T,(18,11) T)=(11,24) 这样可得到所需明文 |
由此我们可以看出,希尔密码的解密关键是求出密钥的逆矩阵,可通过伴随矩阵和矩阵的初等行变换求得,此处不给出详细解释
顺便给出一个2×2矩阵K=((k1,1,k2,1)T,(k1,2,k2,2)T)的逆矩阵公式
K-1=|K|-1((k2,2,-k2,1)T,(-k1,2,k1,1)T)
密码体制1.5 希尔密码 设m≥2为正整数,P=C=(Z26)m,且 K={定义在Z26上的m×m的可逆矩阵} 对任意密钥K,定义: eK(x)=xK 和 dK(y)=yK-1 以上运算都是在Z26上进行的 |
---|
1.6置换密码
前面的密码体制都是代换密码:明文字母被不同的密文字母所代替。下面介绍置换密码的特点是保持明文的所有字母不变,只是利用置换打乱了明文字母的位置和次序
密码体制1.6 置换密码 令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为置换π的逆置换 |
---|
下面给出一个例子
设m=6,密钥为如下置换π:
x | 1 | 2 | 3 | 4 | 5 | 6 |
---|---|---|---|---|---|---|
π(x) | 3 | 5 | 1 | 6 | 4 | 2 |
逆置换π-1:
x | 1 | 2 | 3 | 4 | 5 | 6 |
---|---|---|---|---|---|---|
π-1(x) | 3 | 6 | 1 | 5 | 2 | 4 |
假设加密的密文是shesellsseas,六个为一组,shesel | lsseas,那么密文为EESLSH | SALSES
事实上,置换密码是希尔密码的一个特殊情形,定义一个置换π的关联置换矩阵Kπ=(ki,j)m×n:ki,j={1,若i=π(j)}{0,其他}
1.7流密码
- 分组密码:连续的明文使用相同的密钥进行加密,正如前面所研究的密码体制
- 流密码:产生一个密钥流z=z1z2…,然后使用它加密明文串x=x1x2…有y=y1y2…=ez1(x1)ez2(x2)…
同步流密码:
密钥流直接由初始密钥使用某种特定算法变换而来,密钥流和明文串是相互独立的。
定义1.6 同步流密码是一个六元组(P,C,K,L,ε,D)和一个函数g,满足以下条件 |
---|
1.P表示所有可能的明文组成的有限集 |
2.C表示所有可能的密文组成的有限集 |
3.K表示密钥空间,由所有可能的密钥组成的有限集 |
4.L是一个称之为密钥流字母表的有限集 |
5.g是一个密钥流生成器。g使用密钥K作为输入,产生无限长的密钥流z=z1z2...,这里zi∈L,i ≥ 1 |
6.对任意的z∈L,都有一个加密规则ez∈ε和相应的解密规则dz∈D。并且对每个明文x∈P,ez:P->C和dz:C->P是满足dz(ez(x))=x的函数 |
流密码通常用二元字符来表示,即P=C=L=Z2,此时加密解密都可以看做模2加法,如果认为0表示布尔值为“假”,1表示布尔值为”真“,那么模2加法对应于异或运算。可以通过硬件方式实现加密和解密
假设从(k1,k2,…,kn)开始,并且zi=ki,1≤i≤m。利用次数为m的线性递归关系来产生密钥流:
zi+m=∑m-1j=0 cjzi+j mod2,这里c0,c1,…,cm-1∈Z2都是确定的常数 |
---|
这里的密钥K由2m个值k1,k2,…,km,c0,c1,…,cm-1组成,密钥产生周期为2m-1周期的密钥流
异步流密码:
密钥流的产生不但与密钥K有关,而且与明文元素(x1,x2,…,xi-1)或密文元素(y1,y2,…,yi-1)有关。下面给出一种来自于维吉尼亚密码的异步流密码,称为自动密钥密码
密码体制1.6 自动密钥密码 设P=C=K=L=Z26,z1=K,定义zi=xi-1,i≥2.对任意的0≤z≤25,x,y∈Z26,定义 ez(x)=(x+z)mod 26 和 dz(y)=(y-z)mod 26 |
---|