AES针对Intel新指令优化

 

AES针对Intel新指令优化

一、    问题描述

AES算法是国际上通行的对称密钥加密解密算法。与一般算法相比,该算法包含了大量的位操作,导致传统高级语言在进行加密解密计算过程中的效率非常低。Intel公司在2010年推出的所有基于32nm工艺的Core处理器上增加了对AES算法的特殊指令支持。

二、    AES介绍

2.1 AES简介

AES, Advanced Encryption Standard,即高级加密标准。它是美国国家标准与技术研究院(NIST)于2001年11月26日发布于FIPS PUB 197,并在2002年5月26日成为有效的标准。2006年,高级加密标准已然成为对称密钥加密中最流行的算法之一。 AES模式有:ECB、CBC、CFB、OFB、CTR等多种模式。

AES是美国国家标准技术研究所NIST旨在取代DES的21世纪的加密标准。   AES的基本要求是,采用对称分组密码体制,密钥长度的最少支持为128、192、256,分组长度128位,算法应易于各种硬件和软件实现。1998年NIST开始AES第一轮分析、测试和征集,共产生了15个候选算法。1999年3月完成了第二轮AES2的分析、测试。2000年10月2日美国政府正式宣布选中比利时密码学家Joan Daemen 和 Vincent Rijmen 提出的一种密码算法RIJNDAEL 作为 AES。

在应用方面,尽管DES在安全上是脆弱的,但由于快速DES芯片的大量生产,使得DES仍能暂时继续使用,为提高安全强度,通常使用独立密钥的三级DES。但是DES迟早要被AES代替。流密码体制较之分组密码在理论上成熟且安全,但未被列入下一代加密标准。AES加密数据块和密钥长度可以是128比特、192比特、256比特中的任意一个。AES加密有很多轮的重复和变换。

算法步骤如下:

begin

    KeyExpansion();         //对密钥进行扩展

    AddRoundKey();         

    for 1 to N

       SubBytes();     //

       ShiftRows();

       MixColumns();

       AddRoundKey();

    end for;

    SubBytes();

    ShiftRows();

    AddRoundKey();

end begin;

1、AddRoundKey — 矩阵中的每一个字节都与该次回合金钥(round key)做XOR计算;每个子密钥由密钥生成方案产生。

2、SubBytes — 通过一个非线性的替换函数,用查找表的方式把每个字节替换成对应的字节。

3、ShiftRows — 将矩阵中的每个横列进行循环式移位。

4、MixColumns — 为了充分混合矩阵中各个直行的操作。这个步骤使用线性转换来混合每内联的四个字节。

2.2 ECB模式算法步骤

  AES针对Intel新指令优化_第1张图片

2.3 CBC模式算法步骤

 

AES针对Intel新指令优化_第2张图片

三、    Intel新指令简介

由于AES是当今世界最流行的加密算法之一,而且使用相当平凡,所以,intel公司专门针对此算法设计了一些优化算法计算的方法,并提供以下六个指令来提高AES算法的运行速度:

1、              AESENC和AESENCLAST指令

 AES针对Intel新指令优化_第3张图片

 

2、              AESDEC和AESDECLAST指令

 

AES针对Intel新指令优化_第4张图片

3、              AESIMC指令

 

AESIMC指令是在解密的准备阶段使用的,即反转那金钥;

4、              AESKEYGENSSIST指令

 

AES针对Intel新指令优化_第5张图片

四、    性能测试

4.1 测试平台

处理器

Intel(R) Core(TM) i7 CPU 990

核数

8

主频

3.46GHZ

一级缓存

6×64K

二级缓存

6×256K

三级缓存

12M

内存

24 GB

操作系统

Ubuntu 10.04

编译器

g++  4.3.4

 

4.2 测试结果

表 4-1 新指令优化测试结果

 

Encrypt time(s)

Decrypt time(s)

Test file size(KB)

ECB

0.001918

0.001869

31.3

CBC

0.002062

0.001973

31.3

 

表 4-2 没用新指令的AES算法测试结果

 

Encrypt time(s)

Decrypt time(s)

Test file size(KB)

ECB

0.002954

0.002822

31.3

CBC

0.003217

0.003107

31.3

 

表 4-3 使用Intel新指令优化前后的加速比

 

加密加速比

解密加速比

ECB

1.54

1.51

CBC

1.56

1.57

 

五、         总结

从测试结果来看,通过Intel的AES-NI指令集加速以后,AES对称加密算法的ECB模式和CBC模式的加解密速度都能提升1.5~1.6倍。

所以,从单次的加解密任务来看,AES-NI指令集为用户节省了一半的时间,也节省了一半的耗电;从全球来看,Intel公司为全球的用户节省了大量的时间,并为计算机的省电工作做了一个很大的贡献。

你可能感兴趣的:(AES针对Intel新指令优化)