基于多核的Rijndael算法的并行优化与实现
2012-05-04钱晓捷师攀攀王建辉
钱晓捷,师攀攀,王建辉
(郑州大学 信息工程学院,河南 郑州450001)
0 引 言
IBM公司在1977年研制的一种加密算法,被美国国家标准局(NIST)公布并批准为非机要部门使用的数据加密标准(data encryption standard,DES)。然而,传统的数据加密标准DES已经不能满足现有的安全需求,从1997年起,NIST通过发布公告来公开征集新的加密标准,即高级加密标准(advanced encryption standard,AES),以取代DES。通过对各候选算法的多轮筛选,NIST于2000年10月2日正式宣布Rijndael算法为新的高级加密标准[1],并且未对Rijndael算法做任何修改。
多核处理器以其高性能、低功耗优势正逐步取代传统的单核处理器成为市场的主流[2],然而,在计算机安全领域,多核处理器的应用刚刚开始,利用多核多线程技术对加密算法进行并行优化研究,对于提高网络通信速度、强化计算机网络安全有着重要的理论意义和实际价值。通过对Rijndael算法的轮变换进行分析,分别采用基于数据分解和数据流分解两种方式对Rijndael算法进行并行化改造,充分利用硬件资源,通过多核多线程技术,将串行加密程序轮变换环节并行化实现,从而提高Rijndael算法的执行效率。
1 Rijndael算法描述
AES的分组长度为128比特,密钥长度有3种:128比特、192比特、256比特;Rijndael算法的分组长度和密钥长度都是可变的,可以分别独立地设为128比特、192比特、256比特[3-4]。
1.1 Rijndael算法的结构
Rijndael算法是一个分组迭代密码算法,其加密和解密的所有操作都在被称为状态(state)的中间结果上进行,状态可以用图1所示的矩阵阵列图来表示,该图的元素为字节[5]。该阵列的行数为4,列数为Nb,而Nb的大小由分组长度决定,等于分组长度除以除以32。……
