適用于soc的md5和sha-1協(xié)處理器的制造方法
【專利摘要】本發(fā)明公開一種適用于SOC的MD5和SHA-1協(xié)處理器,包括DIN寄存器、SWAP模塊、輸入FIFO模塊、補位模塊、補長度模塊、MD5單次運算模塊、SHA-1單次運算模塊、CR控制器、STR寄存器、IMR寄存器以及摘要存儲模塊。本發(fā)明協(xié)處理器可接在APB總線上,在一定程度上增強了協(xié)處理器的可復(fù)用性。本發(fā)明通過合理的復(fù)用單次運算模塊和調(diào)節(jié)運算的周期數(shù),使得本發(fā)明具有面積小、速度快、功耗低等優(yōu)點。
【專利說明】適用于SOC的MD5和SHA-1協(xié)處理器
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及MD5/SHA-1協(xié)處理器,尤其涉及適用于采用ARM核的SOC的MD5/SHA-1協(xié)處理器。
【背景技術(shù)】
[0002]在當(dāng)今社會,隨著網(wǎng)絡(luò)信息技術(shù)的不斷發(fā)展,信息安全在各個領(lǐng)域中的應(yīng)用顯得越來越重要。如何保證信息的安全傳輸,已經(jīng)成為一個趨勢和研究的熱點。給明文信息加密使其成為密文信息以保證信息在傳輸和流通中的可靠性和安全性,儼然,信息加密技術(shù)已經(jīng)成為預(yù)防明文信息中的篡改、丟失,保障其安全的一個有效方法。因此,加密算法已經(jīng)成為密碼學(xué)中的一個重要方面和組成部分,也是當(dāng)今社會研究的熱點和趨勢。
[0003]MD5和SHA-1散列算法可以用軟件實現(xiàn),但是隨著信息技術(shù)的發(fā)展,軟件實現(xiàn)的缺點顯得越發(fā)明顯。譬如,執(zhí)行速度慢,容易遭受到病毒攻擊。相比而言,用硬件實現(xiàn)MD5和SHA-1就不存在這種情況,所以使研究MD5和SHA-1算法的硬件實現(xiàn)結(jié)構(gòu)成為必然。
【發(fā)明內(nèi)容】
[0004]針對上述問題, 申請人:經(jīng)過研究改進,提供一種適用于SOC的MD5和SHA-1協(xié)處理器,很好的解決了運算速度、占用面積、功耗三方面的問題。
[0005]本發(fā)明的技術(shù)方案如下:
[0006]一種適用于SOC的MD5和SHA-1協(xié)處理器,包括DIN寄存器、SWAP模塊、輸入FIFO模塊、補位模塊、補長度模塊、MD5/SHA-1運算單元、CR控制器、STR寄存器、頂R寄存器以及摘要存儲模塊;其中MD5/SHA-1運算單元由MD5單次運算模塊和SHA-1單次運算模塊組成;
[0007]所述DIN寄存器與APB總線和SWAP模塊相連,位寬為32bit,其接收從APB總線傳送的消息明文,隨后送入SWAP模塊;
[0008]所述SWAP模塊與DIN寄存器和輸入FIFO模塊相連,用于進行每比特位、每字節(jié)、每半字的置換;
[0009]所述輸入FIFO模塊與SWAP模塊和補位模塊相連,以先入先出的方式存儲SWAP模塊置換后的數(shù)據(jù),當(dāng)FIFO存滿或者運算到最后一個數(shù)據(jù)塊時,將FIFO中的數(shù)據(jù)送入補位模塊;
[0010]所述補位模塊與輸入FIFO模塊和補長度模塊相連,當(dāng)輸入數(shù)據(jù)的比特位數(shù)不滿足K*512+448時進行補位運算,第一位補I,其余位補零;所述補位運算通過判斷FIFO中的數(shù)據(jù)個數(shù)與狀態(tài)機狀態(tài)進行,當(dāng)不需要補位時,所述補位模塊不參與運算;
[0011]所述補長度模塊與補位模塊和MD5/SHA-1運算單元相連,在已經(jīng)進行了補位運算的消息后面,用一個64位的二進制數(shù)據(jù)來表示原始消息的長度;所述補長度運算通過判斷FIFO中的數(shù)據(jù)個數(shù)與狀態(tài)機狀態(tài)進行;經(jīng)過補位和補長度之后形成長度為512比特的整數(shù)倍的數(shù)據(jù),送入MD5/SHA-1運算單元;
[0012]所述MD5單次運算模塊,用于進行MD5單次運算,對3個變量B,C,D根據(jù)布爾函數(shù)做一次邏輯運算,將運算結(jié)果加到變量A上;所得的32位值加上消息本身的一個子分組Mj和一個常數(shù)ti,循環(huán)左移s位;其中每組的常數(shù)ti已事先計算得出,以查表方式參與運算;s同樣以查表形式得出;
[0013]所述SHA-1單次運算模塊,用于進行SHA-1單次運算,運算中用到的Kt以查表方式得到,WO?W15是已知明文消息塊,W16?W19在每輪運算用到之前,根據(jù)迭代運算得到;
[0014]所述CR控制器與MD5/SHA-1運算單元和APB總線相連,用于通過APB總線的配置,控制協(xié)處理器進行摘要算法選擇、協(xié)處理器使能、數(shù)據(jù)類型選擇;
[0015]所述STR寄存器與MD5/SHA-1運算單元和APB總線相連,是協(xié)處理器的狀態(tài)寄存器,用于反應(yīng)協(xié)處理器當(dāng)前所處的狀態(tài)、FIFO空滿情況;
[0016]所述MR寄存器與MD5/SHA-1運算單元和APB總線相連,用于通過APB總線的配置,使能協(xié)處理器中斷;
[0017]所述摘要存儲模塊與MD5/SHA-1運算單元和APB總線相連,用于存儲MD5/SHA-1運算單元的運算結(jié)果,供APB總線讀?。凰稣鎯δK中有HO\H1\H2\H3\H4五個32-bit寄存器,當(dāng)使用MD5算法時,寄存器H0\H1\H2\H3有效,當(dāng)使用SHA-1算法時,寄存器H0\H1\H2\H3\H4 有效。
[0018]本發(fā)明的有益技術(shù)效果是:
[0019]本發(fā)明無需軟件干預(yù),根據(jù)對FIFO和狀態(tài)機情況的判斷,即可自動完成補位、補長度操作,增強了運算的速度和易于操作。
[0020]本發(fā)明例化了 MD5單次運算模塊,在每輪運算時采用不同的布爾函數(shù)、Mj、ti,以此減少芯片面積,降低功耗。
[0021]本發(fā)明例化了 SHA-1單次運算模塊,在每輪運算時采用不同的布爾函數(shù)、Kt、Wt,以此減少芯片面積,降低功耗。
[0022]本發(fā)明通過讀取STR寄存器的數(shù)據(jù),可以判斷協(xié)處理器所處狀態(tài),F(xiàn)IFO空滿情況,便于軟件操作。
[0023]本發(fā)明對功耗有比較合理的控制。當(dāng)需要使用MD5/SHA-1協(xié)處理器時,使能MD5/SHA-1協(xié)處理器專用時鐘即可;當(dāng)不使用MD5/SHA-1協(xié)處理器時,關(guān)閉時鐘使能,該協(xié)處理器就不會工作,降低芯片功耗。
【專利附圖】
【附圖說明】
[0024]圖1是本發(fā)明的結(jié)構(gòu)框圖。
【具體實施方式】
[0025]下面結(jié)合附圖對本發(fā)明的【具體實施方式】做進一步說明。
[0026]一、結(jié)構(gòu)說明:
[0027]圖1是本發(fā)明適用于SOC的MD5和SHA-1協(xié)處理器的結(jié)構(gòu)框圖。見圖1,本發(fā)明由DIN寄存器、SWAP模塊、輸入FIFO模塊、補位模塊、補長度模塊、MD5/SHA-1運算單元、CR控制器、STR寄存器、IMR寄存器以及摘要存儲模塊組成。
[0028]DIN寄存器,該寄存器位寬為32bit,接收從APB總線傳送的消息明文。
[0029]SWAP模塊,該模塊可實現(xiàn)每比特位、每字節(jié)、每半字的置換,以滿足軟件的不同輸入方式。
[0030]輸入FIFO模塊,該模塊以先入先出方式存儲SWAP模塊置換后的數(shù)據(jù),每當(dāng)FIFO存滿或者運算到最后一個數(shù)據(jù)塊時,將FIFO中數(shù)據(jù)送入補位模塊。
[0031]補位模塊,當(dāng)輸入數(shù)據(jù)的比特位數(shù)不滿足K*512+448時,補位模塊自動完成補位運算,第一位補1,其余位補零;此運算通過判斷FIFO中的數(shù)據(jù)個數(shù)與狀態(tài)機狀態(tài)進行運算,無需軟件干預(yù);當(dāng)不需要補位時,此模塊不參與運算。
[0032]補長度模塊,在已經(jīng)進行了補位運算的消息后面,用一個64位的二進制數(shù)據(jù)來表示原始消息的產(chǎn)度;此運算通過判斷FIFO中的數(shù)據(jù)個數(shù)與狀態(tài)機狀態(tài)進行運算,無需軟件干預(yù);經(jīng)過自動補位和補長度之后,送入MD5/SHA-1運算單元的數(shù)據(jù)長度為512比特的整數(shù)倍。
[0033]MD5/SHA-1運算單元由MD5單次運算模塊和SHA-1單次運算模塊組成。
[0034]MD5單次運算模塊,對3個變量B,C,D根據(jù)布爾函數(shù)做一次邏輯運算,將運算結(jié)果加到變量A上;所得的32位值再加上消息本身的一個子分組Mj和一個常數(shù)ti,再循環(huán)左移s位;其中每組ti已事先計算得出,以查表方式參與運算,增強了運算速度;s同樣以查表形式得出。
[0035]SHA-1單次運算模塊,該運算中用到的Kt以查表方式得到,WO?W15是已知明文消息塊,W16?W19在每輪運算用到之前,根據(jù)迭代運算得到,以減少芯片面積。
[0036]CR控制器,此寄存器控制協(xié)處理器器進行摘要算法選擇、協(xié)處理器使能、數(shù)據(jù)類型選擇。
[0037]STR寄存器,協(xié)處理器的狀態(tài)寄存器,此寄存器反應(yīng)了協(xié)處理器當(dāng)前所處的狀態(tài)、FIFO空滿情況等。
[0038]IMR寄存器,通過該寄存器可以使能協(xié)處理器中斷。
[0039]摘要存儲模塊,存儲MD5/SHA-1運算的結(jié)果。
[0040]二、工作原理說明:
[0041]在運行本發(fā)明協(xié)處理器之前,通過APB總線,配置MR寄存器,使能完成一次摘要運算的中斷;
[0042]通過APB總線,配置CR控制器,選擇所使用摘要算法,數(shù)據(jù)類型等,并使能該發(fā)明協(xié)處理器;
[0043]完成CR控制器、IMR寄存器的配置之后,通過APB總線向DIN寄存器寫入需要加密的數(shù)據(jù),每次寫入32-bit,寫入的數(shù)據(jù)經(jīng)過SWAP模塊進行位置換之后,存入16X32的輸入FIFO模塊中;
[0044]當(dāng)輸入FIFO模塊中的數(shù)據(jù)滿512-bit時,將數(shù)據(jù)送入SHA-1單次運算模塊或者MD5單次運算模塊;
[0045]當(dāng)輸入FIFO模塊中的數(shù)據(jù)未滿512-bit,并再無數(shù)據(jù)輸入時,將輸入FIFO模塊中的數(shù)據(jù)送入補位模塊、補長度模塊,然后將進行過補位、補長度的數(shù)據(jù)送入SHA-1單次運算模塊或者MD5單次運算模塊;
[0046]利用流水線技術(shù),多次調(diào)用SHA-1單次運算模塊或者MD5單次運算模塊,完成摘要算法,將得到的摘要送入摘要存儲模塊;
[0047]摘要存儲模塊中有H0\H1\H2\H3\H4五個32_bit寄存器,當(dāng)使用MD5算法時,僅H0\H1\H2\H3有效;當(dāng)使用SHA-1算法時,五個寄存器全部有效;
[0048]在完成運算之后產(chǎn)生中斷,通知CPU,CPU通過APB總線讀取摘要存儲模塊中的值。
[0049]注:本發(fā)明中,MD5/SHA-1運算單元在運行中所涉及的MD5算法及SHA-1算法為現(xiàn)有技術(shù)。
[0050]以上所述的僅是本發(fā)明的優(yōu)選實施方式,本發(fā)明不限于以上實施例??梢岳斫?,本領(lǐng)域技術(shù)人員在不脫離本發(fā)明的精神和構(gòu)思的前提下直接導(dǎo)出或聯(lián)想到的其他改進和變化,均應(yīng)認(rèn)為包含在本發(fā)明的保護范圍之內(nèi)。
【權(quán)利要求】
1.一種適用于SOC的MD5和SHA-1協(xié)處理器,其特征在于:包括DIN寄存器、SWAP模塊、輸入FIFO模塊、補位模塊、補長度模塊、MD5/SHA-1運算單元、CR控制器、STR寄存器、IMR寄存器以及摘要存儲模塊;其中MD5/SHA-1運算單元由MD5單次運算模塊和SHA-1單次運算模塊組成; 所述DIN寄存器與APB總線和SWAP模塊相連,位寬為32bit,其接收從APB總線傳送的消息明文,隨后送入SWAP模塊; 所述SWAP模塊與DIN寄存器和輸入FIFO模塊相連,用于進行每比特位、每字節(jié)、每半字的置換;所述輸入FIFO模塊與SWAP模塊和補位模塊相連,以先入先出的方式存儲SWAP模塊置換后的數(shù)據(jù),當(dāng)FIFO存滿或者運算到最后一個數(shù)據(jù)塊時,將FIFO中的數(shù)據(jù)送入補位模塊;所述補位模塊與輸入FIFO模塊和補長度模塊相連,當(dāng)輸入數(shù)據(jù)的比特位數(shù)不滿足K*512+448時進行補位運算,第一位補1,其余位補零;所述補位運算通過判斷FIFO中的數(shù)據(jù)個數(shù)與狀態(tài)機狀態(tài)進行,當(dāng)不需要補位時,所述補位模塊不參與運算; 所述補長度模塊與補位模塊和MD5/SHA-1運算單元相連,在已經(jīng)進行了補位運算的消息后面,用一個64位的二進制數(shù)據(jù)來表示原始消息的長度;所述補長度運算通過判斷FIFO中的數(shù)據(jù)個數(shù)與狀態(tài)機狀態(tài)進行;經(jīng)過補位和補長度之后形成長度為512比特的整數(shù)倍的數(shù)據(jù),送入MD5/SHA-1運算單元; 所述MD5單次運算模塊,用于進行MD5單次運算,對3個變量B,C,D根據(jù)布爾函數(shù)做一次邏輯運算,將運算結(jié)果加到變量A上;所得的32位值加上消息本身的一個子分組Mj和一個常數(shù)ti,循環(huán)左移s位;其中每組的常數(shù)ti已事先計算得出,以查表方式參與運算;s同樣以查表形式得出; 所述SHA-1單次運算模塊,用于進行SHA-1單次運算,運算中用到的Kt以查表方式得至IJ,WO?W15是已知明文消息塊,W16?W19在每輪運算用到之前,根據(jù)迭代運算得到;所述CR控制器與MD5/SHA-1運算單元和APB總線相連,用于通過APB總線的配置,控制協(xié)處理器進行摘要算法選擇、協(xié)處理器使能、數(shù)據(jù)類型選擇; 所述STR寄存器與MD5/SHA-1運算單元和APB總線相連,是協(xié)處理器的狀態(tài)寄存器,用于反應(yīng)協(xié)處理器當(dāng)前所處的狀態(tài)、FIFO空滿情況; 所述MR寄存器與MD5/SHA-1運算單元和APB總線相連,用于通過APB總線的配置,使能協(xié)處理器中斷; 所述摘要存儲模塊與MD5/SHA-1運算單元和APB總線相連,用于存儲MD5/SHA-1運算單元的運算結(jié)果,供APB總線讀取;所述摘要存儲模塊中有H0\H1\H2\H3\H4五個32_bit寄存器,當(dāng)使用MD5算法時,寄存器H0\H1\H2\H3有效,當(dāng)使用SHA-1算法時,寄存器H0\H1\H2\H3\H4 有效。
【文檔編號】H04L9/06GK103716150SQ201310739644
【公開日】2014年4月9日 申請日期:2013年12月27日 優(yōu)先權(quán)日:2013年12月27日
【發(fā)明者】宋超, 周毅, 孫進軍, 郝鑫, 奚谷楓 申請人:無錫紫芯集成電路系統(tǒng)有限公司