基于CUDA的SKINNY加密算法并行实现与分析

基于CUDA的SKINNY加密算法并行实现与分析


2024年4月24日发(作者:三星7000手机多少钱)

JournalofComputerApplications

计算机应用,

2021,41(4):1136-1141

文章编号:1001-9081(2021)04-1136-06

ISSN1001⁃9081

CODENJYIIDU

2021⁃04⁃10

http:

//

DOI:10.11772/.1001-9081.2020071060

基于CUDA的SKINNY加密算法并行实现与分析

解文博

1

,韦永壮

1*

,刘争红

2

2.广西无线宽带通信与信号处理重点实验室(桂林电子科技大学),广西桂林541004)

(∗通信作者电子邮箱walker_wyz@)

(1.广西密码学与信息安全重点实验室(桂林电子科技大学),广西桂林541004;

摘要:针对SKINNY加密算法在中央处理器(CPU)下实现效率偏低的问题,提出一种基于图形处理器(GPU)的

快速实现方法。首先,结合SKINNY算法的结构特征提出优化方案,将5个分步操作优化整合为1个整体运算;然后,

分析该算法的电子密码本(ECB)模式和计数器(CTR)模式的特性,并给出并行粒度、内存分配等并行设计方案。实验

结果表明,与传统的CPU实现方法下的SKINNY算法相比,基于计算统一设备架构(CUDA)实现的SKINNY算法的效

率和吞吐量得到很大提升。具体来说,当处理的数据达到16MB及以上时,在所提实现方法下,SKINNY算法的ECB

模式的加速效率提升峰值为99.85%,加速比峰值为671,CTR模式的加速效率提升峰值为99.87%,加速比峰值为

是它们的吞吐量的1.29倍和2.55倍。

中图分类号:TP309.7

765;而与已有AES-256(ECB)和SKINNY_ECB并行算法比较,新提出的SKINNY-256(ECB)并行算法的吞吐量分别

关键词:SKINNY密码算法;并行计算;统一计算架构;图形处理器;电子密码本模式;计数器模式

文献标志码:A

ParallelimplementationandanalysisofSKINNYencryptionalgorithmusingCUDA

(iKeyLaboratoryofCryptographyandInformationSecurity

iKeyLaboratoryofWirelessWidebandCommunicationandSignalProcessing

(GuilinUniversityofElectronicTechnology),GuilinGuangxi541004,China)

(GuilinUniversityofElectronicTechnology),GuilinGuangxi541004,China;

XIEWenbo

1

,WEIYongzhuang

1*

,LIUZhenghong

2

fastimplementationmethodwasproposedbasedonGraphicProcessingUnit(GPU).Inthefirstplace,anoptimization

er,thecharacteristicsoftheElectronicCodeBook

mentalresultsillustratethattheefficiencyandthroughputofSKINNY

Abstract:FocusingontheissueoflowefficiencyofSKINNYencryptionalgorithminCentralProcessingUnit(CPU),a

schemewasproposedbycombiningthestructuralcharacteristicsofSKINNYalgorithm,andonewholecalculation,where

(ECB)modeandcounter(CTR)modeofthisalgorithmwereanalyzed,andtheparalleldesignschemessuchasparallel

algorithmimplementedbyComputingUnifiedDeviceArchitecture(CUDA)aresignificantlyimproved,whencomparedto

ecifically,fordatasizeof16MBorlargesize,theSKINNY

algorithmimplementationwithECBmodeachievesmaximumefficiencyimprovementof99.85%andmaximumspeedupratio

therhand,theSKINNYalgorithmimplementationwithCTRmodeachievesmaximumefficiency

improvementof99.87%andmaximumspeedupratioof765.

SKINNY_ECBparallelalgorithms,respectively.

Inparticular,thethroughputoftheproposed

SKINNY-256(ECB)parallelalgorithmhas1.29timesand2.55timesofthoseoftheexistingAES-256(ECB)and

ProcessingUnit(GPU);ElectronicCodeBook(ECB)mode;Counter(CTR)mode

Keywords:SKINNYcryptionalgorithm;parallelcomputing;ComputeUnifiedDeviceArchitecture(CUDA);Graphic

0引言

图形处理器(GraphicProcessingUnit,GPU)的架构与中

并且计算速度也要明显高于CPU的计算速度。GPU设计之

初是用于图形图像处理,但随着GPU的发展,它被不断地用

于大数据、多并行的计算。计算统一设备架构(Compute

UnifiedDeviceArchitecture,CUDA)是NVDIA发布的并行计

算平台和接口模型,支持C、C++等多种编程语言,使得GPU

央处理器(CentralProcessingUnit,CPU)不同,相对于CPU来

说,GPU的线程更多,带宽更高,延迟更低,更适合并行计算,

收稿日期:2020⁃07⁃21;修回日期:2020⁃10⁃14;录用日期:2020⁃10⁃15。

基金项目:广西无线宽带通信与信号处理重点实验室主任基金资助项目(GXKL06160112)。

作者简介:解文博(1996—),男,山东枣庄人,硕士研究生,主要研究方向:分组密码算法、GPU并行计算;韦永壮(1976—),男,广西田阳

人,教授,博士,主要研究方向:对称密码算法设计与分析;刘争红(1979—),男,湖北红安人,讲师,硕士,主要研究方向:无线宽带通信、FPGA、

GPU并行运算。

第4期解文博等:基于CUDA的SKINNY加密算法并行实现与分析

1137

并行计算变得更为容易,是目前最受欢迎的应用编程接口

之一。

Olano等

[2]

使用PixelFlow图像引擎快速破解了UNIX系统的

密钥,这使得原本用于解决图像处理问题的GPU开始用于密

[3]

作为Beierle等

[11]

新推出的分组密码算法SKINNY虽与AES结

构类似,都是代换−置换网络(Substitution-Permutation

Network,SPN)结构,但由于采用新型设计理念,具有安全性

好、使用灵活等优点,特别适合在微控制器和软件上快速实

现,备受业界广泛关注,所以对其快速并行实现是目前亟待解

决的问题。

本文基于Linux系统下的CUDA平台,通过分析SKINNY

算法的特性,对该算法的ECB和计数器(Counter,CTR)模式

进行并行加速,在数据量达到64MB的加密环境下分析测试

了GPU并行算法的性能,并对基于CPU实现和基于GPU实现

的SKINNY算法进行了时间、加速效率、加速比和吞吐量的

分析。

利用GPU解决密码学问题的最早工作是Kedem等

[1]

码学问题。Cook等第一次尝试对对称密码算法使用GPU进

行优化,于2006年利用OpenGL实现了高级加密标准

(AdvancedEncryptionStandard,AES);但由于软件的不足和

硬件的限制,GPU比CPU的性能提升仅有2.3%。2007年

Manavski等

第一次利用CUDA进行AES算法的加速,在显卡

[4]

NVIDIAGeforce8800GTX上实现了128位的AES算法,加密

[5]

利用GPU的强大计算能力来降低网络编码和同态哈希的

计算成本,他们通过在GPU上实现网络编码和同态哈希函数

(HomomorphicHashingFunction,HHF),所得结果比CPU上

8MB的数据,加密吞吐量可以达到8.28Gb/s。2009年Chu

计算速度提高显著,这种实现方式可以为防御分布式系统中

的污染攻击提供解决方案。Li等

[6]

于2012年提出在GPU上

组链接(CipherBlockChaining,CBC)模式的实现,通过将T盒

分配在共享存储器上并采用每个线程处理16字节的粒度,使

得GPU运行速度比CPU快50倍。Cheong等

[7]

在2015年在具

有Kepler架构的NVIDIAGTX690上提出加速分组密码IDEA

(InternationalDataEncryptionAlgorithm)、Blowfish和Threefish

的技术,对于三个算法分别实现了90.3Gb/s、50.82Gb/s和

使用不同粒度值在三种不同的GPU架构上的AES-128算法

83.71Gb/s的加密吞吐量。2017年,Abdelrahman等

[8]

提出了

(ECB模式)实现。他们的实验结果表明,使用NVIDIA

GTX1080(Pascal)、NVIDIAGTXTITANX(Maxwell)和

GTX780(Kepler)GPU架构,吞吐率分别达到277Gb/s、

201Gb/s和78Gb/s。同年,Ma等

[9]

在CBC模式下实现了AES

解密,他们对基于GPU的不同参数设置下的实现进行了全面

分析,这些参数包括:输入数据的大小、每个块的线程数、内存

分配的方式和并行粒度。最终GPU上的最优性能是CPU上

的112倍。2020年,Yeoh等

[10]

提出一种基于GPU的快速搜索

密码学算法差分特性的分支定界算法,文章针对TRIFLE-BC-

128算法,利用中间相遇方法与GPU相结合,所得结果与基于

CPU的方法相比,搜索效率提高了约58倍。综上可知,关于

AES的电子密码本(ElectronicCodeBook,ECB)模式和密文分

1.1

1SKINNY算法

SKINNY算法是一种新的轻量级密码算法,该算法加密

算法简介

分组为64和128位的明文数据,可以使用64、128、192、256和

384位的密钥来加密。本文快速实现的算法是数据分组长度

为128位、密钥长度为256位的SKINNY算法,简记为

该数组的初始状态如式(1)所示:

SKINNY-256。SKINNY算法的操作是在二维数组上执行的,

é

a

0

ê

a

ê

4

a=

ê

ê

ê

a

8

ê

ë

a

12

SKINNY-256的轮函数由以下5个操作组成,分别是:

另一个字节。

a

1

a

5

a

9

a

13

a

2

a

6

a

10

a

14

a

3

ù

a

7

ú

ú

ú

ú

a

11

ú

ú

a

15

û

(1)

1)字节替换(SubCells,SC):通过S盒将一个字节替换为

