CN107231229B - 一种用于保护sm4密码芯片的低熵掩码泄露防护方法及其实现系统 - Google Patents

一种用于保护sm4密码芯片的低熵掩码泄露防护方法及其实现系统 Download PDF

Info

Publication number
CN107231229B
CN107231229B CN201710401417.2A CN201710401417A CN107231229B CN 107231229 B CN107231229 B CN 107231229B CN 201710401417 A CN201710401417 A CN 201710401417A CN 107231229 B CN107231229 B CN 107231229B
Authority
CN
China
Prior art keywords
mask
round
masks
box
bit
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
CN201710401417.2A
Other languages
English (en)
Other versions
CN107231229A (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.)
State Grid Corp of China SGCC
China Electric Power Research Institute Co Ltd CEPRI
Electric Power Research Institute of State Grid Ningxia Electric Power Co Ltd
Original Assignee
State Grid Corp of China SGCC
China Electric Power Research Institute Co Ltd CEPRI
Electric Power Research Institute of State Grid Ningxia Electric Power Co Ltd
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 State Grid Corp of China SGCC, China Electric Power Research Institute Co Ltd CEPRI, Electric Power Research Institute of State Grid Ningxia Electric Power Co Ltd filed Critical State Grid Corp of China SGCC
Priority to CN201710401417.2A priority Critical patent/CN107231229B/zh
Publication of CN107231229A publication Critical patent/CN107231229A/zh
Application granted granted Critical
Publication of CN107231229B publication Critical patent/CN107231229B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0618Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0618Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
    • H04L9/0631Substitution permutation network [SPN], i.e. cipher composed of a number of stages or rounds each involving linear and nonlinear transformations, e.g. AES algorithms

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Theoretical Computer Science (AREA)
  • General Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • Storage Device Security (AREA)

Abstract

本发明公开了一种用于保护SM4密码芯片的低熵掩码泄露防护方法及其实现系统;所述方法为:1)选取一长为16字节的掩码,将该掩码分为四组,每组掩码为四个字节;将每一组掩码Mi划分为一四元数组(Mi0、Mi1、Mi2、Mi3);2)对S盒进行预计算得到16个新型S盒,记作Snew,存储所述16个Snew;3)轮函数利用步骤1)的四组掩码对待保护数据进行掩码更新;然后按照确定的顺序选取掩码并根据当前所用掩码对应的Snew对待保护数据进行掩码更新;4)当完成最后一轮掩码更新后,去除最后一轮掩码更新所得数据中最后一轮掩码更新所用的掩码,得到加密后的密文值;本发明保证了SM4密码芯片在实际应用场景中的物理安全性。

Description

