在仿射密码中,加密函数的定义如下:
e(x )=) axb ) mod26
a、b Z。因为这样的函数被称为仿射函数,所以这样的密码体制也称为仿射密码(可以看出,当a=1时,其对应的正是移位密码)。
为了破译密文,必须保证所选择的仿射函数是单射函数。 也就是说,对于任意的YZ,将联合方程式表示如下。
ax+by(mod26)
有唯一的解。 上述的同余方程式
axy-b(mod26)
因为当y遍历z(26 )时,y-b显然也遍历z(26 ),所以我们只需研究同余方程axy ) mod26 ) (yZ )。
我断言以上联合方程唯一解的充分条件是gcd(a,26 )=1(这里的gcd表示最大公约数。 首先,假设gcd(a,26 )=d1。 同余方程ax0(mod26 )至少有两个解,分别为x=0和x=26/d。 在这种情况下,加密函数不是单射函数,因此不能用作有效的加密函数。
定理:
设aZ,则对于任意bZ,联合方程axb(modm )唯一能具有解xz(m )的充分必要条件是gcd(a,m )=1。
26=213,所以所有26和像素的数量为a=1、3、5、7、9、11、15、17、19、21、23、25。 B的可取值可以是Z~26~的任意一个数。 因此,仿射加密的密钥空间是1226=312 (当然,该密钥空间太小)。
定义 设a=1,m=2且均为整数。如果gcd(a,m)=1,则称a与m互素。Z中所有与m互素的数的个数使用(m)来表示(这个函数称为欧拉函数)
关于欧拉函数数论的有名结果是以m的素数幂分解的形式给出(m )的值。 (如果没有1和p以外的因子,整数p就称为素数。 任何整数m-1都可以唯一地分解为素数幂的乘积。 例如60=2^2^35和98=27^2^ )
以下定理给出(m )值的计算公式。
定理假设
m =()
这里均为素数且各不相同,0,1in。则
(m)=(-)
根据对于欧拉函数的上述计算式,仿射加密的密钥空间的尺寸是m )。 例如,如果m=60,=60=224=16,则仿射密码的密钥空间大小为6016=960。
其次,分析模块26的情况下的仿射密码的解密过程。 已知gcd(a,26 )=1,解码的过程是求解同余方程yaxb ) mod26 )。 从目前为止的讨论来看,该联合方程式在上只有唯一的解,但要找到该解需要有效的方法。
首先,给出乘法的相反概念。
定义 设a,若存在a',使得aa'a'a=1(mod m),则a'称为a在Z上的乘法逆,将其记为mod m。在m是固定的情形下,也可将其简记为。
可以证明,a只有在z中存在乘法的逆,且gcd(a,m )=1的情况下,并且如果存在逆,则一定是唯一的。 当p为素数时,z的任意非零元上乘法运算相反存在,当一个【环】满足该性质时,称之为域。
考虑同余方程yaxb(mod26 )。 它等效于以下同余方程:
axy-b(mod26)
由于gcd(a,26 )=1,所以a中存在乘法逆元,存在
(ax)x(y-b)mod26(a)x1xx(mod26)
因此,x=(y-b )模26。 因此,对应的解码随后被转换为
d(y)=(y-b)mod26
下面给出乘法逆的算法:(扩展的tmdmj算法)
例5关于模14的乘法逆元
辗转除外: 14=52 4; 5=4 1
反推:1=5-4=5-(14-52 )=53-14
因此,5型14乘法逆元为3
来总结一下方法,假设要求a关于模m的乘法逆元,由定义进行辗转相除直到取到1,然后将等式化为1=ab+/-mc,其中b,c为整数。
ng>密码体制 -- 仿射密码(Affine Cipher)
令P=C=Z,且
K={(a,b)Z×Z:gcd(a,26)=1}
对任意的K=(a,b)K,x,yZ,定义
e(x)=(ax+b)mod 26
和
d(y)=(y-b)mod 26
例 设密钥K(7,3)。上述已知mod26=15。加密函数为
e(x)=7x+3
相应的解密函数为
d(y)=15(y-3)=15y-19
以上运算均是在Z上完成。下面来验证对任意的xZ,都有 d(e(x))=x:
d(e(x))= d(7x+3)=15(7x+3)-19=x+45-19=x
使用上面的密钥,我们来加密明文hot。首先转换字母爱h,o,t为对应的模26下的数,分别为7,14,19.分别加密如下:
(7×7+3)mod26=52mod26=0
(7×14+3)mod26=101mod26=23
(7×19+3)mod26=136mod26=6
所以三个密文字符为0,23,6,相应的密文应为AXG。
仿射密码的密码分析
让我们首先看一个如何利用统计数据来尽心改密码分析的简单例子:仿射密码的分析。假设jpdll已经截获到了下列密文:
FMXVEDKAPHFERBNDKRXRSREFMORUDSDKDVSHVUFEDKAPRKDLYEVLRHHRH
这条密文的频数分析表如下:
密文中出现的26字母的频数统计 字母频数字母频数A2N1B1O1C0P2D7Q0E5R8F4S3G0T0H5U2I0V4J0W0K5X2L2Y1M2Z0
这条密文只有57个字母,但是已经可以分析仿射密码,最大频数字母是:R(8次),D(7次),E,H,K(各5次),S,F,V(各4次)。首先,我们猜想R是e的加密,而D是t的加密,因为e和t是英文字母表统计表出现频数最高的字母(详细表见另一篇博文“密码学基础--代换密码”)。以数字表达即为e(4)=17和e(19)=3,可得以下方程组:
4a+b=17
19a+b=13
解这个方程组可得唯一解a=6,b=19,但这是一个不合法的密钥,因为gcd(a,26)=2>1。
我们再猜测R是e的加密,而E是t的加密,同上计算得a=13,也不合法。
继续进行,我们猜测R是e的加密,K是t的加密,则有a=3,b=5,密钥合法,接下来我们来验证是否能得到有意义的明文串,解密得:
algorithmsarequitegeneraldefinitionsofarrithmeticprocesses
至此,我们得出了正确的密钥。