(密码学原理一)古典密码学


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

abcdefghijklm
XNYAHPOGZQWBT
nopqrstuvwxyz
SFLRCVMUEKJDI

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,如下所示

197818217
28157417
2115232568

维多尼亚密码的密文的密钥空间大小为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,密钥为如下置换π:

x123456
π(x)351642

逆置换π-1

x123456
π-1(x)361524

假设加密的密文是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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值