CN104410490B - 非线性挤压保护密码s盒的方法 - Google Patents

非线性挤压保护密码s盒的方法 Download PDF

Info

Publication number
CN104410490B
CN104410490B CN201410784299.4A CN201410784299A CN104410490B CN 104410490 B CN104410490 B CN 104410490B CN 201410784299 A CN201410784299 A CN 201410784299A CN 104410490 B CN104410490 B CN 104410490B
Authority
CN
China
Prior art keywords
argument
linear
boxes
random
transformation
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.)
Active
Application number
CN201410784299.4A
Other languages
English (en)
Other versions
CN104410490A (zh
Inventor
韦永壮
朱嘉良
丁勇
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.)
Guilin University of Electronic Technology
Original Assignee
Guilin University of Electronic Technology
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 Guilin University of Electronic Technology filed Critical Guilin University of Electronic Technology
Priority to CN201410784299.4A priority Critical patent/CN104410490B/zh
Publication of CN104410490A publication Critical patent/CN104410490A/zh
Application granted granted Critical
Publication of CN104410490B publication Critical patent/CN104410490B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Storage Device Security (AREA)
  • Lock And Its Accessories (AREA)

Abstract

本发明公开一种非线性挤压保护密码S盒的方法,首先通过引入随机变元,将随机变元做线性变换,同时将含有敏感变元的变量做非线性变换;然后将所得到的值相异或后作为S盒的输入,同时随机变元各自经由随机函数进行变元更新;最后将更新后的随机变元与S盒的输出相异或后做与上述非线性变换互为逆运算的非线性变换,作为S盒最终的输出结果送入密码运算本次迭代的后续步骤中。同时更新后的随机变元也要经过与上述的线性变换互为逆运算的线性变换作为密码运算下次迭代的随机变元。本发明采用了非线性变换对敏感变元进行伪装,具有能够抵御代数侧信道与高阶相关功耗攻击的能力。

Description

