CN101719823B - 一种实现密码算法中的s-盒线性变换的方法 - Google Patents
一种实现密码算法中的s-盒线性变换的方法 Download PDFInfo
- Publication number
- CN101719823B CN101719823B CN2009102369823A CN200910236982A CN101719823B CN 101719823 B CN101719823 B CN 101719823B CN 2009102369823 A CN2009102369823 A CN 2009102369823A CN 200910236982 A CN200910236982 A CN 200910236982A CN 101719823 B CN101719823 B CN 101719823B
- Authority
- CN
- China
- Prior art keywords
- circleplus
- box
- calculate
- linear transformation
- satisfy
- 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
Links
Images
Landscapes
- Complex Calculations (AREA)
- Mobile Radio Communication Systems (AREA)
Abstract
本发明公开了一种实现S盒线性变换的方法,其实现的过程为:将S-盒划分为多个小S-盒,将S-盒的输入数据也分为多个块,分别为小S-盒输入数据;将上述小S-盒的输出结果合并为一个n比特的数据块x,作为线性变换混合器的输入;然后给出4种不同的方法来实现上述过程,使之通过3次循环移位和3次整数的异或运算完成线性变换;计算出L(x)结果即为完成线性变换,实现S-盒输出。本发明在硬件实现时由原来的4个循环移位电路和4个异或门减少为3个循环移位电路和3个异或门,在效率上节省开支25%。在软件实现上同样节省了计算代价。
Description
技术领域
本发明属于信息安全领域,具体涉及到密码算法中一种实现密码算法中的S-盒线性变换的方法。
背景技术
密码算法是实现信息安全的重要基础,一种加密算法可以在一定环境下提供数据内容的机密性保护,实现数据完整性保护以及消息来源的认证。但密码算法的设计存在安全性和实现性能的折衷。安全性反映攻击该算法所花的代价,通常用破译所需要的计算量和数据量等来描述,当然与破译方法直接相关,而实现性能则从两个方面反映出来:硬件实现性能和软件实现性能。硬件实现性能除了算法实现速度外,还考虑硬件实现代价,这些都是硬件实现的性能指标。软件实现时主要考虑算法实现速度和存储要求,当然有时候还对可执行代码以及源代码的大小有要求。
密码算法的设计在近年来得到很大的发展,国际上的学者们已经设计出多种密码算法,有些被发现存在某些安全漏洞,有些具有较好的安全性和实现性能。中国的商业需求也对具有自主知识产权的密码算法有很大需求。中国自主研发的SMS4密码算法就是一种为无线局域网产品使用所设计的分组密码算法,也是国内第一个公布的商用分组密码算法。
目前密码算法设计的常用方法是使用S-盒变换。S-盒是一个满足一定密码学性质的非线性变换,其目的是对输入消息进行置乱,使之充分混合。在设计中,S-盒通常对一个消息组进行置乱,而输入消息组的大小直接决定S-盒设计和实现的困难程度。显然,处理大消息块的S-盒实现起来代价很大,无论硬件还是软件实现都需要耗费很大资源,因此在具体设计这种大S-盒时,通常是划分为多个小的S-盒,然后将这些小S-盒的输出结果在线性变换混合器中进行一定程度的混合(如图1所示)。在SMS4分组密码加密方法中,其轮变换所使用的就是一个32×32阶S-盒,但因为这仍然是个不容易实现的大S-盒,因此具体实现时使用了4个8×8阶S-盒,然后通过线性变换混合器混将这几个S-盒的输出结果混合到一起。
不仅在分组密码的设计中使用S-盒变换,在许多流密码的设计中也使用了S-盒。同样为了使用小的S-盒来达到整体上类似于大S-盒变换的目的,一种常用手段是使用一种快速的线性变换将这些小S-盒的输出结果混合在一起。这种线性变换的作用就是一个线性混合器。在选择线性变换时,试验表明,对32比特字的线性变换,形如 的变换可以达到字节级的最佳差分分支数,而且实现简单。这里的变元x是一固定长度为n比特的整数变量,a,b,c,d为小于n的不同正整数,运算符号“<<<”表示左循环移位算子,为整数的对应比特异或运算。在SMS4分组密码中,所使用的线性模块是一种对32比特字的线性变换,其输入是来自4个8×8阶S-盒的输出。该线性变换可具体表示为 但是要要实现线性模块 的运算,如果直接从变换的表达式上看,需要4次循环移位和4次整数的异或运算。在硬件实现时需要4个循环移位电路和4个异或门。
发明内容
本发明提供了一种实现密码算法中的S-盒线性变换的方法,本发明给出4种不同的方法来实现,使之通过3次循环移位和3次整数的异或运算就可以完成线性变换,使得实现S-盒的方法变的更为高效。
本发明的技术方案概述如下:
一种实现密码算法中的S-盒线性变换的方法,其步骤包括:
1)将S-盒划分为多个小S-盒,将S-盒的输入数据也分为多个块,分别为小S-盒输入数据;
2)将上述小S-盒的输出结果合并为一个n比特的数据块x,作为线性变换混合器 的输入,
3)当L(x)的参数a、b、c和d满足其中两个数之和等于另外两个数之和时,使用下述方法一进行计算:
(1)计算
(2)计算
(3)计算
所述u,v,w均为小于n的不同正整数,且满足下列方程组,其中,u和v可以互换:
当L(x)的参数a、b、c和d满足其中一个数是另外两个数之和时,使用下述方法二进行计算,其中,u和v可以互换:
(1)计算
(2)计算
(3)计算
所述u,v,w均为小于n的不同正整数,且满足下列方程组:
4)计算出L(x)结果即为完成线性变换,实现S-盒输出。
进一步,L(x)的参数a、b、c和d满足其中两个数之和等于另外两个数之和在模n运算下成立。
进一步,L(x)的参数a、b、c和d满足其中一个数是另外两个数之和在模n(运算下成立。
所述方法一对n比特长整数进行左循环移k位时,可以等价于右循环移n-k位,其中k为小于n的正整数。
所述方法二对n比特长整数进行左循环移k位时,可以等价于右循环移n-k位,其中k为小于n的正整数。
一种实现密码算法中的S-盒线性变换的方法,其步骤包括:
1)将S-盒划分为多个小S-盒,将S-盒的输入数据也分为多个块,分别为小S-盒输入数据;
2)将上述小S-盒的输出结果合并为一个n比特的数据块x,作为线性变换混合器 的输入,
其中:参数a、b、c和d可以互换,且均为小于n的不同正整数,<<<表示左循环移位算子,表示比特异或运算符;
3)当L(x)的参数a、b、c和d满足其中一个数是另外两个数之和时,使用下述方法三计算:
(1)计算
(2)计算
(3)计算
所述u,v,w均为小于n的不同正整数,且满足下列方程组:
当L(x)的参数a、b、c和d满足其中两个数之和等于另外两个数之和时,使用下述方法四计算:
(1)计算
(2)计算
(3)计算
所述u,v,w均为小于n的不同正整数,且满足下列方程组:
4)计算出L(x)结果即为完成线性变换,实现S-盒输出。
进一步,L(x)的参数a、b、c和d满足其中两个数之和等于另外两个数之和在模n运算下成立。
进一步,L(x)的参数a、b、c和d满足其中一个数是另外两个数之和在模n(运算下成立。
所述方法三对n比特长整数进行左循环移k位时,可以等价于右循环移n-k位,其中k为小于n的正整数。
所述方法四对n比特长整数进行左循环移k位时,可以等价于右循环移n-k位,其中k为小于n的正整数。
本发明上述的实现S盒线性变换的方法能够带来如下的技术效果:
1、本发明通过对现有技术的线性变换混合器中的4次循环移位和4次整数的异或运算,简化为本发明的3次循环移位和3次整数的异或运算来完成,在硬件实现时由原来的4个循环移位电路和4个异或门减少为3个循环移位电路和3个异或门,在效率上节省开支25%。在软件实现上也同样节省计算代价。
2、采用多个小S-盒和线性变换混合器来实现大S-盒加密的功能,在硬件实现和软件实现上都节约大量资源,而对密码学性质却可以很大程度地保留。
附图说明
图1现有技术中S-盒实现方法的流程示意图;
图2本发明在线性变换混合器中采用方法一实现线性混合的流程示意图;
图3本发明在线性变换混合器中采用方法二实现线性混合的流程示意图;
图4本发明在线性变换混合器中采用方法三实现线性混合的流程示意图;
图5本发明在线性变换混合器中采用方法四实现线性混合的流程示意图。
具体实施例
以下结合附图对本发明进行详细说明,但不构成对本发明的限制。
实现S-盒的方法流程如图1所示,包括如下步骤:
1)根据S-盒所满足的密码学性质,将大S-盒划分为多个小S-盒;所述S-盒的输入数据也分为多个块,分别为这些小S-盒的输入数据。
2)将上述小S-盒的输出结果合并为一个n比特的数据块x,然后通过线性变换混合器 进行混合,线性变换中的参数a、b、c和d是可以互换的,均为小于n的不同正整数,<<<是左循环移位算子,为比特异或运算符,n理论上可以取任意整数值,在实际计算机应用上取计算机容易处理的数值,如8、32、64、128、256等。
针对上述线性变换L(x),当其中的参数a、b、c和d满足其中两个数之和等于另外两个数之和时,可使用本发明的方法一或方法四,当满足其中一个数是另外两个数之和时,可使用本发明的方法二或方法三。注意上述参数所满足的关系只要在模n运算下(除n取余)成立即可。
具体地,本发明的“方法一”如图2所示,包括如下步骤:
(1)计算
(2)计算
在上述方法中,首先根据a,b,c,d的值计算u,v,w的取值。在本方法中,u,v,w与a,b,c,d的关系满足下列方程组:
上述方程组可能没有解,也可能解不唯一。但当有解时,任意一组解都可以。实验表明,只要数组a,b,c,d满足关系a+d=b+c,上述方程组总存在关于u,v,w的解。显然当存在解时,u和v可以互换,即上述方程组的解总是成对出现的(除非b=c)。注意a,b,c,d是没有次序的,而且关系a+d=b+c只要在模n运算下成立即可。
本发明的“方法二”如图3所示,包括如下步骤:
(1)计算
(2)计算
在上述方法中,首先根据a,b,c,d的值计算u,v,w的取值。在本方法中,u,v,w与a,b,c,d的关系满足下列方程组:
上述方程组可能没有解,也可能解不唯一。很明显,上述方程组总存在关于u,v,w的解的充分必要条件是满足d=a+b。注意数组a,b,c,d是不分次序的,因此只要它们中的某个数是另外两个数的和,上述方程组都有关于u,v,w的解。注意关系d=a+b只要在模n运算下成立即可。同样可以看到,当上述方程组有解时,u和v可以互换,即上述方程组的解总是成对出现的(除非a=b)。
本发明的“方法三”如图4所示,包括如下步骤:
(1)计算
(2)计算
在上述方法中,首先根据a,b,c,d的值计算u,v,w的取值。在本方法中,u,v,w与a,b,c,d的关系满足下列方程组:
上述方程组可能没有解,也可能解不唯一。很明显,上述方程组总存在关于u,v,w的解的充分必要条件是满足d=a+c。注意数组a,b,c,d是不分次序的,因此只要它们中的某个数是另外两个数的和,上述方程组都有关于u,v,w的解。注意关系d=a+c只要在模n运算下成立即可。同样可以看到,当上述方程组有解时,通过将a和c对换,可以得到关于u,v,w的另一组解,即上述方程组的解总是成对出现的。
本发明的“方法四”如图5所示,包括如下步骤:
(1)计算
(2)计算
在上述方法中,首先根据a,b,c,d的值计算u,v,w的取值。在本方法中,u,v,w与a,b,c,d的关系满足下列方程组:
述方程组可能没有解,也可能解不唯一。实验表明,当满足a+d=b+c时,上述方程组总存在关于u,v,w的解。注意数组a,b,c,d是不分次序的,而且关系a+d=b+c只要在模n运算下成立即可。同样可以看到,当上述方程组有解时,可以将v和w对换,即上述方程组的解总是成对出现的。对使用上述方法中的任何一种完成的线性变换,将其应用于几个小S-盒的输出,则线性变换的最终输出可以看作一个由多个小S-盒实现的大S-盒的输出,这样就完成了S-盒实现的全过程。
下面举例说明在SMS4分组密码的加密方法中,线性变换混合器是一种对32比特字的线性变换,其输入是来自4个8×8阶小S-盒的输出。下面主要列举S-盒实现方法的线性变换混合器中实现线性变换的方法,前两个线性模块的最小差分分支数均为5,后两个线性模块的最小差分分支数均为4。
实施例1:假定4个8×8阶的小S-盒的输出结果为4个8比特数组,它们合并成为32比特的数组x。该数组作为线性变换混合器 的输入,因为线性变换中的参数满足10=18+24mod 32,则可以使用本发明的如图3所示的方法二,通过下列步骤实现:
(1)计算
(2)计算
因方法二中u和v可以互换,因此也可以通过下列步骤实现:
(1)计算
(2)计算
(3)计算该结果即为最终S-盒输出。
上述线性变换式也可使用本发明的如图4所示的第3种线性变换方法来实现,其步骤为:
(1)计算
(2)计算
因方法三中a和c可以互换,也可以通过下列线性变换步骤实现:
(1)计算
(2)计算
(3)计算该结果即为最终S-盒输出。
实施例2:假定4个8×8阶的小S-盒的输出结果为4个8比特数组,它们合并成为32比特的数组x。该数组作为线性变换混合器 的输入,因为线性变换中的参数满足关系18=8+10,则可以使用本发明的如图3所示的方法二,通过下列步骤实现:
(1)计算
(2)计算
因为方法二中u和v可以互换,因此也可以通过下列步骤实现:
(1)计算
(2)计算
上述线性变换也可使用本发明的如图4所示的第三种方法来实现,其步骤为:
(1)计算
(2)计算
方法三中a和c可以互换,因此也可以通过下列步骤实现:
(1)计算
(2)计算
实施例3:假定4个8×8阶的小S-盒的输出结果为4个8比特数组,它们合并成为32比特的数组x。该数组作为线性变换混合器 的输入,因为线性变换中的参数满足3+25=11+17,则可以使用本发明的如图2所示的方法一,通过下列步骤实现:
(1)计算
(2)计算
因方法一中u和v可以互换,因此也可以通过下列步骤实现:
(1)计算
(2)计算
上述线性变换也可使用本发明的如图5方法四来实现,其步骤为:
(1)计算
(2)计算
因方法四中可以将v和w对换,因此也可以通过下列步骤实现:
(1)计算
(2)计算
实施例4:假定4个8×8阶的小S-盒的输出结果为4个8比特数组,它们合并成为32比特的数组x。该数组作为线性变换混合器 的输入,因为线性变换中的参数满足关系3+8=15+28mod 32,则使用本发明的方法一,我们可以通过下列步骤实现:
(1)计算
(2)计算
方法一中的u和v可以互换,因此也可以通过下列步骤实现:
(1)计算
(2)计算
(3)计算该结果即为最终S-盒输出。
上述线性变换也可使用本发明的如图5方法四来实现,其步骤为:
(1)计算
(2)计算
方法四中v和w可以对换,因此也可以通过下列步骤实现:
(1)计算
(2)计算
以上通过具体实施例详细描述了本发明所提供的方法,本领域的技术人员应当理解,在不脱离本发明实质的范围内,可以对上述的方法进行各种修改或变形。比如对32比特长整数进行左循环移k位时,可以等价于右循环移32-k位,因此x<<<25等价于x>>>7,y1<<<3等价于y1>>>29。但显然本发明的具体实现形式并不局限于此,在n取其他值如64、128的时候也可以实现,在不背离本发明所述方法的精神和权利要求范围的情况下对它进行的各种显而易见的改变都在本发明的保护范围之内。
Claims (6)
1.一种实现密码算法中的S-盒线性变换的方法,其步骤包括:
1)将S-盒划分为多个小S-盒,将S-盒的输入数据也分为多个块,分别为小S-盒输入数据;
2)将上述小S-盒的输出结果合并为一个n比特的数据块x,作为线性变换混合器 的输入,
其中:n为正整数,参数a、b、c和d能够互换,且均为小于n的不同正整数,<<<表示左循环移位算子,表示比特异或运算符;
3)当L(x)的参数a、b、c和d满足其中两个数之和模n等于另外两个数之和模n时,使用下述方法一进行计算:
(1)计算
(2)计算
(3)计算
所述u,v,w均为小于n的不同正整数,且满足下列方程组,其中,u和v能够互换:
当L(x)的参数a、b、c和d满足其中一个数等于另外两个数之和模n时,使用下述方法二进行计算,其中,u和v能够互换:
(1)计算
(2)计算
(3)计算
所述u,v,w均为小于n的不同正整数,且满足下列方程组:
4)计算出L(x)结果即为完成线性变换,实现S-盒输出。
2.如权利要求1所述的方法,其特征在于,所述方法一对n比特长整数进行左循环移k位时,等价于右循环移n-k位,其中k为小于n的正整数。
3.如权利要求1所述的方法,其特征在于,所述方法二对n比特长整数进行左循环移k位时,等价于右循环移n-k位,其中k为小于n的正整数。
4.一种实现密码算法中的S-盒线性变换的方法,其步骤包括:
1)将S-盒划分为多个小S-盒,将S-盒的输入数据也分为多个块,分别为小S-盒输入数据;
2)将上述小S-盒的输出结果合并为一个n比特的数据块x,作为线性变换混合器 的输入,
3)当L(x)的参数a、b、c和d满足其中一个数是另外两个数之和模n时,使用下述方法三计算:
(1)计算
(2)计算
(3)计算
所述u,v,w均为小于n的不同正整数,且满足下列方程组,其中,a和c能够互换:
当L(x)的参数a、b、c和d满足其中两个数之和模n等于另外两个数之和模n时,使用下述方法四计算:
(1)计算
(2)计算
(3)计算
所述u,v,w均为小于n的不同正整数,且满足下列方程组,其中,v和w能够互换:
4)计算出L(x)结果即为完成线性变换,实现S-盒输出。
5.如权利要求4所述的方法,其特征在于,所述方法三对n比特长整数进行左循环移k位时,等价于右循环移n-k位,其中k为小于n的正整数。
6.如权利要求4所述的方法,其特征在于,所述方法四对n比特长整数进行左循环移k位时,等价于右循环移n-k位,其中k为小于n的正整数。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2009102369823A CN101719823B (zh) | 2009-10-30 | 2009-10-30 | 一种实现密码算法中的s-盒线性变换的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2009102369823A CN101719823B (zh) | 2009-10-30 | 2009-10-30 | 一种实现密码算法中的s-盒线性变换的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101719823A CN101719823A (zh) | 2010-06-02 |
CN101719823B true CN101719823B (zh) | 2012-07-11 |
Family
ID=42434344
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2009102369823A Expired - Fee Related CN101719823B (zh) | 2009-10-30 | 2009-10-30 | 一种实现密码算法中的s-盒线性变换的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101719823B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101848081A (zh) * | 2010-06-11 | 2010-09-29 | 中国科学院软件研究所 | 一种s盒构造方法及s盒 |
CN101951314B (zh) * | 2010-10-12 | 2012-06-20 | 北京航空航天大学 | 对称密码加密中s-盒的设计方法 |
CN110995403B (zh) * | 2019-10-31 | 2021-06-01 | 湖北大学 | 一种搜索密码算法线性层硬件实现优化的方法 |
CN113255923B (zh) * | 2021-05-31 | 2021-09-14 | 湖北大学 | Sm4算法的量子实现电路 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1426191A (zh) * | 2001-12-10 | 2003-06-25 | 中国科学院软件研究所 | “荡秋千”式的分组密码加密方法 |
US7043016B2 (en) * | 2000-07-04 | 2006-05-09 | Koninklijke Philips Electronics N.V. | Substitution-box for symmetric-key ciphers |
-
2009
- 2009-10-30 CN CN2009102369823A patent/CN101719823B/zh not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7043016B2 (en) * | 2000-07-04 | 2006-05-09 | Koninklijke Philips Electronics N.V. | Substitution-box for symmetric-key ciphers |
CN1426191A (zh) * | 2001-12-10 | 2003-06-25 | 中国科学院软件研究所 | “荡秋千”式的分组密码加密方法 |
Non-Patent Citations (1)
Title |
---|
杨宏志,韩文报.一类分组密码的S盒重组算法.《计算机应用》.2009,第29卷(第8期),2198,2199,2203. * |
Also Published As
Publication number | Publication date |
---|---|
CN101719823A (zh) | 2010-06-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Gan et al. | A chaotic image encryption algorithm based on 3-D bit-plane permutation | |
Zhu et al. | Cryptanalyzing and improving a novel color image encryption algorithm using RT-enhanced chaotic tent maps | |
Liu et al. | Color image encryption using three-dimensional sine ICMIC modulation map and DNA sequence operations | |
Guesmi et al. | A novel chaos-based image encryption using DNA sequence operation and Secure Hash Algorithm SHA-2 | |
CN103905462B (zh) | 可抵御差分功耗分析攻击的加密处理装置及方法 | |
Ye et al. | Chaotic image encryption algorithm using wave-line permutation and block diffusion | |
CN101951314B (zh) | 对称密码加密中s-盒的设计方法 | |
CN104065474B (zh) | 一种轻量级Surge分组密码实现方法 | |
CN104333446B (zh) | 一种新型超轻量级qtl分组密码实现方法 | |
CN104639314A (zh) | 基于aes加密/解密算法的装置和流水控制方法 | |
CN106023052A (zh) | 基于忆阻超混沌系统、元胞自动机和dna计算的图像加密算法 | |
CN102006161B (zh) | 一种对称密钥加密的非线性变换方法及其实现装置 | |
CN105846814B (zh) | 针对加密技术领域乘法运算的量子逻辑电路的构造方法 | |
CN101719823B (zh) | 一种实现密码算法中的s-盒线性变换的方法 | |
CN108650076A (zh) | 基于量子可逆逻辑的aes加密系统硬件模块的实现方法 | |
CN104320241B (zh) | 基于整数域混沌的视频保密通信方法 | |
CN103973439A (zh) | 一种多变量公钥加密方法 | |
CN109086617A (zh) | 基于分数阶量子混沌的一次一密光学图像加密解密方法 | |
CN101826959B (zh) | 一种面向字节的密钥流生成方法及加密方法 | |
CN103812658B (zh) | 一种基于流密码的安全通信协议 | |
Wang et al. | A new hybrid image encryption algorithm based on Gray code transformation and snake-like diffusion | |
CN103780794A (zh) | 一种基于混沌系统的图像加密改进方法 | |
Salman et al. | Creation of S-Box based One-Dimensional Chaotic Logistic Map: Colour Image Encryption Approach | |
Xiao et al. | Improving the security of a parallel keyed hash function based on chaotic maps | |
Xu et al. | Security analysis of a novel fusion encryption algorithm based on dna sequence operation and hyper-chaotic system |
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: 20120711 Termination date: 20181030 |