软件的核心是数据和算法,数据安全是系统安全的重要部分,对数据加密可以增加系统安全。用AES加密算法对数据文件进行加密的运算,其优势在于AES是一种高级对称性加密标准,速度快,安全级别高的算法,具备很强的扩散性能,最终形成的密码有很高的随机性,便于制作成通用的加密对象类型。数据文件经过AES加密算法加密后,信息会得到有效保护。

一、AES加密算法概念及其特点

1、AES加密算法简介

AES是1997年1月美国国家标准和技术研究所(NIST)发布征集的新加密算法,是一种高效、安全的对称加密算法。目前,Rijndael加密算法以其优秀的性能和抗攻击能力是通用标准AES加密算法。

2、 Rijndaet加密算法数学基础

Rijndael采用一个迭代的、对称密钥分组的密码,可使用128、192和256位密钥,并用128位(16字节)分组加密和解密数据。 Rijndael加密算法中的许多运算是按字节定义的,也有一些运算是按4字节定义的,把一个字节看成是在有限域GF(2的8次方)上的一个元素,4字节看成是系数取自GF(2的8次方),并且次数小于4的多项式。

Rijndael加密算法采用多项式表示法。一个由b7b6b5b4b3b2b1b0位组成的字节B可表示成系数为{0,1}的二进制多项式:b7X7+b6X6+b5X5+b4X4+b3X3+b2b2+b1X1+bo。GF(2的8次方)上的加法定义为二进制式项式的加法,且其系数模2相加。

CF(2的8次方)上的乘法定义为二进制多项式的乘积模一个次数为8的不可约二进制,多项式M(X)=X8+X4+X3+X+1 。

GF(2的8次方)的二进制b(x)的乘法逆为满足式a(x)b(x)mod m(x)=1的二进制式项式a(x),记为b-1(x)。

函数xtime(x)称为x乘,定义为GF(2的8次方)上的x*b(x)。

有限域GF(2的8次方)上的多项式是系数取自GF(2的8次方)上的多项式,GF(2的8次方)上的多项式加法定义为相应项系数相加。GF(2的8次方)上的多项式a(x)=a3x3+a2x2+a1x1+a0和b(x)=b3X3+b2X2+b1X1+b0相乘模X4+1的积为c(x)=C3X3+C2X2+C1X1+C0,其系数由下面的四个式子得到:

基于AES加密算法的数据文件安全策略与实现

3、AES加密过程

AES加密算法原理主要基于置换和代替。置换是数据的重新排列,代替是用一个单元数据替换另—个。AES以128位为分组进行加密处理,分组数据块经多次数据变换操作。 128位信息分成16字节,并按顺序复制到一个名为4×4字节的State(矩阵)中。 State在每一层加密都进行修改oAES算法的主循环对State执行4个不同的操作:SubBytes(字节替换)、ShiftRows(行位移变换)、MixColumns(列混合变换)和AddRoundKey(轮密钥加)。在加密的最后阶段,State被变回为128位的线性串。

AES加密都是以AddRoundKey阶段开始和结束,因为只有AddRoundKey阶段使用密钥。 AES利用四种阶段交替对数据分组进行处理:首先是利用XOR函数进行AddRoundKey操作,接着在其他三个阶段对分组进行错乱处理,然后再利用XOR函数加密。SubBytes、ShiftRows.MixColumn8和AddRoundKey 4个操作在一个执行Nr次的循环里被调用,Nr为给定密钥大小的轮数减1。加密算法使用的轮数或是10,12或是14,这依赖于种子密钥长度是128位、192位还是256位。

下面我们通过图l来说明一下AES加密的过程。

基于AES加密算法的数据文件安全策略与实现

首先,对State进行AddRoundKey操作,将RoundKey与State异或。对前Nr-1轮中的每一轮,用S-BOX对State进行一次代换操作,称为SubBytes,对State做一置换ShiftRows;再对State做一次操作Mix-
ColumnS;然后进行AddRoundKey操作。最后依次进行SubBytes、ShiftRows和AddRoundKey操作,数据就变成了密文。

