防攻击高级加密标准的加密芯片的算法的制作方法

文档序号:6561268阅读:196来源:国知局
专利名称:防攻击高级加密标准的加密芯片的算法的制作方法
技术领域
本发明涉及信息安全技术,特别是涉及一种用于防攻击高级加密标准AES加密芯 片的算法技术。
背景技术
随着集成电路分析技术的发展,芯片,尤其是安全芯片本身的安全性受到越来 越多的威胁,如何有效保护安全芯片中的重要或者敏感数据的完整性、机密性与有 效性关系到国家的经济、政治、文化与军事等诸多方面。由于安全芯片的特殊性, 国内一般无法获得国际上先进的安全芯片及其相关技术,当然也包括针对安全芯片 的防御攻击和分析的技术。为了增强国家安全芯片本身的安全性,自主研究各类防 御芯片分析技术的高性能算法、新型电路结构,开展芯片的安全防护工作就显得十 分重要,并且已经迫在眉睫。
现在业内普遍关注的安全芯片分析技术称为旁路攻击(SCA),其主要是基于物 理特征的分析技术,包括电压分析技术、故障分析技术、侵入分析技术、时间分析 技术、简单电流分析技术、差分电流分析技术、电磁辐射分析技术、高阶差分分析 技术和汉明差分分析技术等。利用这些技术,攻击者可以在获得密码运算载体的情 况下,不破坏芯片正常运算,而快速获得密钥,从而破译整个密码系统。
功耗分析是指通过分析密码运算过程中呈显的电流/电源变化,从而引起消耗能 量的变化,获得密钥信息。功耗分析技术从最初的简单功耗分析(SPA)技术,发展 为差分功耗分析(DPA)技术,最近又有了高阶差分功耗分析技术。SPA对密码操作 过程中因指令序列的执行而产生的较大幅度能量变化图进行分析;DPA则针对操作
数据变化引起的微小的能量变化进行分析,因为系统噪声干扰和可能的采样差错, 这些微小变化容易丢失,所以需要进行统计分析。目前,针对信息安全芯片的功耗 分析技术己经成为攻击者获得密钥等敏感信息的主要途径之一,该类攻击对信息安 芯片的威胁最大,于是针对功耗分析的相应防御技术便成为人们的研究热点。
在硬件防御功耗分析措施方面,有人开始研究相应的对策。利用噪声发生器产 生隨机的噪声,加入到可能会被攻击的信号端,以降低功耗分析的信噪比,从而使 得功耗分析的攻击方法变得更加困难。但是该方法存在一些缺陷,攻击者可以通过 更多的采样和信号处理等方法完成对硬件的攻击。异步电路由于其在平均功耗、能 量信号的峰值以及电磁辐射等方面的优势,使得它在抵御功耗分析方面也有作用, 但由于芯片设计中异步电路本身运用的不是很广泛,相关的设计软件也不是很齐全, 这为异步电路在安全芯片中的应用带来了不小的麻烦。现有的比较有效的方法是算 法级Masking和电路一级的双轨和Masking技术。
差分功耗分析(Differential Power Analysis)最为常见,通用性高,对被攻
击算法没有依赖性,实现攻击过程中也不需要对硬件实现有任何详细了解。DPA所
需要的是大量的实验数据,与通过对输入数据的分类,实现对中间过程数据的分类。
即攻击者知道中间数据与输入数据在密钥固定情况下的某种对应关系。