2)轮加常数(AddConstants,AC):状态矩阵异或轮常数。

行、第二行和状态矩阵相应的位置异或。

3)轮加密钥(AddRoundTweakey,ART):轮密钥的第一

4)行移位(ShiftRows,SR):简单的位移。矩阵从第0行

5)列混淆(MixColumns,MC):状态矩阵与二进制矩阵

SKINNY的加密轮函数过程如图1所示,由48个轮函数

到第3行,依次循环移动0、1、2、3个字节。

相乘。

分组密码在GPU上的快速实现研究较多的是对AES的优化,迭代而成,解密过程相似。密钥编排算法可参考文献[11]。

1.2

分组密码常用的工作模式有5种

[12-14]

,分别是:电子密码

SKINNY加密模式的选择

Fig.1EncryptionroundfunctionofSKINNYalgorithm

图1SKINNY算法加密轮函数

1.2.1

表1列出了5种加密模式的并行特性

[6]

:ECB、CTR模式都

模式比较

本(ECB)模式、计数器(CTR)模式、密码块链接(CBC)模式和

密码反馈(CipherFeedBack,CFB)模式及输出反馈(Output

FeedBack,OFB)模式。

支持并行计算,因为它们的每个单个分组都可以独立加密;而

其他三种模式不支持,因为它们的分组输入都与前一段的输

