(華北電力大學(xué) 北京 102206)
雜湊算法又稱為Hash函數(shù)、散列函數(shù),它是能夠?qū)⑷我庥邢揲L的輸入消息映射為固定長度的輸出值并且計算容易的一類函數(shù)。它是一種單向密碼體制。我國國家密碼管理局為滿足電子認證服務(wù)系統(tǒng)等應(yīng)用需求,在2010年12月發(fā)布了SM3密碼雜湊算法,用于商用密碼應(yīng)用中的數(shù)字簽名和驗證、消息認證碼的生成與驗證以及隨機數(shù)的生成。
(一)算法介紹。SM3 密碼雜湊算法是一種基于分組迭代結(jié)構(gòu)的雜湊算法,該算法采用消息雙字結(jié)合的消息字處理方式,使用來自不同群運算的混合,實現(xiàn)了消息在局部范圍內(nèi)快速擴散和混亂,有效防止了比特追蹤及其它已知分析方法的攻擊。
(二)算法描述
1.概述。對長度為l(l < 264)比特的消息m,SM3雜湊算法經(jīng)過填充和迭代壓縮,生成雜湊值,雜湊值長度為256比特。
2.填充。消息m 的長度為l 比特。首先將比特“1”添加到消息的末尾,再添加k 個“0”,k是滿足l + 1 + k ≡448mod512 的最小的非負整數(shù)。然后再添加一個64位比特串,該比特串是長度l的二進制表示。填充后的消息m′ 的比特長度為512的倍數(shù)。
3.迭代過程。將填充后的消息m′按512比特進行分組:m′=B(0)B(1)...B(n-1)
其中n=(l+k+65)/512。
對m′按下列方式迭代:
FOR i=0 TO n-1
V(i+1)=CF(V(i),B(i))
ENDFOR

a)將消息分組B(i)劃分為16個字W0,W1...W15,。
b)FOR j=16 TO 67
Wj←P1(Wj-16⊕Wj-9⊕(Wj-3<<<15))⊕(Wj-13<<<7)⊕Wj-6
ENDFOR
c)FOR j=0 TO 63

ENDFOR
AHB總線系統(tǒng)有Master、Slave和Infrastructure構(gòu)成。Infrastructure由Arbiter,數(shù)據(jù)多路,地址控制多路,譯碼器構(gòu)成。有需要占用總線的Master向Arbiter提出占用總線請求,Arbiter授權(quán)給指定的Master。任一時間周期只有一個Master可以接入總線,對其指定的Slave進行讀寫操作。總線統(tǒng)一規(guī)劃slave的地址,譯碼器根據(jù)地址選擇哪個slave與master進行數(shù)據(jù)通信。授權(quán)訪問機制通過多路選擇器實現(xiàn):Arbiter將獲得授權(quán)的master序號傳輸給地址和寫數(shù)據(jù)多路,以選擇哪個master接入總線;地址譯碼器根據(jù)master需要訪問的地址選擇master,并為寫數(shù)據(jù)多路提供控制信號以選通相應(yīng)的slave。
(一)結(jié)構(gòu)設(shè)計。SM3模塊外部接口如圖1所示,SM3_TOP模塊從AHB總線接受指令,完成寄存器的配置并從IRAM讀取數(shù)據(jù)進行加密。RAM模塊因為SM3是Hash函數(shù),加密結(jié)果只有256位,存入8個32位寄存器即可,故不需要另外增加ORAM。IRAM中存儲待加密的數(shù)據(jù),在SM3_TOP完成配置以后,開始依次讀取IRAM的數(shù)據(jù)進行加密。

圖1 SM3模塊外部接口圖
(二)算法設(shè)計。SM3_TOP主算法模塊包括REG、M_Interface、SM3一共三個模塊。寄存器模塊REG,接收AHB總線數(shù)據(jù),依次寫入初始化源地址寄存器SAR,傳輸長度寄存器BSR,中斷屏蔽寄存器IMR,狀態(tài)寄存器STR,使能寄存器ENR,以及常量向量寄存器IV;M_Interface模塊主根據(jù)源地址寄存器SAR,傳輸長度寄存器BSR,使能寄存器ENR,周期性的從IRAM讀取數(shù)據(jù),傳輸給算法核心模塊SM3進行加密;SM3為算法的核心模塊,從IRAM讀取數(shù)據(jù),完成整個加密過程并輸出最終結(jié)果。
本次設(shè)計采用Verilog語言作為實現(xiàn)工具,對上述邏輯和結(jié)構(gòu)進行了描述,并對實現(xiàn)進行了綜合和仿真測試。在modelsim環(huán)境下編譯,綜合。對單個分組和多個分組分別進行測試,均得到正確結(jié)果。
在越來越開放的網(wǎng)絡(luò)環(huán)境下,信息攻擊種類繁多,SM3通過明文到密文的不可逆映射,確保了信息的來源真實有效,保障了收到和發(fā)送消息的一致性。本文討論論述了SM3的算法流程,對核心部分就行了研究和整體邏輯的實現(xiàn),并驗證了算法的正確可行性。可見我國提出的SM3算法適用于實際的工程開發(fā)。