admin管理员组文章数量:1530845
2024年4月23日发(作者:)
密码学报
ISSN
2095-7025
CN
10-1195/TN
Journal
of
Cryptologic
Research,
2020,
7(6):
799-811
©
《密码学报
》
编辑部版权所有.
E-mail:
***************.cn
http:/
/
Tel/Fax:
+86-10-82789618
SM4
算法快速软件实现
*
张觌气
I
华气张习肚王肌刘建伟
3
1.
北京航空航天大学软件开发环境国家重点实验室
,
北京
100191
2.
密码科学技术国家重点实验室
,
北京
100878
3.
北京航空航天大学空天网络安全工业与信息化部重点实验室
,
北京
100191
4.
北京卫星信息工程研究所
,
北京
100086
通信作者
:
郭华
,
E-mail:
*************.cn;
张习勇
,
E-mail:
************************
摘要
:
SM4
是对称分组密码国家标准•加解密计算效率是衡量算法实现性能的重要指标
,
而目前关于
SM4
软件实现方法方面的研究不多.利用比特切片技术
,
结合支持单指令多数据
(
SIMD)
的
AVX2
指令
集,
本文提出了一种
SM4
算法的快速软件优化实现方法
,
使用
256
位的
YMM
奇存器实现了
SM4
算法
的
256
分组数据并行加解密.首先基于已有的选择函数构造了新的选择函数
,
之后改进了搜索算法
,
基于
新的选择函数和改进的搜索算法化简了
S
盒的逻辑表达式
,将实现逻辑表达式所需的逻辑门电路数量由
3000(
最简与或式)降至
497.
在
Intel
Core
I7-7700HQ
(Kabylake)
@2.80
GHz
处理器上
,
实现速度达到
了
2580
Mbps,
同公开文献中的最好结果
1795
Mbps
(Intel
Core
i7-5500U
(Broadwell-U)
@2.40
GHz)
相比
,
实现效率提高了
43%.
基于比特切片技术的软件实现优化方法无需内存或高速缓存查表
,
因此该方
法可抵抗缓存-计时侧信道攻击
,从而安全性得到了提升.本文提出的优化方法具有可扩展性,
不仅适用于
在
X86
平台上借助拓展指令集
AVX2
实现
,
还可利用
RISC
指令集在资源受限
,
安全性要求高的
ARM
等嵌入式平台上实现.此外
,
新的选择函数和搜索算法具有通用性
,可用于其它一般逻辑函数的化简.
关键词
:
SM4
算法
;
软件优化实现
;
比特切片
;
SIMD
技术
中图分类号
:
TP309.7
文献标识码
:
A
DOI:
10.13868力
..000407
中文引用格式
:
张笑从
,
郭华
,
张习勇
,
王闯
,
刘建伟.
SM4
算法快速软件实现
[J].
密码学报
,
2020,
7(6):
799-811.
[D0I
:
10.13868
/.000407]
英文引用格式:
ZHANG
X
C,
GUO
H,
ZHANG
X
Y,
WANG
C,
LIU J
W.
Fast
software
implementation
of
SM4[J].
Journal
of
Cryptologic
Research,
2020,
7(6):
799-811.
[DOI:
10.13868
/.
000407]
Fast
Software
Implementation
of
SM4
ZHANG
Xiao-Cong
b3
,
GUO
Hua
b2
,
ZHANG
Xi-Yong
4
,
WANG
Chuang
1
,
LIU
Jian-Wei
3
1.
State
Key
Laboratory
of
Software
Development
Environment,
Beihang
University,
Beijing
100191,
China
2.
State
Key
Laboratory
of
Cryptology,
Beijing
100878,
China
*
基金项目:
北京市自然科学基金
(4202037);
CCF-
腾讯科研基金
(CCF-Tencent
RAGR20200123);
国家重点研发计划
(2017YFB1400700);
科学研究与研究生培养共建项目(
JD100060630);
国家级大学生创新创业训练计划
(2,
2)
Foundation:
Natural
Science
Foundation
of
Beijing
Municipality
(4202037);
CCF-Tencent
Open
Fund
(CCF-Tencent
RAGR
20200123);
National
Key
Research
and
Development
Program
of
China
(2017YFB1400700);
Co-Funding
Project
of
Beijing
Municipal
Education
Commission
for
Scientific
Research
and
Graduates
Training
(JD
100060630);
National
Students
1
Innovation
and
Entrepreneurship
Training
Program
(2,
2)
收稿日期
:
2019-11-13
定稿日期
:
2020-01-13
800
Journal
of
Cryptologic
Research
密码学报
Vol.
7,
No.
6,
Dec.
2020
3. Key
Laboratory
of
Aerospace
Network
Security
(Ministry
of
Industry
and
Information
Technology),
Beihang
University,
Beijing
100191,
China
4.
Beijing
Institute
of
Satellite
Information
Engineering,
Beijing
100086,
China
Corresponding
author:
GUO
Hua,
E-mail:
*************.cn
;
ZHANG
Xi-Yong,
E-mail:
xiyongzhang@hotm-
Abstract:
The SM4
algoiithm
is
China's
national
standard
of
symmetric
block
cipher,
and
its
effi
ciency
is
one
of
the
most
important
features.
So
far,
insufficient
work
has
been
done
on
fast
software
implementation
of
SM4
algorithm.
Exploiting
bit-slicing
technique
and
SIMD
(single
instruction
mul
tiple
data)
instruction
set
AVX2,
this
paper
presents
a
fast
implementation
of
SM4
algorithm
which
can
process
256
blocks
in
parallel
via
256
bits
YMM
registers.
Firstly,
a
new
selection
function
is
constructed
based
on
existing
ones.
Then,
the
logic
circuit
generating
algorithm
corresponding
to
the
selection
function
is
improved.
Furthermore,
the
number
of
gates
of
the
S
box
is
reduced
from
3000
to
497.
Using
an
Intel
Core
i7-7700HQ(Kabylake)@2.80
GHz
processor,
the
software
performance
is
2580
Mbps,
43%
ahead
of
SM4's
benchmark
on
software
implementation
which
is
1795
Mbps
(Intel
Core
i7-5500U
(Broadwell-U)
@2.40
GHz).
Bit-sliced
implementation
does
not
require
to
store
a
table
in
memory
or
in
cache,
hence
it
is
immune
to
side
channel
attacks
such
as
cache
attack
and
timing
attack.
The
improved
method
presented
in
this
paper
can
be
implemented
on
various
computing
platforms,
which
means
that
it
is
suitable
to
X86
architecture
with
extended
instruction
set
AVX2,
and
is
also
suitable
to
embedded
systems
with
RISC
instructions
and
limited
resource.
Note
that
the
improved
selection
function
and
the
improved
logic
circuit
generating
algorithm
are
a
generic
approach,
which
can
be
used
to
the
reduction
of
general
logical
functions.
Key
words:
SM4;
software
implementation
:
bit
slicing;
SIMD
1
引言
SM4
分组密码算法⑴是我国自主设计的对称分组密码
,为众多信息系统提供安全、
完整的数据加密
方案.
SM4
算法的高效软件实现为我国应用在安全产品(如
IPSec
、
VPN
、
SSL
、
TLS
等)上的密码算法由
国际标准替换为国家标准提供了强有力的支撑
,
为
SM4
算法广泛用于政府办公
、
公安
、
银行
、
税务
、
电力
等自主可控要求高的信息系统提供了可靠的保障.目前关于
SM4
算法的软件优化实现方面的相关工作不
多
,
多使用查表的方法何
,
但由于代替表规模相对较大
,
CPU
在做查表操作时
,
表中数据在内存和
cache
之间频繁对换导致查表延时较大
,
且不利于高效并行加
/
解密多组消息.此外
,
查表法无法抵抗缓存-计时侧
信道攻击
,
因此在一定程度上制约了
SM4
的软件实现性能和安全性.
1996
年
Intel
推出单指令多数据的
SSE
(Streaming
SIMD
Extensions)
指令集后
,
Biham
同于
1997
年提出一种新的对称分组密码快速软件实现方法
,
核心思想是将处理器视为以
1
比特为单位的单指令多
数据处理器
,随后被
Matthew
Kwan
称为比特切片
(bit
slicing)⑷
.
比特切片方法在
64
位平台上实现了
64
组
DES
消息的并行加解密
,
将逻辑门个数从理论上需要的
132
个每比特输出优化到
10()
个每比特输
岀.之后研究者们对门函数个数进一步进行了优化
,
使得标准逻辑门(与
、
或
、
非
、
异或)和非标准逻辑门
均达到了平均
50+
个每比特输出.
2011
年
Roman
Rusakov
同又将门函数的个数降至平均
44
个逻辑门
每比特输岀.比特切片方法可大大提高实现效率
,
也可用于搜索密钥
,对
RISC
和
CISC
的指令集平台均
适用
,
且具有更好的安全性.
为了提高软件实现速度
,国内外许多学者尝试将采用
SIMD
(Single
Instruction
Multiple
Dada,
单
指令多数据)技术用于密码算法的软件实现.
A.
Adomnicai
和
T.
Peyrin
何给出改进的比特切片方法
“
Fixslicing
”
,
在
ARM
和
RISC-V
平台实现了
AES.
2012
年
Intel
推出高级向量指令集
(Advanced
Vector
Extensions,AVX)
后
,
众多学者开始研究如何利用
AVX
指令集加速对称分组密码算法的实现速度
,
尤其
是轻量级密码算法的实现速度.
Seiichi
Matsuda
和
Shiho
Moriai
卩
】
利用
AVX
指令集加速切片实现
,
给
张笑从等:
SM4
算法快速软件实现
801
出了轻量级密码算法面向云端的实现
,
将
SSE
指令与比特切片方法结合并应用到
PRESENT/Piccolo,
使
两者的实现吞吐量分别达到
4.3
cycle/byte
和
4.57
cycle/byte.
2013
年,
Neves
和
Aumasson
同将
AVX2
指令应用到
SHA-3
候选算法
BLAKE
上并提高了其实现性能.最近
,
郎欢等何利用
X86
架构下的
SIMD
指令给出了高效的
SM4
实现
,
他们釆用
C
语言调用
AVX2
指令接口方式实现
,
在并行查表的基础上
,
给
出了两种不同的方法.
2014
年
Kostas
Papapagiannopoulos
等人口°
】
将比特切片方法修改为
nibble
切片
方法
,
并减少了访问内存
,
在
AVR
处理器上给出了高效实现.
此外
,
研究者们将比特切片方法和其它方法结合
,
对
SM4
算法进行软件实现
,
也取得了较好的效果.
SM4
算法公布不久
,
Fen
Liu
等
【
切破解了
SM4
算法
S
盒的结构
,
公布了
S
盒的代数表达式及具体参数
值.之后,
Hao
Liang
等问基于已破解的
SM4
中
S
盒结构
,
提出了基于复合域的
SM4
实现方法
,
将
S
盒的有限域求逆运算变换到复合域中实现
,
并在
FPGA
上进行验证
.
Jingbin
Zhang
等问提出了
SM4
在复合域中的软件实现
,
使用
X86
架构普通指令实现
,
速率达到
20
Mbps.
最近
,
A.
Eldosouky
和
W.
Saad")
针对物联网应用的效率
、
安全需求改进了轻量级密码算法
LED
的比特切片方法
,
并在嵌入式处
理器
ARM
Cortex-A53
进行了实现验证.
O.
Hajihassani
等
1151
利用比特切片方法进一步提高了高级加
密算法
AES
的加解密吞吐率.总的来说
,在国密标准
SM4
算法的软件优化实现方法取得了一些进展
,
但
和其他对称加密算法如
AES
相比
,
SM4
的软件优化实现仍需进一步研究.
本文利用比特切片方法
,
结合支持单指令多数据
(
SIMD)
的
AVX2
指令集
,
提出了一种
SM4
算法的
快速软件优化实现方法
,
使用
256
位的
YMM
寄存器实现了
SM4
算法的
256
分组数据并行加解密.该
方法首先对待加密的明文消息通过
SIMD
版本的数据编排算法进行预处理
;
之后提出了一种改进的化简
逻辑表达式的新方法
,
将实现逻辑表达式所需的逻辑门电路数量由
3000
降至
497;
最后使用反编排算法
得到密文.在
Intel
Core
i7-7700HQ(Kabylake)@2.80
GHz
处理器上
,
结合
x86
平台拓展指令集
AVX2
和上述方法对
SM4
算法进行软件实现
,
实现速度达到了
2580
Mbps.
相比于传统的查表实现
(Intel
Core
i7-5500U
(Broadwell-U)
@2.40
GHz)
、
未优化的比特切片实现
(Intel
Core
i7-5500U
(Broadwell-U)
@2.40
GHz)
、
SM4
软件优化实现公开文献的最佳结果
[9]
(Intel
Core
i7-550()U
(Broadwell-U)
@2.40
GHz),
新
方法的实现效率分别提升了
1.8
倍
、
2.6
倍和
43%.
综上所述
,
本文主要贡献如下
:
(1)
提出了一种通用的对称分组密码算法的软件优化实现方法
,
该方法通用于所有对称加密算法的快
速软件实现.
(2)
提出的基于比特切片的软件优化实现方法无需内存或高速缓存查表
,
因此可抵抗缓存-计时侧信
道攻击
"1,
从而安全性得到了提升.
(3)
提出的优化方法具有较强的通用性.该方法可用于所有对称加密算法的软件优化实现
,
并适用于
不同的软件架构
:
在
CISC
架构平台如
X86
适合借助
SSE
、
AVX2
、
AVX512
等拓展指令集实
现
,
在
RISC
架构
(
ARM,RISC-V)
的平台可使用普通指令集实现.
(4)
新的选择函数和搜索算法具有通用性
,
可用于一般逻辑函数的化简.
本文其余内容组织如下
:
第
2
节介绍
SM4
算法及
AVX2
指令
;
第
3
节介绍新的选择函数及基于选择
函数的改进的搜索算法
;
第
4
节介绍
SM4
的基于比特切片和
AVX
指令的软件优化实现方法
;第
5
节介
绍实验结果
;第
6
节总结全文.
2
预备知识
2.1
SM4
简介
SM4
算法釆用非平衡
Feistel
结构
"1,
分组长度和密钥长度各为
128
比特
,
解密算法与加密算法结
构相同
,
区别在于轮密钥使用顺序相反.下面首先介绍
SM4
的轮函数.
设明文输入为
(Xo,X
“
X2,X3
)
6
(Z
护
)4,
密文输出为
(
Yo,m,
⑹
€
(Z
跻丫,
轮密钥为
rk
:
6
Zf
2
,
1
=
0,1,
••-
,31.
SM4
加密算法的轮函数
F
如图
1
所示.
轮函数
F
每次迭代的输入为
(
Xi,X,+
l,X
;
+2,X<+3
)
,
输出为
(
X,
+
l,X,+2,X;+3,
尢
+4
)
,
尢+
4
的计
算方法如下
:
802
Journal
of
Cryptologic
Research
密码学报
Vol.
7,
No.
6,
Dec.
2020
X
:
+4
=
F(Xi,
Xi+i,
Xi+2,
X
:
+3
)
=
X
:
+
T(Xi+i
+
Xi+2
+
X+3
+
rki)
其中
,
rk.
为当前迭代的轮密钥
,
T
为一个
Z/2
t
Zf
的可逆变换.
T
为一个
Zf
t
Z
舁的可逆变换
,
由非线性变换
T
和线性变换
L
复合而成
,
即
T(
・
)=
L(r(-)).
非线性变换
t
由
4
个并行的
S
盒构成.设输入为
A
=
(ao,ai,a2,a3
)
€
(Z®)
4
,
输出为
B
=
(feo,&i,
&
2,
&
3
)
€
(Z
寻
)4,
贝
!
I
:
(6
()
,
bi,
&3
)
=
r(A)
=
(Sbox(ao),
Sbox(ai),
Sbox(a2
)
,
Sbox@3
)
)
对于每个
S
盒的
8
位输入
,
前
4
位作为行
,后
4
位作为列
,
输岀即为查找表中对应行列所对应的值.
S
盒
如图
2
所示.
9
D
6
2
B
9
C
E
4
4
7
6
8
1
E
D
4
A
E
E
O
1
D
D
5
8
D
O
A
8
9
1
8
9O
67
42
B3
O7
6B
24
OO
BF
AE
F6
DB
1B
C1
69
FO
E9
9A
5O
1C
A7
81
OE
46
8A
5D
E2
37
AF
31
97
7D
FE
7
6
F
4
A
9
F
C
B
2
5
E
5
7
D
2
A4
2E
45
92
88
4A
EC
C
C
2
A
9
1
C
9
F
3
7
1
3
6
9
F
O
4
9
B
8
2
D
E
B
B
A
5
O
C
3
A
E
1
B
E
E
F
O
8
7
3
6
4
58
D3
C7
34
66
FD
DD
CD
96
DQ
3
O
9
E
1
D
D
2
3
1
C
8
B
7
7
4
D
4
8
8
7
A
1
7
8
A
A
E
C
B
7
D
B
C
7
9
B
8
7
3
A
5
A
B
2
2
5
5
O
F
F
D
E
O
16
AA
3
3
8
O
8
3
F
8
2
5
4
C
A
3
A
D
C
O
O
3
1
1
2
D
6
5
7
9
B
6
4
4
5
4
D
F
5
9
E
B
2
2
3
6
F
7
9
3
2
9
F
F
D
9
7
4
B
9
E
E
A
B
C2
26
43
FA
19
4B
3B
E7
CE
3O
AB
72
41
12
O9
3E
C
28
49
ED
75
E6
7O
O1
AO
F9
F5
OD
6D
1F
B8
C5
D7
D
FB
86
CF
8F
85
56
21
C4
61
8C
53
6C
1O
E5
6E
CB
2C
O6
AC
3F
4F
9D
78
C8
15
B1
4E
5B
5A
B4
C6
39
O5
99
62
A6
A8
35
87
9E
A1
E3
6F
51
D8
BO
84
48
A.
5
B
5
6
2
7
B
7
2
9
4
3
c
o
F
7
C
o2
F2
32
3
6
A
5
c
D
o
F
1
5
F
图1
SM4
轮函数
Figure
1
Round
function
in
SM4
algorithm
图
2
SM4
代替表
Figure
2
Substitution
table
in
SM4
algorithm
L
是线性变换
,
非线性变换丁的输出是线性变换
L
的输入.设输入为
B
t
Z
沪,
输出为
C
t
Z
沪
,
则
C
=
L(B)
=
B
+
(£«2)
+
(£
«
10)
+
(£
«
18)
+
(£
«
24)
其中
,
《
代表循环左移
,
如
E
«
2
代表循环左移
2
位.
2.2
SIMD
技术及
AVX2
指令集
SIMD
(single
instruction
multiple
data)
技术可实现同一操作并行处理多组数据.目前支持
SIMD
技术的处理器厂商主要有
Intel.
AMD
、
ARM
等.目前大多数
PC
及服务器采用的是
Intel
处理器
,
而
Intel
处理器中的
SSE/AVX
指令集采用的正是
SIMD
技术.
AVX
(Advanced
Vector
Extensions)
指令
集
1181
是
256-bit
宽向量指令集
,
指令操作对象称为
YMM
的
256-bit
SIMD
寄存器.该寄存器内容分为
2
个
128-bit
lane.
AVX
指令操作对象为
lanes,
该指令不支持跨越
lanes
的操作.
AVX2
指令集是
AVX
指令集的扩展和改进
,
也称为
Haswell
New
Instructions,
支持跨越
lanes
的操
作.
AVX2
支持
8
道
32-bit
整数异或
(vpxor)
、
移位
(vpslld),
置换
(vpermd)
、
查表
(vpgatherdd)
等.
2013
年
Inter
在
22
nm
Haswell
微架构处理器上正式推出
AVX2
指令集.表
1
给出了部分
AVX2
指令,
这些指令可用于对称分组密码的切片实现.
3
构造新的选择函数及搜索算法
“
选择函数
”
119
>
是
Mattew
为比特切片方法中简化实现
S
盒逻辑门电路数量而提出的一种逻辑函数
表达形式.选择函数的思想为二分法
,
每次分得两个子函数
,
直至最终分解到的子函数可以直接实现.经
研究发现
,
对于上述特定问题选择函数形式比其他常用的标准形式优越许多.如上所述
,
对于
SM4
算法
的
S
盒
,
使用最简与或形式、
最简或与形式
、
最简与或非形式等需要逻辑门数约为
3000,
而使用己知的
3
张笑从
等
:
SM4
算法快速软件实现
803
表
1
相关
AVX2
指令总结
Table
1
Summary
of
relevant
AVX2
instructions
AVX2
指令
C/C++
接口
功能描述
4
道
64
位数据重排
4
道
64
比特数据重排
8
道
32
比特数据重排
4
道
64
比特数据重排
8
道
32
比特逻辑左移
8
道
32
比特逻辑右移
vpshufhw_mm256_shufflehi_ep
订
6
vpshuflw
vpshufd
_mm256_shufflelo_ep
订
6
_mm256_shu
田
e_epi32
_mm256_permute4x64_epi64
vpermq
vpslld
_mm256_slli_epi32
vpsrld
_mm256_srli_epi32
vpxor
vpor
vpgatherdd
_mm256_xor_si256
_mm256_or_si256
25
&
比特逻辑异或
256
-比特逻辑或
8
道
32
比特查表
加载
/
存储
256
比特数据(要求内存对齐)
加载
/
存储
256
比特数据(不要求内存对齐)
_mm256_load_si256/_mm256_store_si256
vmovdqa
vmovdqu
_mm256_load_si256/_nim256_store
__
si256
_mm256_loadu_si256/_mm256_storeu_si256
个选择函数形式时,
可将逻辑门数限制在
:
N
sm
4
=
12
+ 8
x
(2'+
2
2
+
---
+
2
8
-
2)
=
1032.
使用本文提
出的新的选择函数及改进的搜索算法
,
可进一步将逻辑门数减至
497
门.一般来说
,
使用的选择函数越多,
搜索越充分
,
越能减少逻辑门数量.
本节首先基于已有的选择函数构造新的选择函数
、
之后基于新的选择函数给出改进的搜索算法
,
最后
介绍如何使用新的选择函数及改进的搜索算法化简
S
盒的逻辑表达式.
3.1
选择函数简介
为化简比特切片方法中实现
S
盒所用的逻辑门电路数量
,
Mattew
提出了化简逻辑门电路的算法及
“
选择函数
”
的概念.使用选择函数
,
DES
中实现
S
盒的逻辑门电路数量从平均
70
门每比特输出被约简
到平均
45
门每比特输岀.
设凡为
8
比特逻辑函数
,
即F
o
(abcdefgh),
从输入
abcdefgh
中任选一个比特
,
记为
sei,
给岀选择
函数基本形式
:
Fo
=
(Fi
and
sei)
or
(F2
and
not
sei)
不妨设
sei
为
d,
规定
:
Fi
=
Fi(abcefgh),
F2
=
F2
(
abcefgh)
由于
Fi
与
F
2
均唯一存在
,
从而
8
比特逻辑函数被分解成
7
比特逻辑函数
,
这一过程称为利用
“
选择函
数”
的一次选择.
Mattew
给出了三种
“
选择函数
”
表达式
:
F
。
=
(Fi
and
sei)
or (J2
and
not
sei)
令
F3
=
Fi
xor
F2,
局
=
(not
F
o
)
and
sei,
F5
=
Fo
xor
F4,
贝
J
F
o
=
(F3
and
sei)
xor
F2,
Fo
=
{Fi
or sei)
xor
F5
Mattew
指出,
还可使用
nand
、
nor
等非标准逻辑门构造更多选择函数.生成选择函数形式的逻辑表
达式过程如下
:
从需要实现的逻辑函数出发
,
进行选择
,
逆向生成整个逻辑电路
,
直至最终得到许多
2
比
特逻辑函数.理论上共有
16
种不同的
2
比特逻辑函数
,
其中有
4
个是平凡的(常量
0,
1
和直接连接两
个输入
)
,
另外
12
个非平凡的逻辑函数可由两个输入连接
12
个逻辑门实现
,
如图
3
所示
•
每次选择时都有
上述
3
个选择函数形式可以使用
,
需要逐个尝试以取得较好结果
・
对于
DES
的
6
比特输入
4
比特输出
S
盒来说
,
先后处理
4
个输出
,
每个输出最多需要
4
次
“选择
”
.处理过程中,
对
1
个逻辑函数做
“
选择
”
前,
804
Journal of
Cryptologic
Research
密码学报
Vol.
7,
No.
6,
Dec.
2020
可以尝试直接连接到之前已实现的中间结果
,
这是化简的主要实现方式.
r-TO
5
--------------------------------------
[7S
图
3
16
种
2
输入逻辑门的一种实现
Figure
3
Example
of
16
logic
combinations
of
two
gates
基于选择函数表达式
,
Matthew
描述了
“
选择函数
”
生成
S
盒对应逻辑函数的算法.算法核心思想
是:
改变每次做选择使用输入比特的顺序和处理四个输出的顺序
,
搜索生成的最约简的逻辑门电路.对于
DES
的一个
6
比特输入
4
比特输岀
S
盒
,
需要搜索
6!
x
4!
=
17
280
次
,
每一次搜索最多需要做选择
4
x
36
-
2
次(上述给岀
3
种选择函数形式
).
Biham
对
DES
的
6
比特输入
4
比特输出
S
盒做出分析
,
实现它需要最多逻辑门数为
:
N
des
=
12
+
4
x
(2
1
+
2
2
+
---
+
2
6-2
).
类似地
,
对于
SM4
的
8
比特输入
8
比特输出
S
盒
,
有
:
N
sm
4
=
12
+
8
x
⑵
+
2?
+
…
+
2
8-2
)
=
1032
通过对选择函数的分析
,
我们发现换入不同逻辑门
,
得到的新选择函数与原形式可能有不同的子函数
,
从
而带来不同的结果.
针对上述问题
,
本文对选择函数及其搜索算法进行了研究
,
给岀了
9
种实质不同的
“
选择函数
”
表达
式
,
并改进了基于“
选择函数
”
的逻辑门电路生成算法(称为搜索算法
)
,
以利用
9
种
“
逻辑表达式
”
得到更
简化的
S
盒逻辑表达式.
3.2
构造新的选择函数及搜索算法
本小节介绍对
“
选择函数
”
的扩展和搜索算法的改进.
3.2.1
构造新的选择函数
令
m
表示逻辑函数输入的比特数.由于
“
选择函数
”
表达式每次将函数F
o
分解为
Fi
、
F2
、
F
3
,
每
次减少
1
比特输入
,
从而保证在有限次
(
m-2
次)选择后得到可直接实现的表达式.对于输入为
m
比
特的凡
,
可用
2^
比特表示
;限定冃
、
F2
、
F-3
的输入为
m-1
比特时
,
它们均可用
2
心
】
比特表示
,
且
F1,F
2
,F
3
唯一.
选择函数扩展的核心思想是尝试
not
F
3
与
not
F2
/not
F
的所有组合
,
其中
F
3
=
xor
F
2
,
Fj
=
not
fa,
A
nand
B
=
not
A
and
B,
A
nor
B
=
not
A
or
B.
默认非门
not
优先级最高.通过换用
不同逻辑门
,
本文给出了选择函数的所有
8
种变式
:
F
o
=
(F-3
and
sei)
xor
F2
(1)
加入的门为
and,xor,
分解出
F-2,
F3.
F
o
=
(F3
and
not
sei)
xor
Fi
⑵
张笑从等
:
SM4
算法快速软件实现
805
加入的门为
and,xor,not,
分解出
Fi,
F
3
-
F
o
=
(7*4
or
sei)
not
xor
F
(3)
加入的门为
or,xor,not,
分解岀
Fi
,
F4
•
F
o
=
(F
a
or
not
sei)
xor
not
F2
(4)
加入的门为
or,xor,not,not,
分解出
兄
,
凡.
F
o
=
(2*4
nand
sei)
xor
F2
(5)
加入的门为
nand,xor,
分解出
J2,
F^.
F
o
=
(F4
nand
not
sei)
xor
Fi
(6)
加入的门为
nand,xor,not,
分解出
Fi,
74*.
F
o
=
(F3
nor
sei)
xor
not
F
(7)
加入的门为
or,xor,not,not,
分解出
Fi,
7¾.
Fo
=
(F3
nor
not
sei)
xor
not
F2
(8)
加入的门为
or,xor,not,not,not,
分解岀
尺,
尽.
换入非标准逻辑门
,可以找到的所有表达形式都包含于上述
9
种形式之中.
这种递归生成
“
选择函数
”
的算法处理F
o
与
not
F
o
可能得到差异较大的结果
,
即
F
o
与
not
F
o
对
于
“
选择函数
”
生成表达式的算法来说是两个不同的表达式
,
因此应分别尝试.
3.2.2
改进搜索算法
下面给出改进的搜索算法(算法
1).
对
40320x40
320
种输入输岀排序
,
分别调用此生成算法
,
搜索其
中逻辑门数最少的逻辑电路.算法输入逻辑电路
、
sei
比特排序和输出排序
,
输出逻辑电路和逻辑电路的
总门数.算法包括
5
个步骤.
算法
1
搜索算法
Input:
input
parameters
逻辑电路
,
sei
比特排序
,
输出排序
Output:
output
生成的逻辑电路
,
电路门数
1
初始化.设置最初的逻辑电路为图
3
所示的
16
种
2
输入逻辑函数.
2
搜索现有逻辑电路中是否有逻辑门(取反)匹配需要的逻辑函数.若存在
,
在逻辑电路中将搜索到的逻辑门(取反)
作为结果
,
逻辑电路逻辑门数不变(加1),
并返回
;
否则转至
3.
3
搜索现有逻辑电路中是否有两个逻辑门的组合
(and,or,xor,nand)
匹配需要的逻辑函数.
若存在,
在逻辑电路中加
入两个逻辑门的组合作为中间结果
,
现有逻辑电路逻辑门数加
1,
返回
;
否则转至
4.
4
对需要的
F
o
计算
Fi,F2,F3,not
F-not
F
2,not
F
3
,
分别对六个子函数调用此生成算法
,
从
2
开始执行
,
求得每
个子函数对应增加门数
,
标记对应生成的电路状态为待定.按照选择函数
9
种形式组合
6
个子函数
,
选择增加门
数最少的选择函数形式
,
留下对应的逻辑电路
,
删除其余
4
个子函数对应的逻辑电路.否则
,
返回生成的逻辑电路
和增加的逻辑电路门数.执行
5.
5
(可选)对满足要求的
F
aeed
和
9
种选择函数的所有组合
,
按照拓展的选择函数形式求得
2
个子函数
,
递归调用此生
成算法
,
将增加的逻辑门数与步骤
3
的结果对比留下逻辑门数较少的
,
返回.此步骤为可选
,
执行该步骤
,
可能会
得到更简化的逻辑函数
,
但会带来搜索量的增加.
注
:
改进之处在于
4
中提供更多选择函数形式
,
5
是新加入的步骤.
806
Journal
of
Cryptologic
Research
密码学报
Vol.
7,
No.
6,
Dec.
2020
4
SM4
算法的优化实现
本节首先介绍
SM4
算法优化实现方法的总体结构
,
之后介绍具体的优化实现.
4.1
总体实现
SM4
算法的优化实现包括三部分
:
数据编排
、
迭代计算
、数据反编排.对于数据(反)编排部分
,
主
要采用
SIMD
技术实现转置并优化
;
对于迭代部分
,
主要使用选择函数优化法优化
S
盒的逻辑表达式.具
体过程如图
4
所示.
SM1»
法
优化方法
图
4
总体实现结构
Figure
4
Overall
structure
of
implementation
4.1.1
数据编排
由于本文使用
256
位的
YMM
寄存器来实现
SM4
算法的
256
分组数据并行加解密
,
因此需构建一
个比特矩阵转置变换
TRANS(),
其输入为
256x128
比特,
输出为
128x256
比特.若将输入第
i
比特表
不为一维数组
Af[256][128]
的
A^(i/128][i
mod
128]
项
,
则输出为二维数组
Af[12
8],[256]
的
^[i
mod
128][i/128]
项.
编排后,
256
组的同一比特存储在一个
YMM
寄存器或一块内存.
M
护
6
表示二维数组
M
[128][256]
的
M
l0]
项
,
其长度为
256
比特.
4.1.2
密钥编排
对于第
i
轮加密的
32
比特密钥
RK,,
变换得到
RK?
58
,
表示将
RK,
每比特重复
256
次得到的结果,
即
RK]
[j]
=
RK
黑冋
=
RK
第⑴
=
…
=
RK
第
[255],
j
=
0,1,
-
-
,31
其中
RK
鴛为
256
比特.
4.1.3
迭代计算
将
128x256
比特的数据表示为
M
256
=
(M
沪
S
m
严严
S
m
护点)
,
32
轮的加密密钥记为
RK?
56
,
i
=
0,1,
■■-
,31,
进行
32
次迭代运算
:
M
彰
=
M,
256
+
笫
+
+
+
RK?
56
),
其中
+
表示异或运算.合成变换
T
的输入和输出都是
32x256
比特
,
由非线性变换
7-
和线性变换
L
复合而成
T(-)
=
L(
t
(-)).
将
32x256
比特输入数据表示为
:
A
256
=
(a
賢,诸汽
a
郷,
a
鄴),其中
,
ag
56
,a?
56
,ai
56
,ai
56
均为
8x256
比特
,
则
r(A
256
)
(S(a
評
),S(a
严
),$(垮
6
)
,s@
竽
6
))
.
4.1.4
反序计算
令
(5^56
^56
^56
^56
)
=
以霧
6,
x
鏗,
x
鄴,
X
鄴
),
则输出的
128x256
比特的加密数据表示为
y256
_
(
yr256
y256
y256
”
256
)
张笑从等
:
SM4
算法快速软件实现
807
4.1.5
数据反编排
从切片后的
128
组
256
比特数据恢复到
256x128
比特数据
,
需要构造比特矩阵转置变换
inv_TRANS(),
输入为
128x256
比特
,
输出为
256x128
比特.若将输入第
2
•
比特表示为二维数组
M[128][256]
的
^[i/256][i
mod
256]
项
,则转置为一位数组阿
256][128]
的
^[i
mod
256][i/256]
项.
4.2
AVX2
指令集的的使用
4.2.1
实现数据(反)编排
数据编排中
,
对
256x128
比特数据
,
分为两个比特方阵
,
对方阵进行比特粒度的转置
〔
20
】
.
使用
vpor.
vpslld
>
vpxor
等
AVX2
指令优化实现转置算法.
数据反编排中的
128x256
比特数据也可分成两个比特方阵类似处理.
4.2.2
实现密钥编排
若并行加解密的分组使用不同密钥
,
编排方法同数据编排
,
不需要反编排
;若并行加解密的分组使用
相同密钥
,
编排不需要比特粒度转置
,
可以将密钥每一比特复制为
256
比特
,
AVX2
指令或普通指令均可
平凡地实现.
4.2.3
实现
S
盒
使用
AVX2
指令集中提供的逻辑指令实现
,
具体为
vpor,
vpand,
vpxor,
vpnand.
指令为三操作数指
令(其中一个为目的操作数
)
,
不修改源操作数
,
必须选择
16
个
YMM
寄存器作为操作数.需要在内存中
暂存数据
,
可使用指令
vmovdqa
、
vmovdqu
进行数据加载
、
存储.
4.3
化简
S
盒逻辑表达式
下面介绍如何使用新的
“
选择函数
”
及改进的搜索算法化简
S
盒逻辑表达式.利用上节给出的
9
种
选择函数表达式
,
可得到
9
种改进的表达式.下面以式
(1)
为例
:
F
o
=
(F3
and
sei)
xor
F
2
xor
F
see
d
xor
F
see
d
如果
Reed
已计算
,
则上式从递归处理
F
3
与
F
2
变为递归处理
F
2
xor
Fseed
与
F
3
xor
F
seed
-
如果
F
seed
与用
,
尺,円有相同甚至更少的输入,
则可保证算法仍可在至多
m-2
次递归调用后结束.引入
Reed
后,
几乎可以任意改变由
F
o
生成的子函数
,
从而产生不同结果
,
结合穷举搜索使得
“
选择函数
”
方法更有效.
存在上述
Reed,
且
Fseed
的数量随着已生成的逻辑门数量增多而增多.只要F
。
不是第一个被处理的
输岀
,即可在已生成的表达式里找到许多
Fseed-
具体算法描述如下
:
(1)
假定输入中作为选择函数的
sel
的顺序为
a,cj,b,e,g,b,d,
不妨设为自然顺序
,
这种情况占搜索
空间的右.搜索深度最大为
6,
a,c,
f,h,e,g
分别是
6
个深度对应的
sel,
以
b,d
为输入的
16
个
逻辑函数属于初始电路.
(2)
搜索已生成的电路中是否有相同或相反的逻辑门.若有
,
将当前逻辑门连接至搜索到的逻辑门,
返回电路增加的逻辑门数
0
(
相同)或
1
(相反
).
例如
,
图
5
中
,
fo[i]
进行第一次选择
,
得到其中
1
个子函数可直接用/
2
实现
,
则实现该子函数无需增加逻辑门数.
(3)
搜索已生成的电路中是否有两个逻辑门可以组合得到所需逻辑门.若有
、
将当前逻辑门连接至
搜索到的两个逻辑门
,
返回电路增加门数
1-
例如图
6
中
,
对
f
o[1]做第一次选择
,
生成子函数
/g,
fs
=
not
(/
4
xor
/5),
则实现
fs
的代价是门数加
1.
(4)
利用
9
种选择函数生成子函数
,
递归调用生成算法,
保留返回门数最少的一个逻辑表达式.如
图
7
所示
,
对
f
o[0
}
递归生成子函数
,
若不能找到己存在的可用逻辑门
,
则会一直生成子函数直
到连接至
2
比特逻辑函数.图
7
中
f
o
[
0
]
=
(/3
and
a)
xor
/2,
/2
=
(/5
or
c)
xor
/4,
/3
=
(/
6
and
not
c)
xor
升
,
均是尝试了
9
种选择函数后得到的最优结果.
(5)
将
9
种选择函数中加入
Fseed
改变子函数
,
递归调用生成算法,
保留当前一步和上一步所有解中
逻辑门数最少的解.如图
8
所示
,
对f
oW
引入
F
seed
=
/
2
,则对应生成的子函数为/
7
与/
9
,
在上述四种处理方式中
,前两种利用己存在的逻辑门
,
无需额外代价
;
后两者基于选择函数的递归处
理在没有直接可用的逻辑门的情况下使用
.
808
Journal
of
Cryptologic
Research
密码学报
Vol.
7,
No.
6,
Dec.
2020
图
6
连接到两个逻辑门的组合
Figure
5
Appending
to
generated
logic
gates
图
7
使用选择函数公式递归生成逻辑电路
Figure
7
Generating
logical
circuit
using
selection
function
recursively
图
8
引入可变的
F
seed
生成逻辑电路
Figure
8
Generating
logical circuit
via
almost
arbitrary
Reed
4.4
S
盒实现结果比较
表
2
列出了使用选择函数和未使用选择函数时
S
盒实现中需要的逻辑门电路数量及实现时间.由于
AVX2
指令集中数据加载存储指令相对于逻辑操作指令迅速许多
,因此
S
盒的实现时间大致由逻辑门数
决定.未使用选择函数实现
S
盒所需逻辑门数约为
3000
(
最简与或式
)
,
使用
9
个选择函数和改进的搜索
算法所需的逻辑门数为
497.
对
31250
Mb
数据加密测试结果显示
,
未使用选择函数的实现时间为
30
秒,
使用
9
个选择函数和改进的搜索算法后
,
实现时间减少至
10.3
秒.
表
2
S
盒实现所需要的逻辑门数及实现时间比较
Table
2
Logical
gate
count
and
time
for
implementing
S
box
实现方法
未使用选择函数
逻辑门数
(
门
)
实现时间
(
s
)
3000
497
30
使用选择函数
10.3
5
实验结果
本节比较己有公开文献中关于
SM4
软件实现的效率
,
包括传统查表法
、
SIMD
技术查表法及比特切
片方法.利用
C
语言和汇编语言对
SM4
算法进行优化实现
,
在相同的硬件环境中
,
比较
SM4
算法不同
实现方法的效率.由于
PC
端内存资源相对丰富
,
故对于
4
GB
、
8
GB
内存不做区分
;处理器微架构和主
频对性能有较大影响
.
具体测试环境如表
3
所示.
表
4
总结在不同处理器上
SM
4
算法釆用查表法
、
选择函数优化法的软件实现性能.评估分组密码算
法软件实现性能的指标是每秒钟加
/解密的比特数
,
即
bps.
对
31
250
Mbit
数据进行加密测试.表
4
的
8-32
表示采用
8-
bit
输入
32-bit
输岀表.
张笑从
等
:
SM4
算法快速软件实现
809
表
3
测试环境参数
Table
3
Environments
for
efficiency
test
处理器微架构
主频
/GHz
2.40
2.80
内存
/GB
4
8
Intel
Core
i5~6200U
Sky
lake
Kabylake
Intel
Core
i7-7700HQ
表
4
软件实现方法在不同处理器上效率对比
Table
4
Efficiency
of
software
implementations
on
different
processors
平台
实现方法
S
盒形式
/
/
数据编排算法
/
/
未优化
综合性能
(
Mbps)
存储表
1
1
2
2
3
3
查表(8-32)
908
1795
是
是
否
查表
(8-32)+AVX
指令
比特切片
+
AVX2
指令
比特切片
+
AVX2
指令
比特切片
+
AVX2
指令
比特切片
+
AVX2
指令
最简与或式
选择函数
650
优化
【
20
】
未优化
优化
1301
2387
否
否
否
最简与或式
选择函数
720
2580
注
:
(1)
1
Mbps
=
2
20
bps
(2)
平台
1:
Intel
Core
i7-5500U(Broadwell-U)@2.40
GHz
[9]
(3)
平台
2
:
Intel
Core
i5-6200U(Skylake)@2.40
GHz
(4)
平台
3:
Intel
Core
i7-7700HQ(Kabylake)@2.80
GHz
由表
4
可以看出
,
使用
AVX2
指令的并行查表方法比普通查表方法在效率上有明显提升
,
由
908
Mbps
到
1795
Mbps
提升接近
1
倍.未优化的比特切片
+AVX2
指令方法效率不佳
,
而本文的比特
切片
+AVX
指令
+
选择函数优化方法在
Intel
Core
i5-6200U(Skylake)
@2.40
GHz
和
Intel
Core
i7-
7700HQ(Kabylake)@2.80
GHz
分别达到
2387
Mbps
和
2580
Mbps,
相对于近似的主频
(2.40
GHz)
、
微
架构
(Intel
Core
i7-5500U(Broadwell-U))
的
AVX2
指令并行查表方法有明显优势.
对于算法所需的内存开销
,
普通查表和并行查表需要
4
KB
内存存放代换表
,
对于资源受限的终端
并不合适
;
而本文的比特切片实现无需任何额外的内存开销来存储代换表
,
因此所需内存开销为
0.
此外,
查表法在内存中存储代换表并需要在加解密时访问对应的内存
,
除了需要额外的内存开销
,
还不能抵抗缓
存-计时侧信道攻击.本文的软件优化实现方法不需查表
,
因此能够抵抗该类侧信道攻击.
下面进一步给出对
31250
Mb
数据加密测试的详细结果.
表
5
软件实现方法效率测试
Table
5
Test
on
efficiency
of
software
implementations
平台
实现方法
比特切片
+AVX2
指令
数据编排
(
s)
10
S
盒实现
(s)
30
总时间
(
s)
40
效率提升
/
Intel
Core
i5-6200U
(Skylake)@2.40
Ghz
Intel
Core
i7-7700HQ
(Kabylake)
@2.80
Ghz
比特切片
+
AVX2
指令
+
选择函数优化
1.99
比特切片
+AVX2
指令
11.1
13.09
43
2.04
倍
/
2.59
倍
10
33
比特切片
+AVX2
指令
+
选择函数优化
1.81
10.3
12.11
由表
5
可知,
在
Intel
Core
i5-6200U(Skylake)@2.40
GHz
下
,
本文的基于选择函数优化法的实现时间
为
13.09
秒
,
加密效率提升
2.04
倍.在
Intel
Core
i7-7700HQ(Kabylake)@2.80
GHz
下
,
该方法的实现时
间为
12.11
秒
,
加密效率提升
2.18
倍.
此外
,
由表
5
可以看出
,
S
盒计算占全部计算约
80%,
进一步提升效
率的关键仍在于优化
S
盒的实现.
810
Journal
of
Cryptologic
Research
密码学报
Vol.
7,
No.
6,
Dec.
2020
6
总结
本文基于比特切片方法和
SIMD
技术
,
提出了一种新的
SM4
算法软件优化实现方法
,
并利用
X86
平
台的
AVX2
指令集给岀了高效的实现.新方法首先利用
AVX2
指令优化了数据编排算法
,
之后基于选择
函数提出了更灵活的化简
S
盒逻辑表达式的算法.在基于选择函数的优化方法中
,
构造了新的选择函数,
并基于新的选择函数改进了搜索算法
,
从而将
S
盒所使用的门电路数量从
3000
门降至
497
门
;
在
Intel
Core
i7-7700HQ(Kabylake)@2.80
GHz
环境下
,
同目前公开文献中
SM4
软件实现的最快速度
1.7
G
相
比
,
基于选择函数的优化方法加解密速度提升至
2.5
G,
提高了
43%.
同基于查表的软件实现方法相比
,
本
作品的软件实现方法可以抵抗
cache
攻击
,
从而提高了算法实现的安全性.本文提出的新的选择函数和搜
索算法具有通用性
,
可用于其它一般逻辑函数的化简.此外
,
优化方法具有可扩展性
,
不仅可以从
SM4
算
法扩展至目前所有的对称加密算法的软件优化实现
,
而且可以从
X86
平台的拓展指令集
AVX2
实现扩展
至利用
RISC
指令集在资源受限
、
安全性要求高的
ARM
等嵌入式平台上实现.
参考文献
[1]
LU
S
W,
LI
D
W,
ZHANG
C,
et
al.
GM/T0002
—
2012
SM4
block
cipher
algorithm[S].
Beijing:
China
Standard
Press,
2012.
吕述望
,
李大为
,张超,
等.
GM/T0002
—
2012
SM4
分组密码算法
[S].
北京
:
中国标准出版社
,
2012.
[2]
LU
S
W,
SU
B
Z,
WANG
P,
et
al.
Overview
on
SM4
algorithmfj].
Journal
of
Information
Security
Research,
2016,
2(11):
995-1007.
吕述望
,
苏波展
,
王鹏,
等.
SM4
分组密码算法综述
[J].
信息安全研究
,
2016,
2(11)
:
995-1007.
[3]
BIHAM
E.
A
fast
new
DES
implementation
in
software[C].
In:
Fast
Software
Encryption-
FSE
1997.
Springer
Berlin
Heidelberg,
1997:
260-272.
[DOI:
10.1007/BFb0052352]
[4]
KWAN
M.
Bitslice
DES[EB/OL].
http:
/
/de.
/bitslice/
[5]
Solar
Designer.
John
the
Ripper
1.7.8:
DES
speedup[EB/OL].
https
:
/
/
/lists
/
john-users
/2011/06/22/1
[6]
ADOMNICAI
A,
PEYRIN
T.
Fixslicing
AES-like
ciphers:
New
bitsliced
AES
speed
records
on
ARM-Cortex
M
and
R1SC-V[J].
IACR
Transactions
on
Cryptographic
Hardware
and
Embedded
Systems,
2021(1):
402-425.
[DOI:
10.46586
/tches.v202
l.i
1.402-425]
[7]
MATSUDA
S,
MORIAI
S.
Lightweight
cryptography
for
the
cloud:
Exploit
the
power
of
bitslice
implementa-
tion[C].
In:
Cryptographic
Hardware
and
Embedded
Systems
-CHES
2012.
Springer
Berlin
Heidelberg,
2012:
408-425.
[DOI:
10.1
007/978-3-642-33027-8_24]
[8]
NEVES
S,
AUMASSON
J
P.
Implementing
BLAKE
with
AVX,
AVX2,
and
XOP[J].
IACR
Cryptology
ePrint
Achieve,
2012:
2012/275.
https
://eprint.
/2012/
[9]
LANG
H,
ZHANG
L,
WU
W
L.
Fast
software
implementation
of
SM4[J].
Journal
of
University
of
Chinese
Academy
of
Sciences,
201&
35(2):
180-187.
郎欢,张蕾
,
吴文玲.
SM4
的快速软件实现技术
[J].
中国科学院大学学报
,
201&
35(2):
180-187.
[10]
PAPAPAGIANNOPOULOS
K.
High
throughput
in
slices:
The
case
of
PRESENT,
PRINCE
and
KATAN64
ciphers[C).
In:
Radio
Frequency
Identification:
Security
and
Privacy
Issues
RFIDSec
2015.
Springer
Cham,
2014:
137-155.
[DOI:
10.1007/978-3-319-13066-8_9]
[11]
LIU
F.
JI
W.
HU
L,
et
al.
Analysis
of
the
SMS4
block
cipher[C].
In:
Information
Security
and
Privacy
一
ACISP
2007.
Springer
Berlin
Heidelberg,
2007:
158-170.
[DOI:
10.1007/978-3-540-73458-
1_
13]
[12]
LIANG
H.
WU
L
J,
ZHANG
X
M,
et
al.
Design
of
a
masked
S-box
for
SM4
based
on
composite
field[C].
In:
Proceedings
of
Tenth
International
Conference
on
Computational
Intelligence
and
Security.
IEEE,
2014:
387-391.
[DOI:
10.1109/CIS.2014.59]
[13]
ZHANG
J,
MA
M,
WANG
P.
Fast
implementation
for
SM4
cipher
algorithm
based
on
bit-slice
technology[C].
In:
Smart
Computing
and
Communication
一
SmartCom
2018.
Springer
Cham,
201&
104
113.
[DOI:
10.1007/978-3-
030-05755-8_ll]
[14]
ELDOSOUKY
A,
SAAD
W.
On
the
cybersecurity
of
m-Health
IoT
systems
witli
LED
bitslice
implementation[C]
.
In:
Proceedings
of
2018
IEEE
International
Conference
on
Consumer
Electronics
(ICCE).
IEEE,
201&
1-6.
[DOI
:
10.1
109/ICCE.2018.8326298]
[15]
HAJIHASSANI
O,
MONFARED
S
K,
KHASTEH
S
H.
et
al.
Fast
AES
implementation:
A
high-throughput
bitsliced
approach
[J].
IEEE
Transactions
on
Parallel
and
Distributed
Systems,
2019,
30(10):
2211
2222.
[DOI:
张笑从等
:
SM4
算法快速软件实现
811
10.1109/TPDS.2019.2911278]
[16]
KONIGHOFER
R.
A
fast
and
cache-timing
resistant
implementation
of
the
AES[C].
In:
Topics
in
Cryptology
-
CT-RSA
2008.
Springer
Berlin
Heidelberg,
2008:
187-202.
[DOI:
10.1007/978-3-540-
79263-5_
12]
|17]
SCHNEIER
B,
KELSEY
J.
Unbalanced
Feistel
networks
and
block
cipher
design[C].
In:
Fast
Software
Encryption
一
FSE
1996.
Springer
Berlin
Heidelberg,
1996:
121-144.
[DOI:
10.
1007/3-540-60865-6_49]
[18]
Intel
Corporation.
Intel
Intrinsics
Guide[EB/OL].
/sites/landingpage/IntrinsicsGuide/
[19]
KWAN
M.
Reducing
the
gate
count
of
bitslice
DES[J].
IACR
Cryptology
ePrint
Archive,
2000:
2000/51.
https:
/
/eprint
.
/2000/251
.
pd
f
[20]
REBEIRO
C,
SELVAKUMAR
D,
DEVI
A
S
L.
Bitslice
implementation
of
AES[C].
In:
Cryptology
and
Network
Security
—
CANS
2006.
Springer
Berlin
Heidelberg,
2006:
203-212.
[DOI:
10.1007/1
1935070_14]
作者信息
张笑从
(1998-),
陕西西安人,
本科.主要研究领域密码算法
的设计与实现.
*****************
张习勇
(1975-),
湖北武穴人,
博士
,
副教授.主要研究领域
为密码算法的设计与分析.
************************
>
A
郭华
(
1980-),
河南郑州人
,
瞎
士
,
副教授.主要研究领域为密
码算法的设计
、
实现与分析.
V八
,
*************.cn
王闯
(1997-),
河南商丘人
,
本
科.主要研究领域为网络空间
安全.
*****************
刘建伟
(1964-),
山东烟台人
博士
,
教授.主要研究领域为
网络空间安全.
*******************.cn
版权声明:本文标题:SM4算法快速软件实现 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://m.elefans.com/dongtai/1713833589a373672.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论