出有一定关系,具有串行特性。本文SKINNY算法实现选择

1138

计算机应用

TK

k,j

表示轮密钥。

第41卷

的是可以并行实现的ECB模式和CTR模式。接下来对ECB

和CTR这两种模式进行简单介绍。

Tab.1

加密模式

ECB

CTR

CBC

Comparisonofencryptionmodes

[6]

并行特性

可并行

可并行

不可并行

加密模式

CFB

OFB

并行特性

不可并行

不可并行

表1加密模式比较

[6]

1.2.2电子密码本(ECB)模式

在ECB模式下,数据会被分组独立进行加密。这种加密

模式加密方便,应用广泛。此模式的表达式如式(2)所示:

C

i

=encrypt(P

i

)

(2)

P

表示输入的明文;

C

表示输出的密文。

i=1,2,…,n

;其中:

1.2.3计数器(CTR)模式

计数器模式有一个自增的连续值,将这个自增值用密钥

进行加密,加密之后的中间值与明文进行异或,得到密文,相

当于一次一密。此模式的加密方式快速简单,可靠安全,但它

容易遭受攻击者的攻击。此模式的表达式如式(3)所示:

C

i

=P

i

⊕CTR(R+i)

(3)

R={0,1,…,2

(|P|-1)

}

i=1,2,…,n

其中:

2.1

Fig.2RoundtransformationofSKINNYalgorithm

图2SKINNY算法的轮变换

为了得到更好的实现性能,本文将5个步骤进行化简合

并成为一个公式,如式(4)所示,然后将其前4个表分别定义

T

表,两组轮密钥矩阵合并定义为

TK

,轮常数矩阵定

义为

C

2

é

f

0,j

ù

êú

f

1,

ê

j

ú

êú

êú

=

êú

f

êú

2,j

êú

ê

f

ú

j

ûë

3,

SKINNY的并行优化

a

i,

SKINNY的每一轮的操作如图2所示,

j

表示输入明文,

CUDA加速SKINNY

é

1

ê

1

ê

ê

0

ê

ë

1

0

0

1

0

1

0

1

0

1

ù

0

ú

ú

0

ú

ú

0

û

最终的表达式化简为4个

T

表和5个异或运算,如式(5)

所示,这样可以避免大量的逻辑计算。

F=T

0

[a

0,j

]⊕T

1