非线性挤压保护密码S盒的方法
技术领域
本发明涉及到信息安全领域,具体涉及一种非线性挤压保护密码S盒的方法。
背景技术
密码S盒是对称密码算法的关键部件,其代数性质很大程度上决定着整个密码算法的安全强度。近年来提出的针对密码算法的侧信道攻击是利用算法在软件或硬件实现过程中所泄露的信息(比如功耗、电磁泄漏、运行时间、运行差错等)进行密码算法攻击的一种方法。1997年Biham等人首次针对分组密码提出了差分故障攻击(DFA),1999年Kocher等人相继提出了简单功耗攻击(SPA)及差分功耗攻击(DPA),2000年,Messerges提出了高阶差分功耗攻击(HO-DPA)。2004年Brier等人提出了相关功耗攻击(CPA)。这些攻击方法利用加密或解密过程中的物理信息的泄露来攻击加密系统中的机密信息(比如密钥)的。利用这些技术,攻击者可以在获得密码运算载体的情况下,不破坏芯片的正常运算下,快速获得密钥,从而破译整个密码系统。
发明内容
本发明所要解决的技术问题是提供一种非线性挤压保护密码S盒的方法,其通过非线性挤压来伪装S盒以抵御侧信道攻击。
为解决上述问题,本发明是通过以下技术方案实现的:
一种非线性挤压保护密码S盒的方法,包括如下步骤:
步骤一,在密码运算首次迭代时随机产生至少1个随机变元,并对所有的随机变元分别做线性变换;
步骤二,对密码运算本次迭代的S盒前序步骤所产生的含有敏感变元的变量做非线性变换;
步骤三,将步骤一得到的所有线性变换后的值与步骤二得到的非线性变换后的值进行按位异或,并将按位异或后的值输入到S盒中;
步骤四,采用变元更新随机函数对步骤一得到的线性变换后的值分别进行变元更新;
步骤五,S盒对步骤三输入的值进行非线性变换;
步骤六,将步骤四得到的变元更新后的值与步骤五得到的S盒的输出值进行按位异或;
步骤七,对步骤四得到的变元更新后的值分别做线性变换,并将该线性变换后的值作为密码运算下次迭代的随机变元;
步骤八,对步骤六得到的按位异或后的值做非线性变换,并将非线性变换后的值作为S盒的最终输出结果,送入密码运算本次迭代的S盒后续步骤中。
步骤一中密码运算首次迭代所产生的随机变元的数量为1或2个。
步骤一中的线性变换与步骤七中的线性变换互为逆运算;步骤二中的非线性变换与步骤八中的非线性变换互为逆运算。
与现有技术相比,本发明通过非线性挤压方法对密码S盒进行伪装,其通过对敏感变元采用的是非线性变换以抵御先进的代数侧信道攻击与高阶相关功耗攻击,因而能够更好的抵御来自代数侧信道攻击。
附图说明
图1为S盒1阶非线性泄露挤压图。
图2为S盒2阶非线性泄露挤压图。
具体实施方式
本发明所设计的非线性挤压保护密码S盒的方法,包括如下步骤:
步骤一,在密码运算首次迭代时随机产生至少1个随机变元,并对所有的随机变元分别做线性变换;
步骤二,对密码运算本次迭代的S盒前序步骤所产生的含有敏感变元的变量做非线性变换;
步骤三,将步骤一得到的所有线性变换后的值与步骤二得到的非线性变换后的值进行按位异或,并将按位异或后的值输入到S盒中;
步骤四,采用变元更新随机函数对步骤一得到的线性变换后的值分别进行变元更新;
步骤五,S盒对步骤三输入的值进行非线性变换;
步骤六,将步骤四得到的变元更新后的值与步骤五得到的S盒的输出值进行按位异或;
步骤七,对步骤四得到的变元更新后的值分别做线性变换,并将该线性变换后的值作为密码运算下次迭代的随机变元;
步骤八,对步骤六得到的按位异或后的值做非线性变换,并将非线性变换后的值作为S盒的最终输出结果,送入密码运算本次迭代的S盒后续步骤中。
本发明引入随机变元,将随机变元做线性变换,同时将含有敏感变元的变量做非线性变换,然后将所得到的值相异或后作为S盒的输入,同时随机变元各自经由随机函数进行变元更新。最后将更新后的随机变元与S盒的输出相异或后做与上述非线性变换互为逆运算的非线性变换,作为最终的输出结果。同时更新后的随机变元也要经过与上述的线性变换互为逆运算的线性变换作为最终的输出结果。本发明采用了非线性的变换对敏感变元进行伪装,使其具有能够抵御代数侧信道与高阶相关功耗攻击的能力。该非线性挤压保护密码S盒的方法内嵌于密码算法的软硬件实现过程中,属于密码算法的其中一个环节,并随着密码算法所设定的迭代次数进行迭代。
敏感变元为密码运算过程中产生的中间结果,由明文和密钥共同决定的。额外引入到密码运算过程中的随机变元,增加了密码分析的难度,密码运算首次迭代过程中引入的随机变元随机产生,而密码运算第二次及其之后迭代过程中所用的随机变元则采用上次迭代所得到的随机变元。在理论上存在S盒的1阶、2阶、3阶、以至于更高阶的泄露挤压模型,即随机产生的随机变元为1个、2个、3个、以至于更多。但是考虑到高阶泄露挤压所需要的计算成本很大(如加密算法执行的时间),因此在实际应用中本发明最多以2阶非线性泄露挤压为宜,即随机产生的随机变元为1个或2个。其中1阶非线性泄露挤压和2阶非线性泄露挤压均通过引入随机变元,并采用一个非线性函数和若干个线性函数对敏感变元进行伪装。
包含有敏感变元的变量输入S盒前和从S盒输入之后,需要做一组互为逆运算的非线性变换,即步骤二中的非线性变换与步骤八中的非线性变换互为逆运算。对引入的随机变元要通过一个随机函数使其更新,在通过随机函数进行更新之前和更新之后要进行一组互为逆运算的线性变换,即步骤一中的线性变换与步骤七中的线性变换互为逆运算。含有敏感变元的变量要通过随机变元进行掩盖才能作为S盒的输入,同样,S盒的输出要和经过更新之后的随机变元进行掩盖才能作为最终的非线性变换的输入。
线性变换所采用的线性变换函数可以参照现有密码算法中使用的线性变换,如在输入和输出均为8bit的情况下,可以设计如下线性变换,即设输入为输出为其中<<<n表示向左循环移位n位。
非线性变换所采用的非线性变换函数是通过布尔函数构造方法所构造的具有平衡性、相关免疫性、非线性度高等具有良好密码学特性的非线性变换函数,亦可以采用现有的密码算法中的非线性变换函数,如在输入和输出均为8bit的情况下,可以采用SMS4分组密码算法中的S盒作为非线性变换函数。步骤五在S盒内部所进行的非线性变换和步骤二在S盒之外对含有敏感变元的变量进行非线性变换,所采用的非线性变换函数可以相同,也可以不相同。但是考虑安全性,2个非线性变换函数最好不相同。
下面通过2个具体的实施例,对本发明进行进一步地详细说明:
实施例1:
一种非线性挤压保护密码S盒的方法,即S盒的1阶非线性泄露挤压方法是通过采用一个非线性函数F0和一个线性函数F1对S盒的敏感变元进行伪装,如图1所示,具体包括如下步骤:
1、设未经伪装的S盒输入为a,并选择一个随机数,记为b。
2、计算并将上述两个表达式进行按位异或,得到S盒的输入其中分别为F0和F1的逆运算。
3、敏感变元X经S盒变换,得X'=S(X),经变元更新随机函数变换R,得
4、计算和b'=F1(M'),为最终的输出结果。
上述S盒的1阶非线性泄露挤压方法实现的伪代码如下:
Input(a)
srand((int)time(NULL))//设定随机数种子
b=rand()%m//产生0到(m-1)之间的随机数
M'=R(M)
X'=S(X)
b'=F1(M')
Output(a',b')
S盒的1阶非线性泄露挤压方法按顺序执行上述代码,若输入为a、b,设F0为非线性置换,F1为线性置换,R为变元更新随机函数,则输出为a'、b',且b'=F1(M')。
实施例2:
另一种非线性挤压保护密码S盒的方法,即S盒的2阶非线性泄露挤压方法是通过采用一个非线性函数F0和二个线性函数F1和F2对S盒的敏感变元进行伪装,如图2所示,具体包括如下步骤:
1、设未经过伪装的S盒输入为a,并选择两个随机数,记为b,c。
2、计算并将上述三个表达式进行按位异或,得其中分别为F0、F1和F2的逆运算。
3、X经S盒变换,得X'=S(X),分别经变元更新随机函数R1和R2,得
4、计算b'=F1(M1')和c'=F2(M2'),为最终的输出结果。
上述S盒的2阶非线性泄露挤压方法实现的伪代码如下:
Input(a)
b=rand()%m//产生0到(m-1)之间的随机数
srand((int)time(NULL))//设定随机数种子
c=rand()%m
M1'=R1(M1)
M2'=R2(M2)
X'=S(X)
b'=F1(M1')
c'=F2(M2')
Output(a',b',c')
S盒的2阶非线性泄露挤压方法按顺序执行上述代码,若输入为a、b、c,设F0为非线性置换,F1、F2为线性置换,R1、R2为变元更新随机函数,则输出为a'、b'、c',且

Claims (3)

1.非线性挤压保护密码S盒的方法,其特征是包括如下步骤:
步骤一,在密码运算首次迭代时随机产生至少1个随机变元,并对所有的随机变元分别做线性变换;
步骤二,对密码运算本次迭代的S盒前序步骤所产生的含有敏感变元的变量做非线性变换;
步骤三,将步骤一得到的所有线性变换后的值与步骤二得到的非线性变换后的值进行按位异或,并将按位异或后的值输入到S盒中;
步骤四,采用变元更新随机函数对步骤一得到的线性变换后的值分别进行变元更新;
步骤五,S盒对步骤三输入的值进行非线性变换;
步骤六,将步骤四得到的变元更新后的值与步骤五得到的S盒的输出值进行按位异或;
步骤七,对步骤四得到的变元更新后的值分别做线性变换,并将该线性变换后的值作为密码运算下次迭代的随机变元;
步骤八,对步骤六得到的按位异或后的值做非线性变换,并将非线性变换后的值作为S盒的最终输出结果,送入密码运算本次迭代的S盒后续步骤中。
2.根据权利要求1所述的非线性挤压保护密码S盒的方法,其特征是:步骤一中,密码运算所首次迭代产生的随机变元的数量为1或2个。
3.根据权利要求1所述的非线性挤压保护密码S盒的方法,其特征是:步骤一中的线性变换与步骤七中的线性变换互为逆运算;步骤二中的非线性变换与步骤八中的非线性变换互为逆运算。
CN201410784299.4A 2014-12-16 2014-12-16 非线性挤压保护密码s盒的方法 Active CN104410490B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201410784299.4A CN104410490B (zh) 2014-12-16 2014-12-16 非线性挤压保护密码s盒的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201410784299.4A CN104410490B (zh) 2014-12-16 2014-12-16 非线性挤压保护密码s盒的方法

Publications (2)

Publication Number Publication Date
CN104410490A CN104410490A (zh) 2015-03-11
CN104410490B true CN104410490B (zh) 2017-08-11

Family

ID=52648088

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410784299.4A Active CN104410490B (zh) 2014-12-16 2014-12-16 非线性挤压保护密码s盒的方法

Country Status (1)

Country Link
CN (1) CN104410490B (zh)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107204841B (zh) * 2017-03-14 2020-01-07 中国人民武装警察部队工程大学 一种抵御差分功耗攻击的分组密码多s盒实现的方法
CN108664234A (zh) * 2018-01-17 2018-10-16 北京智芯微电子科技有限公司 真随机数发生器
CN109005025B (zh) * 2018-07-11 2021-07-02 桂林电子科技大学 一种面向散列函数的卷积压缩方法
CN109981247B (zh) * 2019-03-25 2022-03-25 哈尔滨工业大学(威海) 一种基于整数化混沌映射的动态s盒生成方法
CN111464288B (zh) * 2019-12-18 2022-09-30 安徽继远软件有限公司 一种s盒的生成方法及系统
CN113014377B (zh) * 2021-02-01 2022-07-22 中国科学院软件研究所 一种利用分组密码s盒双射特性的持久故障攻击防护方法和装置

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003323117A (ja) * 2002-04-30 2003-11-14 Japan Science & Technology Corp 暗号処理方法および装置
CN101841415A (zh) * 2009-12-29 2010-09-22 中国科学院软件研究所 一种面向字的密钥流生成方法及加密方法
JP2013205437A (ja) * 2012-03-27 2013-10-07 Hitachi Ltd 非線形関数S−boxの計算方法及び装置
CN103051442B (zh) * 2012-10-16 2015-06-10 中国科学院软件研究所 采用Feistel-PG结构的密码装置及加密方法

Also Published As

Publication number Publication date
CN104410490A (zh) 2015-03-11

Similar Documents

Publication Publication Date Title
CN104410490B (zh) 非线性挤压保护密码s盒的方法
Kumar et al. Development of modified AES algorithm for data security
Hussain et al. Construction of chaotic quantum magnets and matrix Lorenz systems S-boxes and their applications
Bigdeli et al. A novel image encryption/decryption scheme based on chaotic neural networks
CN106788974A (zh) 掩码s盒、分组密钥计算单元、装置及对应的构造方法
CN102648600B (zh) 由定制的掩蔽保护的低复杂度电子电路
Zhang et al. Cryptanalysis and improvement of an image encryption algorithm based on hyper-chaotic system and dynamic S-box
Wang et al. Security analysis on a color image encryption based on DNA encoding and chaos map
CN105049400A (zh) 在白盒实现方案中拆分s盒以防止攻击
CN103795527A (zh) 防止基于功耗分析攻击aes算法的软件掩码防护方案
JP7065888B6 (ja) 暗号装置及び方法
CN105591734A (zh) 一种基于查表的白盒密码非线性编码保护方法
CN106357380B (zh) Sm4算法的掩码方法及装置
CN104766264A (zh) 一种分块双层自适应扩散图像加密方法
CN103020891A (zh) 一种基于复合混沌序列与移位的彩色图像加密方法
CN107769910A (zh) 一种基于Latch PUF的抗边信道攻击DES防护方法及电路
CN104052595B (zh) 密码算法定制方法
CN102571331A (zh) 一种用于防御能量分析攻击的密码算法实现保护方法
CN107204841B (zh) 一种抵御差分功耗攻击的分组密码多s盒实现的方法
CN104301095A (zh) Des轮运算方法和电路
Liu et al. Chaos-based color image encryption using one-time keys and Choquet fuzzy integral
Bhattacharyya et al. Secure message authentication against related-key attack
CN105656622A (zh) 一种基于查表和扰动置乱相结合的白盒密码非线性编码保护方法
Liu et al. Fault attacks on authenticated encryption modes for GIFT
Artuğer et al. A new post-processing approach for improvement of nonlinearity property in substitution boxes

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant