• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      基于CUDA的高性能對稱密碼算法實現(xiàn)技術研究

      2018-08-11 03:15:44楊海云張梓鋅段博坤
      網絡安全技術與應用 2018年8期
      關鍵詞:明文加密算法線程

      ◆楊海云 張梓鋅 隆 昆 段博坤

      ?

      基于CUDA的高性能對稱密碼算法實現(xiàn)技術研究

      ◆楊海云 張梓鋅 隆 昆 段博坤

      (中國民航大學計算機科學與技術學院 天津 300300)

      在大數(shù)據(jù)和云計算應用與日俱增的今天,很多的應用服務器面臨著執(zhí)行大量計算稠密的加密挑戰(zhàn)。CUDA作為NVIDIA推出的一種并行計算平臺和編程模型,能夠利用現(xiàn)有的顯卡資源,以低成本的方式提升加密性能。在NVIDIA Geforce 940M 上設計并實現(xiàn)了并行的AES和SM4算法,與傳統(tǒng)的CPU實現(xiàn)方式進行對比,AES最高可以獲得92.70%的加密效率提升和13.69倍的加速比,SM4最高可以獲得98.41%的加密效率提升和62.92倍的加速比。

      CUDA;并行計算;對稱密碼算法;加速比

      0 引言

      在當今諸多的網絡應用中,數(shù)據(jù)加密必不可少。伴隨著大數(shù)據(jù)時代的到來,加密效率已經成為一個不容忽視的問題。同時,計算機正在從只使用CPU的“中央處理”向CPU與GPU并用的“協(xié)同處理”發(fā)展。CUDA[1]作為NVIDIA公司推出的一種并行編程計算框架,有效利用GPU的計算能力,提高了計算速度。本文將先以基于CUDA的AES和SM4算法[2]為實踐基礎,研究GPU計算對于這兩種常用加密算法的性能提升,進一步探索基于CUDA的對稱密碼算法設計實現(xiàn)的一般性方法。

      1 CUDA簡介

      CUDA(Compute Unified Device Architecture,統(tǒng)一計算設備架構)是一種由NVIDIA推出的通用并行計算架構,該架構使GPU 能夠解決復雜的計算問題。它包含了CUDA指令集架構以及GPU內部的并行計算引擎,開發(fā)人員可以使用C語言來為CUDA架構編寫程序。它要求計算機的顯卡必須支持CUDA技術,然后安裝CUDA開發(fā)環(huán)境即可使用C語言進行編程。

      2 AES和SM4算法簡介

      2.1 AES算法

      AES(Advanced Encryption Standard,高級加密標準)是由美國國家標準技術研究所在2001年發(fā)布的一種對稱加密算法,目前,AES算法已然成為對稱密鑰加密中最流行的算法之一。

      作為一種分組加密算法,AES的分組長度為128bit,密鑰長度有三種可選取值:128bit、192bit和256bit。加密時首先將明文切割成為128bit的分組,每個分組首先進行密鑰相加,其次按照密鑰長度加密不同的輪數(shù)。每一輪中有四層,分別為字節(jié)替換(SubBytes,使用Sbox進行非線性替換)、行移位(ShiftRows,對每行分別進行0,1,2,3字節(jié)的循環(huán)移位,達到字內混淆)、列混合(MixColumns,線性變換每列以混淆數(shù)據(jù))、密鑰相加(AddRoundKey,對輪密鑰和狀態(tài)進行異或運算,進行盲化)。需要注意的是,最后一輪不包括列混合層。加密對應輪數(shù)后,即完成了一個分組的加密變換。對其余分組也進行這樣的操作,組合每個分組的加密結果,便完成了整個明文的加密[3]。

      2.2 SM4算法

      SM4是由中國國家商用密碼管理辦公室2006年發(fā)布的一種Feistel結構的分組密碼算法,分組長度和密鑰長度均為128bit。加解密算法與密鑰擴展算法都采用32輪非線性迭代結構。對加密流程中涉及的參數(shù)做出如下定義:

      加密密鑰:

      輪密鑰由加密密鑰擴展而來,表示為:

      系統(tǒng)參數(shù):

      為字,固定參數(shù):

      為字,輪函數(shù)F為:

      輸出為:

      則:

      定義反序變換R為:

      整個加密的流程圖如圖1所示。

      圖1 SM4加密流程圖

      3 基于CUDA的SM4和AES算法設計與實現(xiàn)

      通過上面對SM4和AES的算法介紹可以看出,對稱密碼算法的主要特點是:明文加密前需要按照分組長度進行切塊,各個明文分組加密過程沒有影響。這個特點是算法并行實現(xiàn)的理論基礎所在。傳統(tǒng)的加密程序將明文讀取與切塊、密鑰擴展、分組加密,加密結果整合這四個步驟統(tǒng)一放在CPU上處理,而CUDA提供了一個低成本的并行計算平臺,可以將分組加密這個最耗費時間和計算資源的步驟放在GPU上。CPU要做的只是明文讀取與切塊、密鑰擴展、加密結果整合這三個計算量比較小的步驟,這樣便大大節(jié)省了CPU的計算資源。

      GPU的計算線程集中在每一block(線程塊)上,計算執(zhí)行時加載到流處理器上運行[4,5]。所以并發(fā)度與流處理器的個數(shù)和每個線程塊中所能容納的最大線程數(shù)目有直接關系。本實驗使用的顯卡為NVIDIA Geforce 940M,流處理器有3個,每個線程塊的最大線程數(shù)目為1024,即每個線程塊最大可以讓1024個明文分組執(zhí)行加密運算。GPU的啟動參數(shù)計算方法如下:

      設明文分組個數(shù)為n,線程塊數(shù)目為p,每個線程塊中啟動的線程數(shù)目為q,則:

      if(n/3>1024)

      p=n/1024

      q=1024

      else

      p=3

      q=n/3

      然后使用0號線程對共享內存中的S盒等一些必要數(shù)據(jù)參數(shù)進行初始化,從1號線程開始進行加密,對于單個線程來說,它們執(zhí)行一個分組的完整加密流程,每個block中的各個線程互不干擾,計算各自的加密結果。最后使用線程ID將它們的計算結果收集起來,得到最終的加密結果[6]。

      在CUDA程序設計中,將CPU稱為主機端,GPU稱為設備端[7,8]。通過上面的分析可知,無論是AES,還是SM4。明文文件的讀取,密鑰擴展,加密結果整合都應該在主機端完成,只有分組加密在設備端。圖2總結了實現(xiàn)并行AES和SM4的算法的主要思想。

      圖2 基于CUDA的SM4和AES算法設計框圖

      4 實驗

      4.1 測試方案與步驟

      為了比較傳統(tǒng)的CPU加密和GPU加密時間,在表1的配置環(huán)境下我們設計出如下的測試方案:

      第一步:準備1MB, 4MB,8MB,10MB,15MB,20MB,30MB,50MB,100MB的10個文件。

      第二步:分別將這10個文件用傳統(tǒng)的AES和SM4算法加密20次,計算并記錄平均加密時間。

      第三步:分別將這10個文件用并行的AES和SM4算法加密20次,計算并記錄平均加密時間。

      第四步:整理實驗數(shù)據(jù),計算加密效率與加速比。

      定義加密效率S為:

      定義加速比r為:

      表1 實驗環(huán)境配置

      4.2 實驗結果

      按照上面的實驗步驟,分別可以得到AES算法和SM4算法串行與并行的加密時間。計算對應數(shù)據(jù)的加速比和加密效率。AES算法的實驗數(shù)據(jù)如表2所示,加速比變化趨勢見圖3。SM4算法的實驗數(shù)據(jù)如表3所示,加速比變化趨勢如圖4所示。

      表2 AES算法加密數(shù)據(jù)統(tǒng)計表

      表3 SM4算法加密數(shù)據(jù)統(tǒng)計表

      圖3 AES算法性能分析圖表

      圖4 SM4算法性能分析圖表

      4.3 實驗結論

      通過表3的數(shù)據(jù)可以看出,就AES算法而言,加密1MB的小文件,基于CUDA的并行AES算法要比傳統(tǒng)CPU加密快11倍,效率提升達到91.28%,伴隨著文件大小逐步增加到100M,加速比與加密效率也穩(wěn)步提升,加密效率峰值達到92.70%,加速比達到13.60倍。結合表4與SM4算法進行縱向對比,SM4算法的效率提升平均在98%,文件大小在100MB時加密效率達到98.41%,加速比達到峰值62.92倍。

      實驗數(shù)據(jù)表明,基于CUDA的SM4和AES可以以低成本的方式獲得很高的效率提升。是否可以將這種設計方法推廣到其他的對稱密碼算法呢?SM4和AES算法的一個重要的共同特征就是分組加密。各個明文分組之間互不干涉的進行著一次加密流程,可以發(fā)現(xiàn),這也是對稱密碼算法的特征。需要找出的是每次加密中重復且互不影響的部分,使用GPU上的線程來計算這部分內容,然后將運行結果返回CPU進行整理。這樣就可將對稱密碼算法使用CUDA來重新設計,節(jié)省了CPU有限的計算資源,充分發(fā)揮了GPU閑置的計算能力,提高密碼算法的效率。

      5 結束語

      本文以解決大量數(shù)據(jù)加密為出發(fā)點,提出了基于CUDA的加密算法實現(xiàn)方法,通過對常用加密算法AES和SM4實驗,數(shù)據(jù)表明,SM4算法最高加速比和效率可以達到98%和62.92倍。說明這種設計思路是合理的,可以推廣到其他的對稱加密算法。

      [1]NVIDIA Corporation. CUDA Technology[OL].

      [2]國家密碼管理局.國家密碼管理局公告第23號.[EB/OL].http://www.sca.gov.cn/app-zxfw/zxfw/bzgfcx.jsp.

      [3]馬小婷等譯.深入淺出密碼學[M].北京:清華大學出版社,2012.

      [4]劉金碩等著.基于CUDA的并行程序設計[M].北京:科學出版社,2014.

      [5]方民權等著.GPU編程與優(yōu)化[M].北京:科學出版社, 2016.

      [6]李大為,趙旭鑫,武萌. SM4密碼算法的高速流水線實現(xiàn)[J].電子器件,2007.

      [7]蘇統(tǒng)華,李東等譯.CUDA并行程序設計 GPU編程指南[M].北京:機械工業(yè)出版社,2014.

      [8]趙開勇,汪朝輝,程亦超等譯.大規(guī)模并行處理器編程實戰(zhàn)(第二版)[M].北京:清華大學出版社,2013.

      大學生創(chuàng)新創(chuàng)業(yè)訓練項目(項目編號:IECAUC2017044)。

      猜你喜歡
      明文加密算法線程
      奇怪的處罰
      淺談linux多線程協(xié)作
      奇怪的處罰
      基于小波變換和混沌映射的圖像加密算法
      四部委明文反對垃圾焚燒低價競爭
      Hill加密算法的改進
      對稱加密算法RC5的架構設計與電路實現(xiàn)
      基于Arnold變換和Lorenz混沌系統(tǒng)的彩色圖像加密算法
      Linux線程實現(xiàn)技術研究
      乃东县| 盱眙县| 侯马市| 滨州市| 开远市| 嵊泗县| 苏尼特左旗| 吴忠市| 沙坪坝区| 彰武县| 宜良县| 台东市| 汶川县| 柘荣县| 小金县| 辰溪县| 高雄市| 贵定县| 安新县| 忻州市| 郓城县| 城口县| 屯留县| 临江市| 什邡市| 临漳县| 常熟市| 皮山县| 新乐市| 盘锦市| 光山县| 宜城市| 石台县| 松潘县| 江都市| 任丘市| 新密市| 沅江市| 新龙县| 修水县| 张家川|