Get清风IDEA、AES、FEAL加密算法介绍
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
IDEA、AES、FEAL加密算法介绍
电子商务平安与支付
学号
姓名
系别
年级
专业
IDEA、AES、FEAL加密算法介绍
IDEA
Xuejia Lai和James Massey于1990年提出了PES 〔Proposed Encryption Standard,推荐加密标准〕分组密码算法。
1991年对PES 作了改进,并将改进后的算法称为IPES〔Improved Proposed Encryption Standard,改进型推荐加密标准〕。
IPES于1992年改名为IDEA〔International Data Encryption Algorithm,国际数据加密算法〕。
其根本参数为:分组长度:64比特,密钥长度:128比特,迭代圈数:8圈〔每圈6个子密钥块〕再附加一个输出变换〔4个子密钥块〕IDEA的分组长度为64比特,密钥长度为128比特。
其加、脱密运算用的是同一个算法,二者的不同之处仅在于密钥调度不同。
其加、脱密运算是在128比特初始密钥作用下,对64比特的输入数据分组进行操作,经8圈迭代后,再经过一个输出变换,得到64比特的输出数据分组。
整个运算过程全部在16位子分组上进行,因此该算法对16位处理器尤其有效
IDEA 加密总体方案流程图
64bit 明文X
第2圈 7z 12
z 输出变换
49z 52z 第8圈
43z 48z 第1圈 1z 6
z 1x 2x 3x 4
x 1y 2y 3y 4
y 64bit 密文Y IDEA
加密总
体方案
流程图
“使用来自不同代数群的混合运算〞是
IDEA 所提出的新的设计思想,它利用三个“不相容〞的群运算以到达混乱,利用乘加密码结构来实现扩散和进一步的混乱。
使得IDEA 复杂的代数结构不能得到简化。
而这正是我们在设计分组密码算法中所追求的。
IDEA 是一种使用128比特密钥以64比特分组为单位加密数据的分组密码,其设计目标可以归结为两方面:一方面与密码强度有关,另一方面与使用的方便性有关。
IDEA 的密码强度和以下特性与其密码强度有关:
分组长度:分组长度应足够大,以抵抗统计分析。
使用64比特的分组大小通常认为已经足够强。
密钥长度:密钥长度应足够长,以抵抗密钥穷尽攻击,通过使用128比特的密钥长度,在将来的很长时间里IDEA 似乎在这方面都是平安的。
密文应以一种复杂的方式依赖于明文和密钥,这样做的目的是:使确定密文的统计特性和明文的统计特性的依赖关系非常复杂。
IDEA 通过使用三种不同的操作到达该目的,而DES主要靠异或运算及小的非线性S盒代替来实现。
在IDEA中,扩散是由乘加结构〔MA〕实现的。
MA的输入有两局部,一局部是由明文导出的两个16比特数值,另一局部是两个16比特密钥子块。
第一圈输出的每一比特依赖于输入〔明文局部和密钥局部〕的每一比特。
经8圈循环之后,可提供非常有效的扩散。
在实现方面,IDEA拥有一下特点:
1、便于软件实现的原那么
使用子分组:密码操作应该在对于软件来说很自然的子分组上进行,具有这种特性的子分组包括8,16或32比特,IDEA使用16比特子分组。
使用简单操作:密码操作应该容易使用加法、移位等根本操作编程实现。
IDEA的三种操作符合该要求,其中最困难的模乘法也可以容易地用简单的根本操作构成。
2、便于硬件实现的设计原那么
加密和解密过程类似:加密和解密应该只在使用密钥的方式上有所不同,以便于同一个设备既可用于加密又可用于解密。
和DES一样,IDEA具有满足该要求的结构。
规那么的结构:为便于VLSI〔very large scale integration,超大规模集成〕实现,密码应该具有一种模块化结构。
IDEA是由重
复使用两种根本的模块化〔变换子块和加密子块〕构件而构成的。
AES
随着对称密码的开展,DES数据加密标准算法由于密钥长度较小(56位),已经不适应当今分布式开放网络对数据加密平安性的要求,因此1997年NIST公开征集新的数据加密标准,即AES[1]。
经过三轮的筛选,比利时Joan Daeman和Vincent Rijmen提交的Rijndael算法被提议为AES的最终算法。
此算法将成为美国新的数据加密标准而被广泛应用在各个领域中。
尽管人们对AES还有不同的看法,但总体来说,AES作为新一代的数据加密标准会聚了强平安性、高性能、高效率、易用和灵活等优点。
AES设计有三个密钥长度:128,192,256位,相对而言,AES的128密钥比DES的56密钥强1021倍[2]。
AES 算法主要包括三个方面:轮变化、圈数和密钥扩展。
本文以128为例,介绍算法的根本原理;结合AVR汇编语言,实现高级数据加密算法AES。
AES是分组密钥,算法输入128位数据,密钥长度也是128位。
用Nr表示对一个数据分组加密的轮数〔加密轮数与密钥长度的关系如表1所列〕。
每一轮都需要一个与输入分组具有相同长度的扩展密钥Expandedkey(i)的参与。
由于外部输入的加密密钥K长度有限,所以在算法中要用一个密钥扩展程序(Keyexpansion)把外部密钥K扩展成更长的比特串,以生成各轮的加密和解密密钥。
AES每一个圈变换由以下三个层组成:
非线性层——进行Subbyte变换;
线行混合层——进行ShiftRow和MixColumn运算;
密钥加层——进行AddRoundKey运算。
① Subbyte变换是作用在状态中每个字节上的一种非线性字节转换,可以通过计算出来的S盒进行映射。
② ShiftRow是一个字节换位。
它将状态中的行按照不同的偏移量进行循环移位,而这个偏移量也是根据Nb的不同而选择的[3]。
③在MixColumn变换中,把状态中的每一列看作GF(28)上的多项式a(x)与固定多项式c(x)相乘的结果。
b(x)=c(x)*a(x)的系数这样计算:
运算不是普通的乘法运算,而是特殊的运算,即 b(x)=c(x)•a(x)(mod x4+1) 对于这个运算b0=02。
a0+03。
a1+a2+a3 令xtime(a0)=02。
a0
其中,符号“。
〞表示模一个八次不可约多项式的同余乘法[3]。
对于逆变化,其矩阵C要改变成相应的D,即b(x)=d(x)*a(x)。
④密钥加层运算(addround)是将圈密钥状态中的对应字节按位“异或〞。
⑤根据线性变化的性质[1],解密运算是加密变化的逆变化。
这里不再详细表达。
对不同的分组长度,其对应的轮变化次数是不同的,如表1所列。
AES算法利用外部输入密钥K(密钥串的字数为Nk),通过密钥的扩展程序得到共计4(Nr+1)字的扩展密钥。
它涉及如下三个模块:
①位置变换(rotword)——把一个4字节的序列[A,B,C,D]变化
成[B,C,D,A];
② S盒变换(subword)——对一个4字节进行S盒代替;
③变换Rcon[i]——Rcon[i]表示32位比特字[xi-1,00,00,00]。
这里的x是〔02〕,如Rcon[1]=[01000000];Rcon[2]=[02000000];Rcon[3]=[04000000]……
扩展密钥的生成:扩展密钥的前Nk个字就是外部密钥K;以后的字W[[i]]等于它前一个字W[[i-1]]与前第Nk个字W[[i-Nk]]的“异或〞,即W[[i]]=W[[i-1]]W[[i- Nk]]。
但是假设i为Nk的倍数,那么W[i]=W[i-Nk]Subword(Rotword(W[[i-1]]))Rcon[i/Nk]。
AES的加密与解密流程如图1所示:
FEAL
FEAL〔Fast Data Encipherment Algorithm〕是一套类似美国DES的分组加密算法。
FEAL被提出的原意是着眼于当时的DES只
用硬件去实现他,因此不适用于较小的系统。
而FEAL那么强调其在每一轮的平安强度都比DES高,所以使用较少的轮数,就可到达与DES采用16轮相同的平安度,如此一来,就比较适合用软件去实现它了。
从输入与输出的观点来看,FEAL分组加密法与DES是相同的。
即FEAL的加密或解密分组,及使用者手中所持有的秘密密钥皆如同DES一般,都是64位。
唯一不同的是,FEAL的密钥没有校验位。
至于FEAL加密算法的真正加密结构,那么与DES有极大的差异。
FEAL 完全没有使用置换函数来搅乱加密或解密过程中的数据,更没有如DES般具有神秘的S盒。
FEAL使用了异或〔XOR〕、旋转〔Rotation〕、加法与模〔Modulus〕运算
FEAL中子密钥的生成使用了8轮迭代循环,每轮循环产生2个16bit的子密钥,共产生16个子密钥运用于加密算法中。