[a

1,j+1

]⊕T

2

[a

2,j+2

]⊕

T

3

[a

3,

j

j+3

]⊕C⊕TK

k,

é

TK2

0,j

ù

j

ù

ö

æ

é

1

ù

ö

é

C

0

000

ù

é

TK1

0,

æ

é

1

ù

ö

æ

é

0

ù

ö

æ

é

1

ù

êúêú

÷

ç

ê

0

ú

÷

ê

C

000

ú

ç

ê

1

ú

÷

ç

ê

0

ú

÷

ç

ê

0

ú

TK1TK2

êúêú

êúêú

êúêú

1,j1,j

1

êú

ç

êú

⋅S[a]

÷

ç

êú

⋅S[a

÷

ç

êú

÷

ç

êú

÷

úú

ê

ê

0,j

÷

1,j+1

]

÷

ç

êú

⋅S[a

2,j+2

]

÷

ç

êú

⋅S[a

3,j+3

]

÷

ê

êúêú

ú

êú

ú

ç

ê

ç

ê

1

úê

0

ú

ê

0

úê

1

ú

C

2

000

êúê

ú

ê

0

úê

0

ú

ç

êú

÷

ç

êú

÷

ç

êú

÷

ç

êú

÷

ê

ú

è

ë

1

û

ø

è

ë

0

û

ø

è

ë

0

û

ø

è

ë

1

û

ø

ë

0000

û

ë

0

ûë

0

û

具有相互依赖性,线程间不用相互等待。

(5)

é

S[a

0,j

]

ù

TK1

0,

é

TK2

0,j

ù

j

ù

êú

é

C

0

000

ù

é

êúêú

êú

S[a

]

ê

1,j+1

ú

TK1TK2

C

000

êúêú

êú

1,j1,j

1

ú

ê

êú

úú

ê

ê

=

êúêú

êú

êú

S[a

]

C

000

êú

êúêú

2,j+2

2

00

êú

êú

êêú

ê

S[a

ú

0000

ëû

ë

0

ú

]0

ûëû

3,j+3

ëû

(4)

况下,每个GPU线程可以独立完成,因为不同线程的矩阵不

i,j=0,1,2,3;k=0,1

。轮常数

C

只影响输入矩阵的其中:

第一列;轮密钥TK只影响输入矩阵的前两行。

2.2

并行粒度的设计会影响算法的实现效果,所以在设计并

并行粒度

Fig.3

图3

Fine-grainedparallelscheme

细粒度并行方案

行粒度时要遵循两个原则:1)提高分配线程的利用率;2)减少

各线程间的通信开销

[15]

。并行粒度的设计一般分为两种:一

种为细粒度,一个GPU线程处理16字节分组中的4字节,如

图3所示;另一种称为粗粒度处理,一个线程处理16个字节的

分组,如图4所示。在细粒度实现中,它可以调度更多线程增

大吞吐量,但是线程之间的通信开销也随之增大。在粗粒度

实现中,单个线程处理一个独立的SKINNY分组,GPU上的线

程无须同步,并且每个线程都独立运行,从而减少了通信时

间。通过实验对比发现,粗粒度的设计方式要优于细粒度。

基于以上分析,将SKINNY的并行粒度设计为“每个线程

一个分组”,也就是说每个线程处理16字节的数据。数据被

分为多个16字节矩阵,这些矩阵由GPU同步执行。在这种情

2.3

同的内存

[16]

,每种内存的特性在一定程度上相互不同。内存

分配策略的不同会对性能带来明显的影响。

CUDA的内存分配策略非常重要,因为CUDA具有5种不

内存分配

Fig.4

图4

Coarse-grainedparallelscheme

粗粒度并行方案

第4期解文博等:基于CUDA的SKINNY加密算法并行实现与分析

1139

2.3.1

输入明文被分为几个互相独立的块进行加密。本文使用

明文内存分配

的是一个线程处理一个分组,例如,当处理1000个分组,就需

要1000个GPU线程。因为明文数量较大,所以将整体明文存

储到全局内存中。每个线程获得16个字节的数据后,将会暂

存在线程的寄存器中,寄存器对于各个线程是私有的,即彼此

无法互相访问。所有线程完加密后,再将数据从GPU内存中

取回。

2.3.2

T

表本质上是查找表,

T

表内存分配

在线程间是只读数据,用户可以通

过它们快速实现部分加密操作。每个线程在每一轮加密操作

中都需要随机访问

GPU

T

表。因此,本文需要将

T

表提前加载到

存中。另一种分配方案是将