一种用于保护SM4密码芯片的低熵掩码泄露防护方法及其实 现系统
技术领域
本发明涉及一种用于保护SM4密码芯片的泄露防护方法及其实现系统,使用该方法可以对典型SM4密码芯片进行安全性防护,使其能够有效抵御侧信道密码分析带来的安全威胁。所提出方法的优点在于保护SM4密码芯片的安全性同时不显著增加SM4密码芯片的实现开销。事实上,可以通过降低掩码信息熵实现掩码开销的有效控制。该发明属于信息安全技术领域。
背景技术
掩码作为一种典型的密码芯片泄露防护方法,通过使用随机数随机化密码芯片执行过程中所处理的敏感中间值消除敏感中间值与密码芯片能量泄露信息间的统计依赖性,进而使得能量分析攻击失效。掩码的设计通常依赖于密码芯片所使用的密码算法,需要通过结合密码算法的算法特性,设计出有效、可靠的掩码防护方法。SM4加密算法为中国国产密码算法,目前国际密码工程领域缺乏针对SM4密码芯片的掩码防护方法研究。基于此,对SM4密码芯片设计掩码防护方法对于保护国产密码芯片具有重要的实际意义。然而,普通掩码方法的实现代价较高,严重影响到SM4密码芯片的运行效率。相比较之下,低熵掩码方法通过降低掩码熵能够有效降低SM4密码芯片的实现代价,具有较高的实现效率。基于此,本发明考虑为SM4密码芯片设计一种低熵掩码泄露防护方法,从而实现SM4密码芯片安全性的有效与可靠保证。
发明内容
作为典型的国产密码算法,国际密码工程领域缺乏针对SM4密码算法所设计的特定掩码防护方法,同时,普通掩码防护方法存在实现代价较高,进而导致SM4密码芯片的运行效率较低的技术缺陷。基于此,本发明提出一种用于保护SM4密码芯片的低熵掩码泄露防护方法及其实现系统。本发明所提出泄露防护方法仅需使用16字节掩码对SM4密码芯片运行过程中所处理的敏感中间值进行掩码保护。
所述一种用于保护SM4密码芯片的低熵掩码泄露防护方法,其步骤为:
1)选取一长为16字节的掩码,将该掩码分为四组,每组掩码为四个字节,即32比特;将每一组掩码Mi划分为一四元数组(Mi0、Mi1、Mi2、Mi3),其中,每个元素的掩码值为8比特,Mi0为第i组掩码Mi的第一个元素;
2)对S盒进行预计算得到16个新型S盒,记作Snew,存储该16个Snew;其中预计算方法为:将各组掩码中的元素作为S盒的输入,其中,S盒的输入掩码为Mi中元素Mij,则S盒输出掩码为Mi+1中元素M(i+1)j,i与j的取值均为0到3,当i+1的值为4时,令i+1为0;
3)轮函数利用步骤1)的四组掩码对待保护数据进行掩码更新;其中,每一轮加密时首先确定四组掩码的使用顺序;然后按照确定的顺序选取掩码并根据当前所用掩码对应的Snew对待保护数据进行掩码更新;
4)当完成最后一轮掩码更新后,去除最后一轮掩码更新所得数据中最后一轮掩码更新所用的掩码,得到加密后的密文值。
进一步的,所述掩码划分后的四组掩码M0,M1,M2,M3满足关系式
Figure BDA0001309802030000021
进一步的,对原S盒预计算得到的新S盒Snew与原S盒之间满足关系式
Figure BDA0001309802030000031
其中,V为待保护数据的中间值。
进一步的,步骤3)中,所述轮函数为SM4算法采用轮函数;按照确定的顺序选取掩码并根据当前所用掩码对应的Snew对待保护数据进行掩码更新,每一轮更新后,上一轮后三组中间值为当前轮前三组中间值,而当前轮第四组中间值依据轮密钥信息以及上一轮后三组中间值计算得到。
进一步的,令待保护数据的初始值为X=(X0,X1,X2,X3),其中X0,X1,X2,X3均为包含4字节元素的数组,当前对X进行掩码处理所使用掩码为
Figure BDA0001309802030000032
M0为掩码M顺序确定后的掩码;在轮函数加密中,依次依据M0中各元素对应的4个掩码字节值从16个新S盒Snew中选取出4个S盒进行查表操作,并对得到的输出掩码进行T线性变换;其中,第一轮加密后第1-32比特中间值对应掩码为
Figure BDA0001309802030000033
第33-64比特中间值所对应掩码为
Figure BDA0001309802030000034
第65-96比特中间值所对应掩码为
Figure BDA0001309802030000035
第97-128比特中间值所对应掩码为
Figure BDA0001309802030000036
第一轮加密后第1-32比特中间值为
Figure BDA0001309802030000037
第33-64比特中间值为
Figure BDA0001309802030000038
第65-96比特中间值为
Figure BDA0001309802030000039
第97-128比特中间值为
Figure BDA00013098020300000310
其中,
Figure BDA00013098020300000311
为对掩码
Figure BDA00013098020300000312
进行T线性变换后的更新值,
Figure BDA00013098020300000313
RK1为SM4密码算法第一轮所使用轮密钥,其长度为32比特。
进一步的,所述掩码为布尔掩码。
进一步的,使用置换函数确定四组掩码的使用顺序。
进一步的,每一轮确定的四组掩码的序列所对应掩码与上一轮经过轮函数加密后中间值所对应掩码任何位置均不重复。
所述一种用于实现保护SM4密码芯片的低熵掩码泄漏防护的系统,所述系统包含:
掩码模块,所述掩码模块将选取的总长度为16字节的四组掩码M0,M1,M2,M3输出至轮函数模块;所述每一组掩码Mi划分为一四元数组<Mi0、Mi1、Mi2、Mi3>,所述Mi0为第i组掩码Mi的第一个元素,其中,0≤i≤3,i为自然数;
新型S盒模块,所述新型S盒模块的输入为各组掩码中的元素,新型S盒的输入掩码为Mi中的Mij时,新型S盒的输出掩码为Mi+1中的元素M(i+1)j,所述新型S盒模块的新型S盒数量为16个,其中,0≤i≤3,0≤j≤3,i以及j均为自然数,当i+1的值为4时,令i+1为0;
轮函数模块,所述轮函数模块在每一轮加密时,先确定四组掩码的使用顺序,按照确定的顺序选取掩码,并根据选取掩码确定所使用的新型S盒,使用新型S盒对待保护数据进行掩码更新;
密文输出模块,所述密文输出模块用于去除最后一轮掩码更新所得数据中最后一轮掩码更新所用的掩码,得到最终密文;
进一步的,所述掩码模块的四组掩码M0,M1,M2,M3满足关系式
Figure BDA0001309802030000041
进一步的,所述新型S盒模块中新型S盒Snew与原S盒之间满足关系式
Figure BDA0001309802030000042
其中,V为待保护数据的中间值;
进一步的,所述轮函数模块对SM4算法采用轮函数,按照确定的顺序选取掩码并根据当前所用掩码对应的Snew对待保护数据进行掩码更新,每一轮更新后,上一轮后三组中间值为当前轮前三组中间值,而当前轮第四组中间值依据轮密钥信息以及上一轮后三组中间值计算得到;
进一步的,所述轮函数模块中,令待保护数据的初始值为X=(X0,X1,X2,X3),其中X0,X1,X2,X3均为包含4字节元素的数组,当前对X进行掩码处理所使用掩码为
Figure BDA0001309802030000051
M0为掩码M顺序确定后的掩码;在轮函数加密中,依次依据M0中各元素对应的4个掩码字节值从16个新S盒Snew中选取出4个S盒进行查表操作,并对得到的输出掩码进行T线性变换;其中,第一轮加密后第1-32比特中间值对应掩码为
Figure BDA0001309802030000052
第33-64比特中间值所对应掩码为
Figure BDA0001309802030000053
第65-96比特中间值所对应掩码为
Figure BDA0001309802030000054
第97-128比特中间值所对应掩码为
Figure BDA0001309802030000055
第一轮加密后第1-32比特中间值为
Figure BDA0001309802030000056
第33-64比特中间值为
Figure BDA0001309802030000057
第65-96比特中间值为
Figure BDA0001309802030000058
第97-128比特中间值为
Figure BDA0001309802030000059
其中,
Figure BDA00013098020300000510
为对掩码
Figure BDA00013098020300000511
进行T线性变换后的更新值,
Figure BDA00013098020300000512
RK1为SM4密码算法第一轮所使用轮密钥,其长度为32比特;
进一步的,所述掩码模块使用的掩码为布尔掩码;
进一步的,所述轮函数模块使用置换函数确定四组掩码的使用顺序;
进一步的,所述轮函数模块确定每一轮掩码的使用顺序与上一轮经过轮函数加密后中间值所对应掩码任何位置均不重复。
与现有技术相比,本发明的积极效果为:本发明由于使用掩码数量较低,从而使得所提出方法具有较低的实现代价。此外,SM4密码芯片运行过程中所有中间值均受到低熵掩码方法保护而与原始中间值统计上相互独立,从而保证了SM4密码芯片所处理的敏感中间值与SM4密码芯片的能量泄露信息统计上相互独立,进而有效消除了能量分析攻击对SM4密码芯片带来的物理安全威胁、保证SM4密码芯片在实际应用场景中的物理安全性。
附图说明
通过参考下面的附图,可以更为完整地理解本发明的示例性实施方式:
图1为本发明具体实施方式的一种用于保护SM4密码芯片的低熵掩码泄漏防护方法的流程图;
图2为本发明基于低熵掩码泄露防护方法的SM4密码芯片实现整体流程图;
图3为基于低熵掩码泄漏防护方法的SM4密码芯片实现轮变换流程图;
图4为本发明具体实施方式的一种用于实现保护SM4密码芯片的低熵掩码泄漏防护的系统的结构图。
具体实施方式
下面结合附图对本发明的技术内容进行进一步详细描述。
本发明的方法流程如图1所示,首先选取一长为16字节的掩码,将该掩码分为四组,每组掩码为四个字节,即32比特;然后对S盒进行预计算得到16个新型S盒,记作Snew,存储该16个Snew;其中预计算方法为:将各组掩码中的元素作为S盒的输入,其中,S盒的输入掩码为Mi中元素Mij,则S盒输出掩码为Mi+1中元素M(i+1)j,i与j的取值均为0到3,当i+1的值为4时,令i+1为0;然后轮函数利用步骤1)的四组掩码对待保护数据进行掩码更新;其中,每一轮加密时首先确定四组掩码的使用顺序;然后按照确定的顺序选取掩码并根据当前所用掩码对应的Snew对待保护数据进行掩码更新;当完成最后一轮掩码更新后,去除最后一轮掩码更新所得数据中最后一轮掩码更新所用的掩码,得到加密后的密文值。
具体而言,如图2所示,本发明面向SM4密码芯片的低熵掩码泄露防护方法总共使用16字节掩码,每四个掩码字节分为一组,总共有4组掩码值。可以将四组掩码表示为M0,M1,M2,M3,每一组掩码为32比特。M0可以表示为一个四元数组(M00,M01,M02,M03)。类似的,可以将M1表示为(M10,M11,M12,M13),M2可以表示为(M20,M21,M22,M23),M3可以表示为(M30,M31,M32,M33)。每组四元数组中包括四个元素,每个元素的掩码值为8比特。具体地,四组掩码为:
M0=(0x95,0xD4,0x56,0xD2),M1=(0xC3,0xA5,0xE1,0x65),
M2=(0x4D,0x2D,0x8D,0xC5),M3=(0x1B,0x5C,0x3A,0x72)。
依据平衡编码思路,掩码选取策略为尽可能使得掩码字节中比特值为1与比特值为0的个数相同。事实上,所有掩码字节中比特值为1与比特值为0的数量均为4。同时,尽可能使每个字节掩码值之间汉明距离随机,从而防止由于不同字节掩码值之间汉明距离分布不均匀导致存在汉明距离模型下的信息泄露。基于此思路,选取出上述16字节掩码值。此外,M0,M1,M2,M3满足关系式
Figure BDA0001309802030000071
该约束条件能够有效降低掩码追踪难度。
低熵掩码方法对S盒运算采用预计算存储的方式。事实上,S盒的输入与输出掩码满足特定约束关系。具体地,S盒的输入掩码与输出掩码为相邻掩码数组Mi、Mi+1中相同位置的元素。例如,如果S盒的输入掩码为M0中元素M00,那么S盒输出掩码为M1中元素M10;如果S盒输入掩码为M1中元素M11,那么S盒输出掩码为M2中元素M21;以此类推。总共需要预计算并存储16个新型S盒。假设将新型S盒记作Snew,将原始S盒记作S,将需要保护的敏感中间值记作V,那么有
Figure BDA0001309802030000072
其中,i与j的值为0到3,当i+1的值为4时,令i+1为0。预计算并且存储16个新型S盒后,可以在加密过程中对S盒操作采用查表方式进行。16个新型S盒具体元素值见表1至表16。
表1 S1(输入掩码为0x95,输出掩码为0xC3)
186 72 88 211 85 231 46 58 251 159 37 243 213 120 181 226
26 166 63 140 143 244 41 64 175 161 204 15 29 33 105 117
206 42 79 246 21 71 55 235 194 60 167 126 77 30 5 50
24 31 7 152 48 3 112 14 254 62 47 102 80 220 253 83
247 138 195 131 137 90 45 200 109 128 95 96 28 233 98 199
36 69 225 121 234 124 13 172 245 249 1 97 19 180 201 219
9 149 110 170 164 57 139 146 173 239 99 93 212 188 136 68
32 10 160 51 67 145 116 196 25 189 66 87 86 184 202 53
156 107 78 191 11 103 40 12 179 162 250 215 23 205 101 252
218 39 144 232 75 100 18 216 230 236 17 217 129 6 133 20
242 122 248 165 240 190 82 91 222 168 34 73 158 132 70 224
229 150 92 16 171 141 2 74 134 81 238 59 163 61 155 113
237 178 227 4 127 104 84 223 203 56 106 241 209 193 154 208
192 38 157 197 255 125 111 147 76 151 142 210 183 169 0 54
187 207 118 153 182 135 174 94 185 89 108 35 115 177 114 44
49 8 148 228 27 214 221 43 52 22 198 130 176 119 123 65
表2 S2(输入掩码为0xC3,输出掩码为0x4D)
226 189 236 11 112 103 91 208 196 55 101 254 222 206 149 223
207 41 146 202 240 114 96 156 67 152 129 221 184 166 15 57
180 192 121 150 185 136 161 81 182 86 99 44 124 190 125 35
62 7 155 235 20 217 210 36 59 25 201 141 191 120 116 78
147 100 65 176 4 104 39 3 188 173 245 216 24 194 106 243
213 40 159 231 68 107 29 215 233 227 30 214 142 9 138 27
253 117 247 170 255 177 93 84 209 167 45 70 145 139 73 239
234 153 83 31 164 130 13 69 137 94 225 52 172 50 148 126
248 133 204 140 134 85 34 199 98 143 80 111 19 230 109 200
43 74 238 118 229 115 2 163 250 246 14 110 28 187 198 212
6 154 97 165 171 54 132 157 162 224 108 82 219 179 135 75
47 5 175 60 76 158 123 203 22 178 77 88 89 183 197 58
181 71 87 220 90 232 33 53 244 144 42 252 218 119 186 237
21 169 48 131 128 251 38 79 160 174 195 0 18 46 102 122
193 37 64 249 26 72 56 228 205 51 168 113 66 17 10 61
23 16 8 151 63 12 127 1 241 49 32 105 95 211 242 92
表3 S3(输入掩码为0x4D,输出掩码为0x1B)
Figure BDA0001309802030000081
Figure BDA0001309802030000091
表4 S4(输入掩码为0x1B,输出掩码为0x95)
243 123 249 164 241 191 83 90 223 169 35 72 159 133 71 225
228 151 93 17 170 140 3 75 135 80 239 58 162 60 154 112
157 106 79 190 10 102 41 13 178 163 251 214 22 204 100 253
219 38 145 233 74 101 19 217 231 237 16 216 128 7 132 21
186 206 119 152 183 134 175 95 184 88 109 34 114 176 115 45
48 9 149 229 26 215 220 42 53 23 199 131 177 118 122 64
236 179 226 5 126 105 85 222 202 57 107 240 208 192 155 209
193 39 156 196 254 124 110 146 77 150 143 211 182 168 1 55
207 43 78 247 20 70 54 234 195 61 166 127 76 31 4 51
25 30 6 153 49 2 113 15 255 63 46 103 81 221 252 82
187 73 89 210 84 230 47 59 250 158 36 242 212 121 180 227
27 167 62 141 142 245 40 65 174 160 205 14 28 32 104 116
8 148 111 171 165 56 138 147 172 238 98 92 213 189 137 69
33 11 161 50 66 144 117 197 24 188 67 86 87 185 203 52
246 139 194 130 136 91 44 201 108 129 94 97 29 232 99 198
37 68 224 120 235 125 12 173 244 248 0 96 18 181 200 218
表5 S5(输入掩码为0xD4,输出掩码为0xA5)
Figure BDA0001309802030000092
Figure BDA0001309802030000101
表6 S6(输入掩码为0xA5,输出掩码为0x2D)
240 141 196 132 142 93 42 207 106 135 88 103 27 238 101 192
35 66 230 126 237 123 10 171 242 254 6 102 20 179 206 220
14 146 105 173 163 62 140 149 170 232 100 90 211 187 143 67
39 13 167 52 68 150 115 195 30 186 69 80 81 191 205 50
189 79 95 212 82 224 41 61 252 152 34 244 210 127 178 229
29 161 56 139 136 243 46 71 168 166 203 8 26 38 110 114
201 45 72 241 18 64 48 236 197 59 160 121 74 25 2 53
31 24 0 159 55 4 119 9 249 57 40 97 87 219 250 84
234 181 228 3 120 111 83 216 204 63 109 246 214 198 157 215
199 33 154 194 248 122 104 148 75 144 137 213 176 174 7 49
188 200 113 158 177 128 169 89 190 94 107 36 116 182 117 43
54 15 147 227 28 209 218 44 51 17 193 133 183 112 124 70
155 108 73 184 12 96 47 11 180 165 253 208 16 202 98 251
221 32 151 239 76 99 21 223 225 235 22 222 134 1 130 19
245 125 255 162 247 185 85 92 217 175 37 78 153 131 65 231
226 145 91 23 172 138 5 77 129 86 233 60 164 58 156 118
表7 S7(输入掩码为0x2D,输出掩码为0x5C)
Figure BDA0001309802030000102
Figure BDA0001309802030000111
表8 S8(输入掩码为0x5C,输出掩码为0xD4)
199 35 70 255 28 78 62 226 203 53 174 119 68 23 12 59
17 22 14 145 57 10 121 7 247 55 38 111 89 213 244 90
179 65 81 218 92 238 39 51 242 150 44 250 220 113 188 235
19 175 54 133 134 253 32 73 166 168 197 6 20 40 96 124
0 156 103 163 173 48 130 155 164 230 106 84 221 181 129 77
41 3 169 58 74 152 125 205 16 180 75 94 95 177 195 60
254 131 202 138 128 83 36 193 100 137 86 105 21 224 107 206
45 76 232 112 227 117 4 165 252 240 8 104 26 189 192 210
251 115 241 172 249 183 91 82 215 161 43 64 151 141 79 233
236 159 85 25 162 132 11 67 143 88 231 50 170 52 146 120
149 98 71 182 2 110 33 5 186 171 243 222 30 196 108 245
211 46 153 225 66 109 27 209 239 229 24 208 136 15 140 29
178 198 127 144 191 142 167 87 176 80 101 42 122 184 123 37
56 1 157 237 18 223 212 34 61 31 207 139 185 126 114 72
228 187 234 13 118 97 93 214 194 49 99 248 216 200 147 217
201 47 148 204 246 116 102 154 69 158 135 219 190 160 9 63
表9 S9(输入掩码为0x56,输出掩码为0xE1)
241 140 197 133 143 92 43 206 107 134 89 102 26 239 100 193
34 67 231 127 236 122 11 170 243 255 7 103 21 178 207 221
15 147 104 172 162 63 141 148 171 233 101 91 210 186 142 66
38 12 166 53 69 151 114 194 31 187 68 81 80 190 204 51
188 78 94 213 83 225 40 60 253 153 35 245 211 126 179 228
28 160 57 138 137 242 47 70 169 167 202 9 27 39 111 115
200 44 73 240 19 65 49 237 196 58 161 120 75 24 3 52
30 25 1 158 54 5 118 8 248 56 41 96 86 218 251 85
235 180 229 2 121 110 82 217 205 62 108 247 215 199 156 214
198 32 155 195 249 123 105 149 74 145 136 212 177 175 6 48
189 201 112 159 176 129 168 88 191 95 106 37 117 183 116 42
55 14 146 226 29 208 219 45 50 16 192 132 182 113 125 71
154 109 72 185 13 97 46 10 181 164 252 209 17 203 99 250
220 33 150 238 77 98 20 222 224 234 23 223 135 0 131 18
244 124 254 163 246 184 84 93 216 174 36 79 152 130 64 230
227 144 90 22 173 139 4 76 128 87 232 61 165 59 157 119
表10 S10(输入掩码为0xE1,输出掩码为0x8D)
Figure BDA0001309802030000112
Figure BDA0001309802030000121
表11 S11(输入掩码为0x8D,输出掩码为0x3A)
22 17 9 150 62 13 126 0 240 48 33 104 94 210 243 93
192 36 65 248 27 73 57 229 204 50 169 112 67 16 11 60
20 168 49 130 129 250 39 78 161 175 194 1 19 47 103 123
180 70 86 221 91 233 32 52 245 145 43 253 219 118 187 236
46 4 174 61 77 159 122 202 23 179 76 89 88 182 196 59
7 155 96 164 170 55 133 156 163 225 109 83 218 178 134 74
42 75 239 119 228 114 3 162 251 247 15 111 29 186 199 213
249 132 205 141 135 84 35 198 99 142 81 110 18 231 108 201
235 152 82 30 165 131 12 68 136 95 224 53 173 51 149 127
252 116 246 171 254 176 92 85 208 166 44 71 144 138 72 238
212 41 158 230 69 106 28 214 232 226 31 215 143 8 139 26
146 101 64 177 5 105 38 2 189 172 244 217 25 195 107 242
63 6 154 234 21 216 211 37 58 24 200 140 190 121 117 79
181 193 120 151 184 137 160 80 183 87 98 45 125 191 124 34
206 40 147 203 241 115 97 157 66 153 128 220 185 167 14 56
227 188 237 10 113 102 90 209 197 54 100 255 223 207 148 222
表12 S12(输入掩码为0x3A,输出掩码为0x56)
Figure BDA0001309802030000122
Figure BDA0001309802030000131
表13 S13(输入掩码为0xD2,输出掩码为0x65)
236 159 85 25 162 132 11 67 143 88 231 50 170 52 146 120
251 115 241 172 249 183 91 82 215 161 43 64 151 141 79 233
211 46 153 225 66 109 27 209 239 229 24 208 136 15 140 29
149 98 71 182 2 110 33 5 186 171 243 222 30 196 108 245
56 1 157 237 18 223 212 34 61 31 207 139 185 126 114 72
178 198 127 144 191 142 167 87 176 80 101 42 122 184 123 37
201 47 148 204 246 116 102 154 69 158 135 219 190 160 9 63
228 187 234 13 118 97 93 214 194 49 99 248 216 200 147 217
17 22 14 145 57 10 121 7 247 55 38 111 89 213 244 90
199 35 70 255 28 78 62 226 203 53 174 119 68 23 12 59
19 175 54 133 134 253 32 73 166 168 197 6 20 40 96 124
179 65 81 218 92 238 39 51 242 150 44 250 220 113 188 235
41 3 169 58 74 152 125 205 16 180 75 94 95 177 195 60
0 156 103 163 173 48 130 155 164 230 106 84 221 181 129 77
45 76 232 112 227 117 4 165 252 240 8 104 26 189 192 210
254 131 202 138 128 83 36 193 100 137 86 105 21 224 107 206
表14 S14(输入掩码为0x65,输出掩码为0xC5)
247 138 195 131 137 90 45 200 109 128 95 96 28 233 98 199
36 69 225 121 234 124 13 172 245 249 1 97 19 180 201 219
9 149 110 170 164 57 139 146 173 239 99 93 212 188 136 68
32 10 160 51 67 145 116 196 25 189 66 87 86 184 202 53
186 72 88 211 85 231 46 58 251 159 37 243 213 120 181 226
26 166 63 140 143 244 41 64 175 161 204 15 29 33 105 117
206 42 79 246 21 71 55 235 194 60 167 126 77 30 5 50
24 31 7 152 48 3 112 14 254 62 47 102 80 220 253 83
237 178 227 4 127 104 84 223 203 56 106 241 209 193 154 208
192 38 157 197 255 125 111 147 76 151 142 210 183 169 0 54
187 207 118 153 182 135 174 94 185 89 108 35 115 177 114 44
49 8 148 228 27 214 221 43 52 22 198 130 176 119 123 65
156 107 78 191 11 103 40 12 179 162 250 215 23 205 101 252
218 39 144 232 75 100 18 216 230 236 17 217 129 6 133 20
242 122 248 165 240 190 82 91 222 168 34 73 158 132 70 224
229 150 92 16 171 141 2 74 134 81 238 59 163 61 155 113
表15 S15(输入掩码为0xC5,输出掩码为0x72)
236 179 226 5 126 105 85 222 202 57 107 240 208 192 155 209
193 39 156 196 254 124 110 146 77 150 143 211 182 168 1 55
186 206 119 152 183 134 175 95 184 88 109 34 114 176 115 45
48 9 149 229 26 215 220 42 53 23 199 131 177 118 122 64
157 106 79 190 10 102 41 13 178 163 251 214 22 204 100 253
219 38 145 233 74 101 19 217 231 237 16 216 128 7 132 21
243 123 249 164 241 191 83 90 223 169 35 72 159 133 71 225
228 151 93 17 170 140 3 75 135 80 239 58 162 60 154 112
246 139 194 130 136 91 44 201 108 129 94 97 29 232 99 198
37 68 224 120 235 125 12 173 244 248 0 96 18 181 200 218
8 148 111 171 165 56 138 147 172 238 98 92 213 189 137 69
33 11 161 50 66 144 117 197 24 188 67 86 87 185 203 52
187 73 89 210 84 230 47 59 250 158 36 242 212 121 180 227
27 167 62 141 142 245 40 65 174 160 205 14 28 32 104 116
207 43 78 247 20 70 54 234 195 61 166 127 76 31 4 51
25 30 6 153 49 2 113 15 255 63 46 103 81 221 252 82
表16 S16(输入掩码为0x72,输出掩码为0xD2)
44 77 233 113 226 116 5 164 253 241 9 105 27 188 193 211
255 130 203 139 129 82 37 192 101 136 87 104 20 225 106 207
40 2 168 59 75 153 124 204 17 181 74 95 94 176 194 61
1 157 102 162 172 49 131 154 165 231 107 85 220 180 128 76
18 174 55 132 135 252 33 72 167 169 196 7 21 41 97 125
178 64 80 219 93 239 38 50 243 151 45 251 221 112 189 234
16 23 15 144 56 11 120 6 246 54 39 110 88 212 245 91
198 34 71 254 29 79 63 227 202 52 175 118 69 22 13 58
200 46 149 205 247 117 103 155 68 159 134 218 191 161 8 62
229 186 235 12 119 96 92 215 195 48 98 249 217 201 146 216
57 0 156 236 19 222 213 35 60 30 206 138 184 127 115 73
179 199 126 145 190 143 166 86 177 81 100 43 123 185 122 36
210 47 152 224 67 108 26 208 238 228 25 209 137 14 141 28
148 99 70 183 3 111 32 4 187 170 242 223 31 197 109 244
237 158 84 24 163 133 10 66 142 89 230 51 171 53 147 121
250 114 240 173 248 182 90 83 214 160 42 65 150 140 78 232
在该低熵掩码方法中需要使用置换函数P(),该函数没有输入,输出为0,1,2,3的随机置换序列。该置换函数决定了四组掩码M0,M1,M2,M3的使用顺序。加密之前,首先调用置换函数生成一个随机置换序列,然后按照随机置换序列决定四组掩码的使用顺序。例如,假设随机置换序列为1,3,2,0,那么明文第1-32比特应该由第M1组掩码值进行保护,明文第33-64比特应该由第M3组掩码值进行保护,明文第65-96比特应该由第M2组掩码值进行保护,明文第97-128比特应该由第M0组掩码值进行保护。这里需要说明的是,第一轮加密过程中需要对明文进行掩码保护,后续轮加密过程中对前一轮加密后数据(即中间值)进行掩码保护。该低熵掩码方案使用掩码为布尔掩码,即,掩码与中间值通过异或进行随机化处理。布尔掩码的优点在于,实现简单,能够有效降低掩码方案的整体实现代价。
令明文为X=(X0,X1,X2,X3),需要说明的是,X0,X1,X2,X3均为包含4字节元素的数组,因此明文X总共包括16字节。对明文进行掩码处理所使用掩码为
Figure BDA0001309802030000151
需要说明的是,M0为使用随机置换函数P()对掩码M置换后掩码。对明文随机化处理后,需要进行轮函数加密,轮函数加密详见图2。在轮函数加密中,需要依据
Figure BDA0001309802030000152
个掩码字节值从16个新生成S盒中选取出4个S盒进行查表操作。具体要求为,所选取的4个S盒的输入掩码为
Figure BDA0001309802030000153
中4个掩码字节值。考虑到4组掩码值的异或值为零,4个S盒输入掩码实际上为
Figure BDA0001309802030000154
四个S盒输出掩码为
Figure BDA0001309802030000155
将经过第一轮S盒运算之后输出掩码记作
Figure BDA0001309802030000156
这里
Figure BDA0001309802030000157
为M0中与
Figure BDA0001309802030000158
相邻的掩码。
Figure BDA0001309802030000159
需要经过T线性变换。需要说明的是,T线性变换是SM4密码算法每一轮的轮函数变换中均涉及到的操作。SM4密码算法总共执行32轮,对于第i,i∈[1,32]轮S盒输出掩码(记作
Figure BDA00013098020300001510
),也需要经过T线性变换。可将第一轮T线性变换后掩码记作
Figure BDA00013098020300001511
随后,由图3可见,
Figure BDA00013098020300001512
需要与明文第1-32比特所对应掩码
Figure BDA00013098020300001513
进行异或,从而得到第一轮加密后第97-128比特中间值所对应掩码
Figure BDA00013098020300001514
此外,第一轮加密后第1-32比特中间值对应掩码为
Figure BDA00013098020300001515
第一轮加密后第33-64比特中间值所对应掩码为
Figure BDA0001309802030000161
第一轮加密后第65-96比特中间值所对应掩码为
Figure BDA0001309802030000162
第一轮加密后第1-32比特中间值为
Figure BDA0001309802030000163
第一轮加密后第33-64比特中间值为
Figure BDA0001309802030000164
第一轮加密后第65-96比特中间值为
Figure BDA0001309802030000165
最后,第一轮加密后第97-128比特中间值为
Figure BDA0001309802030000166
其中,
Figure BDA0001309802030000167
Snew为上述从16个新生成S盒所选取4个S盒构成的S盒向量,RK1为SM4密码算法第一轮所使用轮密钥,其长度为32比特。由于X1,X2,X3(包括X0)均为32比特值,
Figure BDA0001309802030000168
长度为32比特,需要将32比特异或值按序分成四个字节,每个字节通过Snew中对应的S盒,查表得到相应的输出值,进而组成得到经过Snew计算后的32比特中间值。随后,将经过Snew计算后的32比特中间值按序分成四个字节,每个字节经过T变换得到相应的输出字节。最后,将经过T变换得到的四个输出字节按序组成32比特值后与X0异或得到X4,即
Figure BDA0001309802030000169
每一次经过轮函数加密后,都需要对掩码进行调整。掩码调整时,首先须调用置换函数生成随机置换序列。为了确保不会产生掩码消除的情形,需要确保生成的随机置换序列所对应掩码与上一轮经过轮函数加密后中间值所对应掩码任何位置均不重复。为此,需要判断生成的随机序列所对应掩码与经过轮函数加密后中间值所对应掩码是否有重复。如果有,需要重新执行置换函数,并重新进行条件判断,直至生成满足条件的随机序列。需要说明的是,所设计低熵掩码防御对策并不要求32轮加密过程中随机生成掩码顺序均不同,只要相邻两轮加密过程中随机生成掩码顺序不同,即可避免由于掩码消除而导致的原始中间值暴露的问题。产生满足条件的随机置换序列后,可按照随机置换序列选取掩码对经过轮函数加密后的中间值进行掩码更新。令第一轮轮变换后第1-32比特中间值对应更新掩码为
Figure BDA0001309802030000171
第33-64比特中间值对应掩码为
Figure BDA0001309802030000172
第65-96比特中间值对应掩码为
Figure BDA0001309802030000173
第97-128比特中间值对应掩码为
Figure BDA0001309802030000174
那么异或掩码后,第一轮变换后中间值第1-32比特值更新为
Figure BDA0001309802030000175
第33-64比特值更新为
Figure BDA0001309802030000176
第65-96比特值更新为
Figure BDA0001309802030000177
第97-128比特值更新为
Figure BDA0001309802030000178
可以看到,经过第一轮变换后,明文中X1,X2,X3为第一轮变换后前三组中间值,而X4为依据X1,X2,X3以及RK1所生成新的中间值。事实上,原始SM4加密算法的特点在于经过每一轮加密后,上一轮后三组中间值为当前轮前三组中间值,而当前轮第四组中间值依据轮密钥信息以及上一轮后三组中间值计算得到。经过第一轮变换后,需要通过掩码异或进一步实施掩码更新,从而得到掩码更新后的中间值。具体来讲,进一步更新后,第一轮中间值第1-32比特值为
Figure BDA0001309802030000179
第33-64比特值为
Figure BDA00013098020300001710
第65-96比特值为
Figure BDA00013098020300001711
第97-128比特值为
Figure BDA00013098020300001712
可以看到,经过掩码追踪后,依然保持了四组掩码异或值为零的约束条件,从而为下一轮加密与掩码追踪提供了相同的条件,便利了整个掩码方案的顺序执行。
其次,对每一轮加密过程都应用类似的轮函数加密过程与掩码追踪过程。当完成32轮加密过程后,应该得到第32轮中间值第1-32比特值为
Figure BDA00013098020300001713
第33-64比特值为
Figure BDA00013098020300001714
第65-96比特值为
Figure BDA00013098020300001715
第97-128比特值为
Figure BDA00013098020300001716
然后,需要去除第32轮掩码,得到加密后的密文值,这需要将
Figure BDA00013098020300001717
Figure BDA00013098020300001718
进行异或,将
Figure BDA00013098020300001719
Figure BDA00013098020300001720
进行异或,将
Figure BDA00013098020300001721
Figure BDA00013098020300001722
进行异或,将
Figure BDA00013098020300001723
Figure BDA00013098020300001724
进行异或,从而得到加密密文(Y0,Y1,Y2,Y3)。至此,基于低熵掩码方法的SM4加密过程结束。在该低熵掩码方案中,所有中间值均受到掩码保护,从而能够有效消除敏感中间值与SM4密码芯片能量泄漏之间的统计关系,进而消除了能量分析攻击对SM4密码芯片物理安全性带来的威胁。
算法1描述了受低熵掩码保护SM4加密方案的总体执行流程。
输入:X=(X0,X1,X2,X3),掩码M=(M0,M1,M2,M3),置换函数P()。
输出:密文Y=(Y0,Y1,Y2,Y3)。
算法描述:
a.明文随机化处理:
Figure BDA0001309802030000181
Figure BDA0001309802030000182
b.轮变换与掩码追踪:
For flag=1:32
Figure BDA0001309802030000183
Figure BDA0001309802030000184
Figure BDA0001309802030000185
Figure BDA0001309802030000186
Figure BDA0001309802030000187
Figure BDA0001309802030000188
c.生成密文:
Y=(X35,X34,X33,X32)
d.算法结束。
图4为本发明具体实施方式的一种一种用于实现保护SM4密码芯片的低熵掩码泄漏防护的系统的结构图,所述系统包括:
掩码模块401,所述掩码模块将选取的总长度为16字节的四组掩码M0,M1,M2,M3输出至轮函数模块;所述每一组掩码Mi划分为一四元数组<Mi0、Mi1、Mi2、Mi3>,所述Mi0为第i组掩码Mi的第一个元素,其中,0≤i≤3,i为自然数;
新型S盒模块402,所述新型S盒模块的输入为各组掩码中的元素,新型S盒的输入掩码为Mi中的Mij时,新型S盒的输出掩码为Mi+1中的元素M(i+1)j,所述新型S盒模块的新型S盒数量为16个,其中,0≤i≤3,0≤j≤3,i以及j均为自然数,当i+1的值为4时,令i+1为0;
轮函数模块403,所述轮函数模块在每一轮加密时,先确定四组掩码的使用顺序,按照确定的顺序选取掩码,并根据选取掩码确定所使用的新型S盒,使用新型S盒对待保护数据进行掩码更新;
密文输出模块404,所述密文输出模块用于去除最后一轮掩码更新所得数据中最后一轮掩码更新所用的掩码,得到最终密文;
进一步的,所述掩码模块的四组掩码M0,M1,M2,M3满足关系式
Figure BDA0001309802030000191
进一步的,所述新型S盒模块中新型S盒Snew与原S盒之间满足关系式
Figure BDA0001309802030000192
其中,V为待保护数据的中间值;
进一步的,所述轮函数模块对SM4算法采用轮函数,按照确定的顺序选取掩码并根据当前所用掩码对应的Snew对待保护数据进行掩码更新,每一轮更新后,上一轮后三组中间值为当前轮前三组中间值,而当前轮第四组中间值依据轮密钥信息以及上一轮后三组中间值计算得到;
进一步的,所述轮函数模块中,令待保护数据的初始值为X=(X0,X1,X2,X3),其中X0,X1,X2,X3均为包含4字节元素的数组,当前对X进行掩码处理所使用掩码为
Figure BDA0001309802030000193
M0为掩码M顺序确定后的掩码;在轮函数加密中,依次依据M0中各元素对应的4个掩码字节值从16个新S盒Snew中选取出4个S盒进行查表操作,并对得到的输出掩码进行T线性变换;其中,第一轮加密后第1-32比特中间值对应掩码为
Figure BDA0001309802030000194
第33-64比特中间值所对应掩码为
Figure BDA0001309802030000195
第65-96比特中间值所对应掩码为
Figure BDA0001309802030000196
第97-128比特中间值所对应掩码为
Figure BDA0001309802030000197
第一轮加密后第1-32比特中间值为
Figure BDA0001309802030000201
第33-64比特中间值为
Figure BDA0001309802030000202
第65-96比特中间值为
Figure BDA0001309802030000203
第97-128比特中间值为
Figure BDA0001309802030000204
其中,
Figure BDA0001309802030000205
为对掩码
Figure BDA0001309802030000206
进行T线性变换后的更新值,
Figure BDA0001309802030000207
RK1为SM4密码算法第一轮所使用轮密钥,其长度为32比特;
进一步的,所述掩码模块使用的掩码为布尔掩码;
进一步的,所述轮函数模块使用置换函数确定四组掩码的使用顺序;
进一步的,所述轮函数模块确定每一轮掩码的使用顺序与上一轮经过轮函数加密后中间值所对应掩码任何位置均不重复。
本专利设计的优点在于,仅使用16个字节掩码从而有效降低了掩码熵。然而在普通掩码方案中会使用256个字节掩码值。事实上,该掩码防护方案中,掩码的信息熵从8比特降低为4比特。掩码信息熵降低后,针对S盒的预计算与存储代价大大降低。事实上,通过使用16个字节掩码值,仅仅需要预计算并且存储16个新的S盒。然而,在普通掩码方法中,需要预计算并且存储256个新的S盒。因此,低熵掩码方法的实现代价大约是普通掩码方法的1/8,从而大大降低了受保护SM4密码芯片的实现代价。
此外,从掩码追踪的角度讲,所设计低熵掩码方法通过选取满足特定关系的掩码,能够实现掩码追踪过程的相对简单进行。首先,将S盒设计为输入掩码与输出掩码满足特定约束关系,从而可以通过预计算存储16个新的S盒。新的S盒输入、输出掩码之间的特定关系使得掩码追踪更加容易;其次,在SM4密码芯片执行每一轮中借助随机置换函数随机设定四个32比特掩码值的使用顺序,从而既能够保证四个32比特掩码异或值为零的特性,同时使得每个32比特中间值所对应的掩码是随机选取的。
最后,从安全的角度讲,所设计掩码方法能够实现SM4密码芯片执行过程中所有中间值均被掩码随机化,从而能够有效消除原始中间值与SM4密码芯片能量泄漏之间的统计依赖关系,使得能量分析攻击失效。此外,从高阶侧信道攻击的角度分析来看,所设计低熵掩码方案具有不同中间值所对应掩码值均不确定的特性。事实上,每一轮运行过程中32比特中间值均会受到随机选取32比特掩码值进行保护。因此,上述低熵掩码设计方法能够有效避免高阶侧信道攻击对SM4密码芯片带来的安全威胁。

