CN102171646B - 用于执行独立磁盘冗余阵列(raid)操作的方法和装置 - Google Patents

用于执行独立磁盘冗余阵列(raid)操作的方法和装置 Download PDF

Info

Publication number
CN102171646B
CN102171646B CN200980139241.1A CN200980139241A CN102171646B CN 102171646 B CN102171646 B CN 102171646B CN 200980139241 A CN200980139241 A CN 200980139241A CN 102171646 B CN102171646 B CN 102171646B
Authority
CN
China
Prior art keywords
result
bytes
instruction
byte
aes
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.)
Expired - Fee Related
Application number
CN200980139241.1A
Other languages
English (en)
Other versions
CN102171646A (zh
Inventor
S·格伦
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of CN102171646A publication Critical patent/CN102171646A/zh
Application granted granted Critical
Publication of CN102171646B publication Critical patent/CN102171646B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/52Multiplying; Dividing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2211/00Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
    • G06F2211/10Indexing scheme relating to G06F11/10
    • G06F2211/1002Indexing scheme relating to G06F11/1076
    • G06F2211/1009Cache, i.e. caches used in RAID system with parity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2211/00Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
    • G06F2211/10Indexing scheme relating to G06F11/10
    • G06F2211/1002Indexing scheme relating to G06F11/1076
    • G06F2211/1057Parity-multiple bits-RAID6, i.e. RAID 6 implementations
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/12Details relating to cryptographic hardware or logic circuitry
    • H04L2209/125Parallelization or pipelining, e.g. for accelerating processing of cryptographic operations

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Mathematical Optimization (AREA)
  • Mathematical Analysis (AREA)
  • Computational Mathematics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Computing Systems (AREA)
  • Storage Device Security (AREA)
  • Error Detection And Correction (AREA)
  • Detection And Correction Of Errors (AREA)
  • Signal Processing For Digital Recording And Reproducing (AREA)

Abstract

本发明提供了通过采用AES操作来计算RAID6系统的Q校验子的方法和装置。在一个实施例中,使用所述AES操作执行的GF乘法的结果使得提供RAID-6支持,而不需要专用的RAID控制器。

Description

用于执行独立磁盘冗余阵列(RAID)操作的方法和装置
技术领域
本公开涉及独立磁盘冗余阵列(RAID),特别地,涉及6级RAID。
背景技术
出于可靠性、容量或性能的目的,独立磁盘冗余阵列(RAID)将多个物理硬盘驱动器组合成逻辑驱动器。因此,操作系统看到的是单个逻辑驱动器而不是多个物理硬盘驱动器。如本领域技术人员所熟知的,有很多称为RAID级的标准方法用来在RAID系统的这些物理硬盘驱动器上分布数据。
例如,在0级RAID系统中,通过将数据分成多个块并将每个块写入独立的硬盘驱动器来在硬盘驱动器物理阵列上将数据条带化。通过将负载分担到多个硬盘驱动器中,从而提高了输入/输出(I/O)性能。尽管0级RAID提高了I/O性能,但它不提供冗余度,因为只要一个硬盘驱动器发生故障,则所有数据都会丢失。
5级RAID系统通过在至少三个硬盘驱动器上将数据和奇偶校验信息条带化来提供高级冗余度。在发生故障的情况下,将数据条带化与分布式奇偶校验相结合来提供恢复路径。
6级RAID(RAID-6)系统通过允许从两个盘故障中恢复,提供了比5级RAID系统更高级的冗余度。在6级RAID系统中,为数据生成称为P校验子(syndrome)和Q校验子的两个校验子,并将它们存储在RAID系统的硬盘驱动器上。
P校验子是通过计算条带(stripe)(多个数据块(多个条),P校验子块和Q校验子块)中数据的奇偶校验信息而生成的。Q校验子的生成需要伽罗瓦域(Galois Field)乘法,并且如果磁盘驱动器发生故障,则会很复杂。在伽罗瓦域(有限域)GF(28)中的计算通过约简多项式x8+x4+x3+x+1来定义(也就是,11B(16进制表示法))。
在磁盘恢复操作期间执行的恢复数据和/或P和/或Q校验子的重新生成方案,需要伽罗瓦域乘法及逆操作。
例如,在有n个数据磁盘D0、D1、D2、......Dn-1的RAID阵列中(n≤255),需要两个量,即奇偶校验(P)和里德-所罗门码(Q),来从两个磁盘的丢失中恢复。
P和Q的定义是:
P=D0+D1+D2+...+Dn-1
Q=g0·D0+g1·D1+g2·D2+...+gn-1·Dn-1
其中g={02}是伽罗瓦域(有限域)GF(28)中的一个元素,‘+’和‘·’是该域上的操作。
RAID-6系统的计算瓶颈在于Q的计算成本。困难来自于这样的事实:传统处理器(中央处理单元(CPU))对于在伽罗瓦域(有限域)GF(28)中的计算具有很差的性能。因此,典型地,利用基于表查找的算法来增强性能。使用表查找导致固有的缓慢串行处理。
附图说明
通过参考附图,随着以下详细描述的进行,要求保护的主题的实施例的特征将变得显而易见,在附图中,相同的数字指代相同的部分,其中:
图1是说明RAID-6阵列的实施例的框图,其中示出了多个条带,每个条带包括在硬盘阵列上条带化的数据块(条)、P和Q校验子。
图2是包括用于在通用处理器中执行AES加密和解密的指令的系统的框图。
图3是图1中示出的处理器的实施例的框图;
图4是依据本发明的原理进行伽罗瓦域乘法的方法实施例的流程图。
图5A-5C说明了压缩混洗字节(PSHUFB)指令的使用;
图6A-6C是允许在多个16字节数据块上并发地进行伽罗瓦域乘法的代码示例。
尽管将参照要求保护的主题的说明性实施例继续进行以下详细描述,但是其许多替代、修改和变型对本领域技术人员将是显而易见的。因此,意图广泛地看待要求保护的主题,并且要求保护的主题仅如所附权利要求那样进行限定。
具体实施方式
图1是示出RAID-6阵列100的实施例的框图,其中示出多个条带,每个条带包括在硬盘阵列150上条带化的数据块(条)与P和Q校验子。在所示实施例中,RAID阵列100具有五个硬盘150。通过利用块级条带化来向RAID-6阵列写入数据,其中P和Q校验子以轮替(round robin)方式分布在成员硬盘上。诸如分割成块的文件的连续数据可分布在条带(例如,水平条带0)上,其中块之一存储在三个数据盘150上的数据块102、104、106中。在一个实施例中,一个条带中的每个块中有512个字节。
为水平条带0中的数据块102、104、106计算的P和Q校验子存储在条带0中相应的P块130和Q块132中。P和Q校验子块存储在每个条带的不同硬盘150上。
P校验子可通过执行“异或”(XOR)操作来生成。XOR是对两个操作数的逻辑运算,如果其中只有一个操作数具有逻辑值‘1’,则它产生逻辑值‘1’。例如,具有值‘11001010’的第一操作数和具有值‘10000011’的第二操作数的XOR提供具有值‘01001001’的结果。如果存储第一操作数的硬盘驱动器发生故障,则可通过对第二操作数和结果执行XOR操作来恢复第一操作数。
P校验子是利用
Figure BPA00001373103800031
操作在条带上计算的数据(D)的简单奇偶校验。在具有n个数据盘的系统中,P校验子的生成由下式1表示:
P = D 0 ⊕ D 1 ⊕ D 2 . . . . . . ⊕ D n - 1 (式1)
Q校验子的计算需要利用伽罗瓦域多项式(g)进行乘法(·)。以非常高的性能对8位(1字节)伽罗瓦域多项式执行算术运算。多项式是只利用加法、减法、乘法和非负整数指数来组合有限数量的常量和变量的表达式。一个本原多项式是x8+x4+X3+x2+1。对多项式的伽罗瓦域(GF)操作又称为GF(28)算术。在具有n个数据盘的系统中,Q校验子的生成由下式2表示:
Q = g 0 · D 0 ⊕ g 1 · D 1 ⊕ g 2 · D 2 . . . . . . ⊕ g n - 1 · D n - 1 (式2)
在条带基础上执行按字节的伽罗瓦域操作,其中块中的每个字节在计算上独立于其它字节。按字节的伽罗瓦域操作可以适应多达255(28-1)个数据盘。
生成Q校验子的性能可以通过将Q用其赫诺(Horner)形式表示来提高,如下式3表示:
Q = ( ( . . . D n - 1 . . . ) · g ⊕ D 2 ) · g ⊕ D 1 ) · g ⊕ D 0 (式3)
因此,用两种操作来计算Q:
( 1 ) XOR ( ⊕ ) , 以及
(2)乘以g={02}(·)
与如式2所示的计算相比,式3的计算不需要在GF256中的通用乘法。替换地是乘以g{02}。对于单字节,可以通过将值左移一位来实现乘以g={02}。然后对相乘的结果和基于结果中的最高有效位的状态的另一个值进行条件异或(XOR)操作。为了一次并行地计算四个字节,可以通过将该四个字节中存储的值左移一位来执行乘以{02},然后进行四个条件XOR操作,每个字节一个操作,如下所示:
uint32_t v,vv;
vv=(v<<1)&0xfefefefe;
vv^=((v&0x00000080)?0x0000001d:0)+
((v&0x00008000)?0x00001d00:0)+
((v&0x00800000)?0x001d0000:0)+
((v&0x80000000)?0x1d000000:0);
“&0xfefefefe”是用于避免不期望的进位的掩码。然而,条件XOR操作的效率并不太高。通过并行地对8字节而非4字节进行操作,并且基于在8个字节中的每一个字节中的最高有效位(MSB)使用掩码,则可能缩短计算时间。
RAID-6算法的Q校验子的计算采用与用于高级加密标准(AES)的GF(28)的表示相同的表示,AES由美国国家标准与技术研究院(NIST)公布为联邦信息处理标准(FIPS)197。AES是可以加密和解密信息的对称分组密码。
在一个实施例中,根据本发明的原理,利用GF(28)的AES指令被用来进行伽罗瓦域乘法操作,以计算RAID 6需要的Q校验子。
图2是包括在通用处理器中进行AES加密和解密的指令的系统200的框图。该系统200包括处理器201、存储器控制中心(MCH)或(图形存储器控制中心(GMCH))202,以及输入/输出(I/O)控制中心(ICH)204。MCH 202包括控制在处理器201和存储器208之间的通信的存储器控制器206。处理器201和MCH 202通过系统总线216进行通信。
处理器201可以是诸如下列的多个处理器中的任意一种:单核
Figure BPA00001373103800051
Pentium
Figure BPA00001373103800052
处理器、单核Intel Celeron处理器、
Figure BPA00001373103800053
XScale处理器,或诸如
Figure BPA00001373103800054
Pentium D、
Figure BPA00001373103800055
处理器、或Duo处理器的多核处理器,或任何其它类型的处理器。
存储器208可以是动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)、同步动态随机存储存储器(SDRAM)、双倍数据速率2(DDR2)RAM或Rambus动态随机存取存储器(RDRAM)或任何其他类型存储器。
ICH 204可以利用诸如直接媒体接口(DMI)的高速芯片到芯片互连214耦合至MCH 202。DMI支持经由两个单向线道(lane)的2千兆位/秒的并发传输速率。
ICH 204可包括存储I/O控制器210,用来控制与诸如独立磁盘冗余阵列(RAID)100(图1)的至少一个存储设备212的通信。ICH 204可以利用串行存储协议通过存储协议互连218与存储设备212通信。串行存储协议的例子是,串行连接小型计算机系统接口(SAS)或串行高级技术附件(SATA)。
处理器201包括进行AES加密和解密操作的AES功能203。AES功能203可被用于对存储在存储器208和/或存储在存储设备212中的信息进行加密或解密。
加密(密码)利用秘密密钥(密钥)来进行一系列的变换,以将被称为“明文”的可理解的数据变换为被称为“密文”的不可理解的形式。密码中的变换包括:(1)用异或(XOR)操作向状态(state)(二维字节阵列)添加轮密钥(round key)(得自于密钥的值);(2)用非线性字节替换表(S盒(S-box))对状态进行处理;(3)将状态的最后三行循环移位不同的偏移量;以及(4)取得状态所有的列,将它们的数据(彼此无关)进行混合以生成新的列,这可被称为列混合变换。由随后描述的单个AES指令进行上述的四个变换。
在列混合变换中,将状态的所有列中的数据(彼此无关)进行混合,以生成新的列。列混合是对128位(16字节)的输入的4x4的矩阵表示的列进行128位→128位的变换操作。该变换将每个列都视为AES伽罗瓦域256上的有系数的三次多项式。将状态的4x4矩阵表示的状态的每一列乘以多项式a(x)={03}x3+{01}x2+{01}x+{02},并约简模x4+1。该128位到128位的列混合变换是16字节到16字节的变换。例如,该16字节(状态)可以被表示为[p,o,n,m,i,k,j,i,h,g,f,e,d,c,b,a],其中a是最低有效字节,该状态有四个列,每个列是一个32位的双字(4字节)。
列混合变换是基于GF(28)算术(模x8+x4+x3+x+1)的矩阵乘法。因此,如下文所讨论的,伽罗瓦域乘法功能250可以使用该列混合变换来计算6级RAID系统的Q校验子。为了使用该列混合变换,列混合变换从AES指令中被隔离出。
对状态的四个列分别地进行列混合变换。这四个列是:
(1)[p,o,n,m]
(2)[i,k,j,i]
(3)[h,g,f,e]
(4)[d,c,b,a]。
对[p,o,n,m,i,k,j,i,h,g,f,e,d,c,b,a]进行列混合变换的结果是[p’,o’,n’,m’,i’,k’,j’,i’,h’,g’,f’,e’,d’,c’,b’,a’],如下表1所示。
对列(1)的变换
a’=({02}·a)+({03}·b)+c+d;
b’=a+({02}·b)+({03}·c)+d;
c’=a+b+({02}·c)+({03}·d);
d’=({03}·a)+b+c+({02}·d)
对列(2)的变换
e’=({02}·e)+({03}·f)+g+h;
f’=e+({02}·f)+({03}·g)+h;
g’=e+f+({02}·g)+({03}·h);
h’=({03}·e)+f+g+({02}·h)
对列(3)的变换
i’=({02}·i)+({03}·j)+k+l;
j’=i+({02}·j)+({03}·k)+l;
k’=i+j+({02}·k)+({03}·l);
l’=({03}·i)+j+k+({02}·l)
对列(4)的变换
m’=({02}·m)+({03}·n)+o+p;
n’=m+({02}·n)+({03}·o)+p;
o’=m+n+({02}·o)+({03}·p);
p’=({03}·m)+n+o+({02}·p)
表1
如上面的表1所示,对所述四列中的每一个进行相同的操作。
因此,假设操作对每一个双字(列)是类似的,可以用简写形式来描述对四个列中的一列(例如,列4,最低有效双字)进行的列混合变换。
对于列4,双字(dword)=[d,c,b,a],简写的列混合变换示出如下:
d,c,b,a→3a+b+c+2d,a+b+2c+3d,a+2b+3c+d,2a+3b+c+d
图3是图2所示的处理器201的实施例的框图。处理器201包括取指和解码单元306,用于对从1级(L1)指令高速缓存302接收的处理器指令进行解码。用来执行处理器指令的数据可以存储在寄存器文件308中。在一个实施例中,寄存器文件308包括多个由AES指令使用的128位寄存器,用于存储由AES指令使用的数据。
在一个实施例中,寄存器文件308是类似于Intel Pentium MMX处理器中提供的128位MMX寄存器的128位寄存器组,所述Intel Pentium MMX处理器具有流(单指令多数据(SIMD))扩展(SSE)指令集。在SIMD处理器中,以128位块来处理数据,其中一次加载一个128位块。
取指和解码单元306从L1指令高速缓存302中取得宏指令,对该宏指令进行解码并将其分解成称作微操作(μop)的简单操作,这些简单操作可以存储在微代码只读存储器(ROM)314中。被流水线化的执行单元310调度并执行所述微操作。在示出的该实施例中,执行单元310中的AES功能203包括用于AES指令的微操作。所述AES指令被完全流水线化,从而,在有数据准备好要被处理时,处理器(CPU)可以将指令分派在每一周期中。引退单元312将AES指令的执行结果写入到寄存器或存储器中。AES指令使用的轮密钥316可存储在L1数据高速缓存304中,并加载到执行单元310,以供微操作用来执行任意一个AES指令。
在取指和解码单元306解码AES指令后,执行单元310对AES指令的执行包括进行与AES指令相关联的微操作,所述微操作可以存储在微代码ROM 314中。
AES指令集包括独立的AES指令,用于进行加密轮、解密轮、加密最后轮和解密最后轮。在一个实施例中,每个AES指令都有唯一的操作码(opcode)。
所述AES指令集包括如下表2所示的四个AES指令(加密、解密、加密最后轮、解密最后轮)。AES指令集中的AES指令包括进行加密和解密轮操作的单轮操作,其用于除最后一轮以外的所有轮。
AESENC xmmsrcdst xmm
                 输入:数据(=目标),轮密钥
                 输出:通过使用轮密钥的AES轮进行变换后的
                       数据
                 变换序列:
                       Tmp=行移位(数据)(Shift Rows(data));
                       Tmp=字节替换(Tmp)(Substitute Bytes
                       (Tmp));
                       Tmp=列混合(Tmp)(Mix Columns
                       (Tmp));
                       输出=添加轮密钥(Tmp,轮密钥)(Add
                       Round Key(Tmp,round key))
