一种带仿射掩码的S盒变换方法及装置与流程

文档序号:14847563发布日期:2018-06-30 16:53阅读:648来源:国知局
一种带仿射掩码的S盒变换方法及装置与流程

本发明涉及领域,特别是涉及一种带仿射掩码的S盒变换方法及装置。



背景技术:

对称加密算法一般都包括线性变换的部分和非线性变换的部分(S盒),而如何对非线性变换部分进行掩码从而抵御侧信道攻击一直是研究者关注的问题。常见的掩码形式有乘法掩码:通过有限域乘法进行掩码,以及加法掩码:通过有限域加法进行掩码。但这两种掩码都多少有各自的缺点,乘法掩码存在零值攻击漏洞,加法掩码对高阶差分能量分析(Differential Power Analysis,DPA)抵抗性低,而要避免这些缺点就需要大量而繁琐的操作。

为此提出了仿射掩码方案,将加法掩码和乘法掩码综合在一起,得到仿射掩码,避免了单独乘法掩码的零值攻击漏洞,同时又对高阶DPA有一定的抗性。实际应用中,为了使得S盒和掩码相匹配(即满足其中X为输入,S(·)为S盒运算,SR(·)为掩码S盒运算,R1、R2为掩码,·和分别为有限域上的乘法和加法),必须要为该组掩码值更新S盒,而每次更新都需要计算256次有限域乘法以及256次有限域加法,占用了大量的时间,保存更新的S盒也占用了大量的存储空间。



技术实现要素:

本发明主要解决的技术问题是提供一种带仿射掩码的S盒变换方法及装置,能够解决现有技术中需要为掩码更新S盒的问题。

为了解决上述技术问题,本发明采用的一个技术方案是:提供一种对称加密方法,包括:接收输入数据;向输入数据加入仿射掩码得到掩码数据;对掩码数据进行线性变换以及非线性变换以得到加密数据,其中非线性变换包括:对输入的带仿射掩码的第一数据进行带仿射掩码的有限域求逆,得到带仿射掩码的第二数据;对第二数据进行线性变换后加上偏移量,以得到经仿射变换的带仿射掩码的第三数据,线性变换是对第二数据进行有限域运算而实现的。

为了解决上述技术问题,本发明采用的另一个技术方案是:提供一种带仿射掩码的S盒变换方法,包括:对输入的带仿射掩码的第一数据进行带仿射掩码的有限域求逆,得到带仿射掩码的第二数据;对第二数据进行线性变换后加上偏移量,以得到经仿射变换的带仿射掩码的第三数据,其中线性变换是对第二数据进行有限域运算而实现的。

其中,线性变换公式为:

其中ak为根据S盒的线性变换矩阵计算得到的系数,x0为线性变换的对象,其维度为n,属于有限域GF(qn),q为素数且是有限域GF(qn)的特征。

其中,第二数据为x·r+s,其中x为未带仿射掩码的原数据,r为乘法掩码,s为加法掩码;

第三数据的计算公式为:

其中s'=(L(sr-1))r,θ为偏移量。

其中,第二数据为x·r+s,其中x为未带仿射掩码的原数据,r为乘法掩码,s为加法掩码;

第三数据的计算公式为:

其中θ为偏移量,是根据以下公式迭代计算得到的:

其中,S盒的线性变换矩阵为M,系数ak是使用拉格朗日插值公式或待定系数法将Mx0转换为线性变换公式之后计算得到的。

其中,带仿射掩码的有限域求逆使用复合域求逆方法或者对数求逆方法实现。

为了解决上述技术问题,本发明采用的另一个技术方案是:提供一种带仿射掩码的S盒变换装置,包括:有限域求逆模块,用于对输入的带仿射掩码的第一数据进行带仿射掩码的有限域求逆,得到带仿射掩码的第二数据;仿射变换模块,用于对第二数据进行线性变换后加上偏移量,以得到经仿射变换的带仿射掩码的第三数据,其中线性变换是对第二数据进行有限域运算而实现的。