的内存中。根据这些属性,

T

表分配到共享内存中,

T

表分配到CUDA常量内

但是此

种分配方式会存在一些问题,即存储体冲突,如果多个地址请

求落在相同的内存存储体时,就会发生存储体冲突,导致请求

被重复执行。

2.3.3

密钥的保密性和密钥的长度是保证密码的安全性的基

轮密钥内存分配

础。在SKINNY算法的实现中,每一轮加密都需要密钥异或

操作。CUDA的每个线程都需要输入不同的轮密钥。在这种

情况下,本文将轮密钥放入常量存储器中,所有线程在常量内

存中共享轮密钥。

2.4

每个

线程数的分配

GPU块中线程数的数量也会影响运行性能。每个

块的线程数如何分配,存在一些原则。在分配时一个块的线

程数最好是32的倍数,因为连续的线程会以32个为一组组成

一个线程束(warp),同一warp里的线程会对不同的数据执行

相同的指令。而如果线程数不是32的倍数,GPU会将不足32

的线程的warp补全,造成资源的浪费。本文使用的设备的一

个块最大线程数为1024,设置线程数不能超过其最大值,虽

然说一个块中的线程越多越能隐藏延迟,但是这样会使每个

线程可以使用的资源变少,考虑到所用的其他资源:共享内

存、寄存器等,为了达到更好的性能,决定每块分配512个

线程。

综上所述,最终的分配方案如表2所示。基于GPU实现

的SKINNY算法加密部分流程如图5所示,解密部分与加密

相似。

Fig.5

Parallel

5SKINNY

flowchart

算法并行流程

ofSKINNYalgorithm

表2GPU变量分配方案

Tab.2GPUvariableallocationscheme

分配变量

16

分配方案

并行粒度

明文全局内存

字节/线程

T

常量内存

轮密钥常量内存

线程数

512线程/块

3.

3

1

实验与结果分析

实验环境

实验所使用的CPU为:InterXeonE5-2643v4@

3.

存为

40GHz

12GB

;GPU

;操作系统为:

:GeForceGTX

Ubuntu

TITAN

18.

X

04.

,内存为

2LTS,

32

64

GB

bit;

,全局内

编程环

境为:CUDA10.1,GCC7.5.0。本实验的CPU代码用的C语

言编写,GPU代码用CUDAC编写。

3.2

实验结果

验操作是对相同大小的明文分别进行基于CPU和

GPU

录运行的时间和吞吐量。为了降低实验误差,

的加密运算,明文大小从16B开始二倍递增到

每种规格的明

64MB,记

文均运行10次,取平均值。用加速效率和加速比来作为衡量

算法性能提升的指标,加速效率表示并行程序的运行效率的

提升情况,加速效率

S

的定义如式(6)所示;加速比表示并行

程序对比串行程序的性能提升,加速比

E

的定义如式(7)

所示。

S=(T

C

-T

G

)/

(6)

E=T

T

C

C

其中:表示

/T

G

(7)

T

C

CPU串行加密时间;

T

3.2.1

G

表示GPU并行加密时间。

对比以及吞吐量的变化趋势如表

SKINNY

SKINNY

算法的

算法

ECB

ECB

模式在

模式的实验结果与分析

CPU

3和图

6

GPU

所示。从表

上运行的效果的

3和图6

可以看出:随着输入数据的倍速增长,基于CPU的SKINNY算

法的运行时间也倍速增长,而基于GPU的该算法的运行时间

却以缓慢的速度增长。随着明文数据增到16MB左右,加速

比和加速效率达到峰值。并且随着输入数据的增大,基于

GPU

GPU

的吞吐量增幅明显,而CPU吞吐量相对稳定,

吐量趋于稳定。对于

吞吐量的峰值出现在明文大小在

ECB模式来说,加速比峰值可达

16MB左右时,

增幅不大。

此后吞

671,加

速效率峰值可达99.85%。

Fig.

图6

6

SKINNY_ECB

Throughputof

加密串行和并行吞吐量对比

SKINNY_ECB()

1140

计算机应用

第41卷

表3SKINNY_ECB实现性能比较(CPU对比GPU)

Tab.3SKINNY_ECB

implementation

performancecomparison

明文大小

CPU

时间

运行

加速比

16

32

B0.

/ms

GPU

时间

运行

加速效率/%

0.

080.

/ms

0.

0.

150.

28-273.

0.

26

128

64

B

B

0.

280.

28-91.

33

0.

50

256

B

1.

560.

29-3.

78

1.

97

512

B

1.

