线性代数在密码学中的应用Word文件下载.docx
- 文档编号:20860668
- 上传时间:2023-01-26
- 格式:DOCX
- 页数:8
- 大小:24.58KB
线性代数在密码学中的应用Word文件下载.docx
《线性代数在密码学中的应用Word文件下载.docx》由会员分享,可在线阅读,更多相关《线性代数在密码学中的应用Word文件下载.docx(8页珍藏版)》请在冰豆网上搜索。
加密算法;
纠错码;
频谱分析中图分类号:
TN918.1文献标识码:
A文章编号:
1672-464X(2013)04-74-06引言l加密算法中的应用线性代数一1。
是讨论矩阵、线性组合、有限维向量空间及线性变换理论的一门科学。
随着科学技术的发展,尤其是计算机科学的发展,线性代数在日常生活和各种科学技术领域都有广泛的应用。
线性代数提供了简洁的表达方式和方便的计算工具,以简单的语言描述给出各分析学科中的结论,比如数字图像处理、计算机图形学、计算机几何、人工智能、网络通信以及一般的算法设计和分析等,几乎只要涉及向量和序列的结论就可以用线性代数的相关语言来描述和推导。
特别地,在密码学中,线性代数也有着广泛的应用。
文献[2][3]介绍了矩阵在密码学中的应用,不过只局限在古典加密算法这一个方面,而没有涉及现代密码学以及密码学中的其他方面的应用,除矩阵的应用外还有其他重要工具,如线性表示的应用等。
本文主要通过线性代数中各种工具,如线性表示、矩阵、线性变换等,在密码学中加密算法、纠错码、频谱方法等方面的应用来说明线性代数在密码学中的重要性。
1.1直接应用在早期密码研究中,有直接应用矩阵来作为密码表的,比如著名的棋盘密码。
该密码是将26个字母放在的矩阵中,放在一个格子里,其中一种形式如下所示12345凸6cde,ghi,jkfmnopqrs£“”wxy彳这样,每个字母就对应了由两个数构成的字符:
,J,i是字母所在的行数,j是列数,如e对应15,训对应52等。
如果接收到密文为23113535541224424423141154,则对应的明文即为HappyBirthday。
该加密方法简单直接,最大的问题就是容易被攻破,现行的加密算法已经放弃了这种直接对应的加密方式,而改用更复杂的算法进行加密。
+作者简介:
李家(1982-),女,北京电子科技学院讲师,研究方向为代数几何,密码学。
第21卷第4期Vol.21No.4JournalofBeijingElectronicScienceandTechnologyInstitute2013年12月Dec.2013李家+李援南北京电子科技学院北京摘要:
本文介绍了线性代数中线性表示、正交基、线性变换和矩阵等在密码学中加密算法、纠错计算工具给出各学科中的分析结论。
关键词:
频谱分析文章编号:
1672-464X(2013)04-74-06引言l加密算法中的应用一1。
是讨论矩阵、线性组合、有限维向量空间及线性变换理论的一门科学。
随着科学技术的发展,尤其是计算机科学的发展,线性代数在日常生活和各种科学技术领域都有广泛的应用。
线性代数提供了简洁的表达方式和方便的计算工具,以简单的语言描述给出各分析学科中的结论,比如数字图像处理、计算机图形学、计算机几何、人工智能、网络通信以及一般的算法设计和分析等,几乎只要涉及向量和序列的结论就可以用线性代数的相关语言来描述和推导。
特别地,在密码学中,线性代数也有着广泛的应用。
用,不过只局限在古典加密算法这一个方面,而没有涉及现代密码学以及密码学中的其他方面的应用,除矩阵的应用外还有其他重要工具,如线性表示的应用等。
本文主要通过线性代数中各种工具,如线性表示、矩阵、线性变换等,在密码学中加密算法、纠错码、频谱方法等方面的应用来说明线性代数在密码学中的重要性。
1.1直接应用在早期密码研究中,有直接应用矩阵来作为密码表的,比如著名的棋盘密码。
该密码是将26个字母放在的矩阵中,放在一个格子里,其中一种形式如下所示12345凸6cdeghi,jkfmnopqrs£“”wxy彳这样,每个字母就对应了由两个数构成的字符:
,Ji是字母所在的行数,j是列数,如e对应15,训113535541224424423141154,则对应的明文即为HappyBirthday。
该加密方法简单直接,最大的问题就是容易被攻破,现行的加密算法已经放弃了这种直接对应的加密方式,而改用更复杂的算法进行加密。
第21卷线性代数在密码学中的应用·
75·
1.2加密过程中的应用线性代数在加密算法中的应用基本可以归结为对明文代表的数据进行变换,其中包括置换、轮换、线性变换、仿射变换等各种具体的变换类型。
涉及到这些变换的加密算法有很多,这里不再一一赘述,而通过一种著名的算法-AES来进行介绍(在这里不详细叙述该算法的具体加密步骤和细节,而仅关注于某些用到线性代数的地方,关于该算法的细节参见[4][5])。
AES是一个迭代的、对称密钥分组的密码,它可以使用128、192和256位密钥,并且用128、192和256位分组加密和解密数据,其中密钥长度与分组长度是独立的。
与公共密钥密码使用密钥对不同,对称密钥密码使用相同的密钥加密和解密数据。
通过分组密码返回的加密数据的位数与输人数据相同。
迭代加密使用一个循环结构,在该循环中重复置换(permutations)和替换(substitutions)输入数据。
每进行一次循环叫做进行一轮加密,每一轮的运算都包含三个层,每一层都有自己的功能:
线性混合层:
确保多轮之上的高度扩散;
非线性层:
将具有最优的最坏情况非线性特性的”S盒并行使用;
密钥加层:
单轮子密钥简单地异或到中间状态上,实现一次性掩盖。
现在以一轮加密过程来说明该加密算法中对线性代数的应用。
AES将输入明文分组以后,每一组数据按阵列方式进行存储,在数学上的表示可以认为是一个矩阵,元素在矩阵中的位置对应其存储位置,每一个元素(位置)存储一个字节(8比特)的信息,在AES中所有的阵列均是4行。
实现一轮加密运算的函数叫轮函数,AES的轮函数由4个不同的计算部件组成,分别是:
字节代换(SubBytes)、行移位(ShiftRows)、列混合(MixColumns)、密钥加(AddRoundKey)(第一轮之前的部分和最后一轮运算除外,本文不再讨论)。
轮之间的加密结果叫状态。
字节代换:
首先将待加密字节看作上的元素,映射到自己的乘法逆元,“00”映射到自己。
然后,对字节做如下仿射变换:
10001111100011111000111110001111100011111000111110001111例如,“83”的乘法逆元是“80”,再按照上述公式做仿射变换,计得“EC”,从整个状态来看,对左面状态的所有字节进行字节代换运算结果如下:
┏━━━┳━━┳━━━┳━━━┓┃器┃F2轴q7┃┣━━━╋━━╋━━━╋━━━┫┃£C疆馥1瓣瀵蘩a鬻i、£了艇’黼棼┃┗━━━┻━━┻━━━┻━━━┛行移位:
对状态的行进行循环移位,不同状态的行的位移量不同。
列混合:
对状态的列进行如下变换:
例如对左结果:
606l62、63边020301010203010102030101的状态进行列混合到右边的\--/r--\F.PN-_1000.--%¨
儿y儿儿yyoNt-03:
30一g得ooo变线性代数在密码学中的应用·
75线性代数在加密算法中的应用基本可以归结为对明文代表的数据进行变换,其中包括置换、轮换、线性变换、仿射变换等各种具体的变换类型。
涉及到这些变换的加密算法有很多,这里不再一一赘述,而通过一种著名的算法-AES来进行介绍(在这里不详细叙述该算法的具体加密步骤和细节,而仅关注于某些用到线性代数的地方,关于该算法的细节参见[4][5])。
AES和256位分组加密和解密数据,其中密钥长度与分组长度是独立的。
与公共密钥密码使用密钥对不同,对称密钥密码使用相同的密钥加密和解密数据。
通过分组密码返回的加密数据的位数与输人数据相同。
迭代加密使用一个循环结构,在该循环中重复置换(permutations)和替换(substitutions)输入数据。
每进行一次循环叫做进行一轮加密,每一轮的运算都包含三个层,每一层都有自己的功能:
特性的S盒并行使用;
现在以一轮加密过程来说明该加密算法中对线性代数的应用。
AES将输入明文分组以后,每一组数据按阵列方式进行存储,在数学上的表示可以认为是一个矩阵,元素在矩阵中的位置对应其存储位置,每一个元素(位置)存储一个字节(8比特)的信息,在AES中所有的阵列均是4行。
实现一轮加密运算的函数叫轮函数,的轮函数由4个不同的计算部件组成,分别是:
字节代换(SubBytes)、行移位(ShiftRows)、列混合(MixColumns)、密钥加(AddRoundKey)(第一轮之前的部分和最后一轮运算除外,本文不再讨论)。
00映射到自己。
1000111110001111100011111000111110000111110001111例如,83的乘法逆元是80再按照上述公式做仿射变换,计得EC从整个状态来看,┏━┳┓┣╋┫C馥瀵蘩鬻、了艇’┗┻┛例如对左结果:
606l6263边020301\--/--\F.PN-_.--%¨
儿Nt-:
30一g得ooo变·
7
6.北京电子科技学院学报密钥加:
将轮密钥简单地与状态进行逐比特异或。
因为将状态和密钥都用阵列表示,在进行此运算时,当前状态和子密钥的阵列规模是一样的,因此该运算就是状态和子密钥所对应的矩阵在上进行加法运算。
除了轮函数,另一个重要的问题就是密钥生成过程,该过程本文不再介绍,请参见[4][5]。
从上述AES加密过程的介绍中可以看到该算法加密过程主要用用到的运算就是各类线性变换和矩阵基本运算,其他分组密码中也有大量类似应用。
可见,线性代数在加密算法中具有举足轻重的作用。
1.3在密钥分配方案中的应用在常规密码体系中,钥匙如何在网络中分配是一个关键性的问题,线性代数中一些特殊的矩阵,例如对称矩阵、正交矩阵可以用来实现一些特殊方式的密钥分配方案。
这里通过[2]中介绍了一种对话密钥分配方案,对话密钥分配方案。
假设所谓对话密钥分配方案,是设计者随机地在某个含有许多元素的环或域F上选取一个对称矩阵A=(o。
)nXn,并将A秘密地保存起来(用户也不知道A)。
设计者再随机地选取几个互不相同的Xl,X2,…,戈。
EF,并i=(xi,戈:
,…z?
。
1),i=1,2,…,n,并计算出几个新向量:
最后设计者将(xi,y。
)秘密地送给某个用户,该用户收到(戈i,y。
)后就将z。
保密而将他的通信地址与姓名附在y.之前然后公开Yi,此时所有用户都可以知道其他用户的通信地址、姓名和Yi。
下面用一个例子详述使用方法。
设用户口,6,c,…分别获得(并。
,y。
),(Xb,。
),(x。
),…如果用户a想与用户6通话,a就先用明文形式通知6说:
“a将给你通话。
”然后计算出K。
=yb.(x:
,xa,…戈:
一)7,6计算出K=y。
.(Xb,Xb,…z:
1)7,由于矩阵A是对称的,不难验证Ka=KB,于是用户o与6就获得了相同的密钥K=K。
=民。
该密钥分配方案中,由于所有用户都不知道A,矩阵A只受对称性条件的限制,共有n(n+1)个自由变量。
对单个用户而言,用户只知道关于这些自由变量的凡个线性方程,即使联合m(m<
生2-1)个用户,也无法确定出A,而在实际生活中大量用户共同作案偷窃信息的可能性很小,因为该密钥分配方案的安全性由线性方程组的解的理论分析来看是比较安全的。
纠错码中的应用纠错码16:
是为了避免数据传输过程中发生错误提供了一种不仅能检错而且能纠错的数学方法。
现代纠错码的研究始于ClaudeShannon发表于1948年的著名论文通信中的数学理论”。
纠错码与密码学有着必然的联系,例如McEliece密码算法就是一种基于纠错码的公钥加密算法-7I,AW数字签名方案是一种基于纠错码的数字签名方案’8,二元Reed-Muller码是由Muller和Reed于1954年提出的一类重要的线性码,它在密码学的研究尤其是密码布尔函数的研究中具有重要的作用。
定义2.1设A是一个有限集合,n是一个正整数,一个长为n的码C是A“={(al,a2,…,o。
)ln.EA,i=l,2,…n}的一个子集合。
此时称A“为码空间,A中的元素称为字,C中的元素称为码字。
特别地,当A={0,1}时,则称C是一个长为n的二元码。
假设a想要发送消息给6,则将会AA、)、)一一n-n2石戈,.,ll-2Z艽o-02X石,L,LIIII儿儿一76.因为将状态和密钥都用阵列表示,在进行此运算时,当前状态和子密钥的阵列规模是一样的,因此该运算就是状态和子密钥所对应的矩阵在上进行加法运算。
[4][5]。
从上述AES加密过程的介绍中可以看到该算法加密过程主要用用到的运算就是各类线性变换和矩阵基本运算,其他分组密码中也有大量类似应用。
可见,线性代数在加密算法中具有举足轻重的作用。
在常规密码体系中,钥匙如何在网络中分配是一个关键性的问题,线性代数中一些特殊的矩阵,例如对称矩阵、正交矩阵可以用来实现一些特殊方式的密钥分配方案。
这里通过[2]中介绍了一种对话密钥分配方案,对话密钥分配方案。
假设所谓对话密钥分配方案,是设计者随机地在某个含有许多元素的环或域F上选取一个对称矩阵A=(o)nXn并将A秘密地保存起来(,戈。
EF,并i=xi,戈:
…z?
。
1)i=1,2…,n,并计算出几个新向量:
)秘密地送给某个用户,该用户收到(戈i,y。
保密而将他的通信地址与姓名附在y.之前然后公开Yi,此时所有用户都可以知道其他用户的通信地址、姓名和Yi。
将给你通话。
然后计算出K。
=ybx,xa…戈:
76计算出K=yXb,Xb…z由于矩阵A是对称=民。
该密钥分配方案中,由于所有用户都不知道A,矩阵A只受对称性条件的限制,共有n(n+1)际生活中大量用户共同作案偷窃信息的可能性很小,因为该密钥分配方案的安全性由线性方程组的解的理论分析来看是比较安全的。
现代纠错码的研究始于ClaudeShannon论纠错码与密码学有着必然的联系,例如-7I,AW数字签名方案是一种基于纠错8二元Reed由MullerReed于1954年提出的一类重要的={al,a2,o)ln.EA,i=l…n}的一个子集合。
此时称A为码空间,A码字。
特别地,当A={0n的二元码。
假设a想要发送消息给6,则将会A)n-n石戈ll-Z艽o-XLIIII用定义中所定义的码字构成的串。
码空间A“是在考虑出错的情况下6可能收到的所有的字的集合,码C是口可能发送的所有字的集合。
6事先不知道n会发过来什么信息,但是知道C。
如果A“=C,那么6不能用这个编码方案检错,因为所有可能接收到的字均为码字。
如果A”=C,即收到的字集合大于n可能发送的字集合,那么当6收到一个n不可能发送的字,即不在C中的码字时,他会知道有错误发生。
码A能够检测出错误的数量代表它的检错能力,如果码A“还能够纠正一些发现的错误,那么能够纠正错误的数量代表它的纠错能力。
因此在纠错码中总是希望码的检错能力和纠错能力都越大越好。
定义2.2设F。
是一个含q个元素的有限域。
令C∈E为一个码。
我们说一个码C是线性的,当且仅当C是向量空间F:
的一个子空间。
若它作为线性空间的维数为后,则称它为参数为[n,后]的线性码,七也叫做码C的维数。
线性码是一类重要的纠错码。
它存在一个简明的表示——生成矩阵表示。
若C是一个参数为[凡,k]线性码,并且包含多于一个元素,由线性空间知识可知C存在一组座个向量组成的基,以这组基为行向量就得到F。
的一个kxn阶矩阵G,其中G的行向量是线性无关的。
反之,如果知道一个线性码的生成矩阵,就能够通过计算这个矩阵的行向量空间来得到贮的所有元素。
判断一个码字是否属于C,只需要判断这个码字是否可以由C的行向量线性表示。
显然,由向量空间基的不唯一性可知线性码的生成矩阵也是不唯一的。
在纠错码中,通常选择具有特别好性质的生成矩阵。
定义2.3设C∈C是一个线性码,则C的对偶码定义为C-={X∈F:
IX-c=0对任意的c∈C}∈Fq,显然,从线性代数的角度可以将C-视为C在Fq中的的正交子空间,并且有(C-)J‘=C。
·
7.如果C。
L)的生成矩阵为日,显然,X∈((Gj。
)1)=C当且仅当Hx,=0。
因此,检验收到信息是否有误的过程可以转化为简单的矩阵和向量的乘法问题(见例1)。
我们也把C-的生成矩阵日叫做C的校验矩阵。
例1:
C是由向量9i=(1,0,0,0,1,1,0),g2=(0,1,0,0,1,l,1),g3=(0,0,1,0,1,0,1),g4=(0,0,0,1,0,1,1),生成的F2-l的一个4维线性子空间,它是F2m-l中的一个[7,4]码。
可计算出C-的一个生成矩阵为1110100H=1101010,0111001如果接收到的是一个正确的字x,它总可以表示成基向量的线性组合X=xi9i+x292+X393+X494,由正交性显然有Hx,=HcgT,g2,g3,g;
)(X1,X2,X3,戈。
),=0如果接收到的是一个错字的字),=(1,1,1,0,1,0,0),它不属于C,而属于C-,不可能和日中的行全部正交,因此日,r≠0,事实上Ⅳ、r=1≠0(在模2下计算)。
因此对该线性码,判断收到信息是否正确只需要做校验矩阵和码字向量的乘法看是否非零即可。
如上可见,线性码的较验过程完全是线性代数中线性空间、基、生成矩阵、矩阵运算的应用。
重要的线性码有很多类型,如MDS码(广义Reed-Solomon码),循环码(BCH码),有理分式码(Goppa码),很多码现在仍在大量使用,在这些线性码的研究和使用过程中便大量使用了线性代数的知识。
第21是在考虑出错的情况下6可能收到的所有的字的集合,码C是口可能发送的所有字的集合。
6事先不知道n会发过来什么信息,但是知道C。
如果=C那么6不能用这个编码方案检错,因为即收到的字集合大于n可能发送的字集合,那么当还能够纠正一些发现的错误,那么能够纠正错误的数量代表它的纠错能力。
因此在纠错码中总是希望码的检错能力和纠错能力都越大越好。
定义2.2设F是一个含q个元素的有限域。
令C∈E为一个码。
我们说一个码C是线性的,当且是向量空间F:
若它作为线性空间的维数为后,则称它为参数为[n,后]的线性码,七也叫做码C的维数。
它存在一个简明的表示——生成矩阵表示。
若C是一个参数为[凡,k]线性码,并且包含多于一个元素,由线性空间知识可知C存在一组座个向量组成的基,以这组基为行向量就得到F。
的一个kxn阶矩阵G,其中G的行向量是线性无关的。
反之,如果知道一个线性码的生成矩阵,就能够通过计算这个矩阵的行向量空间来得到贮的所有元素。
判断一个码字是否属于C,只需要判断这个码字是否可以由C的行向量线性表示。
显然,由向量空间基的不唯一性可知线性码的生成矩阵也是不唯一的。
F:
IX-c对任意的c
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 线性代数 密码学 中的 应用