AES加密算法加解密速度快,算法安全性能好。是目前密码学界较为流行的算法。那么AES加密算法在条件接收系统中有哪些应用呢?我今天就给大家介绍一下。
一、加密算法介绍
1、基本概念
AES加密算法是一种分组加密算法,加密分组为128bits.密钥长度可以为128bits、192bits、256bits三种,分别称为AES-128.AES-192,AES-256。加密过程循环的次数根据密钥长度的不同而不同。
下面给出相关的几个定义:
(1)分组(block):是输入,输出、循环密钥的二进制序列。分组的长度就是序列的bit数,AES中为128bits。
(2)Word:用Wi表示一个word,32bits为一个word。128bits的数据序列可以表示成4个word。
(3)Nb:数据的word数,在128bis的AES中,Nb为4。
(4)Nk:密钥的word数,密钥为128bits、192bits、256bits时.Nk分别为4、6、8。
(5)Nr:循环次数,循环次数随着密钥长度的不同而不同。对予密钥长度为128bits,192bits、256bits的情况时,Nr分别为10、12、14。
(6)矩阵表示方法:
在AES中基本处理单元为一个字节。128bits可以分为16个字节,用a0-a15表示每个字节-AES中把输入表示为矩阵的形式:
其中ao={bo, b1,b2,b3,b4,b5,b6,b7},a1={b8,b9,b10,b11,b12,b13,b14,b15},(其中ai表示一个字节,bi表示一个bit)依此类推。W0=a1,a2,a3。W1=a4,a5,a6 ,a7,W2=a8,a9,a10,a11,w3=a12,a13,a14,a15,每个word为32bits,共四列,所以Nb=40整个矩阵就是一个block。
(7)AES-128,AES-192,AES-256三种标准的密钥长度和循环次数:
2、加密算法描述
AES加密算法的每一轮变换都由三个不同的玎逆一致变换组成,且每一层都有自己的函效,他们分别是:非线性层,进行Subbyte变换;线性混合层,进行ShiftRow运算和MixColumn运算;密钥加法层,进行AddRoundKey运算。
(1)Subbyte变换:S盒变换oS盒是一个非线性的字节替代变换,输人为8bits,输出仍为8bit80例如,输入字节为Ioioiooii)转换为十六进制表示为{53},行为5,列为3,查S盒得输出为led},即输出为{11101101)0十六字节逐一变换,得到128bits的输出o在S盒中变换过的结果仍然成矩阵排列o矩阵的乘法在运算中远不如查表来得快。因此,编写程序时通常采用查S盒列表o S盒是非线性变换,在这里通过混乱的方式隐蔽明文消息中的冗余度。
(2)ShiftRow转换:矩阵的第0行不做变换,第一行循环左移1个字节,第2行循环左移2个字节,第3行循环左移3个字节。
(3)MixColurnri转换:在MixColumn转换中,把状态中的每一列看作是GF(28)上的多项式a(x)。与固定多项式c(x)之‘03 'x3+‘01’x2+‘Ol'x+‘02’相乘。
(4)AddRoundKey运算:轮密钥与状态中的对应字节按位异或。
a、密钥扩展
轮密钥的生成由密饲扩展和轮密钥选择两部分构成,其基本原则是:
(1)轮密钥的总位数等于分组长乘以(1+Nr),如分组长为128bit,轮数为10。则轮密钥的总长为128x(10+1)=1408bit;
(2)种子密钥(由用户输入或算法自行产生)扩展为扩展密钥,种子密钥长度为4xNk个字节;
(3)轮密钥由以下方法从扩展密钥中获得:对第1轮密钥由前Nb个宇构成;第2轮密钥由第二个Nb个字即Nb+l个字到第2Nb个字构成;以下依此类推。
对于密钥长度为128位的AES,加密过程的每一次循环都需要不同的密钥,密钥的总数为11个,也就是4x11=44个words。密钥扩展过程的基本单位是WoIdo由种子密钥生成扩展密钥的过程包括如下变换:
(1)SubWord变换:与加密过程中的SubByte8变换相同,是一个返回4个字节的函数。每个字节都是它输入字中相应位置字节通过S盒作用后的结果。
(2)Rotword变换:密钥扩展过程中的循环变换,返回的是这4个字节经循环置换后的字,例如当输入为word[ao,a1,a2,a3]时,结果为word[a1,a2,a3,a0]。
(3)Rcon变换:它的值为[xH,OO,OO,OOJ,其中Xo为{01},X为102]。X:z为1041。x,为108),依此类推。
b、轮密钥的选择
由于在进行密钥加法时,密钥长必须与分组长相等,因此第i轮的密钥与分组长有关,并且由扩展密钥的字w[Nbxi],wfNbxi+ll,.,.w[Nb×(i+1)]构成。这种算法的优点在于占有的存储空间不大,并且轮密钥的计算只需要运用Nk个字就可以了,并不需要进行预计算。
整个过程生成44个words,在DES中有弱密钥和半弱密钥,而在AES中无弱密钥和半弱密码。
AES算法的解密过程和加密过程基本类似,只是把顺序稍做变换。
二、加密算法的实现
本文主要以AES-128为倒,研究了AES算法的加解密过程并在vC环境下实现了该算法。加密过程程序流程图如下所示:
首先将消息进行分组,每个分组长度为128bits。与输入的128bits的密钥进行按位异或操作。然后进入第一轮循环,在这个循环体中包括前面讲到的查S盒表、行变换、列变换、与每轮的128bits的子密钥异或,共循环9次。最后再查S盒表、行变换、异或变换,实际上它比循环体少了列变换这一过程。循环9次共9个子密钥再加上首尾两个子密钥,因此共需128bits的密钥11个。
为了测试AES算法的加解密速度,并且直接说明了的显示加解密前后的明文和密文的对比变换情况,本文还在VC环境下做出了实用的加解密对话框,如图2所示。
在这个对话框中。直接输入或选择已存在的文件作为要加密的明文,然后选择所需的密钥长度,输入对应的密钥,按¨加密计键,就会显示出加密后的密文,同时在“加密时间”编辑框中会显示加密文件所使用的时间。同样,按解密键后,就会显示出解密后的明文,同时显示解密时间。这样我们就可以计算出算法的加密、解密速度。
为了保证测试结果的准确性和稳定性,我们对多个文件进行了加解密操作。最后得出AES算法的加解密速度如表2所示。
通过测试结果可以看出,AES加密算法的加密解密速度比3DES加密算法的加密解密速度快得多,并且软件加密解密的速度就完全可以满足视音频流传输的同步性要求。
三、加密算法的安全性
目前对加密算法的攻击最常用的方法是穷举攻击法。它是一种已知明文的攻击,它需要少量的密文及相应的明文。为预防穷举攻击,密钥必须足够长以至使攻击不可行。有两个参数决定了穷举攻击的速度:需测试的密钥量及每个测试的速度,如果从算法的复杂性理论考虑一个密码系统的穷举攻击问题,这种攻击的时间复杂性与可能的密钥总数成比例,它是密钥长度的指数函数。到目前为止,还没有比穷举攻击更有效的方法,已经公布的思想并不能形成有效的攻击。但是,以目前的计算机运行速度来说,想用穷举法攻破灿洛是不可能的。
差分和线性分析方法是到目前为止两种最有用的通用密码分析方法。对予这些攻击提供轮致低的复杂度是在设计Rijndael密码时的最基本准则。目前已经证明对于一个4轮的Rijndael密码来说,差分分析方法的概率上限是2的-150次方,线性分析方法的概率上限是2的-75次方,而实际的128位灿皓算法的轮数是10轮,这些轮效对于抵抗
上述攻击能够提供足够的安全性。
不可能差分攻击:差分密码攻击是利用高概率特征或差分恢复密钥,不可能差分攻击是利用概率为似或非常小)的特征或差分,其基本思想是排除那些导致概率为0(或非常小)的特征或差分的候选密钥o对5轮的Rijndael密码,可以用不可能差分攻击方法,它要求229.5个选择明文、231个密文、242个存储字和225小时的预先处理时间,它可以攻击6轮的Rijndael密码。但是对于轮数更高的Rijndael密码,采用该方法攻击则没有更好的效果。
Square攻击:对Rijndael密码分析最有效的就是Square攻击,它是一个选择明文攻击,通过研究基于字节结构的密文来进行攻击。它对予和Rijndnel密码的其中一抡有相似结构的任何密文都是有效的。最初的Square攻击对6—7轮的Rijndael密码的破解比穷尽密钥搜索攻击快。
尽管这些方法能够对简化的Rijndael密码进行攻击,但是这些方法对算法本身的攻击并没有任何效果。按照Rijndael密码的设计原则,它是用一些比较巧妙的方程表达式来实现的o从单纯的数学角度来看,要从这些方程组表达式得到密码的密钥非常困难,但是密码分析家们认为也可能利用其他的一些方法比较容易地解决这些问题。已经有一些方法利用Rijndael密码的代数结构来破解密码。但是到目前为止还没有能够进行有效攻击的方法。
AES能够抵御目前已知的所有攻击,特别是线性分析和差分分析,也能抵抗某些物理攻击。另外,AES算法的灵活性比较大,它的分组长和密钥长可以随着安全性的要求而改变o算法支持任意分组的大小,密钥的大小为128、192、256位,可以任意组合。这种灵活性的特点使算法的安全性得到大幅度提高,从而能够有效地防御外界攻击。
四、AES算法在条件接收系统中的应用
数字电视系统中所传输的视音频数据与其他数据相比,有着自己不同的特点。首先,它的比特传输率要比其他数据类型高出许多;其次,视音频数据在传输时要求比较离的实时性,对延时、抖动极其敏感。于是,这也就意味着对视音频数据进行加密时,不得不首先考虑加密算法的速度问题,以保证加密所耗费的时间较少,满足观众对所收看节目的同步性要求o另外,为了满足付费电视服务商的利益要求,实现授权用户才可以收看节目的目的,必须保证节目在传输过程中的安全性,因此加密算法的安全性尤其重要。
目前欧洲DVB组织在条件接收系统中所使用的加扰算法是CSA算法,这是一种将分组密码和流密码相结合产生的算法。CSA算法是1998年开发出来的,但是它自从产生以后一直受专利权的保护,使得算法细节和代码都不能公开,人们只是通过专利证书上的一些介绍才了解了一些关于它的情况。因此,在我国条件接收系统中应用GSA算法是不切实际的。美国目前的有线电视系统中使用的加密算法是3DES算法,这也是目前很多国家都采用的一种算法o但是,DES算法已经不安全了,很容易就可以破解o而3DES只是DES算法的3轮迭代,并没有对算法本身做实质性的改进,随着计算机计算水平的提高,用穷举法攻破3DES是完全可能的。另外,速度慢是3DES算法的致命性弱点,DES是为20世纪70年代的硬件结构设计的,3DES的速度比DES还要慢几倍。
AES加密算法首先没有专利权方面的问题,任何人都可以通过正常渠道得到并使用这种算法。算法的公开性使得它已经经受了许多学者和密码专家的深入研究,从而使算法更加完善o它可以抵御目前已知的所有攻击,完全可以保证节目的安全性。根据前面的测试结果,AES的加密解密速度约为38M/8,可以满足视音频流的实时性传输要求。另外,它可以实用在智能卡上,使用少量的RI蝴,节省内存空间,而且在ROM与效事之间是可以根据需要傲取舍的。算法的设计非常简单,不管是硬件上还是低内存环境下都能快速执行,即使在软件环境下也可以快速加解密,这样又可以满足实际系统的经济性要求。
小知识之AES
密码学中的高级加密标准(Advanced Encryption Standard,AES),又称高级加密标准Rijndael加密法,是美国联邦政府采用的一种区块加密标准。这个标准用来替代原先的DES,已经被多方分析且广为全世界所使用。经过五年的甄选流程,高级加密标准由美国国家标准与技术研究院 (NIST)于2001年11月26日发布于FIPS PUB 197,并在2002年5月26日成为有效的标准。2006年,高级加密标准已然成为对称密钥加密中最流行的算法之一。