CN101520966A - 并行运算模式中优化高级加密标准加解密的方法和装置 - Google Patents
并行运算模式中优化高级加密标准加解密的方法和装置 Download PDFInfo
- Publication number
- CN101520966A CN101520966A CN200910008397A CN200910008397A CN101520966A CN 101520966 A CN101520966 A CN 101520966A CN 200910008397 A CN200910008397 A CN 200910008397A CN 200910008397 A CN200910008397 A CN 200910008397A CN 101520966 A CN101520966 A CN 101520966A
- Authority
- CN
- China
- Prior art keywords
- aes
- samsara
- piece
- instruction
- register
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims description 19
- 238000003860 storage Methods 0.000 claims description 22
- 230000003442 weekly effect Effects 0.000 claims 1
- 238000006243 chemical reaction Methods 0.000 description 11
- 238000012545 processing Methods 0.000 description 11
- 238000004422 calculation algorithm Methods 0.000 description 10
- 238000004364 calculation method Methods 0.000 description 7
- 238000010586 diagram Methods 0.000 description 6
- 230000008569 process Effects 0.000 description 5
- 230000006870 function Effects 0.000 description 3
- 238000004891 communication Methods 0.000 description 2
- 238000009795 derivation Methods 0.000 description 2
- 230000002441 reversible effect Effects 0.000 description 2
- 238000006467 substitution reaction Methods 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000006073 displacement reaction Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000003455 independent Effects 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 230000014759 maintenance of location Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000000737 periodic effect Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
- H04L9/0618—Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
- H04L9/0631—Substitution permutation network [SPN], i.e. cipher composed of a number of stages or rounds each involving linear and nonlinear transformations, e.g. AES algorithms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/12—Details relating to cryptographic hardware or logic circuitry
- H04L2209/125—Parallelization or pipelining, e.g. for accelerating processing of cryptographic operations
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Storage Device Security (AREA)
Abstract
在具有流水线化执行单元的系统中增加加密/解密运算的吞吐量。可通过在每个周期分派AES轮回指令并行地执行不同数据块的不同独立的加密(解密)。
Description
领域
本公开涉及高级加密标准(AES),尤其涉及优化AES加密/解密。
背景
密码学是一种依赖于算法和密钥来保护信息的工具。算法是复杂的数学算法,而密钥是一串位。有两种基本类型的密码学系统:私钥系统和公钥系统。也被称为对称系统的私钥系统具有由两方或更多方共享的单个密钥(“私钥”)。单个密钥用于加密和解密信息。
由国家标准技术研究所(NIST)公布作为联邦信息处理标准(FIPS)197的高级加密标准(AES)是私钥系统。AES是可加密和解密信息的对称块密码。
加密(密码)利用私钥(密码密钥)执行一系列的变换以将称为“明文”的可理解数据变换成称为“密文”的不可理解形式。密码中的变换可包括:(1)利用异或(XOR)运算将轮回(round)密钥(从密码密钥导出的值)加至状态(字节的二维阵列);(2)利用非线性字节替换表(S-Box)处理状态;(3)以不同的偏移循环地移位状态的最后三行;以及(4)取出状态的所有列并混合它们的数据(相互独立地)以产生新的列。
解密(逆向译码)利用密码密钥执行一系列变换以将“密文”块变换成相同大小的“明文”块。逆向译码中的变换是密码中的逆向变换。
在AES标准中指定Rijindael算法来利用长度是128位、192位和256位的密码密钥处理128位数据块。通常可将不同的密钥长度称为AES-128、AES-192和AES-256。
AES算法在10、12或14个连续轮回中将明文变换成密文或将密文变换成明文,且轮回的数量取决于密钥的长度。
附图简述
在参照附图进行以下的详细描述时所要求保护的主题的实施例的特征将变得显而易见,其中相似的附图标记描述相似的部件,附图中:
图1是包括在通用处理器中执行AES加密和解密的指令的系统的框图;
图2是图1所示的处理器的实施例的框图;
图3是示出根据本发明的原理通过对不同的数据块并行地执行独立运算来提高AES加密/解密运算的吞吐量的方法的实施例的流程图;以及
图4示出每个周期分派一个AES轮回指令的示例。
尽管以下的详细描述将参照所要求保护主题的说明性实施例进行,但它的很多替换、修改和变化对本领域的技术人员是显而易见的。因此,旨在广泛地理解所要求保护的主题,并且仅按照所附权利要求中阐述地限定所要求保护的主题。
详细描述
高级加密标准(AES)算法是通常在软件或专用处理器中执行的计算密集算法。AES算法在软件中通过执行存储在存储器中的加载/存储/递增中央处理单元(CPU)指令序列来执行。该变换很慢,因为AES算法消耗很多CPU周期来变换明文或密文的每个字节。因此,加密一般仅用于加密计算机中存储的信息的子集,例如,可被归类为“绝密”的信息。然而,需要加密更多存储在计算机上的信息。例如,如果加密存储在移动计算机中的所有信息,则在移动计算机丢失的情况下可保护该信息。
AES是对128位块运算的块密码,且密钥大小是128、192或256位。AES算法在10、12或14连续轮回中将128位明文块变换成128位密文块(加密),或将128位密文块变换成128位明文块(解密),且轮回的数量取决于密钥的大小(128、192或256位)。对于每个轮回(10、12或14)重复一运算序列。加密轮回的运算序列包括:(1)利用异或(XOR)运算将轮回密钥(从密码密钥导出的值)加至状态(字节的二维128位阵列);(2)利用非线性字节替换表(S-Box)处理状态;(3)以不同的偏移循环地移位状态的最后三行;以及(4)取出状态的所有列并混合它们的数据(相互独立地)以产生新的列。
块密码可使用多种运算模式之一。运算模式包括向任何长度的消息提供保密性的电子密码本(ECB)、密码块链(CBC)、输出反馈(OFB)、计数和密码反馈(CFB)。诸如用密码块链-消息认证码(CCM)的计数、伽罗瓦计数模式(GCM)和偏移密码本模式(OCB)的其它运算模式确保保密性和消息完整性。
在ECB模式中,将待加密的明文分成n位块,且分别加密每个块,即独立于其它块加密各块。在CBC模式中,一次处理n位明文,并将链接机制用于加密明文块,且明文块的加密取决于前一块的加密。例如,可如以下的表1所示地描述用于加密运算的CBC运算模式:
C-1=初始化向量(IV),
Cj=AES_ENCRYPT(PjXOR Cj-1)对于j=1,2,...,加密的块数(NB).
其中:
Cj是密文块数j,以及
Pj是明文块(输入)数j。
表1
在CBC运算模式中,在计算Cj-1之前不能计算Cj,因此CBC运算模式是串行模式。
并行运算模式是其中一个块的加密/解密与其它块的加密/解密结果无关的运算模式。例如,ECB和计数运算模式是并行运算模式。以下在表2中示出利用ECB模式的AES加密运算的伪代码的示例,并在表3中示出利用计数运算模式的AES加密运算的伪代码的示例:
forj 从1到待加密的块数(NB)
TargetBuffer[j]=AES_ENCRYPT_PROCEDURE
(DataBlock[j],cipher_key)
End 循环
其中:
DataBlock //具有保持待加密数据的NB个128位的条目的缓
冲器
TargetBuffer//具有NB个128位的条目的缓冲器以存储加密结
果(可与DataBlock相同)
表2
初始化COUNTER(随机初始化向量(IV))
forj从1到待加密的块数(NB)
Tmp1=AES_ENCRYPT_PROCEDURE(COUNTER,
cipher_key)
TargetBuffer[j]=XOR(Tmp1,DataBlock[j])
End 循环
其中:
DataBlock //具有保持待加密数据的NB个128位的条目的缓
冲器
TargetBuffer//具有NB个128位的条目的缓冲器以存储加密结
果(可与DataBlock相同)
表3
表2和表3中的加密运算(AES_ENCRYPT_PROCEDURE)可在指令集扩展中执行,用于在通用处理器中执行AES加密和解密。单个AES加密运算包括可经由串行AES指令序列实施的串行运算序列。以下在表4中示出执行多个128位数据块的加密的指令序列的示例。
for(i=1;i<NB;i++)
temp=Load(DataBlock[i])
temp=xor(temp,RK[0]);//轮回0
for(j=1;j<10;j++)//对于10次AES轮回
temp=AESENC(temp,RK[j]);
temp=AESENCLAST(temp,RK[10]);
将temp存储到TargetBuffer[i]
其中:
NB是待加密的块数;
IV是用于初始化计数器的随机数;
DataBlock是存储待加密数据的缓冲器;
TargetBuffer是存储加密结果的缓冲器;
RK是存储轮回密钥的缓冲器;
temp是一128位变量
表4
表4中示出的AES指令(AESENC,AESENCLAST)串行地处理存储在128位变量(temp)(也称为状态)中的数据,如AES规范(FIPS出版197)所定义的。以下在表5中示出用于处理数据的串行运算序列的示例。
For i从1到N_BLOCKS do
Xmm1=BLOCK[i]//加载
Xmm1=AESENC(Xmm1,RK[1])
Xmm1=AESENC(Xmm1,RK[2])
Xmm1=AESENC(Xmm1,RK[3])
...
Xmm1=AESENC(Xmm1,RK[9])
Xmm1=AESENCLAST(Xmm1,RK[10])
存储Xmm1
End
表5
对于待加密的N_Block中的每一个,数据块被存储在寄存器中,例如具有128位的Xmm寄存器(Xmm1)可用于存储128位块。对数据块串行执行10次加密轮回。对于10次轮回AES运算的轮回1至9,调用AESENC指令以利用轮回密钥和前一轮回或初始块数据(在轮回1时)来执行轮回运算。调用AESENCLAST来处理最后的轮回(在该示例中为轮回10)。
如果AES轮回指令(AESENC,AESENCLAST)的等待时间由L个处理器周期(周期)表示。忽略加载、存储和其它额外开销的周期,如果以表5所示的顺序处理,表5的示例所示的10次AES轮回的N_BLOCKS的处理消耗约N_BLOCKS*10*L周期。清楚地,执行N_Blocks的加密/解密的总等待时间取决于各个AES指令(AESENC,AESENCLAST)的等待时间。
在本发明的实施例中,根据本发明的原理,通过并行加密(解密)多个数据块,AES轮回指令(L)的等待时间效应被减少,致使执行AES加密/解密运算所需的总等待时间减少。在并行运算模式中,可通过在每一个周期分派AES轮回指令来并行执行不同数据块的不同独立加密(解密),而无需等待前一指令完成。
图1是包括在通用处理器中执行AES加密和解密的指令的系统100的框图。系统100包括处理器101、存储器控制器集线器(MCH)或(图形存储器控制器集线器(GMCH))102和输入/输出(I/O)控制器集线器(ICH)104。MCH 102包括控制处理器101和存储器108之间的通信的存储器控制器106。处理器101和MCH 102通过系统总线116通信。
处理器101可以是诸如单核 Pentium 处理器、单核Intel Celeron处理器、 XScale处理器或诸如 Pentium D、处理器或 Duo处理器之类的多核处理器或任何其它类型的处理器等多个处理器中的任一个。
存储器108可以是动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)、同步动态随机存取存储器(SDRAM)、双数据率2(DDR2)RAM或Rambus动态随机存取存储器(RDRAM)或任何其它类型的存储器。
ICH 104可利用诸如直接媒体接口(DMI)之类的高速芯片至芯片互连114耦合到MCH 102。DMI支持经由两个单向线路的2千兆位/秒的并发传输速率。
ICH 104可包括用于控制耦合至ICH 104的至少一个存储设备112的通信存储I/O控制器110。存储设备可以是例如盘驱动器、数字视频盘(DVD)驱动器、紧致盘(CD)驱动器、独立盘冗余阵列(RAID)、磁带驱动器或其它存储设备。ICH 104可通过存储协议互连118利用诸如串行连接小型计算机系统接口(SAS)或串行高级技术附件(SATA)的串行存储协议与存储设备112通信。
处理器101包括执行AES加密和解密运算的AES函数103。AES函数103可用于加密或解密可存储在存储器108和/或存储在存储设备112中的信息。
图2是图1所示的处理器101的实施例的框图。处理器101包括用于解码从1级(L1)指令高速缓存202接收的处理器指令的取出(fetch)和解码单元206。用于执行处理器指令的数据可被存储在寄存器堆(register file)208中。在一个实施例中,寄存器堆208包括多个128位寄存器,它们被AES轮回指令用于存储由AES轮回指令所使用的数据。
在一个实施例中,寄存器堆208是一组与设置在Intel Pentium MMX处理器中的具有(单指令多数据(SIMD))流送扩展(SSE)指令集的128位MMX寄存器类似的128位寄存器。在SIMD处理器中,通过一次加载一个128位块来分128位块地处理数据。
取出和解码单元206从L1指令高速缓存202取出宏指令,解码宏指令并将其分成可存储在微码只读存储器(ROM)214中的称为微运算(μops)的简单运算。流水线化的执行单元210编排并执行微运算。在所示的实施例中,执行单元210中的AES函数103包括对AES轮回指令集的微运算。AES指令是完全流水线化的使得处理器(CPU)可在每个周期分派指令,如果有数据准备好要处理的话。退役单元212将所执行的指令的结果写入寄存器或存储器。AES轮回指令所使用的轮回密钥216可被存储在L1数据高速缓存204中并加载到执行单元210,由微运算用其执行AES轮回指令中的任一个。在L1数据高速缓存204中存储轮回密钥216保护轮回密钥216免受侧面信道攻击,例如尝试获取轮回密钥以便获得存储在系统100中的加密信息。
在AES轮回指令已经被取出和解码单元206解码之后,由执行单元210执行AES轮回指令包括执行与可存储在微码ROM 214中的AES轮回指令相关联的微运算。
在一实施例中,提供AES指令集,其包括用于执行加密轮回、解密轮回、加密最后轮回和解密最后轮回的单独AES轮回指令。在实施例中,每个AES轮回指令具有唯一的运算码(opcode)。以下在表6中示出关于固定宽度轮回密钥(例如128位)的一个实施例的AES指令集中的AES轮回指令。
AESENC xmmsrcdst xmm
输入:数据(=目的地),轮回密钥
输出:在利用轮回密钥通过AES轮回的变换之后的数据
AESENCLASTxmmsrcdst xmm
输入:数据(=目的地),轮回密钥
输出:在利用轮回密钥通过AES最后轮回的变换之后的数据
AESDEC xmmsrcdst xmm
输入:数据(=目的地),轮回密钥
输出:在利用轮回密钥通过AES轮回的变换之后的数据
AESDECLAST xmmsrcdst xmm
输入:数据(=目的地),轮回密钥
输出:在利用轮回密钥通过AES最后轮回的变换之后的数据
表6
AES指令集包括四个AES轮回指令(加密、解密、加密最后轮回、解密最后轮回)。AES指令集中的AES轮回指令包括单个轮回运算以执行将用于除最后轮回以外的所有轮回的加密和解密轮回运算。例如,在表6中的AESENC单轮回指令中,输入数据被存储在128位寄存器(xmmsrcdst)中且轮回密钥被存储在另一个128位寄存器(Xmm)中。该指令对存储在128位xmmsrcdst寄存器中的输入数据(源)执行AES轮回运算并用轮回运算的执行结果重写存储在128位xmmsrcdst寄存器中的输入数据。因此xmmsrcdst首先存储输入数据,稍后存储AES轮回运算的结果。
密钥的大小可以是128位、192位或256位。将执行的轮回数可以是1、10、12或14,这取决于密钥的大小,且每个轮回密钥是固定大小的(128位)。利用值为10、12、14的多个轮回,AES微运算可针对128位、192位或256位的密钥大小执行标准AES加密和解密。
当将相同的密钥用于很多块时,可将用于每个轮回的轮回密钥(密钥编排)预先计算并存储在存储器(例如轮回密钥216存储在1级数据高速缓存204中)中。轮回密钥216可包括具有10个元素的阵列(RK)以存储用于该密钥的密钥编排。用于AES-128加密的输入密钥被存储在RK[0]中,且预先计算9个轮回密钥RK[0]-RK[1]。
AES指令集还包括用于最后解密轮回的AES解密指令和用于最后加密轮回的AES加密指令。例如,在表1中的AESENCLAST单轮回指令中,输入数据被存储在128位寄存器(xmmsrcdst)中,且轮回密钥被存储在另一个128位寄存器(Xmm)中。该指令对存储在xmmsrcdst寄存器中的输入数据(源)执行AES轮回运算,并用轮回运算的执行结果重写存储在xmmsrcdst寄存器中的输入数据。因而,xmmsrcdst首先存储输入数据,稍后存储AES轮回运算的结果。Xmm寄存器存储用于轮回运算的轮回密钥。
在一个实施例中,寄存器堆304具有可由AES指令使用的多个128位寄存器。128位寄存器可存储源运算数、轮回密钥和AES指令的结果。对于第一轮回,AES指令接收可以是待加密的128位明文或待解密的128位密文的源运算数。
图3是示出根据本发明的原理通过在不同的数据块上并行执行独立运算来提高AES加密/解密运算的吞吐量的方法的实施例的流程图。
通过允许数据块的加密/解密流程与另一个数据块的加密/解密流程并行运行以提供数据用于处理并允许在每个周期分派AES轮回指令,提高了AES运算的吞吐量。如果(1)将同一密码密钥用在多个数据块上,即密码编排生成一次,且利用相同的密钥编排处理多个数据块;以及(2)利用单个完全流水线化的AES轮回指令执行AES轮回,则可并行处理数据块。每个周期分派一次AES轮回指令增加了AES加密/解密运算的吞吐量,即使每个AES轮回指令的等待时间大于一个周期。
将描述关于AES-128加密运算的实施例,即关于利用128位数据块和128位密钥的具有10次AES轮回的AES加密运算。
以下表7示出可用于通过对不同的数据块并行执行独立运算使AES加密的吞吐量最大化的软件指令的例子。
For i从0到N_BLOCKS/8-1do
xmm1=BLOCK[8*i+1],xmm2=BLOCK[8*i+2];...xmm8=BLOCK[8*i+8]
xmm1=AESENC(xmm1,RK[1])
xmm2=AESENC(xmm2,RK[1])
xmm3=AESENC(xmm2,RK[1])
...
xmm8=AESENC(xmm8,RK[1])
xmm1=AESENC(xmm1,RK[2])
xmm2=AESENC(xmm2,RK[2])
...
xmm8=AESENC(xmm8,RK[2])
...
xmm1=AESENCLAST(xmm1,RK[10])
xmm2=AESENCLAST(xmm2,RK[10])
...
xmm8=AESENCLAST(xmm8,RK[10])
存储xmm1;存储xmm2;...存储xmm8
End
表7
参照表7,AES轮回指令“AESENC”在每个周期上分派,因为使用各Xmm寄存器的运算独立于使用其它Xmm寄存器的运算。如前面讨论的,这是由于并行运算模式的性质引起的。例如,在ECB模式中,将待加密的明文分成n位块,且分别加密每个块,即独立于其它块加密各块。如果使用的Xmm寄存器的数目(在本示例中为8)被选择成大于或等于指令等待时间(L),即完成该指令的周期数,则可每个周期甚至横跨AES轮回分派AES轮回指令。
在框300,将待加密/解密的多个数据块存储在多个寄存器中(例如,多个128位Xmm寄存器)。在具有128位寄存器的实施例中,由于AES的数据块大小是128位,可将不同的数据块存储在k个128位寄存器的每一个中。为了使性能最大化,用于存储不同他数据块的寄存器的数目取决于AES轮回指令的等待时间。这允许在每个周期分派一个AES轮回指令,使得可并行处理多个不同的数据块。处理继续到框302。
在框302,AES加密/解密运算的轮回0中执行的运算不同于其它轮回中执行的运算。因此,对k个128位寄存器中所存储的k个不同数据块的每一个顺序地执行轮回0中的运算。处理继续到框304。
在框304,向所有其它的轮回(例如,AES-128的轮回1至10)分派相同的AES轮回指令。使用与当前轮回相关联的轮回密钥[RK],在每个周期向k个寄存器中所存储的k个不同的数据块中的每一个分派一个AES指令,用于当前轮回。在已经向k个寄存器中所存储的k个不同的数据块中的每一个分派AES轮回指令之后,处理继续到框306。
在框306,如果有另一个轮回用于AES运算,处理继续到框304以处理下一轮回。如果不是的话处理继续到框308
在框308,如果有其它数据块要针对AES运算进行处理,则处理继续到框300以向k个寄存器加载接下来的数据块。如果不是的话,处理继续到框310以返回AES运算的结果。
图4示出在每个周期调度一个AES循环指令的示例。在图4所示的示例中,寄存器的数目(k)和AES轮回指令等待时间(L)两者都是6。图4示出对于表7所示、并结合图3中的框304讨论的“for”循环之一的AES指令的分派。当k=L=6时对轮回2的“for”循环分派的指令可被清楚地写成如下表8所示。
Xmm1=AESENC(Xmm1,RK[1])
Xmm2=AESENC(Xmm2,RK[1])
Xmm3=AESENC(Xmm3,RK[1])
Xmm4=AESENC(Xmm4,RK[1])
Xmm5=AESENC(Xmm5,RK[1])
Xmm6=AESENC(Xmm6,RK[1])
表8
在该示例中,寄存器是Xmm寄存器堆中的Xmm寄存器,而六个Xmm寄存器(标注为Xmm1-Xmm6)用于存储6个不同的数据块。然而,本发明不限于Xmm寄存器,且可使用能够存储用于AES轮回的128位数据块且可通过AES轮回指令存取的任何寄存器。每一个周期都能够分派一AESENC指令,因为使用Xmm1的运算独立于使用其它Xmm寄存器(Xmm2、...、Xmm6)中的每一个的运算。在理想的编排状况下,该“for”循环的完成需要k+L-1(6+6-1=11)个周期。
参照图3,在其中L和k两者都是6的系统中每个周期分派一AESENC指令。对于每个轮回(除轮回0之外),利用相同的轮回密钥RK,最初的6个指令在6个不同的Xmm寄存器(Xmm1-Xmm6)上运算。例如,在周期1中利用Xmm1和RK[1]分派AESENC指令,而在周期2中利用Xmm2和RK[2]分派AESENC指令。在周期1中分派的AESENC具有6周期等待时间且因此在周期6结束时完成。
在周期7中分派的第七AESENC指令可使用具有轮回密钥RK[2]的存储在Xmm1寄存器中的第七数据块,因为到此时为止,在周期1中利用存储在Xmm1寄存器中的第一数据块和轮回密钥RK[1]分派的AESENC指令已经完成(基于6个周期等待时间)。因此,6个AESENC指令可并行独立地运算,且每一个使用存储在六个Xmm寄存器之一中的不同数据块。因此,使用存储在多个寄存器中的数据块的第二AES轮回在总共11周期之后完成,而不是如在用于两个AES轮回的数据块如前面结合表5所示的示例讨论地串行地处理的情形中地在12周期之后。在每个周期中分派AESENC指令(或AESENCLAST指令),直到用于AES-128运算的全部10个AES轮回完成。
如所讨论的,可并行加密k个数据块,其中根据用于存储数据块的可用寄存器数选择k。如果寄存器数(k)≥AES指令等待时间(L),则可在每个周期甚至“横跨AES轮回”分派AES轮回指令,即用于特定AES轮回的所有AES轮回指令不需要在分派用于下一个AES轮回的AES轮回指令之前完成。
例如,如果第一寄存器用于使用轮回密钥RK[1]处理AES轮回1,则直到经过k个周期之后第一寄存器才能用于使用轮回密钥RK[2]处理AES轮回2。因此,如果k≥L,存在其中AES指令被分派用于AES轮回1的k个周期,且在k+1周期中,第一寄存器可用于存储用轮回密钥RK[2]处理的AES轮回2的数据块。
并行处理k个不同数据块需要用于执行异或(XOR)运算的AES轮回0的k个周期加上用于处理其它NR AES轮回的其它NR*k+L-1周期。因此可根据每k个数据块(NR*k+L-1)周期来估计吞吐量,即约为每数据块NR+(L-1)/k周期。
性能受可用寄存器的数目和AES轮回等待时间限制。轮回密钥(RK)或者可从存储器读取(寄存器-存储器模式)或者可加载到另一个寄存器(寄存器-寄存器模式)。如果在第一次读取之后将轮回密钥存储在第一级高速缓存中,则寄存器至存储器模式可提供较高性能。
不使用AES轮回指令的AES-128的实现消耗约每字节12周期。忽略存储/加载/递增和其它额外开销的等待时间,并假设k=L=8,在串行运算模式中,利用AES轮回指令的AES-128(10次轮回)加密消耗约每128位(16字节)10*L周期,即约5周期/字节。通过并行处理多个不同的数据块,如前面所讨论的,8个块的加密消耗NR*k+L-1,即约每8个块72周期(0.56周期/字节)。因此,对不同数据块并行执行独立运算实现了几乎是在使用如结合表5所讨论的用于处理数据的串行运算序列时的9倍的性能提升。
通过并行执行运算,AES轮回指令的等待时间(L)被“隐藏”,只要寄存器的数目(k)大于或等于L即可。这允许高效率地使用用于AES运算的加密/解密的AES轮回指令,AES运算使用对一个块独立于其它块进行运算的运算模式,例如这种运算模式包括ECB、CCM、GCM和计数的运算模式。
本领域的技术人员将显而易见,本发明的实施例中所涉及的方法可具体体现在包括计算机可用介质的计算机程序产品中。例如,这种计算机可用介质可包括诸如紧致盘只读存储器(CD ROM)盘或常规ROM设备的只读存储设备或具有计算机可读程序代码存储于其上的计算机磁盘。
尽管已经参考本发明的实施例具体示出并描述了本发明的实施例,但本领域的技术人员将理解可在其中进行各种形式和细节的变化,而不背离由所附权利要求书包括的本发明的实施例的范围。
Claims (18)
1.一种方法,包括:
利用对一个块独立于其它块进行运算的运算模式对多个固定大小的块执行高级加密标准(AES)运算,包括:
在k个寄存器中存储所述多个固定大小的块的一组k个连续块,k大于或等于AES轮回指令的等待时间(L),所述AES轮回指令对所述块执行用于AES轮回的AES轮回运算的序列;以及
通过为所述k个块中的每一个每周期分派一个AES轮回指令对所述那组k个连续块并行地执行AES轮回运算的序列。
2.如权利要求1所述的方法,其特征在于,还包括:
在所述k个寄存器之一中存储针对所述k个块中的每一个的所述AES轮回指令的结果。
3.如权利要求1所述的方法,其特征在于,每个块具有128位。
4.如权利要求1所述的方法,其特征在于,所述寄存器是Xmm寄存器。
5.如权利要求1所述的方法,其特征在于,所述AES轮回指令是流水线化的。
6.如权利要求1所述的方法,其特征在于,所述运算模式是电子密码本(ECB)、计数、密码块链-消息认证码(CCM)或伽罗瓦计数模式(GCM)。
7.一种装置,包括:
寄存器堆,用于在k个寄存器中存储多个固定大小的块的一组k个连续块,k大于或等于AES轮回指令的等待时间(L),所述AES轮回指令对所述块执行用于轮回的AES轮回运算序列;以及
执行单元,用于利用对一个块独立于其它块进行运算的运算模式对多个固定大小的块执行高级加密标准(AES)运算,所述执行单元通过在每个周期对所述k个块中的每一个分派一个AES轮回指令来对所述那组k个连续块并行地执行AES轮回运算序列。
8.如权利要求7所述的装置,其特征在于,所述执行单元在所述k个寄存器之一中存储针对所述k个块中的每一个的所述AES轮回指令的结果。
9.如权利要求7所述的装置,其特征在于,每个块具有128位。
10.如权利要求7所述的装置,其特征在于,所述寄存器是Xmm寄存器。
11.如权利要求7所述的装置,其特征在于,所述AES轮回指令是流水线化的。
12.如权利要求7所述的装置,其特征在于,所述运算模式是电子密码本(ECB)、计数、密码块链消息认证码(CCM)或伽罗瓦计数模式(GCM)。
13.一种包括含相关联信息的机器可访问介质的制品,其中所述信息在被访问时致使机器执行:
利用对一个块独立于其它块进行运算的运算模式对多个固定大小的块执行高级加密标准(AES)运算,包括:
在k个寄存器中存储所述多个固定大小的块的一组k个连续块,k大于或等于AES轮回指令的等待时间(L),所述AES轮回指令对所述块执行用于AES轮回的AES轮回运算序列;以及
通过在每个周期向所述k个块中的每一个分派一个AES轮回指令对所述那组k个连续块并行地执行AES轮回运算序列。
14.如权利要求13所述的制品,其特征在于,还包括:
在所述k个寄存器之一中存储针对所述k个块中的每一个的AES轮回指令的结果。
15.如权利要求13所述的制品,其特征在于,每个块具有128位。
16.如权利要求13所述的制品,其特征在于,所述寄存器是Xmm寄存器。
17.如权利要求13所述的制品,其特征在于,所述AES轮回指令是流水线化的。
18.如权利要求13所述的制品,其特征在于,所述运算模式是电子密码本(ECB)、计数、密码块链消息认证码(CCM)或伽罗瓦计数模式(GCM)。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/038,071 | 2008-02-27 | ||
US12/038,071 US8194854B2 (en) | 2008-02-27 | 2008-02-27 | Method and apparatus for optimizing advanced encryption standard (AES) encryption and decryption in parallel modes of operation |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101520966A true CN101520966A (zh) | 2009-09-02 |
CN101520966B CN101520966B (zh) | 2013-06-12 |
Family
ID=40765607
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2009100083978A Expired - Fee Related CN101520966B (zh) | 2008-02-27 | 2009-02-27 | 并行运算模式中优化高级加密标准加解密的方法和装置 |
Country Status (5)
Country | Link |
---|---|
US (2) | US8194854B2 (zh) |
EP (1) | EP2096787B1 (zh) |
JP (1) | JP5020987B2 (zh) |
KR (1) | KR101068367B1 (zh) |
CN (1) | CN101520966B (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105743636A (zh) * | 2014-12-11 | 2016-07-06 | 上海华虹集成电路有限责任公司 | 实现密码算法的方法 |
CN106470105A (zh) * | 2015-08-19 | 2017-03-01 | 阿尔特拉公司 | 用于多端口到多端口密码术的系统和方法 |
CN109687954A (zh) * | 2018-12-25 | 2019-04-26 | 贵州华芯通半导体技术有限公司 | 用于算法加速的方法和装置 |
CN110336658A (zh) * | 2019-07-01 | 2019-10-15 | 武汉能钠智能装备技术股份有限公司 | 基于aes算法的加密方法、用户设备、存储介质及装置 |
CN113282947A (zh) * | 2021-07-21 | 2021-08-20 | 杭州安恒信息技术股份有限公司 | 一种基于sm4算法的数据加密方法、装置及计算机平台 |
CN116186747A (zh) * | 2023-04-27 | 2023-05-30 | 暗链科技(深圳)有限公司 | 自适应哈希加密方法、非易失性可读存储介质及电子设备 |
Families Citing this family (41)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9582795B2 (en) | 2002-02-05 | 2017-02-28 | Square, Inc. | Methods of transmitting information from efficient encryption card readers to mobile devices |
US9916581B2 (en) * | 2002-02-05 | 2018-03-13 | Square, Inc. | Back end of payment system associated with financial transactions using card readers coupled to mobile devices |
US8467527B2 (en) * | 2008-12-03 | 2013-06-18 | Intel Corporation | Efficient key derivation for end-to-end network security with traffic visibility |
US8194854B2 (en) | 2008-02-27 | 2012-06-05 | Intel Corporation | Method and apparatus for optimizing advanced encryption standard (AES) encryption and decryption in parallel modes of operation |
US8879725B2 (en) * | 2008-02-29 | 2014-11-04 | Intel Corporation | Combining instructions including an instruction that performs a sequence of transformations to isolate one transformation |
US8634549B2 (en) * | 2008-05-07 | 2014-01-21 | Red Hat, Inc. | Ciphertext key chaining |
US8396209B2 (en) | 2008-05-23 | 2013-03-12 | Red Hat, Inc. | Mechanism for chained output feedback encryption |
JP5500923B2 (ja) * | 2008-11-27 | 2014-05-21 | キヤノン株式会社 | 情報処理装置 |
US20100246815A1 (en) * | 2009-03-31 | 2010-09-30 | Olson Christopher H | Apparatus and method for implementing instruction support for the kasumi cipher algorithm |
US8832464B2 (en) * | 2009-03-31 | 2014-09-09 | Oracle America, Inc. | Processor and method for implementing instruction support for hash algorithms |
US8654970B2 (en) * | 2009-03-31 | 2014-02-18 | Oracle America, Inc. | Apparatus and method for implementing instruction support for the data encryption standard (DES) algorithm |
US9317286B2 (en) * | 2009-03-31 | 2016-04-19 | Oracle America, Inc. | Apparatus and method for implementing instruction support for the camellia cipher algorithm |
US20100250965A1 (en) * | 2009-03-31 | 2010-09-30 | Olson Christopher H | Apparatus and method for implementing instruction support for the advanced encryption standard (aes) algorithm |
US8850204B2 (en) * | 2009-12-23 | 2014-09-30 | Intel Corporation | Multi-band/multi-link secure key generation and delivery protocol |
CN102111263A (zh) * | 2011-02-21 | 2011-06-29 | 山东中孚信息产业股份有限公司 | 一种数据流加密的方法 |
CN102411683B (zh) * | 2011-08-15 | 2014-04-02 | 复旦大学 | 一种适用于嵌入式系统的基于高速缓存的aes加速器 |
US8842824B2 (en) | 2011-11-28 | 2014-09-23 | Nec Corporation | Encryption processing circuit and decryption processing circuit, methods thereof, and programs thereof |
CN102664729B (zh) * | 2012-04-28 | 2014-12-31 | 中山大学 | 一种基于fpga的aes加解密网络通讯装置及其实现方法 |
US9158499B2 (en) * | 2012-04-30 | 2015-10-13 | Freescale Semiconductor, Inc | Cryptographic processing with random number generator checking |
US9176838B2 (en) | 2012-10-19 | 2015-11-03 | Intel Corporation | Encrypted data inspection in a network environment |
US9264222B2 (en) * | 2013-02-28 | 2016-02-16 | Apple Inc. | Precomputing internal AES states in counter mode to protect keys used in AES computations |
US9361106B2 (en) * | 2013-12-27 | 2016-06-07 | Intel Corporation | SMS4 acceleration processors, methods, systems, and instructions |
US9513913B2 (en) | 2014-07-22 | 2016-12-06 | Intel Corporation | SM4 acceleration processors, methods, systems, and instructions |
US9515818B2 (en) | 2014-09-16 | 2016-12-06 | Apple Inc. | Multi-block cryptographic operation |
US9467279B2 (en) * | 2014-09-26 | 2016-10-11 | Intel Corporation | Instructions and logic to provide SIMD SM4 cryptographic block cipher functionality |
CN104284208B (zh) * | 2014-10-23 | 2017-11-10 | 航天数字传媒有限公司 | 通过aes‑cbc算法进行并行加密的方法及系统 |
US9779262B2 (en) * | 2015-04-20 | 2017-10-03 | Qualcomm Incorporated | Apparatus and method to decrypt file segments in parallel |
AU2016250523A1 (en) * | 2015-04-20 | 2017-11-30 | Microsemi Corp. - Security Solutions | High-speed AES with transformed keys |
US9773432B2 (en) | 2015-06-27 | 2017-09-26 | Intel Corporation | Lightweight cryptographic engine |
CN105356996B (zh) * | 2015-12-14 | 2018-11-09 | 联想(北京)有限公司 | 一种密文处理方法、电子设备及密文处理装置 |
CN107679409B (zh) * | 2017-09-29 | 2021-02-23 | 深圳大学 | 一种数据加密的加速方法和系统 |
CN108616351B (zh) * | 2018-03-26 | 2020-09-18 | 山东大学 | 一种全动态加密解密方法及加密解密装置 |
CN109600217A (zh) * | 2019-01-18 | 2019-04-09 | 江苏实达迪美数据处理有限公司 | 在并行操作模式中优化sm4加密和解密的方法及处理器 |
KR102685405B1 (ko) | 2019-07-09 | 2024-07-18 | 삼성디스플레이 주식회사 | 표시 장치 및 그 구동 방법 |
US10972256B2 (en) * | 2019-07-18 | 2021-04-06 | Ante Deng | Architectural secure system for digital file in cyberspace |
CN111324383B (zh) * | 2020-02-28 | 2022-05-10 | 西安微电子技术研究所 | 一种基于risc-v指令扩展的安全协处理器结构 |
KR20210116834A (ko) | 2020-03-17 | 2021-09-28 | 삼성디스플레이 주식회사 | 표시 장치 및 그 구동 방법 |
US11296876B1 (en) | 2020-09-11 | 2022-04-05 | Rockwell Collins, Inc. | Parallel cross-domain guard engines with sequential cryptographic controls |
IT202100016910A1 (it) * | 2021-06-28 | 2022-12-28 | St Microelectronics Srl | Procedimento per eseguire operazioni di crittografia in un dispositivo di elaborazione, corrispondenti dispositivo di elaborazione e prodotto informatico |
CN114495474B (zh) * | 2022-02-16 | 2022-11-22 | 青岛克莱玛物联技术有限公司 | 一种无线遥控装置 |
US20230353356A1 (en) * | 2022-04-29 | 2023-11-02 | Western Digital Technologies, Inc. | Low latency block cipher in memory devices |
Family Cites Families (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3864675B2 (ja) * | 2000-03-09 | 2007-01-10 | 株式会社日立製作所 | 共通鍵暗号装置 |
KR20020087331A (ko) * | 2001-05-14 | 2002-11-22 | 최병윤 | 부분 라운드간 파이프라인 기법을 이용한 AES Rijndael암호 및 복호 회로 |
US7289524B2 (en) | 2001-10-04 | 2007-10-30 | Bbn Technologies Corp. | Execution unit for a network processor |
US20040202317A1 (en) * | 2002-12-20 | 2004-10-14 | Victor Demjanenko | Advanced encryption standard (AES) implementation as an instruction set extension |
JP2006527865A (ja) * | 2003-06-16 | 2006-12-07 | エレクトロニクス アンド テレコミュニケーションズ リサーチ インスチチュート | ラインドールブロック暗号化装置、及びその暗号化並びに復号化方法 |
US7697681B2 (en) * | 2004-02-06 | 2010-04-13 | Nortel Networks Limited | Parallelizable integrity-aware encryption technique |
US20060023875A1 (en) * | 2004-07-30 | 2006-02-02 | Graunke Gary L | Enhanced stream cipher combining function |
EP1865481A1 (en) | 2005-03-31 | 2007-12-12 | Matsushita Electric Industrial Co., Ltd. | Data encryption device and data encryption method |
JP4890976B2 (ja) * | 2005-08-31 | 2012-03-07 | キヤノン株式会社 | 暗号処理装置 |
EP1955473A1 (en) | 2005-11-23 | 2008-08-13 | Koninklijke Philips Electronics N.V. | Mutli-lane high-speed encryption and decryption |
US8036379B2 (en) * | 2006-03-15 | 2011-10-11 | Microsoft Corporation | Cryptographic processing |
US7428306B2 (en) * | 2006-04-18 | 2008-09-23 | International Business Machines Corporation | Encryption apparatus and method for providing an encrypted file system |
KR100922728B1 (ko) * | 2006-12-05 | 2009-10-22 | 한국전자통신연구원 | Aes 암복호화 장치 및 암복호화 방법 |
US8036377B1 (en) * | 2006-12-12 | 2011-10-11 | Marvell International Ltd. | Method and apparatus of high speed encryption and decryption |
CN101114903B (zh) * | 2007-03-05 | 2011-10-26 | 中兴通讯股份有限公司 | 一种吉比特无源光网络系统中高级加密标准加密装置及其实现方法 |
US7752592B2 (en) * | 2007-10-10 | 2010-07-06 | International Business Machines Corporation | Scheduler design to optimize system performance using configurable acceleration engines |
US8194854B2 (en) | 2008-02-27 | 2012-06-05 | Intel Corporation | Method and apparatus for optimizing advanced encryption standard (AES) encryption and decryption in parallel modes of operation |
-
2008
- 2008-02-27 US US12/038,071 patent/US8194854B2/en not_active Expired - Fee Related
-
2009
- 2009-02-26 JP JP2009043695A patent/JP5020987B2/ja not_active Expired - Fee Related
- 2009-02-27 EP EP09250544.5A patent/EP2096787B1/en not_active Not-in-force
- 2009-02-27 CN CN2009100083978A patent/CN101520966B/zh not_active Expired - Fee Related
- 2009-02-27 KR KR1020090017289A patent/KR101068367B1/ko active IP Right Grant
-
2012
- 2012-05-10 US US13/506,701 patent/US8600049B2/en not_active Expired - Fee Related
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105743636A (zh) * | 2014-12-11 | 2016-07-06 | 上海华虹集成电路有限责任公司 | 实现密码算法的方法 |
CN106470105A (zh) * | 2015-08-19 | 2017-03-01 | 阿尔特拉公司 | 用于多端口到多端口密码术的系统和方法 |
US10489610B2 (en) | 2015-08-19 | 2019-11-26 | Altera Corporation | Systems and methods for multiport to multiport cryptography |
CN106470105B (zh) * | 2015-08-19 | 2019-12-10 | 阿尔特拉公司 | 用于多端口到多端口密码术的系统和方法 |
CN109687954A (zh) * | 2018-12-25 | 2019-04-26 | 贵州华芯通半导体技术有限公司 | 用于算法加速的方法和装置 |
CN110336658A (zh) * | 2019-07-01 | 2019-10-15 | 武汉能钠智能装备技术股份有限公司 | 基于aes算法的加密方法、用户设备、存储介质及装置 |
CN113282947A (zh) * | 2021-07-21 | 2021-08-20 | 杭州安恒信息技术股份有限公司 | 一种基于sm4算法的数据加密方法、装置及计算机平台 |
CN116186747A (zh) * | 2023-04-27 | 2023-05-30 | 暗链科技(深圳)有限公司 | 自适应哈希加密方法、非易失性可读存储介质及电子设备 |
Also Published As
Publication number | Publication date |
---|---|
US20120224687A1 (en) | 2012-09-06 |
KR101068367B1 (ko) | 2011-09-28 |
JP5020987B2 (ja) | 2012-09-05 |
KR20090092735A (ko) | 2009-09-01 |
CN101520966B (zh) | 2013-06-12 |
EP2096787B1 (en) | 2015-09-23 |
US8194854B2 (en) | 2012-06-05 |
JP2009205161A (ja) | 2009-09-10 |
US20090214026A1 (en) | 2009-08-27 |
EP2096787A3 (en) | 2010-12-01 |
EP2096787A2 (en) | 2009-09-02 |
US8600049B2 (en) | 2013-12-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101520966B (zh) | 并行运算模式中优化高级加密标准加解密的方法和装置 | |
JP6592804B2 (ja) | 新暗号規格(aes)向けの柔軟なアーキテクチャおよび命令 | |
CN101520965B (zh) | 包括执行变换序列以隔离一个变换的指令的指令组合 | |
CN101350714B (zh) | 采用混合rijndael s-box的有效高级加密标准数据路径 | |
WO2008083365A1 (en) | Architecture and instruction set for implementing advanced encryption standard (aes) | |
CN109600217A (zh) | 在并行操作模式中优化sm4加密和解密的方法及处理器 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20130612 Termination date: 20190227 |