陶 凱
(華北電力大學(xué) 北京 102206)
隨著各國(guó)信息基礎(chǔ)和全球信息基礎(chǔ)設(shè)施的逐漸形成,計(jì)算機(jī)網(wǎng)絡(luò)已經(jīng)成為信息社會(huì)發(fā)展的重要保障。然而信息網(wǎng)絡(luò)國(guó)際化、開(kāi)放化和個(gè)人化的特點(diǎn)決定了它給人們提供高效率、高質(zhì)量生活的同時(shí),也埋下了不安全的隱患。網(wǎng)絡(luò)的安全,仍存在有多問(wèn)題,如密碼使用不強(qiáng),密碼使用不規(guī)范,處理突發(fā)事件的能力不足等諸多問(wèn)題。密碼技術(shù)作為信息網(wǎng)絡(luò)安全的關(guān)鍵技術(shù),在維護(hù)國(guó)家和個(gè)人安全方面發(fā)揮著越來(lái)越重要的作用。
數(shù)據(jù)加密是為了實(shí)現(xiàn)數(shù)據(jù)的機(jī)密性,是計(jì)算機(jī)保護(hù)信息的一種非??煽康姆椒ǎ?dāng)執(zhí)行數(shù)據(jù)傳輸或數(shù)據(jù)存儲(chǔ)時(shí),依據(jù)確定的密碼算法將敏感的明文數(shù)據(jù)通過(guò)加密變換成較難識(shí)別的密文數(shù)據(jù),然后再進(jìn)行傳輸和存儲(chǔ),稱為加密。需要用到明文數(shù)據(jù)時(shí),再依據(jù)相同的密碼算法將密文數(shù)據(jù)通過(guò)解密得到明文數(shù)據(jù),稱為解密。數(shù)據(jù)加密被認(rèn)為是保護(hù)數(shù)據(jù)傳輸安全的唯一實(shí)用方法,也是保護(hù)存儲(chǔ)數(shù)據(jù)安全的有效方法,是數(shù)據(jù)保護(hù)在技術(shù)上的一條重要防線。算法的正確與否直接決定了能否通過(guò)加密后的密文得到正確的明文,算法的安全程度高低也直接決定了算法被破解可能性的大小。
有鑒于此,本文通過(guò)對(duì)國(guó)密算法的研究,實(shí)現(xiàn)了Verilog HDL語(yǔ)言下基于AHB總線規(guī)范的密碼雜湊算法SM3的設(shè)計(jì)。
二、國(guó)密SM3
加密散列函數(shù),也稱密碼散列函數(shù),是一種散列函數(shù)。它被認(rèn)為是單向函數(shù),這意味著僅通過(guò)散列函數(shù)的輸出結(jié)果很難得到輸入的數(shù)據(jù)。這種單向函數(shù)被稱為“現(xiàn)代密碼學(xué)的馱馬”。這種散列函數(shù)的輸入數(shù)據(jù),通常被稱為消息,其輸出通常被稱為消息摘要或摘要。在信息安全方面,有許多重要的應(yīng)用,都用到了密碼散列函數(shù),例如數(shù)字簽名和消息認(rèn)證碼等。SM3是由國(guó)家密碼管理局于2010年發(fā)布的,是一種密碼雜湊算法。其安全性能和效率都與SHA-256相當(dāng)。
本設(shè)計(jì)為一個(gè)AHB總線的Slaver設(shè)備,該設(shè)備通過(guò)內(nèi)部可尋址寄存器與AHB總線的Master進(jìn)行通訊,完成對(duì)Master發(fā)送的信息塊進(jìn)行加/脫密。AHB總線規(guī)范是AMBA總線規(guī)范的一部分,用于高系統(tǒng)、高時(shí)鐘頻率系統(tǒng)結(jié)構(gòu)。根據(jù)地址和控制信號(hào)確定master與哪個(gè)slave鏈接,進(jìn)行數(shù)據(jù)傳輸,數(shù)據(jù)傳輸通過(guò)數(shù)據(jù)總線完成。
系統(tǒng)架構(gòu)包括SM_TOP模塊和IRAM、ORAM模塊,整體掛載在AHB總線上,兼容32位AHB Slave接口,用于配置寄存器,配置信息包含IRAM起始地址、ORAM的起始地址、加密數(shù)據(jù)長(zhǎng)度、密鑰和密鑰展開(kāi)使能等。
SM_TOP:核心模塊,AHB對(duì)該模塊進(jìn)行完寄存器的配置以后,該模塊開(kāi)始從IRAM周期性的讀取數(shù)據(jù)進(jìn)行加解密或哈希散列處理,對(duì)于對(duì)稱分組算法SM1和SM4,該模塊需要將加解密結(jié)果存入到ORAM,而對(duì)于密碼雜湊算法SM3,雜湊值固定為256比特位,不需要存入ORAM,而是存入模塊內(nèi)部的8個(gè)特定的32比特位的寄存器。
IRAM:IRAM用來(lái)存儲(chǔ)待加密的明文或待脫密的密文。根據(jù)讀信號(hào)IRAM_RD、讀地址IRAM_ADDR[12:0]讀出相應(yīng)地址IRAM中的數(shù)據(jù)IRAM_RDATA[127:0],以此完成和SM_TOP的通信。
ORAM:ORAM用來(lái)存儲(chǔ)加密后的密文或脫密后的明文,通過(guò)寫(xiě)信號(hào)ORAM_WR、寫(xiě)地址ORAM_ADDR[12:0]將數(shù)據(jù)ORAM_WDATA[127:0]寫(xiě)入ORAM相應(yīng)的地址中去,以此完成和SM_TOP的通信。
IRAM和ORAM均為128bit位寬,均支持讀寫(xiě)方式,總大小為16KB。
算法的核心是進(jìn)行64輪的壓縮函數(shù)變換。300MHZ下一個(gè)周期并不能完成一輪的變換,在綜合分析后,得出四個(gè)周期可進(jìn)行一輪變換的結(jié)論。于是,設(shè)計(jì)中對(duì)本來(lái)的始終信號(hào)HCLK進(jìn)行了處理,用一個(gè)2位計(jì)數(shù)器實(shí)現(xiàn)四倍周期時(shí)鐘信號(hào)的產(chǎn)生,如圖
SM3的消息長(zhǎng)度為512比特,而限于IRAM的位寬,每次只能讀取128比特。從IRAM中讀出的數(shù)據(jù)在傳入SM3算法模塊后,首先需要做預(yù)處理,將連續(xù)讀入的4個(gè)128比特拼湊成一個(gè)512位的比特串,然后再進(jìn)行后續(xù)的運(yùn)算。這里同樣用一個(gè)2位計(jì)數(shù)器Q,Q=0時(shí),將讀取的128比特位放入B[511:384],Q=1時(shí),將讀取的128比特位放入B[383:256],Q=2時(shí),將讀取的128比特位放入B[255:128],Q=3時(shí),將讀取的128比特位放入B[127:0],最終得出512比特位的消息穿B[511:0]。
雜湊算法SM3的測(cè)試數(shù)據(jù)來(lái)自國(guó)密局文件《SM3密碼雜湊算法》,第一組測(cè)試是一組512比特位的數(shù)據(jù);第二組測(cè)試是兩個(gè)512比特位的數(shù)據(jù),仿真結(jié)果如圖。