亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于CUDA的SKINNY加密算法并行實(shí)現(xiàn)與分析

        2021-04-20 14:07:22解文博韋永壯劉爭(zhēng)紅
        計(jì)算機(jī)應(yīng)用 2021年4期
        關(guān)鍵詞:明文線程吞吐量

        解文博,韋永壯*,劉爭(zhēng)紅

        (1.廣西密碼學(xué)與信息安全重點(diǎn)實(shí)驗(yàn)室(桂林電子科技大學(xué)),廣西桂林 541004;2.廣西無(wú)線寬帶通信與信號(hào)處理重點(diǎn)實(shí)驗(yàn)室(桂林電子科技大學(xué)),廣西桂林 541004)

        0 引言

        圖形處理器(Graphic Processing Unit,GPU)的架構(gòu)與中央處理器(Central Processing Unit,CPU)不同,相對(duì)于CPU 來(lái)說(shuō),GPU 的線程更多,帶寬更高,延遲更低,更適合并行計(jì)算,并且計(jì)算速度也要明顯高于CPU 的計(jì)算速度。GPU 設(shè)計(jì)之初是用于圖形圖像處理,但隨著GPU 的發(fā)展,它被不斷地用于大數(shù)據(jù)、多并行的計(jì)算。計(jì)算統(tǒng)一設(shè)備架構(gòu)(Compute Unified Device Architecture,CUDA)是NVDIA 發(fā)布的并行計(jì)算平臺(tái)和接口模型,支持C、C++等多種編程語(yǔ)言,使得GPU并行計(jì)算變得更為容易,是目前最受歡迎的應(yīng)用編程接口之一。

        利用GPU 解決密碼學(xué)問(wèn)題的最早工作是Kedem 等[1]和Olano 等[2]使用Pixel Flow 圖像引擎快速破解了UNIX 系統(tǒng)的密鑰,這使得原本用于解決圖像處理問(wèn)題的GPU 開(kāi)始用于密碼學(xué)問(wèn)題。Cook等[3]第一次嘗試對(duì)對(duì)稱(chēng)密碼算法使用GPU進(jìn)行優(yōu)化,于2006 年利用OpenGL 實(shí)現(xiàn)了高級(jí)加密標(biāo)準(zhǔn)(Advanced Encryption Standard,AES);但由于軟件的不足和硬件的限制,GPU 比CPU 的性能提升僅有2.3%。2007 年Manavski等[4]第一次利用CUDA進(jìn)行AES算法的加速,在顯卡NVIDIA Geforce 8800GTX 上實(shí)現(xiàn)了128 位的AES 算法,加密8 MB 的數(shù)據(jù),加密吞吐量可以達(dá)到8.28 Gb/s。2009 年Chu等[5]利用GPU 的強(qiáng)大計(jì)算能力來(lái)降低網(wǎng)絡(luò)編碼和同態(tài)哈希的計(jì)算成本,他們通過(guò)在GPU 上實(shí)現(xiàn)網(wǎng)絡(luò)編碼和同態(tài)哈希函數(shù)(Homomorphic Hashing Function,HHF),所得結(jié)果比CPU 上計(jì)算速度提高顯著,這種實(shí)現(xiàn)方式可以為防御分布式系統(tǒng)中的污染攻擊提供解決方案。Li 等[6]于2012 年提出在GPU 上AES 的電子密碼本(Electronic CodeBook,ECB)模式和密文分組鏈接(Cipher Block Chaining,CBC)模式的實(shí)現(xiàn),通過(guò)將T 盒分配在共享存儲(chǔ)器上并采用每個(gè)線程處理16 字節(jié)的粒度,使得GPU 運(yùn)行速度比CPU 快50 倍。Cheong 等[7]在2015 年在具有Kepler 架構(gòu)的NVIDIA GTX 690 上提出加速分組密碼IDEA(International Data Encryption Algorithm)、Blowfish 和Threefish的技術(shù),對(duì)于三個(gè)算法分別實(shí)現(xiàn)了90.3 Gb/s、50.82 Gb/s 和83.71 Gb/s 的加密吞吐量。2017 年,Abdelrahman 等[8]提出了使用不同粒度值在三種不同的GPU 架構(gòu)上的AES-128 算法(ECB 模式)實(shí)現(xiàn)。他們的實(shí)驗(yàn)結(jié)果表明,使用NVIDIA GTX 1080(Pascal)、NVIDIA GTX TITAN X(Maxwell)和GTX 780(Kepler)GPU 架構(gòu),吞吐率分別達(dá)到277 Gb/s、201 Gb/s 和78 Gb/s。同年,Ma 等[9]在CBC 模式下實(shí)現(xiàn)了AES解密,他們對(duì)基于GPU 的不同參數(shù)設(shè)置下的實(shí)現(xiàn)進(jìn)行了全面分析,這些參數(shù)包括:輸入數(shù)據(jù)的大小、每個(gè)塊的線程數(shù)、內(nèi)存分配的方式和并行粒度。最終GPU 上的最優(yōu)性能是CPU 上的112 倍。2020 年,Yeoh 等[10]提出一種基于GPU 的快速搜索密碼學(xué)算法差分特性的分支定界算法,文章針對(duì)TRIFLE-BC-128 算法,利用中間相遇方法與GPU 相結(jié)合,所得結(jié)果與基于CPU 的方法相比,搜索效率提高了約58 倍。綜上可知,關(guān)于分組密碼在GPU 上的快速實(shí)現(xiàn)研究較多的是對(duì)AES 的優(yōu)化,作為Beierle 等[11]新推出的分組密碼算法SKINNY 雖與AES結(jié)構(gòu)類(lèi)似,都是代換-置換網(wǎng)絡(luò)(Substitution-Permutation Network,SPN)結(jié)構(gòu),但由于采用新型設(shè)計(jì)理念,具有安全性好、使用靈活等優(yōu)點(diǎn),特別適合在微控制器和軟件上快速實(shí)現(xiàn),備受業(yè)界廣泛關(guān)注,所以對(duì)其快速并行實(shí)現(xiàn)是目前亟待解決的問(wèn)題。

        本文基于Linux 系統(tǒng)下的CUDA 平臺(tái),通過(guò)分析SKINNY算法的特性,對(duì)該算法的ECB 和計(jì)數(shù)器(Counter,CTR)模式進(jìn)行并行加速,在數(shù)據(jù)量達(dá)到64 MB 的加密環(huán)境下分析測(cè)試了GPU 并行算法的性能,并對(duì)基于CPU 實(shí)現(xiàn)和基于GPU 實(shí)現(xiàn)的SKINNY 算法進(jìn)行了時(shí)間、加速效率、加速比和吞吐量的分析。

        1 SKINNY算法

        1.1 算法簡(jiǎn)介

        SKINNY 算法是一種新的輕量級(jí)密碼算法,該算法加密分組為64 和128 位的明文數(shù)據(jù),可以使用64、128、192、256 和384 位的密鑰來(lái)加密。本文快速實(shí)現(xiàn)的算法是數(shù)據(jù)分組長(zhǎng)度為128 位、密鑰長(zhǎng)度為256 位的SKINNY 算法,簡(jiǎn)記為SKINNY-256。SKINNY 算法的操作是在二維數(shù)組上執(zhí)行的,該數(shù)組的初始狀態(tài)如式(1)所示:

        SKINNY-256的輪函數(shù)由以下5個(gè)操作組成,分別是:

        1)字節(jié)替換(SubCells,SC):通過(guò)S 盒將一個(gè)字節(jié)替換為另一個(gè)字節(jié)。

        2)輪加常數(shù)(AddConstants,AC):狀態(tài)矩陣異或輪常數(shù)。

        3)輪加密鑰(AddRoundTweakey,ART):輪密鑰的第一行、第二行和狀態(tài)矩陣相應(yīng)的位置異或。

        4)行移位(ShiftRows,SR):簡(jiǎn)單的位移。矩陣從第0 行到第3行,依次循環(huán)移動(dòng)0、1、2、3個(gè)字節(jié)。

        5)列混淆(MixColumns,MC):狀態(tài)矩陣與二進(jìn)制矩陣相乘。

        SKINNY 的加密輪函數(shù)過(guò)程如圖1 所示,由48 個(gè)輪函數(shù)迭代而成,解密過(guò)程相似。密鑰編排算法可參考文獻(xiàn)[11]。

        圖1 SKINNY算法加密輪函數(shù)Fig.1 Encryption round function of SKINNY algorithm

        1.2 SKINNY加密模式的選擇

        分組密碼常用的工作模式有5 種[12-14],分別是:電子密碼本(ECB)模式、計(jì)數(shù)器(CTR)模式、密碼塊鏈接(CBC)模式和密碼反饋(Cipher FeedBack,CFB)模式及輸出反饋(Output FeedBack,OFB)模式。

        1.2.1 模式比較

        表1列出了5種加密模式的并行特性[6]:ECB、CTR模式都支持并行計(jì)算,因?yàn)樗鼈兊拿總€(gè)單個(gè)分組都可以獨(dú)立加密;而其他三種模式不支持,因?yàn)樗鼈兊姆纸M輸入都與前一段的輸出有一定關(guān)系,具有串行特性。本文SKINNY 算法實(shí)現(xiàn)選擇的是可以并行實(shí)現(xiàn)的ECB 模式和CTR 模式。接下來(lái)對(duì)ECB和CTR這兩種模式進(jìn)行簡(jiǎn)單介紹。

        表1 加密模式比較[6]Tab.1 Comparison of encryption modes[6]

        1.2.2 電子密碼本(ECB)模式

        在ECB 模式下,數(shù)據(jù)會(huì)被分組獨(dú)立進(jìn)行加密。這種加密模式加密方便,應(yīng)用廣泛。此模式的表達(dá)式如式(2)所示:

        其中:i=1,2,…,n;P表示輸入的明文;C表示輸出的密文。

        1.2.3 計(jì)數(shù)器(CTR)模式

        計(jì)數(shù)器模式有一個(gè)自增的連續(xù)值,將這個(gè)自增值用密鑰進(jìn)行加密,加密之后的中間值與明文進(jìn)行異或,得到密文,相當(dāng)于一次一密。此模式的加密方式快速簡(jiǎn)單,可靠安全,但它容易遭受攻擊者的攻擊。此模式的表達(dá)式如式(3)所示:

        其中:R={0,1,…,2(|P|-1)};i=1,2,…,n。

        2 CUDA加速SKINNY

        2.1 SKINNY的并行優(yōu)化

        SKINNY 的每一輪的操作如圖2 所示,ai,j表示輸入明文,TKk,j表示輪密鑰。

        圖2 SKINNY算法的輪變換Fig.2 Round transformation of SKINNY algorithm

        為了得到更好的實(shí)現(xiàn)性能,本文將5 個(gè)步驟進(jìn)行化簡(jiǎn)合并成為一個(gè)公式,如式(4)所示,然后將其前4 個(gè)表分別定義為T(mén)表,兩組輪密鑰矩陣合并定義為T(mén)K,輪常數(shù)矩陣定義為C。

        最終的表達(dá)式化簡(jiǎn)為4 個(gè)T表和5 個(gè)異或運(yùn)算,如式(5)所示,這樣可以避免大量的邏輯計(jì)算。

        其中:i,j=0,1,2,3;k=0,1。輪常數(shù)C只影響輸入矩陣的第一列;輪密鑰TK只影響輸入矩陣的前兩行。

        2.2 并行粒度

        并行粒度的設(shè)計(jì)會(huì)影響算法的實(shí)現(xiàn)效果,所以在設(shè)計(jì)并行粒度時(shí)要遵循兩個(gè)原則:1)提高分配線程的利用率;2)減少各線程間的通信開(kāi)銷(xiāo)[15]。并行粒度的設(shè)計(jì)一般分為兩種:一種為細(xì)粒度,一個(gè)GPU 線程處理16 字節(jié)分組中的4 字節(jié),如圖3所示;另一種稱(chēng)為粗粒度處理,一個(gè)線程處理16個(gè)字節(jié)的分組,如圖4 所示。在細(xì)粒度實(shí)現(xiàn)中,它可以調(diào)度更多線程增大吞吐量,但是線程之間的通信開(kāi)銷(xiāo)也隨之增大。在粗粒度實(shí)現(xiàn)中,單個(gè)線程處理一個(gè)獨(dú)立的SKINNY 分組,GPU 上的線程無(wú)須同步,并且每個(gè)線程都獨(dú)立運(yùn)行,從而減少了通信時(shí)間。通過(guò)實(shí)驗(yàn)對(duì)比發(fā)現(xiàn),粗粒度的設(shè)計(jì)方式要優(yōu)于細(xì)粒度。

        基于以上分析,將SKINNY 的并行粒度設(shè)計(jì)為“每個(gè)線程一個(gè)分組”,也就是說(shuō)每個(gè)線程處理16 字節(jié)的數(shù)據(jù)。數(shù)據(jù)被分為多個(gè)16字節(jié)矩陣,這些矩陣由GPU 同步執(zhí)行。在這種情況下,每個(gè)GPU 線程可以獨(dú)立完成,因?yàn)椴煌€程的矩陣不具有相互依賴(lài)性,線程間不用相互等待。

        圖3 細(xì)粒度并行方案Fig.3 Fine-grained parallel scheme

        圖4 粗粒度并行方案Fig.4 Coarse-grained parallel scheme

        2.3 內(nèi)存分配

        CUDA 的內(nèi)存分配策略非常重要,因?yàn)镃UDA 具有5種不同的內(nèi)存[16],每種內(nèi)存的特性在一定程度上相互不同。內(nèi)存分配策略的不同會(huì)對(duì)性能帶來(lái)明顯的影響。

        2.3.1 明文內(nèi)存分配

        輸入明文被分為幾個(gè)互相獨(dú)立的塊進(jìn)行加密。本文使用的是一個(gè)線程處理一個(gè)分組,例如,當(dāng)處理1 000個(gè)分組,就需要1 000個(gè)GPU線程。因?yàn)槊魑臄?shù)量較大,所以將整體明文存儲(chǔ)到全局內(nèi)存中。每個(gè)線程獲得16 個(gè)字節(jié)的數(shù)據(jù)后,將會(huì)暫存在線程的寄存器中,寄存器對(duì)于各個(gè)線程是私有的,即彼此無(wú)法互相訪問(wèn)。所有線程完加密后,再將數(shù)據(jù)從GPU 內(nèi)存中取回。

        2.3.2T表內(nèi)存分配

        T表本質(zhì)上是查找表,在線程間是只讀數(shù)據(jù),用戶(hù)可以通過(guò)它們快速實(shí)現(xiàn)部分加密操作。每個(gè)線程在每一輪加密操作中都需要隨機(jī)訪問(wèn)T表。因此,本文需要將T表提前加載到GPU 的內(nèi)存中。根據(jù)這些屬性,將T表分配到CUDA 常量?jī)?nèi)存中。另一種分配方案是將T表分配到共享內(nèi)存中,但是此種分配方式會(huì)存在一些問(wèn)題,即存儲(chǔ)體沖突,如果多個(gè)地址請(qǐng)求落在相同的內(nèi)存存儲(chǔ)體時(shí),就會(huì)發(fā)生存儲(chǔ)體沖突,導(dǎo)致請(qǐng)求被重復(fù)執(zhí)行。

        2.3.3 輪密鑰內(nèi)存分配

        密鑰的保密性和密鑰的長(zhǎng)度是保證密碼的安全性的基礎(chǔ)。在SKINNY 算法的實(shí)現(xiàn)中,每一輪加密都需要密鑰異或操作。CUDA 的每個(gè)線程都需要輸入不同的輪密鑰。在這種情況下,本文將輪密鑰放入常量存儲(chǔ)器中,所有線程在常量?jī)?nèi)存中共享輪密鑰。

        2.4 線程數(shù)的分配

        每個(gè)GPU 塊中線程數(shù)的數(shù)量也會(huì)影響運(yùn)行性能。每個(gè)塊的線程數(shù)如何分配,存在一些原則。在分配時(shí)一個(gè)塊的線程數(shù)最好是32的倍數(shù),因?yàn)檫B續(xù)的線程會(huì)以32個(gè)為一組組成一個(gè)線程束(warp),同一warp 里的線程會(huì)對(duì)不同的數(shù)據(jù)執(zhí)行相同的指令。而如果線程數(shù)不是32的倍數(shù),GPU 會(huì)將不足32的線程的warp 補(bǔ)全,造成資源的浪費(fèi)。本文使用的設(shè)備的一個(gè)塊最大線程數(shù)為1 024,設(shè)置線程數(shù)不能超過(guò)其最大值,雖然說(shuō)一個(gè)塊中的線程越多越能隱藏延遲,但是這樣會(huì)使每個(gè)線程可以使用的資源變少,考慮到所用的其他資源:共享內(nèi)存、寄存器等,為了達(dá)到更好的性能,決定每塊分配512 個(gè)線程。

        綜上所述,最終的分配方案如表2 所示?;贕PU 實(shí)現(xiàn)的SKINNY 算法加密部分流程如圖5 所示,解密部分與加密相似。

        圖5 SKINNY算法并行流程Fig.5 Parallel flowchart of SKINNY algorithm

        表2 GPU變量分配方案Tab.2 GPU variable allocation scheme

        3 實(shí)驗(yàn)與結(jié)果分析

        3.1 實(shí)驗(yàn)環(huán)境

        本實(shí)驗(yàn)所使用的CPU 為:Inter Xeon E5-2643 v4 @3.40 GHz;GPU:GeForce GTX TITAN X,內(nèi)存為32 GB,全局內(nèi)存為12 GB;操作系統(tǒng)為:Ubuntu 18.04.2 LTS,64 bit;編程環(huán)境為:CUDA 10.1,GCC 7.5.0。本實(shí)驗(yàn)的CPU 代碼用的C 語(yǔ)言編寫(xiě),GPU代碼用CUDA C編寫(xiě)。

        3.2 實(shí)驗(yàn)結(jié)果

        實(shí)驗(yàn)操作是對(duì)相同大小的明文分別進(jìn)行基于CPU 和GPU 的加密運(yùn)算,明文大小從16 B 開(kāi)始二倍遞增到64 MB,記錄運(yùn)行的時(shí)間和吞吐量。為了降低實(shí)驗(yàn)誤差,每種規(guī)格的明文均運(yùn)行10 次,取平均值。用加速效率和加速比來(lái)作為衡量算法性能提升的指標(biāo),加速效率表示并行程序的運(yùn)行效率的提升情況,加速效率S的定義如式(6)所示;加速比表示并行程序?qū)Ρ却谐绦虻男阅芴嵘铀俦菶的定義如式(7)所示。

        其中:TC表示CPU串行加密時(shí)間;TG表示GPU并行加密時(shí)間。

        3.2.1 SKINNY算法ECB模式的實(shí)驗(yàn)結(jié)果與分析

        SKINNY 算法的ECB 模式在CPU 和GPU 上運(yùn)行的效果的對(duì)比以及吞吐量的變化趨勢(shì)如表3和圖6所示。從表3和圖6可以看出:隨著輸入數(shù)據(jù)的倍速增長(zhǎng),基于CPU 的SKINNY 算法的運(yùn)行時(shí)間也倍速增長(zhǎng),而基于GPU 的該算法的運(yùn)行時(shí)間卻以緩慢的速度增長(zhǎng)。隨著明文數(shù)據(jù)增到16 MB 左右,加速比和加速效率達(dá)到峰值。并且隨著輸入數(shù)據(jù)的增大,基于GPU 的吞吐量增幅明顯,而CPU 吞吐量相對(duì)穩(wěn)定,增幅不大。GPU 吞吐量的峰值出現(xiàn)在明文大小在16 MB 左右時(shí),此后吞吐量趨于穩(wěn)定。對(duì)于ECB 模式來(lái)說(shuō),加速比峰值可達(dá)671,加速效率峰值可達(dá)99.85%。

        圖6 SKINNY_ECB加密串行和并行吞吐量對(duì)比Fig.6 Throughput of SKINNY_ECB(CPU vs.GPU)

        表3 SKINNY_ECB實(shí)現(xiàn)性能比較(CPU對(duì)比GPU)Tab.3 SKINNY_ECB implementation performance comparison(CPU vs.GPU)

        3.2.2 SKINNY算法CTR模式的實(shí)驗(yàn)結(jié)果與分析

        SKINNY 算法的CTR 模式在CPU 和GPU 上運(yùn)行的效果的對(duì)比以及吞吐量的變化趨勢(shì)如表4和圖7所示。

        表4 SKINNY_CTR實(shí)現(xiàn)性能比較(CPU對(duì)比GPU)Tab.4 SKINNY_CTR implementation performance comparison(CPU vs GPU)

        圖7 SKINNY_CTR加密串行和并行吞吐量對(duì)比Fig.7 Throughput of SKINNY_CTR(CPU vs.GPU)

        它的增長(zhǎng)與變化曲線與ECB 模式類(lèi)似,但CTR 模式的實(shí)現(xiàn)速度要稍快于ECB 模式的實(shí)現(xiàn)速度。CTR 和ECB 模式最大的區(qū)別在于CTR 有一個(gè)16字節(jié)的計(jì)數(shù)器counter,每次加密counter 加1,所以加密速度更快。它的加速比和加速效率峰值也都出現(xiàn)在明文數(shù)據(jù)輸入為16 MB 左右,其中加速比最高可達(dá)765,加速效率最高可達(dá)99.87%。

        3.3 實(shí)驗(yàn)討論

        綜合兩種加密模式的分析,發(fā)現(xiàn)當(dāng)輸入明文大小在16 B~64 B 時(shí),加速比要小于1,說(shuō)明基于CPU 的性能要優(yōu)于GPU。因?yàn)閿?shù)據(jù)量太小,GPU開(kāi)啟的線程數(shù)少,無(wú)法通過(guò)線程級(jí)并行來(lái)隱藏延遲;也說(shuō)明一個(gè)線程的GPU 并行運(yùn)算的時(shí)間效果遠(yuǎn)沒(méi)有單線程CPU 好。但是,當(dāng)輸入明文變大,例如16 MB,基于GPU 的性能要明顯優(yōu)于CPU,當(dāng)處理大量數(shù)據(jù)時(shí),GPU 可以通過(guò)多個(gè)線程之間的亂序執(zhí)行和多個(gè)線程間的靈活切換來(lái)隱藏延遲,從而提高吞吐量。

        也就是說(shuō):當(dāng)輸入明文大小較?。ㄐ∮?4 B)時(shí),基于CPU的性能要好于GPU 性能;但是,當(dāng)輸入明文大小變大(64 B 及以上)時(shí),GPU 的性能要比CPU 好得多,GPU 在性能方面比CPU 優(yōu)勢(shì)顯著。雖然當(dāng)可并行化數(shù)據(jù)的大小越來(lái)越大時(shí),GPU 的性能就可以得到充分利用,但GPU 的性能并不能無(wú)限得到提升,由于受到GPU 自身硬件條件的限制,它的速度提升也是有邊界的,比如當(dāng)輸入明文超過(guò)2 MB 時(shí),吞吐量增長(zhǎng)趨于平穩(wěn),執(zhí)行時(shí)間開(kāi)始呈線性增長(zhǎng)。由圖4~5可以得出,并行GPU的吞吐量變化大致分為三個(gè)階段:16 B~128 KB吞吐量為指數(shù)增長(zhǎng),128 KB~4 MB 吞吐量為線性增加,4 MB 及以上吞吐量增加趨于穩(wěn)定。

        3.4 實(shí)驗(yàn)結(jié)果對(duì)比

        文獻(xiàn)[17]報(bào)告了ECB 模式下SKINNY 不同版本的在OpenCL 中的并行實(shí)現(xiàn),他們的優(yōu)化方法是分別對(duì)加密算法的分布操作進(jìn)行優(yōu)化,但是沒(méi)有提及線程塊的配置、存儲(chǔ)方式選擇等問(wèn)題。相較于文獻(xiàn)[17]的ECB 模式下的SKINNY-256 并行實(shí)現(xiàn),本文基于GPU 實(shí)現(xiàn)并行算法的最高吞吐量是其1.29倍。并且由于AES 是目前主流的密碼算法,且AES-256 和SKINNY-256具有相同的明文分組和密鑰分組長(zhǎng)度,還將本文的實(shí)驗(yàn)結(jié)果與文獻(xiàn)[18]關(guān)于ECB模式下的AES-256加速的并行算法進(jìn)行對(duì)比,對(duì)比結(jié)果表明:本文的結(jié)果有2.55 倍的性能提升。具體比較如表5 所示。這說(shuō)明,本文采用的方法對(duì)SKINNY 的ECB 模式在GPU 下能有效地發(fā)揮其并行計(jì)算能力。本文通過(guò)將SKINNY 的5 個(gè)加解密步驟進(jìn)行組合形成1個(gè)整體表達(dá)式,使得SKINNY 的實(shí)現(xiàn)只需要4 個(gè)T表查找和5個(gè)XOR 運(yùn)算,減少了代碼數(shù)量、降低了內(nèi)存占用面積,提高了并行性;采用粗粒度的并行方式即“每個(gè)線程一個(gè)分組”用于線程調(diào)度,避免了線程間的頻繁數(shù)據(jù)交互;線程塊數(shù)的設(shè)置非定值而是隨明文大小和線程數(shù)個(gè)數(shù)變化,其計(jì)算公式為:明文總數(shù)/每塊線程數(shù)/分組大小,有助于提高并行性能。同時(shí)本文還對(duì)CTR 模式在GPU 下的實(shí)現(xiàn)方法進(jìn)行了探究,針對(duì)CTR 模式與ECB 模式的不同,將CTR 模式特有的計(jì)數(shù)器初始值存儲(chǔ)到寄存器中,其他操作與ECB 模式基本相似,結(jié)果發(fā)現(xiàn)CTR模式的并行也可以在GPU上充分發(fā)揮其并行計(jì)算能力。

        表5 不同算法的吞吐量比較Tab.5 Throughput comparison of different algorithms

        4 結(jié)語(yǔ)

        本文基于GPU 下的CUDA 編程模型,利用SKINNY-256算法的結(jié)構(gòu)和特點(diǎn),提出其ECB 和CTR 模式的并行優(yōu)化方案。實(shí)驗(yàn)結(jié)果表明,對(duì)于SKINNY 算法的ECB 和CTR 模式,當(dāng)處理數(shù)據(jù)在16 MB 及以上時(shí),GPU 加速效率可以達(dá)到99.85%和99.87%,加速比分別可達(dá)到671 和765。進(jìn)一步的研究工作可以考慮對(duì)其他分組密碼算法如國(guó)密SM4 進(jìn)行GPU 下的并行加速。

        猜你喜歡
        明文線程吞吐量
        奇怪的處罰
        2016年10月長(zhǎng)三角地區(qū)主要港口吞吐量
        集裝箱化(2016年11期)2017-03-29 16:15:48
        2016年11月長(zhǎng)三角地區(qū)主要港口吞吐量
        集裝箱化(2016年12期)2017-03-20 08:32:27
        淺談linux多線程協(xié)作
        奇怪的處罰
        四部委明文反對(duì)垃圾焚燒低價(jià)競(jìng)爭(zhēng)
        2014年1月長(zhǎng)三角地區(qū)主要港口吞吐量
        集裝箱化(2014年2期)2014-03-15 19:00:33
        上海港11月集裝箱吞吐量同比增長(zhǎng)4.25%
        廣東造船(2013年6期)2013-04-29 16:34:55
        Linux線程實(shí)現(xiàn)技術(shù)研究
        射精区-区区三区| 蜜桃av夺取一区二区三区| 97久久综合精品国产丝袜长腿| 久久天天躁狠狠躁夜夜av浪潮| 国产高清一区二区三区视频 | 精品亚洲国产成人蜜臀av| 艳妇臀荡乳欲伦交换在线播放| 精品无码AⅤ片| 国产一区二区三区涩涩| 一个少妇的淫片免费看 | 国产自产21区激情综合一区| 国产在线观看视频一区二区三区| 国产成人亚洲综合无码品善网| 日日摸夜夜添狠狠添欧美| 亚洲日本VA午夜在线电影| 成人av综合资源在线| 日韩人妻一区二区三区蜜桃视频| 四虎4545www国产精品| av中文字幕在线资源网| 人妻中文字幕在线中文字幕| 国产婷婷色综合av蜜臀av| 国产乱人伦AV在线麻豆A| 亚洲中文字幕高清在线视频一区| 极品少妇xxxx精品少妇偷拍| 亚洲熟女综合一区二区三区| 亚洲AV秘 无码一区二区三区| 精品成人av人一区二区三区| 一本精品99久久精品77| 久久99精品久久久久久久清纯| 能看的网站中文字幕不卡av| 免费国产在线视频自拍白浆| 亚洲日韩成人av无码网站| 国产一区二区三区韩国| 在线亚洲日本一区二区| 国产免费爽爽视频在线观看 | 日本少妇熟女一区二区| 亚洲国产精品成人综合色| 国产精品入口牛牛影视| 亚洲精品国产av成人网| 国产激情艳情在线看视频| 亚洲人成网站免费播放|