110.

3046.

20

3.

87

1

B

2.

440.

3171.

58

3.

53

2

KB

4.

26

30

0.

3476.

67

0.

3584.

32

5.

14

4

KB

13.

7.790.

3791.

70

14.

9.

55

69

16

8

KB

KB

25.

770.

4893.

34

95.

89

20.

70

32

KB

KB48.

130.

64

0.

6497.

34

98.

4638.

60

128

64KB

184.

93.

11

110.

66

99.

63

137.

72.

77

64

256

KB

367.

400.

68

1.

7599.

27

246.

22

512

KB99.

59

298.

51

1

KB

1

735.

72

051.

23

99.

67

2

467.783.

80

4399.

76409.

83

2

MB

99.

77427.

28

4

MB

11

5

959.

865.

30

4110.

5.88

99.

80498.

95

24

760.0120.

58

99.

82554.

02

16

8

MB

MB

46

145.36.

24

4199.

83580.

18

32

MB

93

934.

64

869.

48

86140.

69.96

59

99.

85663.

77

64

MB

MB99.

85

85

670.

12

667.

90

65

3.2.2

对比以及吞吐量的变化趋势如表

SKINNY

SKINNY

算法的

算法

CTR

CTR

模式在

模式的实验结果与分析

CPU

4和图

7

GPU

所示。

上运行的效果的

表4SKINNY_CTR实现性能比较(CPU对比GPU)

Tab.4SKINNY_CTR

implementation

CPUvsGPU)

performancecomparison

明文大小

CPU

时间

运行

加速比

16

32

B0.

/ms

GPU

时间

运行

加速效率/%

0.

070.

/ms

0.

0.

140.

27-285.

0.

26

128

64

B

B

0.

270.

26-85.

71

1.

52

256

B

1.

550.

27

2.

02

512

B

1.

110.

2849.

0.

71

00

3.

00

1

B

2

KB2.

730.

3072.

45

3.

400.

3082.

97

0.

3087.

664.

70

4

KB90.

50

12.

5.

10

800.

30

93.

3210.

8.

65

28

16

8

KB

KB

24.

560.

36

96.

7916.

03

32

KB

45.

210.

47

0.

5197.

2626.

23

98.

8947.

46

29

128

64

KB

KB

183.

91.

78

900.

51

99.

89

256

KB

365.

90

60

0.

55

0.

6199.

40167.

89.95

512

KB99.

67301.

20

1

KB

1

735.1.

90

99.

75396.

42

2

MB

2

471.

00

832.

60

5.

92

17

99.

78459.

14

4

MB99.

80504.

65

568.

05

11

5

942.

886.

10

99.

82

23

767.

02

0115.

8.47

99.

86694.

55

16

8

MB

MB

47

621.0331.

94

99.

86738.

24

94

167.

196.

20

11117.

61.

13

47

00

99.

87756.

01

64

32

MB

MB

MB

99.

87

87

765.

01

760.

01

32

Fig.

图7

7

SKINNY_CTR

Throughputof

加密串行和并行吞吐量对比

SKINNY_CTR()

它的增长与变化曲线与ECB模式类似,但CTR模式的实

现速度要稍快于ECB模式的实现速度。CTR和ECB模式最

大的区别在于

counter加1,所以加密速度更快。它的加速比和加速效率峰

CTR有一个16字节的计数器counter,每次加密

值也都出现在明文数据输入为16MB左右,其中加速比最高

可达

3.3

765,加速效率最高可达99.87%。

64

因为数据量太小,

B

综合两种加密模式的分析,

实验讨论

时,加速比要小于

GPU开启的线程数少,

1,说明基于

发现当输入明文大小在

CPU

无法通过线程级并行

的性能要优于GPU

16B~

来隐藏延迟;也说明一个线程的GPU并行运算的时间效果远

没有单线程CPU好。但是,当输入明文变大,例如16MB,基

于GPU的性能要明显优于CPU,当处理大量数据时,GPU可

以通过多个线程之间的乱序执行和多个线程间的灵活切换来

隐藏延迟,从而提高吞吐量。

也就是说:当输入明文大小较小(小于64B)时,基于CPU

的性能要好于GPU性能;但是,当输入明文大小变大(64B及

以上)

CPU

时,GPU的性能要比CPU好得多,GPU在性能方面比

GPU

优势显著。虽然当可并行化数据的大小越来越大时,

得到提升,

的性能就可以得到充分利用,

由于受到GPU自身硬件条件的限制,

但GPU的性能并不能无限

它的速度提