Claims (14)

1.一种用于保护SM4密码芯片的低熵掩码泄露防护方法,其步骤为:
1)选取一长为16字节的掩码,将该掩码分为四组,每组掩码为四个字节,即32比特;将每一组掩码Mi划分为一四元数组(Mi0、Mi1、Mi2、Mi3),其中,每个元素的掩码值为8比特,Mi0为第i组掩码Mi的第一个元素;
2)对S盒进行预计算得到16个新型S盒,记作Snew,存储该16个Snew;其中预计算方法为:将各组掩码中的元素作为S盒的输入,其中,S盒的输入掩码为Mi中元素Mij,则S盒输出掩码为Mi+1中元素M(i+1)j,i与j的取值均为0到3,当i+1的值为4时,令i+1为0;
3)轮函数利用步骤1)的四组掩码对待保护数据进行掩码更新;其中,每一轮加密时首先确定四组掩码的使用顺序;然后按照确定的顺序选取掩码并根据当前所用掩码对应的Snew对待保护数据进行掩码更新;每一轮确定的四组掩码的序列所对应掩码与上一轮经过轮函数加密后中间值所对应掩码任何位置均不重复;
4)当完成最后一轮掩码更新后,去除最后一轮掩码更新所得数据中最后一轮掩码更新所用的掩码,得到加密后的密文值。
2.如权利要求1所述的方法,其特征在于,所述掩码划分后的四组掩码M0,M1,M2,M3满足关系式
Figure FDA0002584408010000011
3.如权利要求1所述的方法,其特征在于,对原S盒预计算得到的新S盒Snew与原S盒之间满足关系式
Figure FDA0002584408010000012
其中,V为待保护数据的中间值。
4.如权利要求1或2或3所述的方法,其特征在于,步骤3)中,所述轮函数为SM4算法采用轮函数;按照确定的顺序选取掩码并根据当前所用掩码对应的Snew对待保护数据进行掩码更新,每一轮更新后,上一轮后三组中间值为当前轮前三组中间值,而当前轮第四组中间值依据轮密钥信息以及上一轮后三组中间值计算得到。
5.如权利要求4所述的方法,其特征在于,令待保护数据的初始值为X=(X0,X1,X2,X3),其中X0,X1,X2,X3均为包含4字节元素的数组,当前对X进行掩码处理所使用掩码为
Figure FDA0002584408010000021
M0为掩码M顺序确定后的掩码;在轮函数加密中,依次依据M0中各元素对应的4个掩码字节值从16个新S盒Snew中选取出4个S盒进行查表操作,并对得到的输出掩码进行T线性变换;其中,第一轮加密后第1-32比特中间值对应掩码为
Figure FDA0002584408010000022
第33-64比特中间值所对应掩码为
Figure FDA0002584408010000023
第65-96比特中间值所对应掩码为
Figure FDA00025844080100000212
第97-128比特中间值所对应掩码为
Figure FDA0002584408010000024
第一轮加密后第1-32比特中间值为
Figure FDA0002584408010000025
第33-64比特中间值为
Figure FDA0002584408010000026
第65-96比特中间值为
Figure FDA00025844080100000211
第97-128比特中间值为
Figure FDA0002584408010000027
其中,
Figure FDA0002584408010000028
为对掩码
Figure FDA00025844080100000210
进行T线性变换后的更新值,
Figure FDA0002584408010000029
RK1为SM4密码算法第一轮所使用轮密钥,其长度为32比特。
6.如权利要求1或2或3所述的方法,其特征在于,所述掩码为布尔掩码。
7.如权利要求1所述的方法,其特征在于,使用置换函数确定四组掩码的使用顺序。
8.一种用于实现保护SM4密码芯片的低熵掩码泄漏防护的系统,所述系统包含:
掩码模块,所述掩码模块将选取的总长度为16字节的四组掩码M0,M1,M2,M3输出至轮函数模块;所述每一组掩码Mi划分为一四元数组<Mi0、Mi1、Mi2、Mi3>,所述Mi0为第i组掩码Mi的第一个元素,其中,0≤i≤3,i为自然数;
新型S盒模块,所述新型S盒模块的输入为各组掩码中的元素,新型S盒的输入掩码为Mi中的Mij时,新型S盒的输出掩码为Mi+1中的元素M(i+1)j,所述新型S盒模块的新型S盒数量为16个,其中,0≤i≤3,0≤j≤3,i以及j均为自然数,当i+1的值为4时,令i+1为0;
轮函数模块,所述轮函数模块在每一轮加密时,先确定四组掩码的使用顺序,按照确定的顺序选取掩码,并根据选取掩码确定所使用的新型S盒,使用新型S盒对待保护数据进行掩码更新;所述轮函数模块确定每一轮掩码的使用顺序与上一轮经过轮函数加密后中间值所对应掩码任何位置均不重复;
密文输出模块,所述密文输出模块用于去除最后一轮掩码更新所得数据中最后一轮掩码更新所用的掩码,得到最终密文。
9.如权利要求8所述的系统,其特征在于,所述掩码模块的四组掩码M0,M1,M2,M3满足关系式
Figure FDA0002584408010000031
10.如权利要求8所述的系统,其特征在于,所述新型S盒模块中新型S盒Snew与原S盒之间满足关系式
Figure FDA0002584408010000032
其中,V为待保护数据的中间值。
11.如权利要求8所述的系统,其特征在于,所述轮函数模块对SM4算法采用轮函数,按照确定的顺序选取掩码并根据当前所用掩码对应的Snew对待保护数据进行掩码更新,每一轮更新后,上一轮后三组中间值为当前轮前三组中间值,而当前轮第四组中间值依据轮密钥信息以及上一轮后三组中间值计算得到。
12.如权利要求8所述的系统,其特征在于,所述轮函数模块中,令待保护数据的初始值为X=(X0,X1,X2,X3),其中X0,X1,X2,X3均为包含4字节元素的数组,当前对X进行掩码处理所使用掩码为
Figure FDA0002584408010000041
M0为掩码M顺序确定后的掩码;在轮函数加密中,依次依据M0中各元素对应的4个掩码字节值从16个新S盒Snew中选取出4个S盒进行查表操作,并对得到的输出掩码进行T线性变换;其中,第一轮加密后第1-32比特中间值对应掩码为
Figure FDA0002584408010000049
第33-64比特中间值所对应掩码为
Figure FDA0002584408010000047
第65-96比特中间值所对应掩码为
Figure FDA0002584408010000042
第97-128比特中间值所对应掩码为
Figure FDA0002584408010000048
第一轮加密后第1-32比特中间值为
Figure FDA0002584408010000043
第33-64比特中间值为
Figure FDA00025844080100000410
第65-96比特中间值为
Figure FDA0002584408010000044
第97-128比特中间值为
Figure FDA00025844080100000411
其中,
Figure FDA0002584408010000045
为对掩码
Figure FDA0002584408010000046
进行T线性变换后的更新值,
Figure FDA00025844080100000412
RK1为SM4密码算法第一轮所使用轮密钥,其长度为32比特。
13.如权利要求8所述的系统,其特征在于,所述掩码模块使用的掩码为布尔掩码。
14.如权利要求8所述的系统,其特征在于,所述轮函数模块使用置换函数确定四组掩码的使用顺序。
CN201710401417.2A 2017-05-31 2017-05-31 一种用于保护sm4密码芯片的低熵掩码泄露防护方法及其实现系统 Active CN107231229B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710401417.2A CN107231229B (zh) 2017-05-31 2017-05-31 一种用于保护sm4密码芯片的低熵掩码泄露防护方法及其实现系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710401417.2A CN107231229B (zh) 2017-05-31 2017-05-31 一种用于保护sm4密码芯片的低熵掩码泄露防护方法及其实现系统