为了解决上述技术问题,本发明采用的另一个技术方案是:提供一种带仿射掩码的S盒变换装置,包括:处理器和存储器,处理器连接存储器;处理器用于对输入的带仿射掩码的第一数据进行带仿射掩码的有限域求逆,得到带仿射掩码的第二数据;对第二数据进行线性变换后加上偏移量,以得到经仿射变换的带仿射掩码的第三数据,其中线性变换是对第二数据进行有限域运算而实现的。

其中,线性变换公式为:

其中ak为根据S盒的线性变换矩阵计算得到的系数,x0为线性变换的对象,其维度为n,属于有限域GF(qn),q为素数且是有限域GF(qn)的特征。

本发明的有益效果是:通过将S盒变换中仿射变换的线性变换部分转换为有限域上的运算,使得整个S盒变换都可以通过有限域运算而完成,由于仿射掩码本身也是有限域上的运算,带仿射掩码的S盒变换可以直接在有限域上进行带仿射掩码的运算而完成,免去为掩码更新S盒,提高效率并节省空间。

附图说明

图1是本发明带仿射掩码的S盒变换方法第一实施例的流程图;

图2是本发明对称加密方法第一实施例的流程图;

图3是本发明带仿射掩码的S盒变换装置第一实施例的结构示意图;

图4是本发明带仿射掩码的S盒变换装置第二实施例的结构示意图。

具体实施方式

如图1所示,本发明带仿射掩码的S盒变换方法第一实施例包括:

S1:对输入的带仿射掩码的第一数据进行带仿射掩码的有限域求逆,得到带仿射掩码的第二数据。

第一数据为x1·a+b,其中x1为未带仿射掩码的原数据且属于有限域,a为乘法掩码,b为加法掩码,需要注意的是,本申请中的乘法除了特意指出的之外均指有限域上的乘法,同样,加法除了特意指出的之外均指有限域上的加法,第一数据也属于有限域。

有限域一般为GF(qn),是使用Zq上的n次不可约多项式f(x)构造得到的域Zq/f(x),q为素数且是有限域GF(qn)的特征,Zq={0,…,q-1}。Zq和f(x)一般根据应用的加密算法而决定,例如对于AES加密算法,q=2,f(x)=x8+x4+x3+x+1。

求逆得到的第二数据为也属于有限域。在本发明一个实施例中,带仿射掩码的有限域求逆可以使用复合域求逆方法或者对数求逆方法实现。

S2:对第二数据进行线性变换后加上偏移量,以得到经仿射变换的带仿射掩码的第三数据,其中线性变换是对第二数据进行有限域运算而实现的。

在现有技术中,仿射变换的公式为Mx0+θ,其中乘法为矩阵乘法,M为S盒的线性变换矩阵,一般根据应用的加密算法而决定,x0为仿射变换的对象,θ为偏移量。而在本实施例中,将使用矩阵乘法的线性变换Mx0转换为有限域上的运算,公式如下:

其中x0也是线性变换的对象,ak为根据S盒的线性变换矩阵M计算得到的系数。

在本发明一个实施例中,可以使用拉格朗日插值公式或待定系数法将矩阵乘法Mx0转换为式(1)之后计算得到。以拉格朗日插值法为例说明如何转换。

有限域GF(qn)的阶(其中元素的个数)为qn,所以该有限域上矩阵乘法Mx0可看作只有qn个自变量的函数,可以通过拉格朗日插值公式将其表示成如下插值多项式的形式(qn-1个非零自变量,当x0=0时,Mx0=0):

矩阵乘法满足分配律,即M(x0+y0)=Mx0+My0,代入式(2),有:根据有限域的性质可知,有限域GF(qn)的特征为q,当且仅当i=qk,k=0,…,n-1时,对任意x0,y0∈GF(qn),均成立,从而得到ai=0,i≠qk,代入式(2)之后可以得到式(1)。