发明内容
针对上述现有技术中存在的缺陷,本发明所要解决的技术问题是提供一种相对 安全而易实现的,无统计分析规律,并能最终把输出数据恢复还原的防攻击高级加 密标准(AES)的加密芯片的算法。
为了解决上述技术问题,本发明所提供的一种防攻击高级加密标准(AES)的加 密芯片的算法,其特征在于,算法加密的工作流程-
1)明文被分为128bits为一组pt,每一个组先与一个8bits的通过重复扩展
成128bits的随机数mp异或。这一步实现了对输入初始数据的掩盖,必然导致中间过程数据的变化;
2) 进行密钥扩展,过程与标准AES加密完全一样,唯一的不同是字节代换的 时候换用了带Mask的新Sbox;新的SBox的输入有5个,分别为3个新产生的随机 数Z, W, F,经过异或运算的数据M S (这里S代表不使用Mask方法时的原始中间数 据),和刚才用于异或运算的随机数M,输出是一个8bits随机数F'和一个与该随 机数异或运算而掩盖的真实数据SB0X(S)④F';为了保证最终输出的正确和处理 步骤的简单,'必须使得输出的两个值通过一步简单的异或就可以还原出真实的中间 数据;
3) 密钥扩展的结果是输出44个字的mk,和44个被掩盖了的子密钥Subkeyemk; 它们按顺序一一对应,异或后得到真实的子密钥值,也是为了最终数据还原的实现;
4) 第一个经过MASK的子密钥Subkeyl rakl先与MASK后的需加密数据pt④mp 异或,然后这个数据输入新SB0X,同时输入的还有mpemkl, Z, W, F,输出的将是F', SB0X(pt④Subkeyl) F,;
5)对输出的SBOX(pte Subkeyl)④F'做行移位,列混淆,再与第二个被MASK 过的子密钥Subkey2$ mk2异或;
6) F'则和与第二个子密钥相对应的随机数mk2做异或;经过处理后的这个数 据和这个数据通道也是为了最终还原输出而存在的;
7) 这时判断是否到了最后一轮,如果没到,则上面两个数据进入新Sbox,然 后重复上面的步骤;
8) 如果到了最后一轮,两个数据进入新SBox后,输出的F,与最后一个子密 钥相对应的mk44异或得到F'④mk44;
9) SBOX (state Subkey43) F,则进行行移位后与最后一个被Mask过的子密 钥Subkey44e mk44异或;
10) 最后将上面两个所得数据异或,得到加密后的输出128bits的密文。
进一步地,所述步骤2)中的密钥为初始的128bits的密钥先与一个32bits通 过重复扩展的随机数异或;虽然第一步的异或已经修改了实际数据;但为了提高安 全性,这个设计对密钥也进行了异或处理。
进一步地,所述新Sbox的工作流程首先判断是进行加密还是解密,如果是加 密的话,先对进入的数据做有限域上的求逆,然后把求逆得到的结果用有限域上的 乘法与一个固定的矩阵A相乘,然后与一个固定的向量b做有限域上的加法,最终
得到的就是字节代换的输出值;如果是解密,则先对数据做有限域上的与一个固定 向量b的加法,然后将结果用有限域上乘法与一个固定的矩站A'相乘,注意A和 A'不同,经过这些计算后的结果再在有限域上求逆,最终的结果就是解密过程中的 字节代换输出。
进一步地,所述新Sbox的工作流程中有限域求逆算法:首先把数字A通过G(256) 到G (16)转换公式分解成高四位Ah和低四位Al; Ah通过有限域上的平方后乘以 常数E (十进制的14),假设这个结果称为Ah2E, Al与Ah异或后的结果再与Al做 有限域上的乘法,这个值为(AleAh)Al,再把(AleAh)Al与Ah2E异或,得到 Ah2E (Al2 Ah Al),这个值经过有限域求逆,得到(Ah2E (Al2 Ah Al))、这个 求逆结果分别与Ah,Al做有限域乘法得到Bh、 Bl,它们分别是字节代换结果的高四 位和低四位;把它们按照G (16)到G (256)的转换公式能还原成八位值。
本发明提供的防攻击高级加密标准的加密芯片的算法,将使用算法级Masking (掩蔽)实现防攻击;与其他方法相比,Masking有较高的安全性。它的机理是通 过把输入的初始数据与一个随机数异或运算而把DPA需要使用到的中间数据掩盖。 因此输入数据与中间过程数据的固定关系由于每次加密或者解密使用的随机数不同 而不同,就丧失了统计分析所需要的规律,破坏了DPA攻击的数学基础。而Masking 的关键在于中间的所有数据都是被修改过的但最终可以把数据再恢复还原输出。因 此这个设计需要两个数据通道, 一个用于被修改的所需加密数据的正常加密处理,一个用于随机数的处理,使得最后可以将两个通道的数据通过简单异或而还原真实 输出。经过该设计修改的加密解密可以保持原有算法的正确性,同时可以起到防范
DPA攻击的效果。从实现上可以使用原有的自动化设计工具,因此是个相对安全而 易实现的方案。