Publications (2)

Publication Number Publication Date
CN107231229A CN107231229A (zh) 2017-10-03
CN107231229B true CN107231229B (zh) 2020-10-27

Family

ID=59933859

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710401417.2A Active CN107231229B (zh) 2017-05-31 2017-05-31 一种用于保护sm4密码芯片的低熵掩码泄露防护方法及其实现系统

Country Status (1)

Country Link
CN (1) CN107231229B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112291054B (zh) * 2020-11-26 2022-06-14 南京农业大学 一种针对低熵掩码方案的侧信道泄露检测方法
CN112787800B (zh) * 2021-01-19 2022-06-17 清华大学 基于二阶掩码的加解密方法、装置、电子设备及存储介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103795527A (zh) * 2014-03-03 2014-05-14 重庆大学 防止基于功耗分析攻击aes算法的软件掩码防护方案
CN104333447A (zh) * 2014-11-26 2015-02-04 上海爱信诺航芯电子科技有限公司 一种可抵御能量分析攻击的sm4方法
CN104639502A (zh) * 2013-11-08 2015-05-20 国家电网公司 一种sm4算法抗能量攻击的掩码方法及装置
CN105897400A (zh) * 2016-06-20 2016-08-24 北京华大信安科技有限公司 一种sm4算法的掩码方法及装置
CN106357380A (zh) * 2016-10-11 2017-01-25 中国信息安全测评中心 Sm4算法的掩码方法及装置

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7848514B2 (en) * 2004-05-24 2010-12-07 Research In Motion Limited Table masking for resistance to power analysis attacks
US7970129B2 (en) * 2007-04-19 2011-06-28 Spansion Llc Selection of a lookup table with data masked with a combination of an additive and multiplicative mask

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104639502A (zh) * 2013-11-08 2015-05-20 国家电网公司 一种sm4算法抗能量攻击的掩码方法及装置
CN103795527A (zh) * 2014-03-03 2014-05-14 重庆大学 防止基于功耗分析攻击aes算法的软件掩码防护方案
CN104333447A (zh) * 2014-11-26 2015-02-04 上海爱信诺航芯电子科技有限公司 一种可抵御能量分析攻击的sm4方法
CN105897400A (zh) * 2016-06-20 2016-08-24 北京华大信安科技有限公司 一种sm4算法的掩码方法及装置
CN106357380A (zh) * 2016-10-11 2017-01-25 中国信息安全测评中心 Sm4算法的掩码方法及装置

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
循环掩码型AES密码芯片的相关性功耗攻击;刘飚;《华中科技大学学报(自然科学版)》;20141130;第42卷(第11期);第112-116页 *
抗侧信道攻击的SM4多路径乘法掩码方法;谭锐能等;《计算机工程》;20140531;第40卷(第5期);第103-114页 *

