基于Rijndael算法的信息安全传递研究

时间:2022-10-27 04:51:16

基于Rijndael算法的信息安全传递研究

摘要:信息安全主要是由安全协议和密码算法组成,其中密码算法是信息安全的基础和核心。Rijndael 算法作为新一代的高级加密标准,运行时不需要计算机有非常高的处理能力和大的内存,操作时很容易抵御时间和空间的攻击。

关键词:Rijndael算法;信息安全;算法加密;算法解密

一、引言

随着计算机技术的飞速发展,各种新技术、新思路不断涌现,加密技术也日趋复杂。在软件加密技术中应用到的密码体制主要分为对称密码体制和非对称密码体制。RSA密码体制是当前非对称密码体制的突出代表之一,因其具备数据加密、身份认证和数字签名等功能,已被越来越多的学者和研究机构所重视。通过对现有数据加密技术的分析,提出了一种将 Rijndael算法的加密安全系统,增强了系统的防护能力,提高了软件的加密处理速度。该算法是AES的代表算法之一,AES 密码体制属于对称密码体制,是 21 世纪的高级分组加密标准。该算法具有算法简洁、高效、安全性能优等特点,具有广泛的应用领域。

二、Rijndael算法加解密原理

Rijndael算法是迭代分组密码,其分组长度和密钥长度都是可变的,均可独立地设定为32bit的任意倍数,最小为128bit,最大为256bit。AES将分组长度固定为128bit,支持128bit、192bit或256bit的密钥长度。

1.加密

Rijndael算法的加密原理是以明文分组与每次变换的中间结果分组称为状态。状态可以用字节的一个矩形阵列表示,该阵列有4行和4列,Rijndael算法的列数等于分组长度除以32。密钥类似地用一个4行的矩形阵列表示,列数记为Nk并且等于密钥长度除以32, Nk可为4(128bits)、6(192bits)或8 (256bits)。明文和密钥如图按例优先的顺序映射到状态矩阵中。

(1)轮变换

Rijndael密码算法由3部分组成,初始轮密钥加、Nr轮、结尾轮。

通常每一轮的轮函数由三个不同的可逆变换组成,即行移位(Shift Row)、列混合(Mix Column)和轮密钥加(Add Round Key)变换。最后结尾轮的轮函数没有列混合(Mix Column),其余相同。轮函数的伪C代码:

Key Addition (State, Round Key)

for (i=1;i

{

Byte Sub (State);

Shift Row (State);

Mix Column (State);

Add Round Key (State, Round Key);

}

Byte Sub (State);

Shift Row (State);

Add Round Key (State, Round Key);

(2)轮密钥加变换(Add Round Key)

将轮密钥表示成和状态矩阵大小相同的矩阵,用简单的比特异或将一个轮密钥作用在状态上。

2.解密

Rijndael解密算法的伪C代码:

Inv Rijndael (State, Cipher Key)

{

Inv Key Expansion (Cipher Key, Inv Expanded Key);

Add Round Key(State,Inv Expanded Key + Nb*Nr);

For (i=Nr-1; i>0; i-)

Inv Round (State,Inv Expanded Key+Nb*i);

Inv Final Round (State, Inv Expanded Key);

}

逆密钥扩展的伪C代码:

Inv Key Expansion (Cipher Key, Inv Expanded Key)

{

Key Expansion(Cipher Key,Inv Expanded Key);

for(i=l;i

Inv Mix Column (Inv Expanded Key+Nb*i);

}

解密过程中的逆轮变换定义为:

Inv Round (State, Inv Round Key)

{

Inv Shift Row (State);

Inv Byte Sub (State);

Add Round Key (State, Inv Round Key)

Inv Mix Column (State);

}

解密过程中的最后一轮逆轮变换差异:

Inv Final Round (State, Inv Round Key)

{

Inv Shift Row (State);

Inv Byte Sub (State);

Add Round Key (State, Inv Round Key);

}

(1)Inv Byte Sub变换

逆字节代替变换Inv Byte Sub是Byte Sub的逆变换,是应用Byte Sub中表的逆表字节代替,这通过先用仿射变换的逆变换作用,再在GF(28)中取乘法逆得到。同样通过建立并查找逆S-盒实现。

(2)Inv Mix Column变换

逆列混合变换Inv Mix Column是Mix Column的逆变换,是将状态阵列的每一列视为系数在GF(28)上、次数小于4的多项式,被同一个固定的多项式d(x)进行模x4+1乘法。当然要求d(x)是模X4+1可逆的多项式,d(x)由下式定义:

(03x3+01x2+01x+02)=1(2-1)

由此得出:

d(x)的系数为(Ob,Od,09,Oe)与加密过程c(x)系数(03, 01, 01, 02)比较,解密的过程就需要花费较多的资源。

(3)Add Round Key

在解密过程中,Add Round Key变换是自身的逆。

三、传递信息安全

Rijndael密码设计者提出的Square攻击,其主要思想是利用第四轮字节替换前后平衡性的改变来猜测密钥字节,对128bit密钥下4到6轮简化算法有效。在这里我们简要讨论算法对现有的各种密码攻击手段的抗攻击能力。

1.强力攻击

对于高级加密标准所采用的该算法,分组长度为128bit,密钥长度为128bit、192bit和256bit,要想对其进行强力攻击,则必须要处理2128个可能密钥,即便是每秒钟能够处理个256密钥的搜索,而要完成AES的密钥搜索,最少需要的时间大约是149万亿年,这在时间和空间上都是不可行的。因此,从现在到将来一段时间里,该算法对强力攻击是免疫的。

2.渗透攻击(Square)

Square攻击利用了Square算法基于字节的结构,而该算法继承了Square算法面向字节结构的特点,因此Square攻击也同样适用于该算法。

上一篇:走出色带选购的两大误区 下一篇:认识不同类型的UPS系统