图1是本发明实例加密部分整体结构示意框图2是本发明实例的基于有限域求逆算法的Sbox示意框图3是本发明图2实例的有限域求逆的具体实现示意框图4是本发明实例的加密情况下带MASK的字节代换模块的示意框图5是本发明图4实例的安全求逆模块的具体示意框图6是本发明实例的Mask乘法模块的具体示意框图7是本发明实例的4位安全求逆模块示意框图8是本发明实例的带mask的与门的具体示意框图。
具体实施例方式
以下结合

对本发明的实施例作进一步详细描述,但本实施例并不用于 限制本发明,凡是采用本发明的相似算法及其相似变化,均应列入本发明的保护范围。
本发明是一款防旁路攻击的采用高级加密标准AES算法的高速加密芯片的加密 算法。所谓的防攻击是指可以防SCA中的一种DPA。所设计芯片不仅采用NIST的标 准算法AES,防止DPA攻击,另外还具有高速的特点。可以对任意长度的消息进行 加密运算,采用的密钥是128bits。
本发明设计只涉及加密核心部分,不包括接口模块。芯片对外接口有128bits 的数据输入接口, 128bits的密钥输入接口, lbits的加密或解密控制位,lbits的 加密或解密已完成指示位,lbits的加密或解密启动控制位,128bits的输出接口。
整体上使用20个SB0X并行工作,可以在13时钟周期内完成一次加密或解密。
根据所实现算法的特点,芯片可以分为加密部分,解密部分,密钥扩展部分。
芯片整体框图如图l (由于加密与解密过程的类似,仅显示加密部分)
-参见图1所示,mp,mk,Z,W,F,F'都为随机数,xor为异或运算,字节代换模块
为带Mask的新模块,行移位和列混淆模块为AES标准模块。
加密芯片的算法工作流程
1) 明文被分为128bits为一组pt,每一个组先与一个8bits的随机数卿(通 过重复扩展成128bits)异或。这一步实现了对输入初始数据的掩盖,必然导致中 间过程数据的变化。
2) 128bits的密钥先与一个32bits的随机数mk (通过重复扩展成128bit)异 或。这一步不是必须的,因为第一步的异或已经修改了实际数据。但为了提高安全 性,这个设计对密钥也进行了异或处理。
3) 进行密钥扩展,过程与标准AES加密完全一样,唯一的不同是字节代换的 时候换用了带Mask的新Sbox。新的SBox的输入有5个,分别为3个新产生的随机 数Z,W,F,经过异或运算的数据M④S (这里S代表不使用Mask方法时的原始中间数 据),和刚才用于异或运算的随机数M,输出是一个8bits随机数F'和一个与该随 机数异或运算而掩盖的真实数据SB0X(S) F'。为了保证最终输出的正确和处理 步骤的简单,必须使得输出的两个值通过一步简单的异或就可以还原出真实的中间 数据。新的SBox设计难点在于字节代换的非线性,具体实现方法在下文详细介绍。
4) 密钥扩展的结果是输出44个字的mk,和44个被掩盖了的子密钥Subkey mk。 它们按顺序一一对应,异或后得到真实的子密钥值,也是为了最终数据还原的实现。
5) 第一个经过MASK的子密钥Subkeyl mkl先与MASK后的需加密数据pt④mp 异或,然后这个数据输入新SB0X,同时输入的还有rapemkl, Z, W, F,输出的将是F', SB0X(pt Subkeyl) F,。
6) 对输出的SB0X(pt④Subkeyl)eF'做行移位,列混淆,再与第二个被MASK 过的子密钥Subkey2 mk2异或。
7) F'则和与第二个子密钥相对应的随机数rak2做异或。经过处理后的这个数 据和这个数据通道也是为了最终还原输出而存在的。
8) 这时判断是否到了最后一轮,如果没到,则上面两个数据进入新Sbox,然 后重复上面的步骤。
9) 如果到了最后一轮,两个数据进入新SBox后,输出的F'与最后一个子密 钥相对应的mk44异或得到F' 0mk44。
10) SB0X(state Subkey43)④F'则进行行移位后与最后一个被Mask过的子密 钥Subkey44④mk44异或。
11) 最后将上面两个所得数据异或,得到加密后的输出128bits的密文。
模块分述-
这个部分只介绍与Mask技术相关的新Sbox和密钥扩展模块,而行移位,列混 淆等为标准的AES模块,不另赘述。关于标准模块的说明请参照AES官方文档。
字节代换模块
该模块即Sbox非线性变换部分。它相当与一个査表运算,把一个8bits的数 据通过非线性变换为另一 8bits数据。初始数据经过异或后,其他中间处理步骤都 是线性的,因此最终恢复数据时所需要的随机数是可以平行地增加一个数据通道而 计算得到的。但是Sbox(SeF)不等于Sbox(S)④F。 Mask的难点就在于这个模块的非 线性。为了使得数据的恢复可以容易地进行,需要构建新的SB0X',它要满足 Sbox, (S F)= Sbox(S)①F。
AES的字节代换模块,
由于新Sbox的构建是建立在原Sbox的基础上的,因此这里先介绍未加MASK 的SB0X。它的实现分査表和有限域求逆两种,这里使用第二种方法。因为虽然査表
法的原理简单,但表格需要根据每次的随机数F的不同而重新建立,所需要的时间
和硬件复杂度已经不能满足正常加密所能承受的限度。如果先选择固定数目的随机 数< 再建立好对应的表格储存起来,那么随机数的选择范围如果很大,则固定表格 的储存所占用的空间也是无法承受的;如果范围很小,使用的不同的表格有限,则 牺牲了安全性,也就失去了进行Mask的意义。
基于有限域求逆算法的Sb0X框图如图2所示;首先判断是进行加密还是解密,
如果是加密的话,先对进入的数据做有限域上的求逆,然后把求逆得到的结果用有
限域上的乘法与一个固定的矩阵A相乘,然后与一个固定的向量b做有限域上的加 法,最终得到的就是字节代换的输出值;如果是解密,则先对数据做有限域上的与 一个固定向量b的加法,然后将结果用有限域上乘法与一个固定的矩站A'相乘, 注意A和A'不同,经过这些计算后的结果再在有限域上求逆,最终的结果就是解密 过程中的字节代换输出。
参见图3所示,有限域求逆算法的具体实现如下先将8bits数据A二 (a7, a6, a5, a4, a3, a2, al, a0)分解为两个4bits的数al和ah,然后所进行的有限域 乘法,有限域平方和有限域求逆都是4bits数据的运算。得到两个4bits的输出数 据bl和bh后再合成为8bits的数。把8位分解到4位的意义是8位求逆复杂度太 高,相应的4位求逆相对容易实现。该部分仅讨论加密过程。首先把数字A通过G (256)到G (16)转换公式分解成高四位Ah和低四位Al。 Ah通过有限域上的平方 后乘以常数E (十进制的14),假设这个结果称为Ah2E, Al与Ah异或后的结果再与 Al做有限域上的乘法,这个值为(Al①Ah) Al,再把它与Ah2E异或,得到Ah2E$ (Al2 Ah Al)。这个值经过有限域求逆,得到(Ah2E (Al2 Ah Al))人这个求逆结果分别与 Ah,Al做有限域乘法得到Bh, Bl,它们分别是字节代换结果的高四位和低四位。把 它们按照G (16)到G (256)的转换公式可以还原成八位值。 G (256)到G(16)的转换计算公式(1)是
aA=al xor a7 aB=a5 xor a7 aC=a4 xor a6 alO-aC xor a0 xor a5 all=al xor a2 al2=aA al3=a2 xor a4
ahO-aC xor a5 ahl=aA xor aC
ah2=aB xor a2 xor a3 ah3=aB
G (.16)到G (256)的转换计算公式(2)是
aA-all xor ah3 a0=al0 xor ahO a2=aA xor aB a4=aA xor aB xor al3 a6=aA xor al2 xor al3 xor ahO
aB=ahO xor ahl al=aB xorah3 a3=aB xor all xor ah2 a5=aB xor al2 a7=aB xor al2 xor ah3
有限域上的乘法公式(3)是-
QO-aObO xor a3bl xor (a2 xor a3)b2 xor(al xor a2)b3 Ql-albO xor(aO xor a3)bl xor a2b2 xor alb3 Q2=a2b0 xor albl xor(aO xor a3)b2 xor(a2 xor a3)b3 Q3=a3b0 xor a2bl xor alb2 xor(aO xor a3)b3
相连表示AND
有限域上的平方公式(4)是
Q0=a0xora2 Ql=a2 Q2=alxora3 Q3=a3
有限域上的求逆公式(5)是
A=al xor a2 xor a3 xor ala2a3 Q0=A xor a0 xor a0a2 xor ala2 xor a0ala2 Ql=al(a0 xor a2 xor a3 xor a0a3)xor a0a2 xor a3 Q2=a0(al xor a2 xor a3 xor a2a3)xor a2 xor a3 Q3=A xor a0a3 xor ala3 xor a2a3
相连表示AND。 .带MASK的字节代换模块, 新的SBox的输入有5个,分别为3个新产生的随机数Z (4bits) ,W(4bits),F(8bits),经过异或运算的中间数据S M (这里S代表不使 用MASK方法时的原始中间数据),和刚才用于异或运算的随机数M,输出是一个8bits 随机数F'和一个被该随机数异或运算而掩盖的真实数据SBOX(S' ) @F'。
M是为了数据的还原,而新的随机数中Z和W用于内部数据的掩盖,F用于模块输出值的掩盖。
为了简化,仅画出加密情况下的框图如图4所示,M, W, Z, F为四个相互独 立的随机数,SxorM为被随机数Mask后的输入,这五个数据进入安全求逆模块后 得到S—'xor F,这是被新的随机数F所Mask的输入的逆,S—1 xor F在有限域上乘以 矩阵A再加上向量b后,得到(S—'A)xor(FA)xorb,即相当于Sbox(S)xor(FA),另一 个数据通道上把F与A相乘,得到了F, -FA,则输出是Sbox(S)xorF,和F,,只要 把它们异或就可以得到真实的字节代换结果Sbox(S)。图4对应于图2 (去掉解密模 块部分),可以看出多了一个数据通道进行平行计算,用于最终输出数据的还原。
实际计算步骤中新的随机数先与原数据运算,然后才会去掉以前步骤所引入的 随机数。这样实现了随机数的更新,提高安全性。另外需要注意的是这个换随机数 的步骤不能错,如果先去随机数再加随机数则实际数据已经暴露过。正确的步骤是 先加新的,再去旧的。
图4中的安全求逆模块的具体框图如图5所示;图5对应前面的图3,只不过 明显多了一个数据通道给随机数。由于加密数据经过修改后进行了 8位到4位的差 分,因此为了每一个步骤中的暂时还原与进一步换用新的随机数修改真实数据,初 始输入的随机数也被拆分成4位配合使用。最后随机数和加密数据都还原成8位数 据。
图5中的4位安全求逆模块和Mask乘法模块在下文介绍。拆分,整合,平方公 式都同上述的公式(1)、 (2)、 (3)、 (4)、 (5)。
图6中所有数据都是4位,A和B为真实数据,X,Y,Z为随机数,X,Y用于消除 前面异或运算导致的修改,新的Z用于掩盖输出的真实值。4位乘法同上文介绍的 有限域乘法公式(3)。首先A xor X,B xor Y, X, Y之间分别做四位乘法,如图6所 示得到四个乘积(A xor X) (B xor Y), (B xor Y) X, (A xor X) Y, XY,然后Z 分别与上述结果从右到左叠加异或,依次得到XY xor Z, (A xor X) Y xor XY xor
Z (化简为AY xor Z), AY xor Z xor (B xor Y) X, AY xor Z xor (B xor Y) xor X (A xor X) (B xor Y),这个最终值化简可以得到(AB)xor Z。这样就实现了 A与 B的相乘,并且没有在最初,中途和最后泄露真实的值,所有的数据都有随机数做
Mask。
4位安全求逆模块,
四位求逆公式如同上文所示公式(5)不变,但是其中的与门替换为下面介绍的 带MASK的与门。
具体实现的算法有很多种,其中一种参见图7所示;图7中的求逆模块有三个输 入,分别是随机数mask (需要使用它是为了在过程中将它去掉),与随机数异或过 的中间数据States mask, —个新随机数W作为新的随机数来修正真实值。输出有 两个,分别是一个掩盖真实数据的值x,和所求的逆与这个值的异或mA。
输出mA-state—1 @x
raA可以通过上面介绍过的求逆公式计算,只需要把其中的与门换成带mask的与门。
下面是如何计算x:
<formula>complex formula see original document page 14</formula>.
带mask的与门参见图8所示,图8中所有数据都为1位,a, b为真实数据,x, y, z 为随机数,x,y用于消除前面异或运算导致的修改,新的z用于掩盖输出的真实值。
密钥扩展部分-
由于初始密钥已经与随机数做过异或,这个部分要做的工作是获得有随机数保护 的子密钥,和恢复出真实子密钥所对应的随机数。它们被分别存在两个数组w[i]和mk[i]中。
密钥扩展部分的C伪代码如下
<formula>complex formula see original document page 15</formula>
mkl, mk2, mk3, mk4为8Mts随机数。
Subword使用四个带MASK的Sbox。
带Mask的Sbox的输入是rotword (tempi), mk[i-1], W(4bits随机数), Z(4bits随机数),F(设置为0)。这里的F可以设置为0,是因为所有数据己经有了 修改,这里可以省略一些随机数。
随机数的产生
整个设计的所有随机数都由嵌在IP中的RNG (随机数生成模块)生成,每个时 钟产生一位随机数。当每次加密开始时,首先把RNG产生的随机数锁存到相应的寄 存器中供数据处理过程使用。
权利要求
1、一种防攻击高级加密标准的加密芯片的算法,其特征在于,加密算法的工作流程1)明文被分为128bits为一组pt,每一个组先与一个8bits的通过重复扩展成128bits的随机数mp异或;2)进行密钥扩展,过程与标准AES加密完全一样,唯一的不同是字节代换的时候换用了带Mask的新Sbox;新的SBox的输入有5个,分别为3个新产生的随机数Z,W,F,经过异或运算的数据Mid="icf0001" file="A2006101192380002C1.gif" wi="2" he="2" top= "93" left = "84" img-content="drawing" img-format="tif" orientation="portrait" inline="no"/>S(这里S代表不使用Mask方法时的原始中间数据),和刚才用于异或运算的随机数M,输出是一个8bits随机数F’和一个与该随机数异或运算而掩盖的真实数据SBOX(S)id="icf0002" file="A2006101192380002C2.gif" wi="2" he="2" top= "113" left = "103" img-content="drawing" img-format="tif" orientation="portrait" inline="no"/>F’;为了保证最终输出的正确和处理步骤的简单,必须使得输出的两个值通过一步简单的异或就可以还原出真实的中间数据;3)密钥扩展的结果是输出44个字的mk,和44个被掩盖了的子密钥Subkeyid="icf0003" file="A2006101192380002C3.gif" wi="2" he="2" top= "144" left = "167" img-content="drawing" img-format="tif" orientation="portrait" inline="no"/>mk;它们按顺序一一对应,异或后得到真实的子密钥值,也是为了最终数据还原的实现;4)第一个经过MASK的子密钥Subkey1id="icf0004" file="A2006101192380002C4.gif" wi="2" he="2" top= "164" left = "103" img-content="drawing" img-format="tif" orientation="portrait" inline="no"/>mk1先与MASK后的需加密数据ptid="icf0005" file="A2006101192380002C5.gif" wi="2" he="2" top= "164" left = "169" img-content="drawing" img-format="tif" orientation="portrait" inline="no"/>mp异或,然后这个数据输入新SBOX,同时输入的还有mpid="icf0006" file="A2006101192380002C6.gif" wi="2" he="2" top= "175" left = "120" img-content="drawing" img-format="tif" orientation="portrait" inline="no"/>mk1,Z,W,F,输出的将是F’,SBOX(ptid="icf0007" file="A2006101192380002C7.gif" wi="2" he="2" top= "185" left = "38" img-content="drawing" img-format="tif" orientation="portrait" inline="no"/>Subkey1)id="icf0008" file="A2006101192380002C8.gif" wi="2" he="2" top= "185" left = "61" img-content="drawing" img-format="tif" orientation="portrait" inline="no"/>F’;5)对输出的SBOX(ptid="icf0009" file="A2006101192380002C9.gif" wi="2" he="2" top= "195" left = "72" img-content="drawing" img-format="tif" orientation="portrait" inline="no"/>Subkey1)id="icf0010" file="A2006101192380002C10.gif" wi="2" he="2" top= "195" left = "95" img-content="drawing" img-format="tif" orientation="portrait" inline="no"/>F’做行移位,列混淆,再与第二个被MASK过的子密钥Subkey2id="icf0011" file="A2006101192380002C11.gif" wi="2" he="2" top= "205" left = "61" img-content="drawing" img-format="tif" orientation="portrait" inline="no"/>mk2异或;6)F’则和与第二个子密钥相对应的随机数mk2做异或;经过处理后的这个数据和这个数据通道也是为了最终还原输出而存在的;7)这时判断是否到了最后一轮,如果没到,则上面两个数据进入新Sbox,然后重复上面的步骤;8)如果到了最后一轮,两个数据进入新SBox后,输出的F’与最后一个子密钥相对应的mk44异或得到F’id="icf0012" file="A2006101192380003C1.gif" wi="2" he="2" top= "39" left = "78" img-content="drawing" img-format="tif" orientation="portrait" inline="no"/>mk44;9)SBOX(stateid="icf0013" file="A2006101192380003C2.gif" wi="2" he="2" top= "49" left = "59" img-content="drawing" img-format="tif" orientation="portrait" inline="no"/>Subkey43)id="icf0014" file="A2006101192380003C3.gif" wi="2" he="2" top= "49" left = "82" img-content="drawing" img-format="tif" orientation="portrait" inline="no"/>F’则进行行移位后与最后一个被Mask过的子密钥Subkey44id="icf0015" file="A2006101192380003C4.gif" wi="2" he="2" top= "59" left = "45" img-content="drawing" img-format="tif" orientation="portrait" inline="no"/>mk44异或;10)最后将上面两个所得数据异或,得到加密后的输出128bits的密文。
2、 根据权利要求1所述的防攻击高级加密标准的加密芯片的算法,其特征在于, 所述步骤2)中的密钥为初始的128bits的密钥先与一个32bits通过重复扩展的随 机数异或。
3、 根据权利要求1所述的防攻击高级加密标准的加密芯片的算法,其特征在于, 所述新Sbox的工作流程首先判断是进行加密还是解密,如果是加密的话,先对进 入的数据做有限域上的求逆,然后把求逆得到的结果用有限域上的乘法与一个固定 的矩阵A相乘,然后与一个固定的向量b做有限域上的加法,最终得到的就是字节 代换的输出值;如果是解密,则先对数据做有限域上的与一个固定向量b的加法, 然后将结果用有限域上乘法与一个固定的矩站A'相乘,注意A和A'不同,经过这 些计算后的结果再在有限域上求逆,最终的结果就是解密过程中的字节代换输出。
4、 根据权利要求1所述的防攻击高级加密标准的加密芯片的算法,其特征在于, 所述新Sbox的工作流程中有限域求逆算法首先把数字A通过G (256)到G (16) 转换公式分解成高四位Ah和低四位Al; Ah通过有限域上的平方后乘以常数E (十 进制的14),假设这个结果称为Ah2E, Al与Ah异或后的结果再与Al做有限域上的 乘法,这个值为(Al Ah)Al,再把(AleAh)Al与Ah2E异或,得到Ah2E (Al、Ah Al), 这个值经过有限域求逆,得到(Ah2E (Al26AhAl))这个求逆结果分别与Ah,Al 做有限域乘法得到Bh、 Bl,它们分别是字节代换结果的高四位和低四位;把它们按 照G (16)到G (256)的转换公式能还原成八位值。
全文摘要
本发明公开一种防攻击高级加密标准的加密芯片的算法,涉及信息安全技术领域;该算法的机理是通过把输入的初始数据与一个随机数异或运算而把DPA需要使用到的中间数据掩盖;而Masking的关键在于中间的所有数据都是被修改过的但最终可以把数据再恢复还原输出。因此这个设计需要两个数据通道,一个用于被修改的所需加密数据的正常加密处理,一个用于随机数的处理,使得最后可以将两个通道的数据通过简单异或而还原真实输出。本发明具有相对安全而易实现的,无统计分析规律,并能最终把输出数据恢复还原的特点。
文档编号G06F21/00GK101196965SQ200610119238
公开日2008年6月11日 申请日期2006年12月7日 优先权日2006年12月7日
发明者周玉洁, 晗 秦, 谭咏伟, 陈志敏 申请人:上海安创信息科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1