AESENCLAST xmmsrcdst xmm
              输入:数据(=目标),轮密钥
              输出:通过使用轮密钥的AES最后轮进行变换
                    后的数据
              变换序列:
                    Tmp=行移位(数据)(Shift Rows(data));
                      Tmp=字节替换(Tmp)(Substitute Bytes
                      (Tmp));
                      输出=添加轮密钥(Tmp,轮密钥)(Add
                      Round Key(Tmp,round key))
AESDEC xmmsrcdst xmm
                输入:数据(=目标),轮密钥
                输出:通过使用轮密钥的AES轮进行变换后
                      的数据
                变换序列:
                      Tmp=逆行移位(数据)(Inverse Shift
                      Rows(data));
                      Tmp=逆字节替换(Tmp)(Inverse
                      Substitute Bytes(Tmp));
                      Tmp=逆列混合(Tmp)(Inverse Mix
                      Columns(Tmp));
                      输出=添加轮密钥(Tmp,轮密钥)
                      (Add Round Key(Tmp,round key))
AESDECLAST xmmsrcdst xmm
              输入:数据(=目标),轮密钥
              输出:通过使用轮密钥的AES最后轮进行变
                    换后的数据
              变换序列:
                    Tmp=逆行移位(数据)(Inverse Shift
                    Rows(data));
                Tmp=逆字节替换(Tmp)(Inverse
                    Substitute Bytes(Tmp));
                    输出=添加轮密钥(Tmp,轮密钥)
                    (Add Round Key(Tmp,round key))
                    表2
