符 鶴,李春江,王 昊,謝永芳
(1.中南大學(xué)信息科學(xué)與工程學(xué)院,湖南 長沙 410083;2.國防科技大學(xué)計算機學(xué)院,湖南 長沙 410073)
密碼算法的設(shè)計基礎(chǔ)是數(shù)學(xué)問題計算的困難性,通常為了增加密碼破解的難度會增加密鑰的長度或者增加算法的復(fù)雜性,這就意味著計算量的增加。使用密碼算法的相關(guān)應(yīng)用在運行時需要處理大量的信息,計算量相當(dāng)可觀,例如密碼的暴力窮舉攻擊,對計算能力以及吞吐率都有非常高的要求。
為解決高吞吐率密碼的加速問題,本文首先提出了一個面向眾核加速器的并行加速框架,可以加速密碼算法相關(guān)應(yīng)用的運行。其次,在框架中實現(xiàn)了高吞吐率的多級任務(wù)分批技術(shù)。在天河超級計算機結(jié)點的眾核協(xié)處理器MIC平臺上的實驗結(jié)果表明,本文的工作對加速密碼算法非常有效。
基于對密碼算法高吞吐量并行優(yōu)化的需求,早在GPU出現(xiàn)的初期研究人員就已經(jīng)嘗試了基于GPU的密碼算法優(yōu)化方案。1999年Kedem等[1]就使用了定制的GPU架構(gòu)“PixelFlow”來對DES和RC4密碼算法進(jìn)行暴力破解,充分證明了GPU設(shè)備應(yīng)用在密碼領(lǐng)域的可行性。
2007年,Harrison 等[2]使用NVIDIA G80在CUDA平臺上實現(xiàn)了AES密碼算法,并獲得了4倍的速度提升。同年,Manavski[3]使用NVIDIA GeForce 8800 GTX實現(xiàn)了AES密碼算法,并在輸入為8Mb的情況下,使得AES 128達(dá)到了8.28 Gbps;并且其性能相比于Open SSL也有20倍的提升。
2008年,Yeom等[4]在GeForce 8800 GTS上分別使用OpenGL以及CUDA庫實現(xiàn)了分組密碼算法ARIA,特別是使用CUDA庫實現(xiàn)的ARIA,其吞吐量達(dá)到了4.8 Gbps。
2009年,Liu等[5]針對分組密碼中對數(shù)據(jù)塊進(jìn)行獨立操作的特性,將多種分組密碼算法部署在NVIDIA GeForce 9800 GTX上,并取得了顯著的性能提升。其中AES算法和RC5算法的吞吐率分別達(dá)到了4 200 Mbps和5 300 Mbps;而3DES取得了相比于CPU實現(xiàn)版的30倍的加速比。
2011年,Wu等[6]在GTX 9800上實現(xiàn)了并行化的MD5算法,相比于在AMD II X4 945四核CPU的實現(xiàn),其獲得了16倍的性能加速比。同年,為了減少安全部件中計算資源的使用與增加網(wǎng)頁服務(wù)器吞吐率,Yeh等[7]使用GPU實現(xiàn)了3DES密碼算法,并取得了5倍的加速比。
2016年,Tembhurne等[8]利用CUDA對RSA算法中的64-bit雙精度計算操作進(jìn)行優(yōu)化,從而提高了整個算法的性能,使其加密與解密的性能分別提升了43.26倍和40.99倍。
在密碼破解方面,2003年Lim等[9]使用MPI將John the Ripper并行化,使其可以在眾核平臺上運行,從而借助MPP的性能優(yōu)勢在更短時間內(nèi)完成任務(wù)問題,其加速比為7.8倍。
2009年,Li Chang-xin等[10]針對PDF文檔中的MD5-RC4組合加密流程,設(shè)計并實現(xiàn)了基于GTX 9800的并行優(yōu)化方案,相對于算法的CPU實現(xiàn)其性能提升了5倍,而此加密性能的提升亦可以應(yīng)用于PDF的暴力破解之中。
2013年,Schmidt等[11]使用CUDA庫通過優(yōu)化BW算法中的迭代過程對其進(jìn)行了加速,并取得了與CPU集群相比顯著的加速比。
上述成果針對某種算法提供加速平臺上的加速方案,效果顯著。相對于其他領(lǐng)域,密碼算法有著獨特的處理特點,但此領(lǐng)域算法也有較為統(tǒng)一的計算流程和應(yīng)用方法,利用統(tǒng)一框架和眾核平臺的計算能力來設(shè)計該領(lǐng)域算法的并行優(yōu)化方案,有助于快速開發(fā)和部署高吞吐率算法應(yīng)用。因此,本文針對天河二號中MIC眾核加速器平臺,研究針對密碼算法的加速框架和粗粒度算法加速技術(shù),提供具有顯著加速結(jié)果的應(yīng)用驗證。
密碼算法是用于加密和解密的數(shù)學(xué)函數(shù),主要包括對稱密碼(也稱傳統(tǒng)密碼)、公鑰密碼(也稱非對稱密碼)和散列函數(shù),對稱密碼算法簡單快速、效率高,但安全性依賴于密鑰。一旦密鑰泄露,就意味著任何人都可以對信息進(jìn)行加解密。公鑰密碼運算速度相對較慢,計算復(fù)雜、安全性更高。散列函數(shù)主要用于對大量數(shù)據(jù)產(chǎn)生指紋性信息摘要,用于實現(xiàn)電子簽名。
常見的密碼算法種類眾多,在實際應(yīng)用中廣泛使用的有MD5、AES、RC4和SHA256等。這些算法的操作流程都較為相似,都是由迭代型的算法核心構(gòu)成,在實際應(yīng)用中也經(jīng)常組合或級聯(lián)多種算法來實現(xiàn)有效加密。例如,單向散列函數(shù)MD5算法,對于輸入的信息產(chǎn)生128位的消息摘要(散列值),常用于一致性驗證、數(shù)字簽名和安全訪問認(rèn)證等。AES是一個迭代的密碼,使用一個循環(huán)結(jié)構(gòu),在循環(huán)中進(jìn)行字節(jié)代替、行移位、列混淆、輪密鑰加等操作。解密過程是加密過程的逆運算,每一步操作按照相反的順序進(jìn)行解密即可恢復(fù)成明文。RC4加密算法是在1987年由Ron Rivest設(shè)計的,是一種密鑰長度可變的流加密算法簇。整個算法原理包含初始化算法KSA和偽隨機子密碼生成算法PRGA兩大部分。安全散列算法SHA主要適用于數(shù)字簽名標(biāo)準(zhǔn)里面定義的數(shù)字簽名算法。對于長度可變的消息,SHA會產(chǎn)生一個消息摘要。當(dāng)接收方收到消息時,可以利用消息摘要驗證數(shù)據(jù)的完整性。
密碼算法廣泛應(yīng)用于許多領(lǐng)域,如文件傳輸、網(wǎng)絡(luò)通信、數(shù)據(jù)庫系統(tǒng)安全以及身份認(rèn)證等。在眾多應(yīng)用中都或多或少使用了密碼算法或多種密碼算法的組合,如PDF文件破解、zip文件破解、網(wǎng)絡(luò)身份識別、安全登錄等等。PDF文件使用AES、RC4算法加密,使用哈希函數(shù)的輸出值作為加密算法的密鑰,將密鑰和串或數(shù)據(jù)流共同加密。對稱密碼算法中對稱密鑰的生成,可以達(dá)到一次一變不重復(fù)來確認(rèn)用戶身份,從而實現(xiàn)安全登錄。
總的來說,現(xiàn)在廣泛使用的密碼應(yīng)用的核心都是經(jīng)典的對稱密碼算法,需要預(yù)處理大量加解密需要的數(shù)據(jù),并且都有多用戶同時加解密的并行需求。
本文所討論的密碼算法的相關(guān)應(yīng)用屬于計算密集型任務(wù),具有很高的吞吐率要求,此類計算量較大的應(yīng)用無法在CPU上短時間內(nèi)完成,需要合理分配任務(wù)到眾核平臺如MIC或GPU上運行。因此,本文選擇采用異構(gòu)計算技術(shù),提高密碼算法相關(guān)應(yīng)用的性能。CPU+GPU和CPU+MIC是兩種主流的異構(gòu)計算技術(shù),都可以實現(xiàn)高并行計算和高計算吞吐,適用于計算密集型、高并行的應(yīng)用。但比較來說,GPU需要采用新的編程架構(gòu),對自主研發(fā)的軟件難度大,而MIC兼容傳統(tǒng)的CPU編程模式,編程簡單且易于維護(hù);另一方面,GPU的核心是輕量級的,內(nèi)核數(shù)量雖多但每個核的性能較弱。但是,MIC雖然只有幾十個物理核心,每個核心的性能卻比較強,可以兼顧粗粒度并行和細(xì)粒度并行。由此看來,本文所討論的并行度較高、邏輯比較復(fù)雜的密碼算法相關(guān)應(yīng)用的加速,更適合于采用CPU+MIC的異構(gòu)系統(tǒng)。
根據(jù)眾核平臺體系結(jié)構(gòu)和算法并行特點,針對密碼算法相關(guān)應(yīng)用,本文提出了面向眾核MIC平臺的并行框架,如圖1所示,包括三級并行結(jié)構(gòu),即多結(jié)點、結(jié)點內(nèi)多MIC以及MIC內(nèi)多線程,利用三級并行架構(gòu)加速密碼算法相關(guān)應(yīng)用。
Figure 1 Accelerating framework of high througput圖1 高吞吐率的應(yīng)用加速框架
該框架中,首先將密碼應(yīng)用所需的數(shù)據(jù)按照計算量分配到不同結(jié)點的不同MIC上,MIC上的計算再按照多線程對任務(wù)進(jìn)一步細(xì)分,分配到不同線程內(nèi),每個線程獨立進(jìn)行計算。CPU與MIC的數(shù)據(jù)傳輸過程采用offload模式,程序從CPU端啟動,并選擇性地將代碼卸載(offload)到MIC端執(zhí)行,MIC充當(dāng)加速器的角色。在這種工作模式下,多次調(diào)用MIC函數(shù)進(jìn)行計算時沒有依賴關(guān)系,做到了數(shù)據(jù)傳輸層面的異步。MIC卡包含眾多的物理核,同時每個核上可以開啟多個線程。將數(shù)據(jù)合理分派到MIC上,充分利用MIC中所有的物理核發(fā)揮MIC的最大性能。最終將正確結(jié)果傳送回CPU上,完成密碼應(yīng)用的運行。
該框架能有效加速密碼算法相關(guān)應(yīng)用的前提是:選擇合適的任務(wù)分派技術(shù)將任務(wù)合理分配到每個線程,充分利用計算資源使程序執(zhí)行時間最小化。這需要對程序的流程、數(shù)據(jù)流十分了解,從而選擇在合適的層級上實現(xiàn)并行,以提高性能。根據(jù)密碼應(yīng)用的特性,我們采用粗粒度并行技術(shù)優(yōu)化性能。
密碼應(yīng)用加速最重要的一點是將數(shù)據(jù)合理分派到不同線程中,充分利用現(xiàn)有資源提高吞吐率,以達(dá)到加速的目的。
如圖2所示,本文選擇的任務(wù)分派技術(shù)是:首先將密碼應(yīng)用所需的數(shù)據(jù)進(jìn)行預(yù)處理,存入一個行數(shù)為總線程數(shù)的二維動態(tài)數(shù)組,再用一個數(shù)組存放動態(tài)數(shù)組中每行數(shù)據(jù)的位數(shù);然后,按用戶輸入的線程數(shù)參數(shù),簡單運算后決定將二維數(shù)組中合適的數(shù)據(jù)分派到哪個線程中;最后,每個線程使用相同的操作運行,直至計算完成,輸出正確結(jié)果。
Figure 2 Task allocation mechanism圖2 任務(wù)分派
這種任務(wù)分派技術(shù)線程選擇靈活性高,可以根據(jù)用戶輸入的線程數(shù)參數(shù)決定將要測試的數(shù)據(jù)分配到哪個線程上運行。每個線程執(zhí)行的操作相同,數(shù)據(jù)之間不存在相互依賴,并行度高。因此,用戶可以充分利用現(xiàn)有線程,加速密碼應(yīng)用的運行。
當(dāng)加密應(yīng)用采用此種任務(wù)分派技術(shù)時,若使用相同密鑰加密不同明文,將不同明文存入二維動態(tài)數(shù)組,使用線程計算函數(shù)決定將數(shù)組中明文分派給哪條線程進(jìn)行加密,各線程使用相同密鑰進(jìn)行相同加密操作,最后輸出密文。若使用不同密鑰分別加密不同明文,將明文存入一個二維動態(tài)數(shù)組,再使用一個二維數(shù)組存放明文數(shù)組中每行數(shù)據(jù)對應(yīng)使用的密鑰,使用線程計算函數(shù)將明文數(shù)組和密鑰數(shù)組中的數(shù)據(jù)分派到每個線程上,之后各線程進(jìn)行相同的加密操作,最后輸出密文。更復(fù)雜的情況是加密應(yīng)用采用任務(wù)分組方式,組內(nèi)明文使用相同密鑰加密,組間明文使用不同密鑰加密。這種情況下,將明文存入二維動態(tài)數(shù)組,密鑰存入另一個二維動態(tài)數(shù)組,再使用一個二維數(shù)組存放每個明文的對應(yīng)組號。首先根據(jù)線程計算函數(shù),將明文數(shù)組中數(shù)據(jù)分派到各線程上,然后根據(jù)數(shù)組中明文的對應(yīng)組號選擇密鑰數(shù)組中的對應(yīng)密鑰分派到線程上進(jìn)行加密;各線程處理完成后,最后輸出密文。
Figure 4 Extending all cores of MIC圖4 擴展MIC所有核心
當(dāng)暴力破解密碼采用此種任務(wù)分派技術(shù)時,首先獲取加密文件并解析文件,之后獲取用戶輸入的規(guī)則,根據(jù)規(guī)則生成待測密碼,將生成的密碼存入二維動態(tài)數(shù)組。最后將用戶輸入的線程數(shù)參數(shù)經(jīng)過簡單運算,決定將數(shù)組中密碼分派給哪個線程進(jìn)行操作,得出正確密碼后返回給CPU端。
當(dāng)使用字典文件和規(guī)則破解密碼時,在讀取加密文件并解析文件后,再逐條讀取字典文件,將讀取的信息與用戶輸入的規(guī)則做對比,當(dāng)信息符合規(guī)則時存入二維動態(tài)數(shù)組。再根據(jù)線程計算函數(shù)計算所得將數(shù)組中數(shù)據(jù)分派給各線程操作,最后返回結(jié)果。
密碼算法相關(guān)應(yīng)用的加速技術(shù)研究適合于CPU+MIC的異構(gòu)系統(tǒng),而并行程序是否選擇在合適的層級上實現(xiàn)并行,是性能優(yōu)化中最為關(guān)注的重要問題。要提高程序的執(zhí)行性能,可以通過兩個層次的并行來獲得:一是粗粒度線程并行,二是細(xì)粒度線程并行。根據(jù)并行程序盡可能使用粗粒度的并行原則,盡可能在最上層并行化代碼。
由于密碼算法計算過程中數(shù)據(jù)依賴性強,每一步的輸入都依賴于前一步的計算結(jié)果,因此采用粗粒度并行優(yōu)化將相對完整的并行任務(wù)分配到各線程上執(zhí)行。我們不關(guān)心應(yīng)用中密碼算法的內(nèi)部運算過程,只是基于多線程優(yōu)化技術(shù),讓每一個線程獨立地完成密碼算法任務(wù)。這樣不僅使編程簡單有效,還可以減少線程調(diào)度的次數(shù),也就是減少了線程本身的開銷所占的比例,隱藏底層的線程交互,也減少了不必要的同步帶來的損耗。
Figure 3 Diagram of heterogeneous computation framework using CPU and MIC圖3 CPU+MIC異構(gòu)計算示意圖
一般來說,將操作次數(shù)只有一次或者數(shù)據(jù)為所有線程所公用的任務(wù),部署在CPU端,減少CPU端與MIC端的通信次數(shù),提高運行效率。而計算密集但邏輯簡單的任務(wù),部署在MIC端。當(dāng)程序在CPU端將數(shù)據(jù)預(yù)處理之后,根據(jù)給定的線程數(shù)目,同時啟動MIC端多個指定數(shù)目的線程,將數(shù)據(jù)傳輸至各線程上。
當(dāng)使用MIC端多個核心時,設(shè)置環(huán)境變量KMP_AFFINITY為scatter,線程“分布”到所有核上,如圖4所示。首先所有線程在核間擴展,1到N條線程分布到N個核心上,每個核心使用一條線程。然后多于核心數(shù)目的其余線程再次從第一個核開始分配,N+1到N*2+1條線程表示N個核心各自使用的第二條線程,同理N*2+2到N*3+2條線程表示N個核心各自使用的第三條線程,N*3+3到N*4+3條線程表示n個核心各自使用的第四條線程。這樣可以擴展MIC的所有核心。
多個不同線程執(zhí)行幾乎相同的計算量和相同的操作,產(chǎn)生結(jié)果后根據(jù)不同密碼應(yīng)用的特點采用不同的處理模式。模式1,所有線程上的數(shù)據(jù)都處理完畢后,MIC端從CPU端獲得下一批數(shù)據(jù)再進(jìn)行處理,直至所有數(shù)據(jù)處理完畢,應(yīng)用完成。適用于多明文加密等需要將多個明文進(jìn)行加密得到相應(yīng)密文的應(yīng)用。模式2,所有線程同一時間開始處理數(shù)據(jù)后,當(dāng)某一線程優(yōu)先完成任務(wù),應(yīng)用完成。適用于破解應(yīng)用,只需要以最快的速度找到正確密碼。最后,將結(jié)果返回至CPU端。
為證明面向眾核構(gòu)架的粗粒度并行加速框架的有效性和實際加速效果,我們選擇了幾個算法及典型算法組合進(jìn)行具體實現(xiàn)和測試。首先,選擇單一算法MD5進(jìn)行吞吐量測試SA1(Single Algorithm);其次,選擇了兩種很多加密應(yīng)用中使用的典型算法組合:一種為包含AES、RC4和SHA256的算法組合CA1(Comprehensive Algorithm),另一種為MD5和RC4的算法組合(CA2)。我們在CPU平臺和MIC平臺分別測試這三種算法,進(jìn)行性能對比。
4.4.1 基于MIC平臺的MD5算法優(yōu)化
SA1中數(shù)據(jù)依賴相對較高,每一步操作都依賴前一步的計算結(jié)果,因此采用粗粒度并行優(yōu)化。根據(jù)SA1的特征,我們基于MIC平臺進(jìn)行多線程優(yōu)化,實現(xiàn)每個線程獨立完成明文加密流程。
本節(jié)用來測試的程序采用分載模式,需要保留一個協(xié)處理器核心用于處理運行時的控制和數(shù)據(jù)交換。因此,雖然3120A擁有57個核心,但用來運行程序的核心數(shù)為56,最多可利用56*4=224條線程。
Table 1 Test platform for SA1表1 SA1測試平臺
我們使用1 287.2 MB數(shù)據(jù)測試程序,表2為SA1在CPU和MIC平臺上的性能對比。
Table 2 Performance comparisonof SA1 between MIC and CPU表2 SA1在MIC平臺與CPU平臺的性能對比
由表2可知,當(dāng)MIC平臺使用單核單線程時,與CPU平臺單線程相比加速比為0.2,性能僅為CPU平臺的1/5;隨后單核上線程數(shù)雖然增加,與CPU平臺相比加速比仍在0.5以下;但當(dāng)單核雙線程時與單核單線程相比,性能增加接近一倍;之后線程數(shù)增加,加速比增加較少。
當(dāng)使用所有可用的56個核心時,每個核心使用單線程時,與CPU平臺相比加速比將近10。之后每個核心使用的線程數(shù)增加到2、3、4時,加速比相差在0.2左右。而與MIC單核單線程相比,每個核心使用最多可用的4個線程時,加速比最大為102.05。
單核雙線程時,性能增加最大的原因有兩個:一是CPU主頻為2 GHz,MIC主頻為1.1 GHz,二者相差近一倍;二是MIC的指令調(diào)度機制決定了在每個時鐘周期總是會調(diào)用一個新的線程執(zhí)行。例如,當(dāng)單個核上只使用一個線程時,調(diào)度機制決定在一個周期內(nèi)高效切換到一個空閑線程上,從而與單核單線程相比性能提高近一倍,此后增加線程數(shù)性能提升也不再顯著。
但是,在多核運行時,若使用112條線程即每個核心使用2條核心,每個核心上2線程之間產(chǎn)生競爭或等待公用內(nèi)存緩沖區(qū),造成了性能損耗,從而沒有明顯的性能提升。
4.4.2 基于眾核構(gòu)架的密碼應(yīng)用加速
CA1中三種對稱密碼算法計算密鑰過程都使用了較為復(fù)雜的數(shù)學(xué)函數(shù),步驟之間數(shù)據(jù)依賴性強,因此我們采用異構(gòu)粗粒度并行優(yōu)化技術(shù),在高性能眾核平臺上實現(xiàn)應(yīng)用加速。測試平臺如表3所示。
Table 3 Test platform for CA1表3 CA1測試平臺
使用數(shù)據(jù)量為196 KB的數(shù)據(jù)在CPU和MIC平臺進(jìn)行測試,并分別以CPU單核單線程和MIC單核單線程為基準(zhǔn)計算加速比,對比應(yīng)用CA1在CPU和 MIC平臺上的性能。
由表4可以看出,當(dāng)MIC單核運行時,只使用一條線程時,性能僅為CPU的0.6。這是因為MIC在單線程模式下執(zhí)行程序時,會跳過調(diào)度新線程的任何其他時鐘周期,直接使性能下降一半左右。MIC的指令調(diào)度機制默認(rèn)使用至少2條線程解決計算量大的問題,因此當(dāng)線程數(shù)逐漸增加到4時,性能逐漸上升,但加速比仍在2以下。
Table 4 Performance comparisonof CA1 between CPU and MIC表4 CA1在CPU平臺和MIC平臺上的性能對比
當(dāng)MIC多核運行時,即使每個核心只使用一個線程,與單核單線程運行時相比加速比增加到25.4。但是,當(dāng)每個核心使用線程數(shù)增加時,雖然執(zhí)行時間依然比單核運行時縮短了許多,但比不上多核單線程時運行得快。這就說明,不是線程數(shù)越多,性能越高。有時線程間的競爭和等待會造成很大損耗,從而導(dǎo)致性能下降。
CA2運行過程中每條數(shù)據(jù)之間沒有關(guān)聯(lián),各線程可以獨立進(jìn)行操作,因此采用粗粒度并行優(yōu)化將數(shù)據(jù)分別分配到一個線程上。
Table 5 Test platform of CA2表5 CA2測試平臺
經(jīng)過粗粒度并行優(yōu)化,我們對程序在MIC單核、多核上使用不同線程數(shù)進(jìn)行了測試,并以原始程序在CPU上單線程的測試時間和MIC上單核單線程為基準(zhǔn)得到優(yōu)化的加速比,數(shù)據(jù)規(guī)模為74.94 MB。表6展示了CA2在CPU平臺和MIC平臺上的性能對比。
Table 6 Performance comparisonof CA2 between CPU and MIC表6 CA2在CPU平臺和MIC平臺上的性能對比
由表6可知,當(dāng)MIC單核運行且只使用一個線程時,性能僅為CPU平臺的0.24。之后增加線程數(shù)量,與CPU平臺相比加速比增加0.1左右,最高不過CPU平臺性能的一半左右。單核上增加線程數(shù)量,加速比增加0.4左右,當(dāng)單核雙線程時增加最快。
當(dāng)MIC多核運行時,當(dāng)所有可用核心各自只使用一個線程共同工作時,與CPU平臺相比性能提升最快,加速比為13.2。同樣與單核單線程相比加速比為55,此后在每個核心上增加使用線程數(shù),加速比增加幅度變小。當(dāng)充分利用56個核心共224個線程時,加速比達(dá)到最大117.9。
從上面的實驗可以得出,當(dāng)MIC單核運行時達(dá)不到CPU平臺上的性能,主要是因為CPU與MIC之間的數(shù)據(jù)傳輸開銷影響了MIC的計算性能。而當(dāng)MIC多核運行時,將數(shù)據(jù)相對平均地分配到每個線程上,充分利用資源,最終獲得了百倍的性能加速比。
CPU+MIC是現(xiàn)今最為流行的異構(gòu)計算技術(shù)之一,在處理計算密集型任務(wù)時有著巨大優(yōu)勢。為解決密碼算法相關(guān)應(yīng)用的加速問題,本文提出了一種面向眾核構(gòu)架的粗粒度并行加速框架。介紹了加速框架需要的任務(wù)分派技術(shù)和異構(gòu)粗粒度并行優(yōu)化技術(shù),通過幾個算法及典型算法組合進(jìn)行具體實現(xiàn)和測試,證明了加速框架的有效性和加速效果。該技術(shù)通過超級計算平臺上的任務(wù)級并行可以很容易拓展到結(jié)節(jié)點環(huán)境運行,獲得更高吞吐率。
參考文獻(xiàn):
[1] Kedem G, Ishihara Y. Brute force attack on UNIX passwords with SIMD computer[C]∥Proc of Conference on Usenix Security Symposium, 1999:8.
[2] Harrison O, Waldron J. AES encryption implementation and analysis on commodity graphics processing units[C]∥Proc of International Workshop on Cryptographic Hardware and Embedded Systems, 2007:209-226.
[3] Manavski S A. CUDA compatible GPU as an efficient hardware accelerator for AES cryptography[C]∥Proc of IEEE International Conference on Signal Processing and Communications, 2008:65-68.
[4] Yeom Y, Cho Y, Yung M. High-speed implementations of block cipher ARIA using graphics processing units[C]∥Proc of International Conference on Multimedia and Ubiquitous Engineering, 2008:271-275.
[5] Liu G, An H, Han W, et al. A program behavior study of block cryptography algorithms on GPGPU[C]∥Proc of International Conference on Frontier of Computer Science and Technology, 2010:33-39.
[6] Wu H, Liu X, Tang W. A fast GPU-based implementation for MD5 hash reverse[C]∥Proc of IEEE International Conference on Anti-Counterfeiting, Security and Identification, 2011:13-16.
[7] Yeh H P, Chang Y S, Lin C F, et al. Accelerating 3-DES performance using GPU[C]∥Proc of International Conference on Cyber-Enabled Distributed Computing and Knowledge Discovery, 2011:250-256.
[8] Tembhurne J V, Sathe S R. RSA public key acceleration on CUDA GPU[C]∥Proc of the Artificial Intelligence and Evolutionary Computations in Engineering Systems, 2016: 365-375.
[9] Lim R. Parallelization of John the Ripper (JtR) using MPI[EB/OL][2017-12-01].https://www.researchgate.net/publication/266576776_Parallelization_of_John_the_Ripper_JtR_using_MPI.
[10] Li Chang-xin, Wu Hong-wei, Chen Shi-feng, et al. Efficient implementation for MD5-RC4 encryption using GPU with CUDA[C]∥Proc of International Conference on Anti-Counterfeiting, Security, and Identification in Communication, 2009:167-170.
[11] Schmidt B, Aribowo H, Dang H. Iterative sparse matrix-vector multiplication for accelerating the block Wiedemann algorithm over GF(2) on multi graphics processing unit systems[J]. Concurrency & Computation Practice & Experience, 2013, 25(4):586-603.