Also Published As

Publication number Publication date
CN107231229A (zh) 2017-10-03

Similar Documents

Publication Publication Date Title
CN107005404B (zh) 实现密码算法的可执行的白盒掩码实施的处理器装置
EP1421461B1 (en) Space-efficient, Side-channel Attack Resistant Table Lookups
US8855298B2 (en) Table lookup operation on masked data
US8553877B2 (en) Substitution table masking for cryptographic processes
CN103560880B (zh) 用于生成基于密码的消息认证码的方法
CN110278072A (zh) 一种16轮sm4-128/128白盒密码实现方法
CN110071794B (zh) 一种基于aes算法的信息加密方法、系统及相关组件
CN108809626A (zh) 一种白盒sm4密码算法方案与系统
US20120254625A1 (en) Protecting states of a cryptographic process using group automorphisms
KR102169369B1 (ko) 경량 블록 암호화에 대한 1차 부채널 공격에 대응하는 방법 및 이를 이용한 장치
CN113940028A (zh) 实现白盒密码的方法和装置
CN104184579A (zh) 基于双伪随机变换的轻量级分组密码vh算法
CN114549266B (zh) 基于dna置换规则和混沌系统的图像加密方法
CN111555862A (zh) 基于掩码保护的随机冗余轮函数的白盒aes实现方法
CN107231229B (zh) 一种用于保护sm4密码芯片的低熵掩码泄露防护方法及其实现系统
CN108449171A (zh) 一种轻量级杂凑密码摘要生成方法
CN106330424A (zh) 基于sm3算法的密码模块的防攻击方法及装置
CN114598444A (zh) 基于sm4和动态s盒的音频加密方法
CN107493164B (zh) 一种基于混沌系统的des加密方法和系统
EP2363974A1 (en) Variable table masking for cryptographic processes
EP3286869B1 (en) High-speed aes with transformed keys
CN105162580A (zh) 基于ofb模式和分组密码vh的轻量级流密码技术vho
CN110247754B (zh) 一种分组密码fbc的实现方法及装置
CN109714152B (zh) 基于大型仿射编码的白盒aes加密方法
KR102157219B1 (ko) 경량 블록 암호화에 대한 고차 부채널 공격에 대응하는 방법 및 이를 이용한 장치

Legal Events

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