CN107231229B - 一种用于保护sm4密码芯片的低熵掩码泄露防护方法及其实现系统 - Google Patents
一种用于保护sm4密码芯片的低熵掩码泄露防护方法及其实现系统 Download PDFInfo
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 56
- 230000009466 transformation Effects 0.000 claims description 18
- 230000000873 masking effect Effects 0.000 claims description 12
- 238000004364 calculation method Methods 0.000 claims description 11
- 238000003491 array Methods 0.000 claims description 8
- 238000004458 analytical method Methods 0.000 description 6
- 238000006243 chemical reaction Methods 0.000 description 4
- 241001505100 Succisa pratensis Species 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 230000008030 elimination Effects 0.000 description 2
- 238000003379 elimination reaction Methods 0.000 description 2
- 230000007547 defect Effects 0.000 description 1
- 230000007123 defense Effects 0.000 description 1
- 238000006386 neutralization reaction Methods 0.000 description 1
- 230000008092 positive effect Effects 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic 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/0618—Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/602—Providing cryptographic facilities or services
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic 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/0618—Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
- H04L9/0631—Substitution 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密码芯片的低熵掩码泄露防护方法及其实现系统。本发明所提出泄露防护方法仅需使用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)当完成最后一轮掩码更新后,去除最后一轮掩码更新所得数据中最后一轮掩码更新所用的掩码,得到加密后的密文值。
进一步的,步骤3)中,所述轮函数为SM4算法采用轮函数;按照确定的顺序选取掩码并根据当前所用掩码对应的Snew对待保护数据进行掩码更新,每一轮更新后,上一轮后三组中间值为当前轮前三组中间值,而当前轮第四组中间值依据轮密钥信息以及上一轮后三组中间值计算得到。
进一步的,令待保护数据的初始值为X=(X0,X1,X2,X3),其中X0,X1,X2,X3均为包含4字节元素的数组,当前对X进行掩码处理所使用掩码为M0为掩码M顺序确定后的掩码;在轮函数加密中,依次依据M0中各元素对应的4个掩码字节值从16个新S盒Snew中选取出4个S盒进行查表操作,并对得到的输出掩码进行T线性变换;其中,第一轮加密后第1-32比特中间值对应掩码为第33-64比特中间值所对应掩码为第65-96比特中间值所对应掩码为第97-128比特中间值所对应掩码为第一轮加密后第1-32比特中间值为第33-64比特中间值为第65-96比特中间值为第97-128比特中间值为其中,为对掩码进行T线性变换后的更新值,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盒对待保护数据进行掩码更新;
密文输出模块,所述密文输出模块用于去除最后一轮掩码更新所得数据中最后一轮掩码更新所用的掩码,得到最终密文;
进一步的,所述轮函数模块对SM4算法采用轮函数,按照确定的顺序选取掩码并根据当前所用掩码对应的Snew对待保护数据进行掩码更新,每一轮更新后,上一轮后三组中间值为当前轮前三组中间值,而当前轮第四组中间值依据轮密钥信息以及上一轮后三组中间值计算得到;
进一步的,所述轮函数模块中,令待保护数据的初始值为X=(X0,X1,X2,X3),其中X0,X1,X2,X3均为包含4字节元素的数组,当前对X进行掩码处理所使用掩码为M0为掩码M顺序确定后的掩码;在轮函数加密中,依次依据M0中各元素对应的4个掩码字节值从16个新S盒Snew中选取出4个S盒进行查表操作,并对得到的输出掩码进行T线性变换;其中,第一轮加密后第1-32比特中间值对应掩码为第33-64比特中间值所对应掩码为第65-96比特中间值所对应掩码为第97-128比特中间值所对应掩码为第一轮加密后第1-32比特中间值为第33-64比特中间值为第65-96比特中间值为第97-128比特中间值为其中,为对掩码进行T线性变换后的更新值,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满足关系式该约束条件能够有效降低掩码追踪难度。
低熵掩码方法对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,那么有其中,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)
表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)
表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)
表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)
表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)
表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字节。对明文进行掩码处理所使用掩码为需要说明的是,M0为使用随机置换函数P()对掩码M置换后掩码。对明文随机化处理后,需要进行轮函数加密,轮函数加密详见图2。在轮函数加密中,需要依据个掩码字节值从16个新生成S盒中选取出4个S盒进行查表操作。具体要求为,所选取的4个S盒的输入掩码为中4个掩码字节值。考虑到4组掩码值的异或值为零,4个S盒输入掩码实际上为四个S盒输出掩码为将经过第一轮S盒运算之后输出掩码记作这里为M0中与相邻的掩码。需要经过T线性变换。需要说明的是,T线性变换是SM4密码算法每一轮的轮函数变换中均涉及到的操作。SM4密码算法总共执行32轮,对于第i,i∈[1,32]轮S盒输出掩码(记作),也需要经过T线性变换。可将第一轮T线性变换后掩码记作随后,由图3可见,需要与明文第1-32比特所对应掩码进行异或,从而得到第一轮加密后第97-128比特中间值所对应掩码此外,第一轮加密后第1-32比特中间值对应掩码为第一轮加密后第33-64比特中间值所对应掩码为第一轮加密后第65-96比特中间值所对应掩码为第一轮加密后第1-32比特中间值为第一轮加密后第33-64比特中间值为第一轮加密后第65-96比特中间值为最后,第一轮加密后第97-128比特中间值为其中,Snew为上述从16个新生成S盒所选取4个S盒构成的S盒向量,RK1为SM4密码算法第一轮所使用轮密钥,其长度为32比特。由于X1,X2,X3(包括X0)均为32比特值,长度为32比特,需要将32比特异或值按序分成四个字节,每个字节通过Snew中对应的S盒,查表得到相应的输出值,进而组成得到经过Snew计算后的32比特中间值。随后,将经过Snew计算后的32比特中间值按序分成四个字节,每个字节经过T变换得到相应的输出字节。最后,将经过T变换得到的四个输出字节按序组成32比特值后与X0异或得到X4,即
每一次经过轮函数加密后,都需要对掩码进行调整。掩码调整时,首先须调用置换函数生成随机置换序列。为了确保不会产生掩码消除的情形,需要确保生成的随机置换序列所对应掩码与上一轮经过轮函数加密后中间值所对应掩码任何位置均不重复。为此,需要判断生成的随机序列所对应掩码与经过轮函数加密后中间值所对应掩码是否有重复。如果有,需要重新执行置换函数,并重新进行条件判断,直至生成满足条件的随机序列。需要说明的是,所设计低熵掩码防御对策并不要求32轮加密过程中随机生成掩码顺序均不同,只要相邻两轮加密过程中随机生成掩码顺序不同,即可避免由于掩码消除而导致的原始中间值暴露的问题。产生满足条件的随机置换序列后,可按照随机置换序列选取掩码对经过轮函数加密后的中间值进行掩码更新。令第一轮轮变换后第1-32比特中间值对应更新掩码为第33-64比特中间值对应掩码为第65-96比特中间值对应掩码为第97-128比特中间值对应掩码为那么异或掩码后,第一轮变换后中间值第1-32比特值更新为第33-64比特值更新为第65-96比特值更新为第97-128比特值更新为可以看到,经过第一轮变换后,明文中X1,X2,X3为第一轮变换后前三组中间值,而X4为依据X1,X2,X3以及RK1所生成新的中间值。事实上,原始SM4加密算法的特点在于经过每一轮加密后,上一轮后三组中间值为当前轮前三组中间值,而当前轮第四组中间值依据轮密钥信息以及上一轮后三组中间值计算得到。经过第一轮变换后,需要通过掩码异或进一步实施掩码更新,从而得到掩码更新后的中间值。具体来讲,进一步更新后,第一轮中间值第1-32比特值为第33-64比特值为第65-96比特值为第97-128比特值为可以看到,经过掩码追踪后,依然保持了四组掩码异或值为零的约束条件,从而为下一轮加密与掩码追踪提供了相同的条件,便利了整个掩码方案的顺序执行。
其次,对每一轮加密过程都应用类似的轮函数加密过程与掩码追踪过程。当完成32轮加密过程后,应该得到第32轮中间值第1-32比特值为第33-64比特值为第65-96比特值为第97-128比特值为然后,需要去除第32轮掩码,得到加密后的密文值,这需要将与进行异或,将与进行异或,将与进行异或,将与进行异或,从而得到加密密文(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.明文随机化处理:
b.轮变换与掩码追踪:
For flag=1:32
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,所述密文输出模块用于去除最后一轮掩码更新所得数据中最后一轮掩码更新所用的掩码,得到最终密文;
进一步的,所述轮函数模块对SM4算法采用轮函数,按照确定的顺序选取掩码并根据当前所用掩码对应的Snew对待保护数据进行掩码更新,每一轮更新后,上一轮后三组中间值为当前轮前三组中间值,而当前轮第四组中间值依据轮密钥信息以及上一轮后三组中间值计算得到;
进一步的,所述轮函数模块中,令待保护数据的初始值为X=(X0,X1,X2,X3),其中X0,X1,X2,X3均为包含4字节元素的数组,当前对X进行掩码处理所使用掩码为M0为掩码M顺序确定后的掩码;在轮函数加密中,依次依据M0中各元素对应的4个掩码字节值从16个新S盒Snew中选取出4个S盒进行查表操作,并对得到的输出掩码进行T线性变换;其中,第一轮加密后第1-32比特中间值对应掩码为第33-64比特中间值所对应掩码为第65-96比特中间值所对应掩码为第97-128比特中间值所对应掩码为第一轮加密后第1-32比特中间值为第33-64比特中间值为第65-96比特中间值为第97-128比特中间值为其中,为对掩码进行T线性变换后的更新值,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)当完成最后一轮掩码更新后,去除最后一轮掩码更新所得数据中最后一轮掩码更新所用的掩码,得到加密后的密文值。
4.如权利要求1或2或3所述的方法,其特征在于,步骤3)中,所述轮函数为SM4算法采用轮函数;按照确定的顺序选取掩码并根据当前所用掩码对应的Snew对待保护数据进行掩码更新,每一轮更新后,上一轮后三组中间值为当前轮前三组中间值,而当前轮第四组中间值依据轮密钥信息以及上一轮后三组中间值计算得到。
5.如权利要求4所述的方法,其特征在于,令待保护数据的初始值为X=(X0,X1,X2,X3),其中X0,X1,X2,X3均为包含4字节元素的数组,当前对X进行掩码处理所使用掩码为M0为掩码M顺序确定后的掩码;在轮函数加密中,依次依据M0中各元素对应的4个掩码字节值从16个新S盒Snew中选取出4个S盒进行查表操作,并对得到的输出掩码进行T线性变换;其中,第一轮加密后第1-32比特中间值对应掩码为第33-64比特中间值所对应掩码为第65-96比特中间值所对应掩码为第97-128比特中间值所对应掩码为第一轮加密后第1-32比特中间值为第33-64比特中间值为第65-96比特中间值为第97-128比特中间值为其中,为对掩码进行T线性变换后的更新值,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盒对待保护数据进行掩码更新;所述轮函数模块确定每一轮掩码的使用顺序与上一轮经过轮函数加密后中间值所对应掩码任何位置均不重复;
密文输出模块,所述密文输出模块用于去除最后一轮掩码更新所得数据中最后一轮掩码更新所用的掩码,得到最终密文。
11.如权利要求8所述的系统,其特征在于,所述轮函数模块对SM4算法采用轮函数,按照确定的顺序选取掩码并根据当前所用掩码对应的Snew对待保护数据进行掩码更新,每一轮更新后,上一轮后三组中间值为当前轮前三组中间值,而当前轮第四组中间值依据轮密钥信息以及上一轮后三组中间值计算得到。
12.如权利要求8所述的系统,其特征在于,所述轮函数模块中,令待保护数据的初始值为X=(X0,X1,X2,X3),其中X0,X1,X2,X3均为包含4字节元素的数组,当前对X进行掩码处理所使用掩码为M0为掩码M顺序确定后的掩码;在轮函数加密中,依次依据M0中各元素对应的4个掩码字节值从16个新S盒Snew中选取出4个S盒进行查表操作,并对得到的输出掩码进行T线性变换;其中,第一轮加密后第1-32比特中间值对应掩码为第33-64比特中间值所对应掩码为第65-96比特中间值所对应掩码为第97-128比特中间值所对应掩码为第一轮加密后第1-32比特中间值为第33-64比特中间值为第65-96比特中间值为第97-128比特中间值为其中,为对掩码进行T线性变换后的更新值,RK1为SM4密码算法第一轮所使用轮密钥,其长度为32比特。
13.如权利要求8所述的系统,其特征在于,所述掩码模块使用的掩码为布尔掩码。
14.如权利要求8所述的系统,其特征在于,所述轮函数模块使用置换函数确定四组掩码的使用顺序。
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)
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)
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)
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 |
-
2017
- 2017-05-31 CN CN201710401417.2A patent/CN107231229B/zh active Active
Patent Citations (5)
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)
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 |