陶 凱
(華北電力大學 北京 102206)
隨著各國信息基礎和全球信息基礎設施的逐漸形成,計算機網絡已經成為信息社會發展的重要保障。然而信息網絡國際化、開放化和個人化的特點決定了它給人們提供高效率、高質量生活的同時,也埋下了不安全的隱患。網絡的安全,仍存在有多問題,如密碼使用不強,密碼使用不規范,處理突發事件的能力不足等諸多問題。密碼技術作為信息網絡安全的關鍵技術,在維護國家和個人安全方面發揮著越來越重要的作用。
數據加密是為了實現數據的機密性,是計算機保護信息的一種非常可靠的方法,當執行數據傳輸或數據存儲時,依據確定的密碼算法將敏感的明文數據通過加密變換成較難識別的密文數據,然后再進行傳輸和存儲,稱為加密。需要用到明文數據時,再依據相同的密碼算法將密文數據通過解密得到明文數據,稱為解密。數據加密被認為是保護數據傳輸安全的唯一實用方法,也是保護存儲數據安全的有效方法,是數據保護在技術上的一條重要防線。算法的正確與否直接決定了能否通過加密后的密文得到正確的明文,算法的安全程度高低也直接決定了算法被破解可能性的大小。
有鑒于此,本文通過對國密算法的研究,實現了Verilog HDL語言下基于AHB總線規范的密碼雜湊算法SM3的設計。
二、國密SM3
加密散列函數,也稱密碼散列函數,是一種散列函數。它被認為是單向函數,這意味著僅通過散列函數的輸出結果很難得到輸入的數據。這種單向函數被稱為“現代密碼學的馱馬”。這種散列函數的輸入數據,通常被稱為消息,其輸出通常被稱為消息摘要或摘要。在信息安全方面,有許多重要的應用,都用到了密碼散列函數,例如數字簽名和消息認證碼等。SM3是由國家密碼管理局于2010年發布的,是一種密碼雜湊算法。其安全性能和效率都與SHA-256相當。
本設計為一個AHB總線的Slaver設備,該設備通過內部可尋址寄存器與AHB總線的Master進行通訊,完成對Master發送的信息塊進行加/脫密。AHB總線規范是AMBA總線規范的一部分,用于高系統、高時鐘頻率系統結構。根據地址和控制信號確定master與哪個slave鏈接,進行數據傳輸,數據傳輸通過數據總線完成。
系統架構包括SM_TOP模塊和IRAM、ORAM模塊,整體掛載在AHB總線上,兼容32位AHB Slave接口,用于配置寄存器,配置信息包含IRAM起始地址、ORAM的起始地址、加密數據長度、密鑰和密鑰展開使能等。
SM_TOP:核心模塊,AHB對該模塊進行完寄存器的配置以后,該模塊開始從IRAM周期性的讀取數據進行加解密或哈希散列處理,對于對稱分組算法SM1和SM4,該模塊需要將加解密結果存入到ORAM,而對于密碼雜湊算法SM3,雜湊值固定為256比特位,不需要存入ORAM,而是存入模塊內部的8個特定的32比特位的寄存器。
IRAM:IRAM用來存儲待加密的明文或待脫密的密文。根據讀信號IRAM_RD、讀地址IRAM_ADDR[12:0]讀出相應地址IRAM中的數據IRAM_RDATA[127:0],以此完成和SM_TOP的通信。
ORAM:ORAM用來存儲加密后的密文或脫密后的明文,通過寫信號ORAM_WR、寫地址ORAM_ADDR[12:0]將數據ORAM_WDATA[127:0]寫入ORAM相應的地址中去,以此完成和SM_TOP的通信。
IRAM和ORAM均為128bit位寬,均支持讀寫方式,總大小為16KB。
算法的核心是進行64輪的壓縮函數變換。300MHZ下一個周期并不能完成一輪的變換,在綜合分析后,得出四個周期可進行一輪變換的結論。于是,設計中對本來的始終信號HCLK進行了處理,用一個2位計數器實現四倍周期時鐘信號的產生,如圖

SM3的消息長度為512比特,而限于IRAM的位寬,每次只能讀取128比特。從IRAM中讀出的數據在傳入SM3算法模塊后,首先需要做預處理,將連續讀入的4個128比特拼湊成一個512位的比特串,然后再進行后續的運算。這里同樣用一個2位計數器Q,Q=0時,將讀取的128比特位放入B[511:384],Q=1時,將讀取的128比特位放入B[383:256],Q=2時,將讀取的128比特位放入B[255:128],Q=3時,將讀取的128比特位放入B[127:0],最終得出512比特位的消息穿B[511:0]。
雜湊算法SM3的測試數據來自國密局文件《SM3密碼雜湊算法》,第一組測試是一組512比特位的數據;第二組測試是兩個512比特位的數據,仿真結果如圖。