升也是有边界的,比如当输入明文超过2MB时,吞吐量增长

趋于平稳,执行时间开始呈线性增长。由图4~5可以得出,并

行GPU的吞吐量变化大致分为三个阶段:16B~128KB吞吐量

为指数增长,128KB~4MB吞吐量为线性增加,4MB及以上吞

吐量增加趋于稳定。

3.4

实验结果对比

OpenCL

献[17]报告了ECB模式下SKINNY不同版本的在

分布操作进行优化,

中的并行实现,

但是没有提及线程块的配置、

他们的优化方法是分别对加密算法的

存储方式选

择等问题。相较于文献[17]的ECB模式下的SKINNY-256并

行实现,本文基于GPU实现并行算法的最高吞吐量是其1.29

倍。并且由于

SKINNY-256具有相同的明文分组和密钥分组长度,

AES是目前主流的密码算法,且AES-256和

的实验结果与文献[18]关于ECB模式下的AES-256加速的并

还将本文

行算法进行对比,对比结果表明:本文的结果有2.55倍的性

能提升。具体比较如表

SKINNY

力。本文通过将

的ECB模式在

5所示。这说明,本文采用的方法对

SKINNY

GPU

下能有效地发挥其并行计算能

5个加解密步骤进行组合形成1

个整体表达式,使得SKINNY的实现只需要4个

T

表查找和5

个XOR运算,减少了代码数量、降低了内存占用面积,提高了

并行性;采用粗粒度的并行方式即“每个线程一个分组”用于

线程调度,避免了线程间的频繁数据交互;线程块数的设置非

定值而是随明文大小和线程数个数变化,其计算公式为:明文

第4期解文博等:基于CUDA的SKINNY加密算法并行实现与分析

1141

总数/每块线程数/分组大小,有助于提高并行性能。同时本文

还对CTR模式在GPU下的实现方法进行了探究,针对CTR模

式与ECB模式的不同,将CTR模式特有的计数器初始值存储

到寄存器中,其他操作与ECB模式基本相似,结果发现CTR

模式的并行也可以在GPU上充分发挥其并行计算能力。

表5不同算法的吞吐量比较

Tab.5Throughputcomparisonofdifferentalgorithms

算法平台

编程最大性能提升

架构吞吐量(/Gb·s

-1

)倍数

文献[17]算法

文献[18]算法

940MX

OpenCL3.1.

本文算法

GTX

CUDA

TAN

TI

X

-

CUDA

1.

28

2.

29

4.

66

24

55

4

本文基于

结语

GPU下的CUDA编程模型,利用SKINNY-256

算法的结构和特点,提出其ECB和CTR模式的并行优化方

案。实验结果表明,对于SKINNY算法的ECB和CTR模式,当

处理数据在16MB及以上时,GPU加速效率可以达到99.85%

和99.87%,加速比分别可达到671和765。进一步的研究工

作可以考虑对其他分组密码算法如国密SM4进行GPU下的

并行加速。

参考文献(References)

[1]

with

KEDEM

SIMD

G,orceattackonUNIXpasswords

Symposium.

computer[C]//Proceedings

[2]

OLANO

C]//Proceedings

M,LASTRA

Berkeley:

of

A.

USENIX

the

A

25th

shading

Association

ofthe

Annual

language

,1999

8thUSENIX

Conference

ongraphics

:8-8.

Security

onComputer

hardware

[3]

159

Graphics

-168.

k:ACM,1998:

Cards

COOK

for

D,

Security

KEROMYTIS

[M].Boston

Graphics

:Springer,2006

Exploiting

97-101.

Graphics

[4]MANAVSKI

IEEE

accelerator

International

for

SA.

AES

CUDA

cryptography

compatible

Conference

[C

on

GPU

//

Signal

Proceedings

asanefficienthardware

Processing

ofthe2007

and

[5]

Communications.

CHU

coding

X,

Conference

on

ZHAO

Piscataway:IEEE,2007:65-68.

GPUs

K

onResearch

C

WANG

]//Proceedings

calrandomlinearnetwork

inNetworking

of

the

LNCS

8th

5550.

International

Springer

Berlin:

[6]LI

AES

Q,ZHONG

,2009:

C

573

,ZHAO

-585.

K,entationandanalysisof

International

encryption

Conference

onGPU[

on

C]

High

//Proceedings

Performance

ofthe

Computing

IEEE14th

and

[7]

Software

Communication/

CHEONG

and

H

Systems.

IEEE

S,LEE

Piscataway

9thInternational

implementation

IEEE,