实际应用中,根据加密算法中S盒的线性变换矩阵M计算出系数ak之后,即可保存系数用于S盒变换。仍以AES加密算法为例,

计算可得(ai)0≤i<8=(0x05,0x09,0xf9,0x25,0xf4,0x01,0xb5,0x8f)。

通过上述实施例的实施,将S盒变换中仿射变换的线性变换部分转换为有限域上的运算,使得整个S盒变换都可以通过有限域运算而完成,由于仿射掩码本身也是有限域上的运算,带仿射掩码的S盒变换可以直接在有限域上进行带仿射掩码的运算而完成,免去为掩码更新S盒,提高效率并节省空间。

本发明带仿射掩码的S盒变换方法第二实施例,是在本发明带仿射掩码的S盒变换方法第一实施例的基础上,定义第三数据的计算公式为:

其中s'=(L(sr-1))r,θ为偏移量。为简化描述,定义r=a-1,s=b,则第二数据可以表示为x·r+s,其中x为未带仿射掩码的原数据,r为乘法掩码,s为加法掩码。

由(x+sr-1)r=xr+s可以推出:

根据有限域GF(qn)的性质,当i=qk,k=0,…,n-1时,对任意x0,y0∈GF(qn),均成立,代入上式可得:

将上式的左右两侧加上θr,可以推出式(3):

本发明带仿射掩码的S盒变换方法第三实施例,是在本发明带仿射掩码的S盒变换方法第一实施例的基础上,定义第三数据的计算公式为:

其中θ为偏移量。为简化描述,定义r=a-1,s=b,则第二数据可以表示为x·r+s,其中x为未带仿射掩码的原数据,r为乘法掩码,s为加法掩码。式(4)中的是根据以下公式迭代计算得到的:

将的左右两侧加上θr,可以推出式(4):

如图2所示,本发明对称加密方法第一实施例包括:

S11:接收输入数据。

S12:向输入数据加入仿射掩码得到掩码数据。

S13:对掩码数据进行线性变换以及非线性变换以得到加密数据。

其中非线性变换是使用本发明带仿射掩码的S盒变换方法任一实施例及可能的结合中提供的S盒变换方法实现的。

如图3所示,本发明带仿射掩码的S盒变换装置第一实施例包括:

有限域求逆模块11,用于对输入的带仿射掩码的第一数据进行带仿射掩码的有限域求逆,得到带仿射掩码的第二数据。

仿射变换模块12,用于对第二数据进行线性变换后加上偏移量,以得到经仿射变换的带仿射掩码的第三数据,其中线性变换是对第二数据进行有限域运算而实现的。

如图4所示,本发明带仿射掩码的S盒变换装置第二实施例包括:处理器110和存储器120,处理器110通过总线连接存储器120。

处理器110控制带仿射掩码的S盒变换装置的操作,处理器110还可以称为CPU(Central Processing Unit,中央处理单元)。处理器110可能是一种集成电路芯片,具有信号的处理能力。处理器110还可以是通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现成可编程门阵列(FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。

存储器120用于存储处理器110工作所必需的指令及数据。

处理器110用于对输入的带仿射掩码的第一数据进行带仿射掩码的有限域求逆,得到带仿射掩码的第二数据;对第二数据进行线性变换后加上偏移量,以得到经仿射变换的带仿射掩码的第三数据,其中线性变换是对第二数据进行有限域运算而实现的。线性变换所使用的参数可以保存在存储器120中。

本发明带仿射掩码的S盒变换装置各实施例中各个部分的功能具体可参考本发明带仿射掩码的S盒变换方法各实施例中的描述,在此不再重复。

在本发明所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施方式仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施方式方案的目的。

另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本发明各个实施方式所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。

以上所述仅为本发明的实施方式,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1