下面对四种变换进行简单的介绍:

(1)SubBytes是一种非线形的变换。该置换包含一个作用在状态字节上的S-BOX,用SRD表示,他是由字节在GF(2的8次方)域中求其乘法逆并外加一个仿射变换实现。S-BOX是一个16x16的矩阵,表1显示了S-BOX的前5行。

基于AES加密算法的数据文件安全策略与实现

(2)ShiftRows(线形变换),它和列混合运算相互影响,在多轮变换后,使密码信息达到充分的混乱,提高非线形度。

(3)MixColumns(列混合变换),它用State字节列的值进行数学域加和域乘的结果代替每个字节,是以状态的列为单位进行的操作。

(4)AddRoundKey(轮密钥加),加密例程获取该密钥数组并生成一个名为w[e,r]的密钥调度表。密钥调度表中的前4行对State实行一个字节一个字节的异或(XOR)操作,并用轮密钥表w[e,r]异或输入的State[r. c]。

4、AES解密

AES解密算法的结构与加密算法的结构相同,其中的变换为加密算法变换的逆变换,且密钥扩展策略稍有不同。

5、 AES加密算法的优点

AES是一种高级加密标准,是下一代的加密算法标准,具有速度快,安全级别高等优点,我们将AES加密与以前的加密算法比较,AES加密算法有如下的优点:

(1)运算速度快,在多种软硬件测试中,AES加密算法都表现出非常好的性能。

(2)AES采用了分组迭代密码,分组长度和密钥长度设计灵活。

(3)AES加密策略是宽轨迹策略(Wide Trail Strategy,WTS)。 WTS是针对差分分析和线性分析提出的,可对抗差分密码分析和线性密码分析,用穷举法破解AES密钥几乎不可能。

二、基于.NET环境下的AES加密程序设计

.NET在Framework 3.5版本提供了命名空间System.Security.Cryptography提供加密服务,包括安全的数据编码和解码,以及许多其他操作,例如散列法、随机数字生成和消息身份验证。其中类AesCryptoServiceProvider使用高级加密标准(AES)算法的加密应用程序编程接口(CAPI)实现来执行对称加密和解密。

AesCryptoSeervicePro,rider类有方法:CreateDecryptor来实现AES解密器对象和CreateEncryptor创建对称AES加密器对象。

属性BlockSize获取或设置加密操作的块大小、FeedbackSize获取或设置加密操作的反馈大小、IV获取或设置对称算法的初始化向量、Key获取或设置用于加密和解密的对称密钥、KeySize获取或设置密钥的
大小。

AesCryptoServiceProvider类的调用过程非常简单,我们只需要用如下的语句创建该类的实例即可实现调用。

AesCryptoServicePro\rider aes - new AesCryptoSer-,riceProvider()∥创建对象aes

ICryptoTransform encryptor=aes.CreateEncryptorO;∥用方法CreateEncryptor创建对称AES加密器对象aesencryptor。

在实际应用中,我们分别调用CreateEncryptor、CreateDecryptor就能实现对数据文件或系统其他关键性文件的加密和解密。图2是数据文件加密与解密的示意图。

基于AES加密算法的数据文件安全策略与实现

目前加密强度最高的对称加密算法是AES加密算法,其强大的能力正成为加密所有形式电子信息的标准,目前来讲没有已知的密码分析攻击可以解密AES密文,因此我们采用AES算法对数据文件进行加密是十分安全的,同时考虑到AES加密算法的实现程序,在计算效率、内存需求、硬件和软件可适用性、简易性、灵活性等方面的优势可向用户提供很高安全保护。AES加密算法的应用范围十分广泛,除了应用在数据文件加密之外,正广泛应用在通信、网络、金融等各个方面。

小知识之framework

框架(framework)是一个基本概念上的结构,用于去解决或者处理复杂的问题。这个广泛的定义使用的十分流行,尤其在软件概念。框架也能用于机械结构。