例如,表2中的AESENC单轮指令中,输入数据存储在128位寄存器(xmmsrcdst)中,并且轮密钥存储在另一128位寄存器(xmm)中。该指令对存储于128位xmmsrcdst寄存器中的输入数据(源)进行一系列的针对一个AES加密轮的四个变换,并用该轮操作的执行结果重写所述128位xmmsrcdst寄存器中存储的输入数据。因此,xmmsrcdst首先存储输入数据,之后存储所述AES轮操作的结果。
如表2所示,采用FIPS公布197的术语描述了相应的128位→128位变换序列。加密轮的变换序列包括:
(1)AddRoundKey变换:用异或(XOR)操作向状态(二维128位字节阵列)添加轮密钥(round key)(得自于密钥的值)。AddRoundKey是(128位,128位)→128位的变换,其定义是它的两个变量的按位异或(XOR)。在AES流中,所述变量是所述状态和所述轮密钥。
(2)SubBytes变换:用非线性字节替换表(S盒)对所述状态进行处理。SubBytes是16字节到16字节(按字节)的变换,该变换被定义为将S盒变换应用于输入的16字节中的每一个字节。所述S盒变换可通过查找表来表示如下:该查找表的输入是字节B[7:0],其中x和y表示低和高半字节x[3:0]=B[7:4],y[3:0]=B[3:0]。在该表中将输出字节编码为16进制(H)表示的两数位的数。例如,输入85H产生97H。
(3)ShiftRows变换:将所述状态的最后三行以不同的偏移量循环移位。ShiftRows是以下按字节的置换:(15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0)→(11,6,1,12,7,2,13,8,3,14,9,4,15,10,5,0)。该变换被视为对状态的4x4矩阵表示的操作。所述4x4矩阵的第一行不变。第二行向左旋转一个字节位置。第三行向左旋转2个字节位置。第四行向左旋转3个字节位置。
(4)列混合变换:将所述状态中所有的列中的数据进行混合(彼此独立),以生成新的列。列混合是对所述128位(16字节)输入的4x4矩阵表示的列进行操作的128位→128位变换。所述变换将每一列视为在AES伽罗瓦域256中有系数的三次多项式。状态的4x4矩阵表示中的每一列乘以多项式a(x)={03}x3+{01}x2+{01}x+{02},并且约简模x4+1。
如表2中所示,AES最后加密轮指令AESENCLAST不执行列混合变换。
解密(逆密码)是用密钥进行一系列变换,以将“密文”块变换为相同大小的“明文”块。在逆密码中的变换是密码中的逆变换。
如上述表2所示,可由单个的AES解密轮指令AESDEC执行上述解密轮的变换序列,而由单个的AES最后解密轮指令AESDECCLAST来执行最后解密轮的变换序列。
包括AES加密和解密指令的指令组合可以用来获得作为隔离出的变换的AES算法的子步骤(变换)。所述隔离出的变换包括:加密AES指令(AESENC,AESENCLAST)使用的行移位、字节替换和列混合变换。
本发明的一个实施例采用通过使用AES加密和解密指令组成的指令组合获得的隔离出的AES列混合变换,来计算6级RAID的Q校验子。
图4是依据本发明的原理进行伽罗瓦域(GF)乘法的方法实施例的流程图。
AESENC指令和AESDEC指令都采用列混合变换的微操作。如表2所示,AESDEC指令包括AESENC指令变换的逆变换。因此,可以通过执行以下指令序列来隔离出列混合变换的微操作:(1)轮密钥设置为0的AESENC指令,接着是(2)轮密钥设置为0的AESDECLAST指令。
参考每一个AES指令的变换序列,该指令序列隔离出列混合变换,这是因为AddRoundKey微操作执行无操作(NOP),并且其余微操作(行移位、字节替换)通过进行逆微操作(逆行移位、逆字节替换)进行兑换。
因此,AES指令(AESENC,AESDECLAST)的序列的执行结果是隔离出(状态)的列混合变换,如下所示:
Y=逆列混合(逆字节替换(逆行移位(字节替换(行移位(状态))))
按照本发明的一个实施例,被隔离出的列混合变换用以在AES伽罗瓦域用{02}乘以16字节。将描述16字节(p,o,n,m,l,k,j,i,h,g,f,e,d,c,b,a)中的4(d,c,b,a)乘以{02}的实施例。
在这个实施例中,用约简多项式0x11b定义所述有限域。在其它实施例中,域表示的选择是可以配置的。
参考图4,在框400,输入数据(d,c,b,a)的奇数字节位置被设置为0,即,b=d=0,从而得到(0,c,0,a)。在一个实施例中,用压缩混洗字节(PSHUFB)指令将奇数字节位置设置为0。
图5A-5C说明了压缩混洗字节(PSHUFB)指令的使用。所述PSHUFB指令根据存储于第二操作数的混洗控制掩码对第一操作数中的字节进行混洗(进行字节的原地混洗)。如果设置了混洗控制掩码中的字节的最高有效位,则在第一操作数中对应的字节中写入0。
所述PSHUFB指令有可被称为两个字节寄存器A和B的两个128位输入。所述PSHUFB指令采用两个128位的字节寄存器A=[a15a14a13...a0]和B=[b15b14b13...b0],用[ab15ab14ab13...ab0]替代寄存器A。如果bi的最高位被设置为1,则该结果的第i个条目是0。
参考图5A,框500说明了128位第一寄存器较低的4字节的初始内容,框502说明了在用混洗控制掩码′ff02ff00h′执行了PSHUFB指令后第一寄存器较低的4字节的内容。如图所示,因为MSB被设置为’1’,所以两个奇数字节(字节1和字节3)被设置为’0’。
再返回图4,在将奇数字节设置为’0’后,通过采用第一寄存器的内容执行指令序列(AESDECLAST,接着是AESENC),来进行列混合变换。该指令序列执行以下变换:
d,c,b,a→3a+b+c+2d,a+b+2c+3d,a+2b+3c+d,2a+3b+c+d
当d和b都是0时,对′d=0,c,b=0,a′的指令序列的结果是:
3a+c,a+2c,a+3c,2a+c
接下来,用压缩混洗字节(PSHUFB)指令将上述结果(3a+c,a+2c,a+3c,2a+c)中的奇数字节设置为0,将第二PSHUFB指令的结果(0,a+2c,0,2a+c)存储在第一寄存器中。
在框404,输入数据(d,c,b,a)的偶数字节位置被设置为0,即,a=c=0,从而得到(d,0,b,0)。在一个实施例中,用压缩混洗字节(PSHUFB)指令将偶数字节位置设置为0。
参考图5B,502说明了第一寄存器的初始内容,504说明了在用混洗控制掩码′03ff01ffh′执行PSHUFB指令后第一寄存器的内容。如图所示,所有的偶数字节位置都被设置为’0’。
再返回到图4,在将偶数字节位置设置为’0’后,通过采用第一寄存器的内容执行指令序列(AESDECLAST,接着是AESENC),来进行列混合变换。该指令序列执行以下变换:
d,c,b,a→3a+b+c+2d,a+b+2c+3d,a+2b+3c+d,2a+3b+c+d
当c和a都是0时,对′d,c=0,b,a=0′的指令序列的结果是:b+2d,b+3d,2b+d,3b+d
接下来,用压缩混洗字节(PSHUFB)指令将上述结果(b+2d,b+3d,2b+d,3b+d)中的偶数字节设置为0,将第四PSHUFB指令的结果(b+2d,0,2b+d,0)存储在第二寄存器中。
在框408,将存储于第一寄存器的结果(框402)和存储于第二寄存器的结果(框406)进行XOR,以提供两个列混合变换的结果(b+2d,a+2c,2b+d,2a+c)。在一个实施例中,使用PXOR指令对结果进行XOR。所述PXOR指令对两个寄存器中的内容进行XOR操作,并将结果存储在其中之一的寄存器中。
在框410,根据掩码用压缩混洗字节(PSHUFB)指令对输入数据(d,c,b,a)中的字节进行混洗。
参考图5C,506说明了第三寄存器的初始内容,508说明了在用混洗控制掩码′000302h′执行PSHUFB指令后第三寄存器的内容。如图所示,输入数据(d,c,b,a)的字节被混洗,以提供结果(b,a,d,c)510,该结果被存储在第三寄存器中。
继续图4,在框412,对寄存器3的内容(b+2d,b+3d,2b+d,3b+d)和寄存器2的内容(b,a,d,c)进行XOR操作,以提供乘法操作的结果,即,(2d,2c,2b,2a)。
已经描述了执行在4字节数据块上乘以g={02}的实施例。下面的表4说明了对一个16字节数据块进行操作的功能正确未优化的实施例的代码示例(汇编程序)。
Figure BPA00001373103800131
Figure BPA00001373103800141
表4
如表4中的代码示例所示,采用11个指令(5个PSHUFB指令,2个PXOR指令,2个AESENC指令,2个AESDECLAST指令)、3个掩码(mask1,mas2(2,mask3)和三个xmm寄存器(xmm1,xmm2,xmm3)对_data的16字节进行伽罗瓦域乘法。
例如,对输入数据:′e598271ef11141b8ae52b4e0305dbfd4′进行伽罗瓦域乘法的结果是输出数据:′d12b4e3cf922826b47a473db60ba65b3′。
在上述代码示例中,如果顺序处理上述指令,因为AES指令的时延导致吞吐量很慢。例如,在一个实施例中,PSHUFB和PXOR指令的时延是1个周期,AES指令的时延是6个周期。因此,如果顺序处理AES指令对,会有12个周期的时延。在其它实施例中,可以通过并发地处理输入数据的多个16字节来缩短整个时延,其中指令被交错,以使得AES指令对中的第二AES指令在该AES指令对中的第一AES指令被调度后6个周期被调度。可以改变在表4中示出的代码示例的指令顺序,如图6A-6C中所示示例所说明的。这种指令顺序允许并发地处理数个16字节数据块,因为AES指令的时延超过了PXOR和PSHUFB指令的时延。
图6A-6C是允许对多个16字节数据块并发地进行伽罗瓦域乘法的代码示例。所述代码仅仅是可能使用的代码的一个示例。还可以有很多其它变型,例如,代码可以被优化以与特定编译器一起使用。图6A-6C示出了对NBLOCKS数据块(每个块有16字节(16B))的数据缓冲器执行乘以{02}的函数(内联汇编程序)。并行处理4个16字节块,并重复这个操作(并行地处理4个16字节块)(4个块并行处理)4次,从而使用256字节数据缓冲器。用12个xmm寄存器(xmm0-xmm11)存储输入数据和对输入数据的操作结果。3个掩码寄存器(mask1,mask2,mask3)存储与表4中示出的代码示例相同的掩码。参考图6A,框600中的指令将存储于xmm寄存器(xmm1,xmm4,xmm7,xmm10)中的输入数据的奇数字节位置设置为0。在示出的示例中,使用压缩混洗字节(VPSHUFB)指令将奇数字节位置设置为0。VPSHUFB指令执行移动,之后是PSHUFB,例如对于指令“vpshufbxmm1,xmm0,mask1”,xmm0的内容被移动到xmm1,然后根据存储于xmm0的控制掩码对xmm1的内容进行混洗。
接下来,框602中的AESDECLAST指令对存储在xmm1,xmm4,xmm7和xmm10寄存器的奇数字节位置被设置为0的输入数据进行操作。
框604中的指令把输入数据移至xmm寄存器(xmm2,xmm5)并将奇数字节位置设置为0,并如结合图5C所讨论那样将xmm寄存器(xmm0,xmm3)中的输入字节重新混洗。
参考图6B,框606中的AESENC指令隔离出MixColumns变换,并将结果存储到xmm寄存器(xmm1,xmm3,xmm7,xmm10)中。
框608中的指令将输入数据移至xmm寄存器(xmm8,xmm11),并将偶数字节位置设置为0,并如结合图5C所讨论那样对xmm寄存器(xmm6,xmm9)中的输入字节进行重新混洗。
框610中的指令对存储于xmm寄存器(xmm2,xmm5,xmm8,xmm11)中的偶数字节被设置为0的输入数据执行AESDECLAST指令。
框612中的指令,将存储在xmm寄存器(xmm1,xmm4,xmm7,xmm10)中的数据的奇数位置字节归零。
框614中的指令对存储在xmm寄存器(xmm2,xmm5,xmm8,xmm11)中的数据执行AESENC指令,并在存储于xmm寄存器(xmm2,xmm5,xmm8,xmm11)的结果中将偶数字节位置设置为0。
框616中的指令对xmm寄存器(xmm0-xmm11)中的内容进行XOR操作,以提供xmm寄存器(xmm0,xmm3,xmm6,xmm9)中的乘法操作的结果。
框618中的指令将存储于xmm寄存器(xmm0,xmm3,xmm6,xmm9)的乘法操作的结果移动至rbx寄存器。
框620中的指令计算指向下一个要被进行乘法的16字节块的位置的指针。
在另一个实施例中,以GF(28)的另一表示进行RAID-6计算,通过将输入转换成其中可以应用AES指令的“优选”表示(具有约简多项式11B),有可能使用所描述的技术。到原始表示的最终转换是需要的(但是该最终转换可以暂缓到真的需要恢复时进行)。该转换可采用预计算的表来实现。
本发明的替代实施例还包括机器可访问介质,其包含用于执行本发明的操作的指令。此类实施例也可称为程序产品。此类机器可访问介质可包括但不限于诸如软盘、硬盘、光盘只读存储器(CD-ROMS)、只读存储器(ROM)、随机存取存储器(RAM)的存储介质,以及可由机器或设备制造或形成的粒子其他有形排列。指令也可用在分布式环境中,并可在本地存储和/或远程存储,以供单处理器或多处理器的机器访问。
尽管已经通过参考本发明的实施例对这些实施例进行了具体示出和描述,但本领域技术人员将会理解,可以对这些实施例在形式上和细节上进行各种改变,而不背离由所述权利要求涵盖的本发明的实施例的范围。

Claims (10)

1.一种用于计算6级RAID系统的Q校验子的方法,包括:
对字节块中多个字节中的每一个字节并行地执行伽罗瓦域乘法操作,包括:
对所有偶数位置字节被设置为0的所述字节块执行高级加密标准AES列混合变换,以提供第一结果,其中,所述第一结果的所有偶数位置字节被设置为0;
对所有奇数位置字节被设置为0的所述字节块执行所述AES列混合变换,以提供第二结果,其中,所述第二结果的所有奇数位置字节被设置为0;以及
将所述第一结果和所述第二结果进行组合以提供所述伽罗瓦域乘法操作的结果,以用于计算所述6级RAID系统的Q校验子,
其中,所述组合还包括:
对所述第一结果和所述第二结果执行异或XOR操作,以提供第三结果;
对存储于所述字节块中的数据进行混洗,来将所述字节块中每个四字节块的低位的两个字节和高位的两个字节进行交换,以提供第四结果;以及
对所述第三结果和所述第四结果进行XOR操作。
2.如权利要求1所述的方法,其中所述伽罗瓦域乘法操作中的有限域由约简多项式0x11B定义。
3.如权利要求1所述的方法,其中执行所述AES列混合变换包括:
执行AESDECLAST轮指令及跟随其后的AESENC轮指令。
4.如权利要求3所述的方法,其中由所述AESDECLAST轮指令执行的一系列变换包括逆行移位变换和逆字节替换变换,由所述AESENC轮指令执行的一系列变换包括行移位变换、字节替换变换和列混合变换。
5.如权利要求1所述的方法,其中所述AES列混合变换将四字节块序列d,c,b,a变换成另一个四字节块序列3a+b+c+2d,a+b+2c+3d,a+2b+3c+d,2a+3b+c+d。
6.一种用于计算6级RAID系统的Q校验子的装置,包括:
用于对字节块中多个字节中的每一个字节并行地执行伽罗瓦域乘法操作的模块,包括:
用于对所有偶数位置字节被设置为0的所述字节块执行高级加密标准AES列混合变换,以提供第一结果的模块,其中,所述第一结果的所有偶数位置字节被设置为0;
用于对所有奇数位置字节被设置为0的所述字节块执行所述AES列混合变换,以提供第二结果的模块,其中,所述第二结果的所有奇数位置字节被设置为0;以及
用于将所述第一结果和所述第二结果进行组合以提供所述伽罗瓦域乘法操作的结果,以用于计算所述6级RAID系统的Q校验子的模块,
其中,所述的用于将所述第一结果和所述第二结果进行组合以提供所述伽罗瓦域乘法操作的结果,以用于计算所述6级RAID系统的Q校验子的模块还包括:
用于对所述第一结果和所述第二结果执行异或XOR操作,以提供第三结果的模块;
用于对存储于所述字节块中的数据进行混洗,来将所述字节块中每个四字节块的低位的两个字节和高位的两个字节进行交换,以提供第四结果的模块;以及
用于对所述第三结果和所述第四结果进行XOR操作的模块。
7.如权利要求6所述的装置,其中所述伽罗瓦域乘法操作中的有限域由约简多项式0x11B定义。
8.如权利要求6所述的装置,其中执行所述AES列混合变换包括:
执行AESDECLAST轮指令及跟随其后的AESENC轮指令。
9.如权利要求8所述的装置,其中由所述AESDECLAST轮指令执行的一系列变换包括逆行移位变换和逆字节替换变换,由所述AESENC轮指令执行的一系列变换包括行移位变换、字节替换变换和列混合变换。
10.如权利要求6所述的装置,其中所述AES列混合变换将四字节块序列d,c,b,a变换成另一个四字节块序列3a+b+c+2d,a+b+2c+3d,a+2b+3c+d,2a+3b+c+d。
CN200980139241.1A 2008-12-19 2009-12-04 用于执行独立磁盘冗余阵列(raid)操作的方法和装置 Expired - Fee Related CN102171646B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/317,082 US8150031B2 (en) 2008-12-19 2008-12-19 Method and apparatus to perform redundant array of independent disks (RAID) operations
US12/317,082 2008-12-19
PCT/US2009/066717 WO2010080263A2 (en) 2008-12-19 2009-12-04 Method and apparatus to perform redundant array of independent disks (raid) operations

Publications (2)

Publication Number Publication Date
CN102171646A CN102171646A (zh) 2011-08-31
CN102171646B true CN102171646B (zh) 2014-05-14

Family

ID=42266129

Family Applications (1)

Application Number Title Priority Date Filing Date
CN200980139241.1A Expired - Fee Related CN102171646B (zh) 2008-12-19 2009-12-04 用于执行独立磁盘冗余阵列(raid)操作的方法和装置

Country Status (6)

Country Link
US (1) US8150031B2 (zh)
EP (1) EP2359234B1 (zh)
JP (1) JP5301675B2 (zh)
KR (1) KR101245056B1 (zh)
CN (1) CN102171646B (zh)
WO (1) WO2010080263A2 (zh)

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8150031B2 (en) 2008-12-19 2012-04-03 Intel Corporation Method and apparatus to perform redundant array of independent disks (RAID) operations
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
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
US9317286B2 (en) * 2009-03-31 2016-04-19 Oracle America, Inc. Apparatus and method for implementing instruction support for the camellia cipher algorithm
US8037391B1 (en) * 2009-05-22 2011-10-11 Nvidia Corporation Raid-6 computation system and method
US8296515B1 (en) 2009-05-22 2012-10-23 Nvidia Corporation RAID-6 computation system and method
US8612680B1 (en) * 2010-06-30 2013-12-17 Emc Corporation Data caching system and method
JP5198526B2 (ja) * 2010-09-21 2013-05-15 株式会社東芝 暗号化装置および復号装置
US9037564B2 (en) 2011-04-29 2015-05-19 Stephen Lesavich Method and system for electronic content storage and retrieval with galois fields on cloud computing networks
US9569771B2 (en) 2011-04-29 2017-02-14 Stephen Lesavich Method and system for storage and retrieval of blockchain blocks using galois fields
US9137250B2 (en) 2011-04-29 2015-09-15 Stephen Lesavich Method and system for electronic content storage and retrieval using galois fields and information entropy on cloud computing networks
US9361479B2 (en) 2011-04-29 2016-06-07 Stephen Lesavich Method and system for electronic content storage and retrieval using Galois fields and geometric shapes on cloud computing networks
US8683296B2 (en) 2011-12-30 2014-03-25 Streamscale, Inc. Accelerated erasure coding system and method
US8914706B2 (en) 2011-12-30 2014-12-16 Streamscale, Inc. Using parity data for concurrent data authentication, correction, compression, and encryption
JP5730812B2 (ja) * 2012-05-02 2015-06-10 日本電信電話株式会社 演算装置、その方法およびプログラム
JP6093718B2 (ja) * 2014-01-17 2017-03-08 日本電信電話株式会社 拡大体乗算装置、拡大体乗算方法及びプログラム
US9425961B2 (en) * 2014-03-24 2016-08-23 Stmicroelectronics S.R.L. Method for performing an encryption of an AES type, and corresponding system and computer program product
US10230398B2 (en) 2016-08-19 2019-03-12 Samsung Electronics Co., Ltd. Erasure code data protection and recovery computation system and method
CN109145626B (zh) * 2018-09-05 2020-05-29 郑州云海信息技术有限公司 一种raid硬件加密装置与方法
KR102578869B1 (ko) * 2019-03-06 2023-09-15 삼성에스디에스 주식회사 부채널 공격에 안전한 행렬 곱 연산을 수행하기 위한 장치 및 방법

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1898896A (zh) * 2001-12-18 2007-01-17 阿纳洛格装置公司 高级加密标准算法的可编程数据加密引擎
CN101084486A (zh) * 2004-12-23 2007-12-05 英特尔公司 用于校验子生成以及数据恢复的方法和系统
CN101095102A (zh) * 2004-11-22 2007-12-26 阿纳洛格装置公司 压缩伽罗瓦域计算系统
CN101226492A (zh) * 2007-01-19 2008-07-23 富士通株式会社 Raid系统和伽罗瓦域乘积计算方法
US7437658B2 (en) * 2003-11-17 2008-10-14 Nec Corporation Disk array device, parity data generating circuit for RAID and Galois field multiplying circuit

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3851115B2 (ja) * 2001-06-28 2006-11-29 富士通株式会社 暗号回路
US7895253B2 (en) * 2001-11-30 2011-02-22 Analog Devices, Inc. Compound Galois field engine and Galois field divider and square root engine and method
JP3940714B2 (ja) * 2003-09-25 2007-07-04 株式会社東芝 演算装置、および、暗号・復号演算装置
KR100610367B1 (ko) * 2004-06-19 2006-08-10 삼성전자주식회사 정보 누출 공격을 방지하기 위한 갈로아 필드 상의 곱셈방법 및 장치, 역변환 장치 그리고 aes 바이트 치환연산장치
DE102004062825B4 (de) * 2004-12-27 2006-11-23 Infineon Technologies Ag Kryptographische Einheit und Verfahren zum Betreiben einer kryptographischen Einheit
WO2006113541A2 (en) * 2005-04-13 2006-10-26 Northwestern University Streaming implementation of alphaeta physical layer encryption
US7734674B2 (en) * 2005-08-08 2010-06-08 Freescale Semiconductor, Inc. Fast fourier transform (FFT) architecture in a multi-mode wireless processing system
US7607068B2 (en) * 2006-08-31 2009-10-20 Intel Corporation Apparatus and method for generating a Galois-field syndrome
US7797612B2 (en) * 2006-12-29 2010-09-14 Intel Corporation Storage accelerator
JP4905161B2 (ja) * 2007-01-31 2012-03-28 富士通株式会社 Raid装置及びガロア体を用いたデータ復元装置
JP2008209499A (ja) * 2007-02-23 2008-09-11 Toshiba Corp Aes復号装置及びプログラム
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
US8150031B2 (en) 2008-12-19 2012-04-03 Intel Corporation Method and apparatus to perform redundant array of independent disks (RAID) operations

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1898896A (zh) * 2001-12-18 2007-01-17 阿纳洛格装置公司 高级加密标准算法的可编程数据加密引擎
US7437658B2 (en) * 2003-11-17 2008-10-14 Nec Corporation Disk array device, parity data generating circuit for RAID and Galois field multiplying circuit
CN101095102A (zh) * 2004-11-22 2007-12-26 阿纳洛格装置公司 压缩伽罗瓦域计算系统
CN101084486A (zh) * 2004-12-23 2007-12-05 英特尔公司 用于校验子生成以及数据恢复的方法和系统
CN101226492A (zh) * 2007-01-19 2008-07-23 富士通株式会社 Raid系统和伽罗瓦域乘积计算方法

Also Published As

Publication number Publication date
JP2012507212A (ja) 2012-03-22
EP2359234B1 (en) 2018-07-11
CN102171646A (zh) 2011-08-31
KR101245056B1 (ko) 2013-03-22
US20100158241A1 (en) 2010-06-24
EP2359234A4 (en) 2015-03-11
EP2359234A2 (en) 2011-08-24
KR20110050723A (ko) 2011-05-16
US8150031B2 (en) 2012-04-03
WO2010080263A3 (en) 2010-09-02
WO2010080263A2 (en) 2010-07-15
JP5301675B2 (ja) 2013-09-25

Similar Documents

Publication Publication Date Title
CN102171646B (zh) 用于执行独立磁盘冗余阵列(raid)操作的方法和装置
CN103975302B (zh) 矩阵乘法累加指令
CN101520965B (zh) 包括执行变换序列以隔离一个变换的指令的指令组合
CN103152168B (zh) 用于高级加密标准(aes)的处理器和指令
US8929539B2 (en) Instructions to perform Groestl hashing
CN101350714B (zh) 采用混合rijndael s-box的有效高级加密标准数据路径
CN101349968B (zh) 加速伽罗瓦计数器模式(gcm)计算
EP3550764A1 (en) Hardware accelerators and methods for high-performance authenticated encryption
CN104639314A (zh) 基于aes加密/解密算法的装置和流水控制方法
CN103761068A (zh) 优化的蒙哥马利模乘方法、模平方方法和模乘硬件
CN110784307B (zh) 轻量级密码算法scenery实现方法、装置及存储介质
CN105204820A (zh) 用于提供通用gf(256)simd加密算术功能的指令和逻辑
CN111008407A (zh) 用于执行虚拟加密操作的加密电路
CN108206736A (zh) 一种轻量级密码算法HBcipher实现方法与装置
CN102081513A (zh) Aes加密算法中列混淆过程指令优化方法及其指令集处理器
CN101969374B (zh) 分组密码算法中混淆层的实现方法
CN103873229A (zh) KLEIN加密AVR环境下抗timing和cache边信道攻击的快速保护方法
Hameed et al. Modified advanced encryption standard for text and images
JP2011517496A (ja) 多項式データ処理演算
CN109995506A (zh) Skinny算法优化实现方法、系统、终端、存储介质
JP4990843B2 (ja) 暗号演算装置、その方法、及びプログラム
CN115589282A (zh) 用于确定密码密钥的方法、计算机程序和数据处理系统
Anjali et al. Efficient Area and High Speed Advanced Encryption Standard Algorithm
Bellikatti et al. Design of High Security and Performance System for Storage Devices Using AES
Schwabe Who is afraid of vectors?

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

Granted publication date: 20140514

Termination date: 20191204

CF01 Termination of patent right due to non-payment of annual fee