Conference

2012:843

of

-

on

848.

Embedded

and

blockciphers

5th

PRNGsforKeplerGPUarchitecture[C]//Proceedings

Piscataway

International

ABDELRAHMAN

:IEEE,

ConferenceonITConvergenceandSecurity.

ofthe

[8]

performance

A

2015

A,

FOUAD

1-5.

MM,DAHSHANH,

analysisapproach

CUDA

AES

C]//

implementation

Proceedings

:aquantitativeperformance

[9]

Conference.

MAJ,CHEN

Piscataway

X,XU

R,

IEEE

etal.

,2017

Implementation

:1077

of

-

the

1085.

2017Computing

andevaluationof

different

the

Piscataway

2ndInternational

paralleldesignsofAESusingCUDA[C]//Proceedingsof

[10]YEOHW

:IEEE

Z,TEH

,2017

Conference

:606-614.

onDataScienceinCyberspace.

cipherdifferentials

C]//Proceedings

JS,

a

tedsearch

-and

for

-bound

block

algorithm

Information

SecurityandPrivacy

of

GPU

the

-

25th

accelerated

LNCS

Australasian

branch

Conference

:Springer

on

[11]

2020

BEIERLE

:160-179.

blockciphers

C,

and

JEAN

itslow

J,

-latency

KÖLBL

variant

S,et

MANTIS

SKINNY

C]//Proceedings

familyof

the36thAnnualInternationalCryptologyConference

of

[12]

Berlin

BLACK

:Springer

parallelizable

J,ROGAWAY

,2016:123

messageauthentication

P.

-

A

153.

,LNCS9815.

block-cipher

[C]//

mode

Proceedings

ofoperation

ofthe

for

2002

Cryptographic

International

Techniques

Conference

,LNCS

onthe

2332.

Theory

Berlin

and

:Springer

Applications

,2002

of

[13]

384

DWORKIN

-397.

operation:methods

endation

forformat

-01]

-

.

preserving

forblock

https://nvlpubs.

encryption

cipher

/nistpubs/

modes

NISTSP

of

[14]

SpecialPublications/NIST.

800-38G[R/OL].[2020-02

费雄伟,

.

的研究与实现

李肯立,

[J]

阳王东

.小型微型计算机系统,

.基于CTR模式的GPU

2015

并行

,36(

AES

3):

算法

529-

533.

implementation

(FEIXW,LIKL,YANGWD.

model[J].Journal

ofGPU

ofChinese

parallel

Computer

AESalgorithm

Systems,

based

Research

2015,

on

36(

CTR

and

529-533.)

3):

[15]顾青,

的实现和优化

高能,包珍珍,

[J].中国科学院研究生院学报,

等.基于GPGPU和CUDA的高速

2011

AES

,28(

算法

6):

776

optimization

-785.(GU

CUDA[J].Journal

of

Q

high

,GAO

of

speed

N,

Graduate

AES

BAO

algorithm

ZZ,etal.

based

Implementation

onGPGPU

and

and

[16]

Sciences

NVIDIA

Corporation.

2011,28(6)

CUDA

:776-785.

University

C++

ofChineseAcademyof

[2020-03-01].https://.

programming

com/cuda/cuda

guide

-c-programming

[EB/OL].

-

[17]司法鉴定科学研究院

guide/.

存储介质,2.

.Skinny

2

算法优化实现方法、

[P].2019-07-09.(

系统、

Academy

终端、

of

Forensic

method,system

Science.

,terminal

Skinny

,storage

algorithm

medium

optimization

implementation

[18]

2019

WANG

-07-

C

09.

2.2[P].

[2020-03-01]

CHU

.https

X.

://arxiv.

GPUaccelerated

org/pdf/1902.

AES

05234.

algorithm

pdf.

[EB/OL].

Wireless

Thisof

GXKL06160112

Broadband

workispartiallysupportedbytheGuangxiKeyLaboratory

).

CommunicationandSignalProcessingDirectorFund

XIEWenbo,bornin1996,earchinterests

include

WEI

block

Yongzhuang

cipheralgorithm

,born

,GPU

in1976

parallel

,Ph.

computing.

D.,earch

interests

LIU

include

Zhenghong

symmetric

,born

cryptographic

in1979,M

algorithm

,S.,lecturer.

designand

His

analysis.

research

interests

GateArray

include

(FPGA

wireless

);GPU

broadband

parallelcomputing.

communications,FieldProgrammable


发布者:admin,转转请注明出处:http://www.yc00.com/num/1713913897a2343535.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信