欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種兼容三種sha標(biāo)準(zhǔn)的裝置及其實現(xiàn)方法

文檔序號:6605135閱讀:260來源:國知局
專利名稱:一種兼容三種sha標(biāo)準(zhǔn)的裝置及其實現(xiàn)方法
技術(shù)領(lǐng)域
本發(fā)明涉及基于FPGA (Field-Programmable Gate Array)的 SHA 系列算法 (SHA-1、SHA-256及SHA-512)的綜合設(shè)計領(lǐng)域,尤其涉及一種兼容三種SHA標(biāo)準(zhǔn)的裝置及 其實現(xiàn)方法。
背景技術(shù)
SHA-I算法是目前流行的哈希散列加密算法,也是可信計算規(guī)范中規(guī)定使用的加 密算法。但是在近年,SHA-I算法的缺陷已經(jīng)被曝露出來,而具有更高安全性的SHA-256及 SHA-512算法正是替代SHA-I的最佳方案。為了在下一代可信計算規(guī)范發(fā)布之時,可信計算 模塊(Trusted Platform Module, TPM)能提供兼容上一代規(guī)范的服務(wù),一種實用的SHA算 法綜合實現(xiàn)方案顯得尤為必要?,F(xiàn)有技術(shù)中還沒有針對三種SHA標(biāo)準(zhǔn)同時實現(xiàn)的設(shè)計方案。若TPM芯片不能向上 兼容SHA-1,向下兼容SHA-256或SHA-512,那么不僅會增加更換設(shè)備的資金花費,同時在更 換設(shè)備的時間內(nèi),還會因為TPM芯片不能提供安全服務(wù)而造成安全隱患。

發(fā)明內(nèi)容
本發(fā)明的目的之一在于克服上述的缺點和不足,提供一種兼容三種SHA標(biāo)準(zhǔn)的裝 置。本發(fā)明具有普遍適用性、兼容性好、功耗低,以及占用額外的資源少等優(yōu)點,特別適合為 可信計算中可信計算模塊(TPM)芯片提供SHA加密服務(wù)。本發(fā)明的目的之二在于提供一種兼容三種SHA標(biāo)準(zhǔn)的實現(xiàn)方法。本發(fā)明的目的之一是通過下述技術(shù)方案實現(xiàn)的一種兼容三種SHA標(biāo)準(zhǔn)的裝置, 包括依次相連的數(shù)據(jù)填充模塊、Wt生成模塊和哈希運算模塊,其中所述數(shù)據(jù)填充模塊,用于接收明文數(shù)據(jù),并生成填充數(shù)據(jù),將明文數(shù)據(jù)與填充數(shù)據(jù) 輸出至Wt生成模塊;所述Wt生成模塊,用于接收數(shù)據(jù)填充模塊輸出的數(shù)據(jù),在SHA-I模式中通過異或 運算連接各操作數(shù),在SHA-256及SHA-512模式中通過算術(shù)加操作對各操作數(shù)進(jìn)行連接,生 成新的Wt算子并輸入到哈希運算模塊;所述哈希運算模塊,用于接收Wt生成模塊的Wt算子,進(jìn)行散列運算,生成160位、 256位或者512位的數(shù)據(jù)摘要。為更好的實現(xiàn)本發(fā)明,所述數(shù)據(jù)填充模塊主要包括寄存器、減法器和多路開關(guān);所述Wt生成模塊主要包括寄存器、移位寄存器組、左循環(huán)移位邏輯、多路開關(guān)、加 法器和異或運算器。所述哈希運算模塊主要包括寄存器和邏輯運算模塊所述哈希運算模塊中的邏輯運算模塊主要包括左循環(huán)移位邏輯、算術(shù)左移邏輯、 多路開關(guān)、加法器和異或運算器;所述哈希運算模塊中的寄存器為8個64位寄存器,在不同模式,寄存器的初始值不同。優(yōu)選的,所述Wt生成模塊中的寄存器、移位寄存器組分為上下兩行,每行的數(shù)據(jù) 深度是16,具體為上面一行包括依次相連的一個32位位寬深度為2的移位寄存器、一個32位位寬 深度為5的移位寄存器、一個32位位寬深度為8的移位寄存器和一個32位位寬寄存器;下面一行包括依次相連的一個32位位寬深度為2的移位寄存器、一個32位位寬 寄存器、一個32位位寬深度為4的移位寄存器、一個32位位寬寄存器、一個32位位寬深度 為6的移位寄存器,一個32位位寬寄存器,一個32位位寬寄存器;所述哈希運算模塊中的寄存器為8個64位寄存器,所述每個64位寄存器都被定 義為低32位及高32位。本發(fā)明的目的之二是通過下述技術(shù)方案實現(xiàn)的一種兼容三種SHA標(biāo)準(zhǔn)的裝置的 實現(xiàn)方法,包括以下步驟(I)數(shù)據(jù)填充模塊接收明文數(shù)據(jù),并生成填充數(shù)據(jù),將明文數(shù)據(jù)與填充數(shù)據(jù)輸出至 Wt生成模塊;(II)Wt生成模塊接收數(shù)據(jù)填充模塊輸出的數(shù)據(jù),在SHA-I模式中通過異或運算連 接各操作數(shù),在SHA-256及SHA-512模式中通過算術(shù)加操作對各操作數(shù)進(jìn)行連接,生成新的 Wt算子并輸入到哈希運算模塊;(III)哈希運算模塊接收Wt生成模塊的Wt算子,進(jìn)行散列運算,在SHA-I模式下 生成160位的數(shù)據(jù)摘要,在SHA-256模式下生成256位的數(shù)據(jù)摘要,或者在SHA-512模式下 生成512位的數(shù)據(jù)摘要。為更好的實現(xiàn)本發(fā)明目的,SHA-I模式具體包括以下步驟Si、用64位二進(jìn)制數(shù)表示明文數(shù)據(jù)長度,設(shè)為M,若代表數(shù)據(jù)長度的數(shù)據(jù)不足64 位,則以0補足最高位;將M值輸入數(shù)據(jù)填充模塊的專用寄存器中存儲;進(jìn)入步驟S2 ;S2、待加密的明文以512位為一組,輸入數(shù)據(jù)填充模塊,進(jìn)入步驟S3 ;S3、Wt生成模塊選取下面一行的寄存器組用于生成Wt算子;512位的明文從高位 到低位被分成16組,每組32位,按順序從數(shù)據(jù)填充模塊輸入到Wt生成模塊的寄存器組中, 進(jìn)入S4 ;S4、隨后進(jìn)入系統(tǒng)的下一個時鐘周期,Wt生成模塊中第0、2、8、15個寄存器上的數(shù) 據(jù)會被輸出做異或操作;異或操作得出的數(shù)在左循環(huán)移位一位后,作為新的Wt算子,進(jìn)入 步驟S5 ;S5、隊列中原有的16個Wt算子依次前移一位,在第0個寄存器的Wt算子被移出, 作為該輪的Wt算子送入到哈希運算模塊,同時步驟S4中新的Wt算子被輸入到第15個寄 存器的位置,進(jìn)入S6 ;S6、哈希運算模塊由下至上,設(shè)這八個寄存器所存儲的數(shù)據(jù)從第一個寄存器到第 八個寄存器依次分別是A值、B值、C值、D值、B值、C值、D值、E值,哈希運算模塊接收Wt生 成模塊輸出的Wt算子,并判斷當(dāng)前散列運算正在進(jìn)行的輪數(shù),若在0到19輪散列運算中, 則進(jìn)入步驟S7 ;若在20到39輪或60到79輪的散列運算中,則進(jìn)入步驟S8 ;若在40到59 的散列輪運算中,則進(jìn)入步驟S9 ;S7、在0到19輪散列運算中,哈希運算模塊使用第五、六、七個寄存器的值,及步驟S5中Wt生成模塊輸出的Wt算子,求出用于更新第一個寄存器所需要的T值,進(jìn)入步驟 SlO ;步驟S8、在20到39輪或60到79輪的散列運算中,哈希運算模塊使用第五、六、七 個寄存器的值,或第二、三、四個寄存器的值,及步驟S5中Wt生成模塊輸出的Wt算子求出 用于更新第1寄存器所需要的T值,進(jìn)入步驟SlO ;步驟S9、在40到59輪的散列輪運算中,哈希運算模塊使用第二、三、四個寄存器的 值,及步驟S5中Wt生成模塊輸出的Wt算子,求出用于更新第一個寄存器所需要的T值,進(jìn) 入步驟SlO ;S10、哈希運算模塊中,第四個及第七個寄存器中的D值一致,用第七個寄存器中 的D值更新第八寄存器中的E值,第三寄存器及第六寄存器中的C值更新第四及第七寄存 器中的D值,第二寄存器及第五寄存器中的B值更新第三及第六寄存器中的C值,第一個寄 存器中的A更新第二及第五寄存器中的B值,用求得的T值更新第一個寄存器中存儲的A 值,進(jìn)入Sll ;S11、哈希運算模塊判斷是否已經(jīng)完成80輪散列計算,若不是,則返回步驟S4 ;若 是,則哈希運算模塊選擇第一、第二、第三、第四及第八個寄存器的值作為輸出,進(jìn)入步驟 S12 ;S12、數(shù)據(jù)填充模塊的寄存器的值減一,進(jìn)入步驟S13 ;S13、數(shù)據(jù)填充模塊判斷寄存器的值是否等于0 若寄存器的值不等于0,則數(shù)據(jù)填充模塊將明文直接輸出到Wt生成模塊,返回到 S2 ;若寄存器的值等于0,則數(shù)據(jù)填充模塊在明文后面補充填充數(shù)據(jù)并一同輸出至Wt 生成模塊,進(jìn)入步驟S14;S14、數(shù)據(jù)填充模塊結(jié)束本次運算操作,或等待下一次運算操作并返回到步驟Si。SHA-256模式具體包括以下步驟Si、用64位二進(jìn)制數(shù)表示明文數(shù)據(jù)長度,設(shè)為M,若代表數(shù)據(jù)長度的數(shù)據(jù)不足64 位,則以0補足最高位;將M值輸入數(shù)據(jù)填充模塊的專用寄存器中存儲;進(jìn)入步驟S2 ;S2、待加密的明文以512位為一組,輸入數(shù)據(jù)填充模塊,進(jìn)入步驟S3 ;S3、Wt生成模塊選取下面一行的寄存器組用于生成Wt算子;512位的明文從高位 到低位被分成16組,每組32位,按順序從數(shù)據(jù)填充模塊輸入到Wt生成模塊的寄存器組中, 進(jìn)入S4 ;S4、隨后進(jìn)入系統(tǒng)的下一個時鐘周期,Wt生成模塊中第0、1、9、14個寄存器上的數(shù) 據(jù)會被輸出并用于生成新的Wt算子,進(jìn)入步驟S5 ;S5、隊列中原有的16個Wt算子依次前移一位,在第0個寄存器的Wt算子被移出, 作為該輪的Wt算子送入到哈希運算模塊,同時步驟S4中新的Wt算子被輸入到第15個寄 存器的位置,進(jìn)入S6 ;S6、哈希運算模塊接收Wt生成模塊輸出的Wt算子,設(shè)哈希運算模塊由下至上這八 個寄存器所存儲的數(shù)據(jù)從第一個寄存器到第八個寄存器依次分別是A值、B值、C值、D值、 E值、F值、G值、H值;使用這八個寄存器所存儲的數(shù)據(jù)計算用于更新哈希運算模塊中寄存 器所需要的Tl值與T2值
S7、哈希運算模塊中,第七個寄存器中的G值更新第八個寄存器中的H值,第六個 寄存器中的F值更新第七個寄存器中的G值,第五個寄存器中的E值更新第六個寄存器中 的F值,第四個寄存器中的D值與Tl值相加后更新第五個寄存器中的E值,第三個寄存器 中的C值更新第四個寄存器中的D值,第二個寄存器中的B值更新第三個寄存器中的C值, 第一個寄存器中的A值更新第二個寄存器中的B值,Tl與T2相加的結(jié)果更新第一個寄存 器中的A值,進(jìn)入S8 ;S8、哈希運算模塊判斷是否已經(jīng)完成64輪散列計算,若不是,則返回步驟S4;若 是,則哈希運算模塊選擇第一、第二、第三、第四、第五、第六、第七及第八個寄存器的值作為 輸出,進(jìn)入步驟S9 ;S9、數(shù)據(jù)填充模塊的寄存器的值減一,進(jìn)入步驟SlO ;S10、數(shù)據(jù)填充模塊判斷寄存器的值是否等于0 若寄存器的值不等于0,則數(shù)據(jù)填充模塊將明文直接輸出到Wt生成模塊,返回到 S2 ;若寄存器的值等于0,則數(shù)據(jù)填充模塊在明文后面補充填充數(shù)據(jù)并一同輸出到Wt 生成模塊,進(jìn)入步驟Sll ;S11、數(shù)據(jù)填充模塊結(jié)束本次運算操作,或等待下一次運算操作并返回到步驟Si。優(yōu)選的,SHA-I模式及SHA-256模式中所述填充數(shù)據(jù)的生成方法,包括以下步驟S4. 1、判斷明文數(shù)據(jù)長度M值能否被512整除,若可以,則進(jìn)入步驟S4. 2 ;若不能, 則進(jìn)入步驟S4. 3 ;S4.2、數(shù)據(jù)填充模塊為明文填充1位‘1,,447位‘0,以及M值;S4. 3、數(shù)據(jù)填充模塊為余下的一組不足512位的數(shù)據(jù)塊填充1位‘1’以及若干位 ‘0’,使其成為512位的數(shù)據(jù)塊;并且再填充一個512位的數(shù)據(jù)塊,其組成為448位的‘0’以
及M值。SHA-512模式具體包括以下步驟Si、用128位二進(jìn)制數(shù)表示明文數(shù)據(jù)長度,設(shè)為M,若代表數(shù)據(jù)長度的數(shù)據(jù)不足128 位,則以0補足最高位;將M值輸入數(shù)據(jù)填充模塊的專用寄存器中存儲,進(jìn)入步驟S2 ;S2、待加密的明文以1024位為一組,輸入數(shù)據(jù)填充模塊,進(jìn)入步驟S3 ;S3、Wt生成模塊選取上下兩行的寄存器組用于生成Wt算子;1024位的明文從高位 到低位被分為16組,每組64位數(shù)據(jù),高32位的數(shù)據(jù)存儲于上面一行的寄存器組中,低32 位的數(shù)據(jù)存儲于下面一行的寄存器組中,按順序從數(shù)據(jù)填充模塊輸入到Wt生成模塊的寄 存器組中,進(jìn)入S4;S4、隨后進(jìn)入系統(tǒng)的下一個時鐘周期,Wt生成模塊中第0、1、9、14個寄存器上的數(shù) 據(jù)會被輸出用于生成新的Wt算子,進(jìn)入步驟S5 ;S5、隊列中原有的16個Wt算子依次前移一位,在第0個寄存器的Wt算子被移出, 作為該輪的Wt算子送入到哈希運算模塊,同時步驟S4中新的Wt算子被輸入到第15個寄 存器的位置,進(jìn)入S6 ;S6、設(shè)哈希運算模塊由下至上這八個寄存器所存儲的數(shù)據(jù)從第一個寄存器到第八 個寄存器依次分別是A值、B值、C值、D值、E值、F值、G值、H值;哈希運算模塊接收Wt生 成模塊輸出的Wt算子,并計算用于更新哈希運算模塊中寄存器所需要的Tl值與T2值;
S7、哈希運算模塊中,第七個寄存器中的G值更新第八個寄存器中的H值,第六個 寄存器中的F值更新第七個寄存器中的G值,第五個寄存器中的E值更新第六個寄存器中 的F值,第四個寄存器中的D值與Tl值相加后更新第五個寄存器中的E值,第三個寄存器 中的C值更新第四個寄存器中的D值,第二個寄存器中的B值更新第三個寄存器中的C值, 第一個寄存器中的A值更新第二個寄存器中的B值,Tl與T2相加的結(jié)果更新第一個寄存 器中的A值,進(jìn)入S8 ;S8、哈希運算模塊判斷是否已經(jīng)完成80輪散列計算,若不是,則返回步驟S4 ;若 是,則選擇第一、第二、第三、第四、第五、第六、第七及第八個寄存器的值作為輸出,進(jìn)入步 驟S9 ;S9、數(shù)據(jù)填充模塊的寄存器的值減一,進(jìn)入步驟SlO ;S10、數(shù)據(jù)填充模塊判斷寄存器的值是否等于0 若寄存器的值不等于0,則數(shù)據(jù)填充模塊將明文直接輸出到Wt生成模塊,返回到 S2 ;若寄存器的值等于0,則數(shù)據(jù)填充模塊在明文后面補充填充數(shù)據(jù)并一同輸出到Wt 生成模塊,進(jìn)入步驟Sll ;S11、數(shù)據(jù)填充模塊結(jié)束本次運算操作,或等待下一次運算操作并返回到步驟Si。優(yōu)選的,所述SHA-512的步驟SlO中填充數(shù)據(jù)的生成方法,具體包括以下步驟S4. 1、判斷明文數(shù)據(jù)長度M值能否被1024整除,若可以,則進(jìn)入步驟S4. 2 ;若不 能,則進(jìn)入步驟S4.3 ;S4.2、數(shù)據(jù)填充模塊為明文填充1位‘1,,895位‘0,以及M值;S4. 3、數(shù)據(jù)填充模塊為余下的一組不足1024位的數(shù)據(jù)塊填充1位‘1’以及若干位 ‘0,,使其成為1024位的數(shù)據(jù)塊;并且再填充一個1024位的數(shù)據(jù)塊,其組成為896位的‘0, 以及M值。本發(fā)明實現(xiàn)兼容三種SHA標(biāo)準(zhǔn)的裝置及其實現(xiàn)方法,必須解決的問題以及解決思 路如下1、問題SHA-1和SHA-256的數(shù)據(jù)寬度是32位,SHA-512的數(shù)據(jù)寬度是64位。解 決方案Wt生成模塊的移位寄存器組分兩行,每行32位位寬實現(xiàn)。在SHA-1,SHA-256模式 下,下面一行的寄存器組用于數(shù)據(jù)的存儲與處理,上面一行的寄存器組不工作。在SHA-512 模式下,兩行寄存器組同時工作,為SHA-512模式提供64位寬度的數(shù)據(jù)存儲及數(shù)據(jù)處理。在 哈希運算模塊涉及的第一到第八個寄存器,其數(shù)據(jù)寬度都是64位,在SHA-1、SHA-256模式 下,只用低 32 位存儲 A、B、C、D、E (SHA-1 模式)及 A、B、C、D、E、F、G, H(SHA-256 模式)的 值,高32位不參與數(shù)據(jù)存儲。在SHA-512模式下,每個寄存器的全部64位都參與數(shù)據(jù)的存 儲。這樣設(shè)計的好處是1、提供了數(shù)據(jù)寬度的兼容。2、在SHA-l、SHA-256模式下,不需要的 寄存器不參與數(shù)據(jù)存儲,可以減低設(shè)計功耗。2、問題SHA-1模式中,參與生成新的Wt算子所使用的舊Wt算子選取與SHA-256、 SHA-512不同。在SHA-I模式的Wt生成模塊中,是第0、2、8、13個寄存器中的數(shù)據(jù)用于新Wt 算子的生成。在SHA-256及SHA-512模式的Wt生成模塊中,是第0、1、9、14個寄存器中的 數(shù)據(jù)用于新Wt算子的生成。解決方案在FPGA中,使用同樣數(shù)量的資源實現(xiàn)一個移位寄存 器組能提供的數(shù)據(jù)容量是實現(xiàn)一個寄存器的容量的16倍(移位寄存器組16位,單個寄存器1位),但是其缺點就是,不在移位寄存器組的輸入、輸出端的數(shù)據(jù),不能被采樣用于數(shù)據(jù) 處理。這樣就不能滿足Wt模塊需要在隊列之中抽取數(shù)據(jù)用于新Wt生成的需要。所以本設(shè) 計采用了移位寄存器組與單個寄存器組合實現(xiàn)的方法,平衡了資源消耗及功能實現(xiàn)要求。 下面一行寄存器組在第13、8、1的位置使用寄存器對數(shù)據(jù)進(jìn)行存儲,其目的是滿足SHA-I模 式在第2、8、13的位置對數(shù)據(jù)進(jìn)行采樣的需要。而對于SHA-256模式,第1、9、14位置的數(shù) 據(jù)依然能夠被采樣。這樣就滿足了 SHA-1、SHA-256模式對舊Wt數(shù)據(jù)采樣的需求。而對于 SHA-512模式,上下兩行的Wt寄存器組在第0、1、9、14位置的數(shù)據(jù)能被采用。綜上所述,移 位寄存組與寄存器組合實現(xiàn)的方案解決了這一個問題。3、問題SHA_1、SHA-256和SHA-512模式中的Ch運算邏輯、Maj運算邏輯設(shè)計的 資源重用。在SHA-I與SHA-256、SHA-512中,都涉及Ch函數(shù)及Maj函數(shù)的邏輯操作,但是 它們的輸入值卻不一樣=SHA-I中;B、C、D的值始終作為這兩個函數(shù)的輸入。而在SHA-256、 SHA-512中,對于Ch函數(shù),輸入是E、F、G ;Maj函數(shù)輸入的是A、B、C。一般的解決思路是在 設(shè)計中加入多路開關(guān),根據(jù)不同的模式選擇不同的輸入。但是多路開關(guān)本身也對資源進(jìn)行 消耗。根據(jù)前期的測試,目前解決的方案有1)分別為SHA-1、SHA-256、SHA-512獨立實現(xiàn) Ch與Maj函數(shù);2)使用多路開關(guān),對Maj函數(shù)及Ch函數(shù)的邏輯單元進(jìn)行復(fù)用。由于多路開 關(guān)的增加,兩個方案的資源消耗是一樣的,即過往的解決思路都不能很好地實現(xiàn)資源復(fù)用 的目的。解決方案第二、第三個寄存器的B值、C值,連接到Maj函數(shù)的輸入,第一個寄存器 的A值和第四個寄存器的D值增加一個2選1的多路開關(guān),在SHA-I模式下,D值作為Maj 函數(shù)的輸入,SHA-256及SHA-512模式下,A值作為Maj函數(shù)的輸入。第四、第五、第六個寄 存器的E值、F值、G值連接到Ch函數(shù)的輸入。在SHA-I模式下,第二、第三、第四個寄存器 的值分別與第五,第六,第七個寄存器的值一致。在第0-19輪,會使用Ch函數(shù)的計算值更 新T,在第40-59輪會使用Maj函數(shù)的計算值更新T。而在SHA-256及SHA-512模式,每個周 期,Maj與Ch都參與更新Tl及T2。這樣設(shè)計的優(yōu)勢在于SHA-1模式充分利用了 SHA-256 及SHA-512模式增加的第五、第六、第七個寄存器進(jìn)行冗余計算,再根據(jù)輪數(shù)取合適的結(jié)果 對數(shù)據(jù)進(jìn)行更新,不需要增加過多的額外資源,就可以完成Ch和Maj函數(shù)的邏輯復(fù)用。本發(fā)明相對于現(xiàn)有技術(shù)具有如下的優(yōu)點及效果第一、兼容性好在可預(yù)見的將來,存在缺陷的SHA-I算法將會被可靠性更高的加 密算法取代。而作為可信計算的基礎(chǔ)——可信平臺模塊(TPM)中的SHA算法服務(wù)的前后兼 容性問題是一個還未引起重視的問題。而本發(fā)明提供了一種額外開銷小,但是能同時實現(xiàn) 三種SHA算法的系統(tǒng),以有利于可信計算規(guī)范的發(fā)展。第二、通過資源復(fù)用,額外的邏輯單元使用較少本發(fā)明利用SHA算法之間的算法 相似性,首次解決了 SHA系列算法之間的數(shù)據(jù)寬度不相同、數(shù)據(jù)處理方式不一致等的沖突 問題,并在哈希運算核心中使用了冗余計算的方法減少邏輯資源的消耗。此發(fā)明為其余的 安全芯片提供了靈活的多安全服務(wù)實現(xiàn)方案。第三、兼顧了效率及功耗本發(fā)明功耗低,占用額外的資源較少,可以為計算機(jī)系 統(tǒng)提供廉價的具兼容性的SHA服務(wù)。同時也可以避免因為規(guī)范升級造成的芯片更新?lián)Q代的 額外開銷。經(jīng)驗證,在Xilinx Virtex5系列芯片上運行,發(fā)明可達(dá)到90Mhz的速度,占用的 邏輯單元為1151Slice。第四、普遍適用本發(fā)明可以應(yīng)用到個人電腦的可信計算芯片,或者是作為嵌入式系統(tǒng)的安全協(xié)處理器的SHA算法模塊的實現(xiàn),又或者是在現(xiàn)場可編程門陣列(FPGA)的片上 系統(tǒng)(SOC)中作為可選的安全服務(wù)知識產(chǎn)權(quán)軟核,為系統(tǒng)提供更高的安全保障。


圖1是本實施例兼容三種SHA標(biāo)準(zhǔn)的裝置的結(jié)構(gòu)方框圖;圖2是本實施例中數(shù)據(jù)填充模塊的結(jié)構(gòu)方框圖;圖3是本實施例中哈希運算模塊的結(jié)構(gòu)方框圖;圖4是本實施例中Wt生成模塊與哈希運算模塊的內(nèi)部邏輯結(jié)構(gòu)示意圖;圖5是本實施例兼容三種SHA標(biāo)準(zhǔn)裝置的工作流程圖;圖6是本實施例在SHA-I模式下工作的流程圖;圖7是本實施例在SHA-256模式下工作的流程圖;圖8是本實施例在SHA-512模式下工作的流程圖。
具體實施例方式下面結(jié)合實施例及附圖,對本發(fā)明作進(jìn)一步地詳細(xì)說明,但本發(fā)明的實施方式不 限于此。實施例如圖1所示,一種兼容三種SHA標(biāo)準(zhǔn)的裝置,主要包括依次相連的數(shù)據(jù)填充模塊、 Wt生成模塊和哈希運算模塊。所述數(shù)據(jù)填充模塊,用于接收明文數(shù)據(jù),并生成填充數(shù)據(jù),將明文數(shù)據(jù)寫填充數(shù)據(jù) 輸出至Wt生成模塊;所述Wt生成模塊,用于接收數(shù)據(jù)填充模塊輸出的數(shù)據(jù),在SHA-I模式中通過異或 運算連接各操作數(shù),在SHA-256及SHA-512模式中通過算術(shù)加操作對各操作數(shù)進(jìn)行連接,生 成新的Wt算子并輸入到哈希運算模塊;所述哈希運算模塊,用于接收Wt生成模塊的Wt算子,進(jìn)行散列運算,生成160位、 256位或者512位的數(shù)據(jù)摘要。如圖2所示,所述數(shù)據(jù)填充模塊主要包括寄存器、減法器和多路開關(guān);所述Wt生成模塊主要包括寄存器、移位寄存器組、左循環(huán)移位邏輯、多路開關(guān)、加 法器和異或運算器;如圖3所示,所述哈希運算模塊主要包括寄存器和邏輯運算模塊;所述哈希運算模塊中的邏輯運算模塊主要包括左循環(huán)移位邏輯、算術(shù)左移邏輯、 多路開關(guān)、加法器和異或運算器;所述哈希運算模塊中的寄存器為8個64位寄存器,在不同SHA標(biāo)準(zhǔn)模式下,寄存 器的初始值不同。其中所述Wt生成模塊的結(jié)構(gòu)見圖4中的虛線框I,寄存器類型分為兩類,標(biāo)注為 ①的是移位寄存器組,標(biāo)注為②的是獨立的32位寄存器。同時寄存器分為上下兩行,每一 行的數(shù)據(jù)寬度都是32位,數(shù)據(jù)深度都是16位。“①”為移位寄存器組,移位寄存器組兩端 的數(shù)字表示輸入端或輸出端的數(shù)據(jù)在本16數(shù)據(jù)深度寄存器組中的位置。Wt生成模塊中從 輸出端到輸入端的方向,寄存器從0到15依次標(biāo)號,如8表示第8個寄存器,9表示第9個寄存器內(nèi)。在三種SHA模式中,數(shù)據(jù)都會首先從15處輸入,并且每一個時鐘周期數(shù)據(jù)都會 向左移動一個寄存器位。上面一行寄存器從左到右分別是32位位寬深度為2的移位寄存 器,32位位寬深度為5的移位寄存器,32位位寬深度為8的移位寄存器,1個32位位寬寄 存器。下面一行寄存器從左到右分別是32位位寬深度為2的移位寄存器,一個32位位寬 寄存器,一個32位位寬深度為4的移位寄存器,一個32位位寬寄存器,一個32位位寬深度 為6的移位寄存器,一個32位位寬寄存器,一個32位位寬寄存器。寄存器組分兩行,每行 的數(shù)據(jù)深度是16。其中所述哈希運算模塊中邏輯運算模塊的結(jié)構(gòu)見圖4中的虛線框III ;所述哈希 運算模塊中寄存器的結(jié)構(gòu)見圖4中的虛線框II。所述哈希運算模塊中的寄存器為8個64 位寄存器,圖中的8個64位寄存器都被定義為低32位(11、21、31、41、51、61、71、81)及高 32位(讓、211、311、411、511、611、711、811),所示的兩列寄存器組表示的是同一列寄存器,這樣構(gòu) 圖的目的是為了更清晰說明在哈希計算過程中,寄存器的值傳遞更新的特性。此構(gòu)圖方式 已被眾多教科書及論文采用。上述兼容三種SHA標(biāo)準(zhǔn)的裝置的實現(xiàn)方法,如圖5所示,包括以下步驟(I)數(shù)據(jù)填充模塊接收明文數(shù)據(jù),并生成填充數(shù)據(jù),將明文數(shù)據(jù)與填充數(shù)據(jù)輸出至 Wt生成模塊;(II)Wt生成模塊接收數(shù)據(jù)填充模塊輸出的數(shù)據(jù),在SHA-I模式中通過異或運算連 接各操作數(shù),在SHA-256及SHA-512模式中通過算術(shù)加操作對各操作數(shù)進(jìn)行連接,生成新的 Wt算子并輸入到哈希運算模塊;(III)哈希運算模塊接收Wt生成模塊的Wt算子,進(jìn)行散列運算,在SHA-I模式下 生成160位的數(shù)據(jù)摘要,在SHA-256模式下生成256位的數(shù)據(jù)摘要,或者在SHA-512模式下 生成512位的數(shù)據(jù)摘要。上述步驟,具體可以分解為Si、系統(tǒng)確認(rèn)進(jìn)行散列計算模塊,若是進(jìn)行SHA-I模式或SHA-256模式,則進(jìn)入步 驟S2 ;若是進(jìn)行SHA-512模式,則進(jìn)入步驟S6 ;S2、用64位二進(jìn)制數(shù)表示明文數(shù)據(jù)長度,設(shè)為M,若代表數(shù)據(jù)長度的數(shù)據(jù)不足64 位,則以0補足最高位;將M值輸入數(shù)據(jù)填充模塊的專用寄存器中存儲,進(jìn)入步驟S3 ;S3、待加密的明文以512位為一組,輸入數(shù)據(jù)填充模塊,Wt生成模塊選取下面一行 的寄存器組用于生成Wt算子;512位的明文從高位到低位被分成16組,每組32位,按順序 輸入到Wt生成模塊的寄存器組中;若是進(jìn)行SHA-I模式,則進(jìn)入S4 ;若是進(jìn)行SHA-256模 式,則進(jìn)入S5 ;S4、隨后進(jìn)入系統(tǒng)的下一個時鐘周期,Wt生成模塊中第0、2、8、15個寄存器上的數(shù) 據(jù)會被輸出做異或操作;異或操作得出的數(shù)在左循環(huán)移位一位后,生成新的Wt算子,進(jìn)入 步驟S9 ;S5、隨后進(jìn)入系統(tǒng)的下一個時鐘周期,Wt生成模塊中第0、1、9、14個寄存器上的數(shù) 據(jù)會被輸出,生成新的Wt算子,進(jìn)入步驟S9 ;S6、用128位二進(jìn)制數(shù)表示明文數(shù)據(jù)長度,設(shè)為M,若代表數(shù)據(jù)長度的數(shù)據(jù)不足128 位,則以0補足最高位;將M值輸入數(shù)據(jù)填充模塊的專用寄存器中存儲,進(jìn)入步驟S7 ;S7、待加密的明文以1024位為一組,輸入數(shù)據(jù)填充模塊;Wt生成模塊選取上下兩行的寄存器組用于生成Wt算子;1024位的明文從高位到低位被分為16組,每組64位數(shù)據(jù), 高32位的數(shù)據(jù)存儲于上面一行的寄存器組中,低32位的數(shù)據(jù)存儲于下面一行的寄存器組 中,按順序從數(shù)據(jù)填充模塊輸入到Wt生成模塊的寄存器組中,進(jìn)入S8 ;S8、隨后進(jìn)入系統(tǒng)的下一個時鐘周期,Wt生成模塊中第0、1、9、14個寄存器上的數(shù) 據(jù)會被輸出,生成新的Wt算子,進(jìn)入步驟S9 ;S9、隊列中原有的16個Wt算子依次前移一位,在第0個寄存器的Wt算子被移出, 作為該輪的Wt算子送入到哈希運算模塊,同時新的Wt算子被輸入到15寄存器的位置;若 是進(jìn)行SHA-I模式,進(jìn)入SlO ;若是進(jìn)行SHA-256模式或SHA-512模式,進(jìn)入S12 ;S10、設(shè)哈希運算模塊由下至上這八個寄存器所存儲的數(shù)據(jù)從第一個寄存器到第 八個寄存器依次分別是A值、B值、C值、D值、B值、C值、D值、E值;哈希運算模塊接收Wt生成模塊輸出的Wt算子,在0到19輪散列運算中,哈希運 算模塊使用第五、六、七個寄存器計算更新值τ ;在20到39輪和60到79輪的散列運算中, 哈希運算模塊使用第五、六、七個寄存器的值或第二、三、四個寄存器的值計算更新值T ;在 40到59的散列輪運算中,哈希運算模塊使用第二、三、四個寄存器的值計算更新值T,進(jìn)入 Sll ;Sl 1、哈希運算模塊中,用第七個寄存器中的D值更新第八個寄存器中的E值,第三 個寄存器及第六個寄存器中的C值更新第四個及第七個寄存器中的D值,第二個寄存器及 第五寄存器中的B值更新第三個及第六個寄存器中的C值,第一個寄存器中的A更新第二 及第五個寄存器的B值,用求得的T值更新第一個寄存器中存儲的A值,進(jìn)入S14 ;S12、設(shè)哈希運算模塊由下至上這八個寄存器所存儲的數(shù)據(jù)從第一個寄存器到第 八個寄存器依次分別是A值、B值、C值、D值、E值、F值、G值、H值;哈希運算模塊使用第一 個寄存器到第八個寄存器的值通過散列運算計算更新值T,進(jìn)入S13 ;S13、哈希運算模塊中,第七個寄存器中的G值更新第八個寄存器中的H值,第六個 寄存器中的F值更新第七個寄存器中的G值,第五個寄存器中的E值更新第六個寄存器中 的F值,第四個寄存器中的D值與Tl值相加后更新第五個寄存器中的E值,第三個寄存器 中的C值更新第四個寄存器中的D值,第二個寄存器中的B值更新第三個寄存器中的C值, 第一個寄存器中的A值更新第二個寄存器中的B值,Tl與T2相加的結(jié)果更新第一個寄存 器中的A值,進(jìn)入S14;S14、哈希運算模塊判斷是否已經(jīng)完成散列計算,若不是,在SHA-I模式下返回步 驟S4 ;在SHA-256模式下返回步驟S5 ;在SHA-512模式下返回步驟S8 ;若是,在SHA-I模式下,選擇第一、第二、第三、第四及第八個寄存器的值作為輸 出,進(jìn)入S15 ;在SHA-256模式和SHA-512模式下選擇第一、第二、第三、第四、第五、第六、第 七及第八個寄存器的值作為輸出,進(jìn)入步驟S15 ;S15、數(shù)據(jù)填充模塊的寄存器的值減一,進(jìn)入步驟S16 ;S16、數(shù)據(jù)填充模塊判斷寄存器的值是否等于0 若寄存器的值不等于0,則數(shù)據(jù)填充模塊將明文直接輸出到Wt生成模塊,在SHA-I 模式下,返回步驟S3 ;在SHA-256模式下,返回步驟S3 ;在SHA-512模式下,返回步驟S7 ;若寄存器的值等于0,則數(shù)據(jù)填充模塊在明文后面補充填充數(shù)據(jù)并一同輸出至Wt 生成模塊,進(jìn)入步驟S17;
S17、數(shù)據(jù)填充模塊結(jié)束本次運算操作,等待下一次運算操作并返回到步驟Si。以下分別為SHA-1、SHA_256及SHA-512三種運行模式對本裝置的運行過程進(jìn)行說 明SHA-I 模式哈希運算模塊的寄存器從下往上分別是第一到第八個寄存器,1、2、3、4、5、6、7、8 表示其物理位置。明文從數(shù)據(jù)填充模塊輸出后,進(jìn)入Wt生成模塊,Wt生成模塊在SHA-I模式中通過 異或運算對各操作數(shù)進(jìn)行連接,生成新的80個Wt算子輸入到哈希運算模塊,同時經(jīng)過80 輪的散列運算后,生成160位的數(shù)據(jù)摘要。在SHA-I中模式中,哈希運算模塊的寄存器中只有低32位被選中進(jìn)行數(shù)據(jù)存儲, 高32位不參與任何運算。哈希運算模塊由下至上,設(shè)這八個寄存器所存儲的數(shù)據(jù)從第一個 寄存器到第八個寄存器依次分別是A值、B值、C值、D值、B值、C值、D值、E值。設(shè)置寄存 器的初始值A(chǔ)值的初始值是十六進(jìn)制數(shù)67452301,B值的初始值是十六進(jìn)制數(shù)efcdab89, C值的初始值是十六進(jìn)制數(shù)98badCfe,D值的初始值是十六進(jìn)制數(shù)10325476,E值的初始值 是十六進(jìn)制數(shù)c3d2elf0 ;在進(jìn)行散列運算的過程中及初始值,哈希運算模塊中第二、三、四 個寄存器的內(nèi)容與第五、六、七個寄存器的內(nèi)容依次一樣;在SHA-I模式下,本裝置的工作流程如圖6所示,包括Si、用64位二進(jìn)制數(shù)表示明文數(shù)據(jù)長度,設(shè)為M,若代表數(shù)據(jù)長度的數(shù)據(jù)不足64 位,則以0補足最高位;將M值輸入數(shù)據(jù)填充模塊的專用寄存器中存儲;進(jìn)入步驟S2 ;S2、待加密的明文以512位為一組,輸入數(shù)據(jù)填充模塊,進(jìn)入步驟S3 ;S3、Wt生成模塊選取下面一行的寄存器組用于生成Wt算子;512位的明文從高位 到低位被分成16組,每組32位,按順序從數(shù)據(jù)填充模塊輸入到Wt生成模塊的寄存器組中, 進(jìn)入S4 ;S4、隨后進(jìn)入系統(tǒng)的下一個時鐘周期,Wt生成模塊中第0、2、8、15個寄存器上的數(shù) 據(jù)會被輸出做異或操作;異或操作得出的數(shù)在左循環(huán)移位一位后,作為新的Wt算子,進(jìn)入 步驟S5 ;S5、隊列中原有的16個Wt算子依次前移一位,在第0個寄存器的Wt算子被移出, 作為該輪的Wt算子送入到哈希運算模塊,同時步驟S4中新的Wt算子被輸入到第15個寄 存器的位置,進(jìn)入S6 ;S6、哈希運算模塊接收Wt生成模塊輸出的Wt算子,并判斷當(dāng)前散列運算正在進(jìn)行 的輪數(shù),若在0到19輪散列運算中,則進(jìn)入步驟S7 ;若在20到39輪或60到79輪的散列 運算中,則進(jìn)入步驟S8 ;若在40到59輪的散列運算中,則進(jìn)入步驟S9 ;S7、在0到19輪散列運算中,求出用于更新第一個寄存器所需要的T值,具體為T= (A << 5)+Ch (x, y, ζ) +E+Kt+fftCh (x, y, ζ) =(xAy)十(,χΛζ)變量x、y、ζ分別對應(yīng)第五、六、七個寄存器的值,代表異或運算,“十”代表算 術(shù)加運算;“<<”表示為循環(huán)左移操作,運算符右邊的數(shù)字代表需要移位的位數(shù);Wt表示 步驟S5中Wt生成模塊輸出的Wt算子,E表示第八個寄存器中存儲的E值;Kt表示32位常 量,具體為5a827999 ;進(jìn)入步驟SlO ;
步驟S8、在20到39輪和60到79輪的散列運算中,求出用于更新第一個寄存器所 需要的T值,具體為T= (A << 5)+P (x, y, ζ) +E+Kt+fftP(x,y,z)= χ 十 y 十 ζ其中變量x、y、z分別對應(yīng)第五、六、七個寄存器的值,或變量x,y,z分別對應(yīng)第二、 三、四個寄存器的值,“十”代表算術(shù)加運算(在這些輪數(shù)的運算中,第二、三、四個寄存器或 者第五、六、七個寄存器的值都可以分別代入,兩種選擇的運算結(jié)果無差異);“<<”為循 環(huán)左移操作,運算符右邊的數(shù)字代表需要移位的位數(shù);Wt表示步驟S5中Wt生成模塊輸出 的Wt算子,E表示第八個寄存器中存儲的E值;在20到39輪中Kt表示為6ed9ebal,在60 到79輪中Kt表示為ca62cld6 ;進(jìn)入步驟SlO ;步驟S9、在40到59輪的散列輪運算中,求出用于更新第一個寄存器所需要的T 值,具體為T= (A < < 5) +Fun (x, y, ζ) +E+Kt+fftMaj (x, y, ζ) = (xAy) Θ (χΛζ)十(yAz)其中變量χ,y,Z分別對應(yīng)第二、三、四個寄存器的值,代表異或運算,“十”代 表算術(shù)加運算;“<<”為循環(huán)左移操作,運算符右邊的數(shù)字代表需要移位的位數(shù);Wt表示 步驟S5中Wt生成模塊輸出的Wt算子,E表示第八個寄存器中存儲的E值;在40到59輪 中Kt表示為8f Ibbcdc ;進(jìn)入步驟SlO ;S10、哈希運算模塊中,第四個及第七個寄存器中的D值一致,用第七個寄存器中 的D值更新第八寄存器中的E值,第三寄存器及第六寄存器中的C值更新第四及第七個寄 存器中的D值,第二寄存器及第五個寄存器中的B值更新第三及第六個寄存器中的C值,第 一個寄存器中的A更新第二及第五個寄存器的B值,用求得的T值更新第一個寄存器中存 儲的A值,(每一輪計算中,第二個寄存器與第五個寄存器的值一致,第三個寄存器與第六 個寄存器的值一致,第四個寄存器與第七個寄存器的值一致),進(jìn)入Sll ;S11、哈希運算模塊判斷是否已經(jīng)完成80輪散列計算,若不是,則返回步驟S4 ;若 是,則由于第二個寄存器與第五個寄存器的值一致,第三個寄存器與第六個寄存器的值一 致,第四個寄存器與第七個寄存器的值一致,所以選擇第一、第二、第三、第四及第八個寄存 器的值作為輸出,進(jìn)入步驟S12 ;S12、數(shù)據(jù)填充模塊的寄存器的值減一,進(jìn)入步驟S13 ;S13、數(shù)據(jù)填充模塊判斷寄存器的值是否等于0 若寄存器的值不等于0,則數(shù)據(jù)填充模塊將明文直接輸出到Wt生成模塊,返回到 S2 ;若寄存器的值等于0,則數(shù)據(jù)填充模塊在明文后面補充填充數(shù)據(jù)并一同輸出至Wt 生成模塊,進(jìn)入步驟S14;S14、數(shù)據(jù)填充模塊結(jié)束本次運算操作,等待下一次運算操作并返回到步驟Si。在SHA-I模式中的步驟S13,所述填充數(shù)據(jù)的生成方法,包括以下步驟S4. 1、判斷明文數(shù)據(jù)長度(M值)能否被512整除,若可以,則進(jìn)入步驟S4. 2 ;若不 能,則進(jìn)入步驟S4.3 ;S4. 2、數(shù)據(jù)填充模塊為明文填充1位‘1’,447位‘0’以及M值(所述M值為用64位二進(jìn)制數(shù)表示的明文數(shù)據(jù)長度);S4. 3、數(shù)據(jù)填充模塊為余下的一組不足512位的數(shù)據(jù)塊填充1位‘1’以及若干位 ‘0’,使其成為512位的數(shù)據(jù)塊;并且再填充一個512位的數(shù)據(jù)塊,其組成為448位的‘0’以
及M值。SHA-256 模式哈希運算模塊的寄存器從下往上分別是第一到第八個寄存器,1、2、3、4、5、6、7、8 表示其物理位置。明文從數(shù)據(jù)填充模塊輸出后,進(jìn)入Wt生成模塊,Wt生成模塊通過算術(shù)加操作對各 操作數(shù)進(jìn)行連接,生成新64個Wt算子輸入到哈希運算模塊,同時經(jīng)過64輪的散列運算后, 生成256位的數(shù)據(jù)摘要。在SHA-256中模式中,哈希運算模塊的寄存器中只有低32位被選中進(jìn)行數(shù)據(jù)存 儲,高32位不參與任何運算。哈希運算模塊由下至上,設(shè)這八個寄存器所存儲的數(shù)據(jù)從第 一個寄存器到第八個寄存器依次分別是A值、B值、C值、D值、E值、F值、G值、H值。(A值、 B值、C值、D值、E值、F值、G值、H值分別表示其對應(yīng)的寄存器所存儲的數(shù)據(jù)總和,并不隨 更新后數(shù)據(jù)的實際改變而改變,例如在寄存器的數(shù)據(jù)經(jīng)過多次更新后,原來第一個寄存器 中存儲的數(shù)據(jù)1變成數(shù)據(jù)2,但都是用A值表示第一個寄存器里存儲的數(shù)據(jù)。)設(shè)置寄存器 的初始值B值的初始值是十六進(jìn)制數(shù)bb67ae85,C值的初始值是十六進(jìn)制數(shù)3c6ef372,D 值的初始值是十六進(jìn)制數(shù)a54ff53a,E值的初始值是十六進(jìn)制數(shù)510e527f,F(xiàn)值的初始值是 十六進(jìn)制數(shù)9b05688c,G值的初始值是十六進(jìn)制數(shù)If83d9ab,H值的初始值是十六進(jìn)制數(shù) 5be0cdl9 ;在SHA-256模式下,本裝置的工作流程如圖7所示,包括Si、用64位二進(jìn)制數(shù)表示明文數(shù)據(jù)長度,設(shè)為M,若代表數(shù)據(jù)長度的數(shù)據(jù)不足64 位,則以0補足最高位;將M值輸入數(shù)據(jù)填充模塊的專用寄存器中存儲;進(jìn)入步驟S2 ;S2、待加密的明文以512位為一組,輸入數(shù)據(jù)填充模塊,進(jìn)入步驟S3 ;S3、Wt生成模塊選取下面一行的寄存器組用于生成Wt算子;512位的明文從高位 到低位被分成16組,每組32位,按順序從數(shù)據(jù)填充模塊輸入到Wt生成模塊的寄存器組中, 進(jìn)入S4 ;S4、隨后進(jìn)入系統(tǒng)的下一個時鐘周期,Wt生成模塊中第0、1、9、14個寄存器上的數(shù) 據(jù)會被輸出,分別進(jìn)行下列運算邏輯(a)第1個寄存器的數(shù)據(jù)會作為變量χ被輸入到以下運算邏輯σ ο (χ) = (χ > > 7) “ (χ > > 18) “ (χ > > > 3)其中“ >> ”為循環(huán)右移操作,符號右側(cè)的數(shù)字代表需要移動的位數(shù), 算術(shù)右移操作,符號右側(cè)的數(shù)字代表需要移動的位數(shù),為異或操作;(b)第14個寄存器的數(shù)據(jù)會作為變量χ被輸入到以下運算邏輯σ 1(χ) = (χ >> 17) “ (χ >> 19) “ (χ >>> 10)其中“ > > ”為循環(huán)右移操作,符號右側(cè)的數(shù)字代表需要移動的位數(shù), 算術(shù)右移操作,符號右側(cè)的數(shù)字代表需要移動的位數(shù),為異或操作;將上述兩個運算邏輯操作生成的值,與第0個寄存器、第9個寄存器的值進(jìn)行加法 操作,生成的值作為新的Wt算子,進(jìn)入步驟S5 ;
“>>>,,為
“>>>,,為
S5、隊列中原有的16個Wt算子依次前移一位,在第0個寄存器的Wt算子被移出, 作為該輪的Wt算子送入到哈希運算模塊,同時步驟S4中新的Wt算子被輸入到第15個寄 存器的位置,進(jìn)入S6 ;S6、哈希運算模塊接收Wt生成模塊輸出的Wt算子,并計算用于更新哈希運算模塊 中寄存器所需要的Tl值與T2值Tl = H+ Σ 256(1) (E) +Ch (Ε, F, G) +Kt+fft ;T2 = Σ 256 (0) (A) +Maj (A, B, C);其中Σ 256(1) (E) = (Ε >> 6)" (Ε >> 11) "(Ε >> 25)Σ 256(0) (A) = (Α >> 2)" (Α >> 13) “ (Α >> 22)Maj (Α, B, C) = (ΑΛΒ)十(AaC)十(BaC)Ch (Ε, F, G) =(EaF)十(,EAG)其中代表異或運算,“十”代表算術(shù)加運算;“ <<”表示為循環(huán)左移操作,運算 符右邊的數(shù)字代表需要移位的位數(shù);“,”表示取反操作;“>>”為循環(huán)右移操作,符號右 側(cè)的數(shù)字代表需要移動的位數(shù),Wt表示步驟S5中Wt生成模塊輸出的Wt算子,A值、B值、 C值、D值、E值、F值、G值、H值分別對應(yīng)哈希運算模塊中從第一個寄存器到第八個寄存器 依次存儲的數(shù)據(jù);其中Kt為64個Kt算子,是已定義的32位常量,其值如下428a2f98 71374491 b5c0fbcf e9b5dba5 3956c25b 59flllfl ablc5ed5d807aa98 12835b01 243185be 550c7dc3 72be5d74 80deblfe cl9bfl74e49b69cl efbe4786 0fcl9dc6 240calcc 2de92c6f 4a7484aa 76f988da983e5152 a831c66d b00327c8 bf597fc7 c6e00bf3 d5a79147 1429296727b70a85 2elb2138 4d2c6dfc 53380dl3 650a7354 766a0abb 92722c85a2bfe8al a81a664b c24b8b70 c76c51a3 dl92e819 d6990624 106aa07019a4cll6 Ie376c08 2748774c 34b0bcb5 391c0cb3 4ed8aa4a 682e6ff3748f82ee 78a5636f 84c87814 8cc70208 90befffa a4506ceb c67178f2S7、哈希運算模塊中,第七個寄存器中的G值更新第八個寄存器中的H值,第六個 寄存器中的F值更新第七個寄存器中的G值,第五個寄存器中的E值更新第六個寄存器中 的F值,第四個寄存器中的D值與Tl值相加后更新第五個寄存器中的E值,第三個寄存器 中的C值更新第四個寄存器中的D值,第二個寄存器中的B值更新第三個寄存器中的C值, 第一個寄存器中的A值更新第二個寄存器中的B值,Tl與T2相加的結(jié)果更新第一個寄存 器中的A值;進(jìn)入S8;S8、哈希運算模塊判斷是否已經(jīng)完成64輪散列計算,若不是,則返回步驟S4;若
923f82a4 9bdc06a7 5cb0a9dc 06ca6351 81c2c92e f40e3585 5b9cca4f bef9a3f7是,則選擇第一、第二、第三、第四、第五、第六、第七及第八個寄存器的值作為輸出,進(jìn)入步 驟S9 ;S9、數(shù)據(jù)填充模塊的寄存器的值減一,進(jìn)入步驟SlO ;S10、數(shù)據(jù)填充模塊判斷寄存器的值是否等于0 若寄存器的值不等于0,則數(shù)據(jù)填充模塊將明文直接輸出到Wt生成模塊,返回到 S2 ;若寄存器的值等于0,則數(shù)據(jù)填充模塊在明文后面補充填充數(shù)據(jù)并一同輸出到Wt 生成模塊,進(jìn)入步驟Sll ;S11、數(shù)據(jù)填充模塊結(jié)束本次運算操作,等待下一次運算操作并返回到步驟Si。在SHA-256的步驟SlO中,所述填充數(shù)據(jù)的生成方法,包括以下步驟S4. 1、判斷明文數(shù)據(jù)長度(M值)能否被512整除,若可以,則進(jìn)入步驟S4. 2 ;若不 能,則進(jìn)入步驟S4.3 ;S4. 2、數(shù)據(jù)填充模塊為明文填充1位‘1’,447位‘0’以及M值(所述M值為用64 位二進(jìn)制數(shù)表示明文數(shù)據(jù)長度);S4. 3、數(shù)據(jù)填充模塊為余下的一組不足512位的數(shù)據(jù)塊填充1位‘1’以及若干位 ‘0’,使其成為512位的數(shù)據(jù)塊;并且再填充一個512位的數(shù)據(jù)塊,其組成為448位的‘0’以
及M值。SHA-512 模式哈希運算模塊的寄存器從下往上分別是第一到第八個寄存器,1、2、3、4、5、6、7、8 表示其物理位置。明文從數(shù)據(jù)填充模塊輸出后,進(jìn)入Wt生成模塊,Wt生成模塊通過算術(shù)加操作對各 操作數(shù)進(jìn)行連接,生成新的80個Wt算子輸入到哈希運算模塊,同時經(jīng)過80輪的散列運算 后,生成512位的數(shù)據(jù)摘要。在SHA-512中模式中,哈希運算模塊的寄存器中高32位及低32位都被選中進(jìn) 行數(shù)據(jù)存儲。哈希運算模塊由下至上,設(shè)這八個寄存器所存儲的數(shù)據(jù)從第一個寄存器 到第八個寄存器依次分別是A值、B值、C值、D值、E值、F值、G值、H值。設(shè)置寄存器 的初始值A(chǔ)值的初始值是十六進(jìn)制數(shù)6a09e667f3bCC908,B值的初始值是十六進(jìn)制數(shù) bb67ae8584caa73b,C值的初始值是十六進(jìn)制數(shù)3c6ef372fe94f82b,D值的初始值是十六進(jìn) 制數(shù)a54ff53a5fld36fl,E值的初始值是十六進(jìn)制數(shù)510e527fade682dl,F(xiàn)值的初始值是 十六進(jìn)制數(shù)9b05688c2b3e6clf,G值的初始值是十六進(jìn)制數(shù)If83d9abfb41bd6b,H值的初始 值是十六進(jìn)制數(shù)5be0cdl9137e2179 ;在SHA-512模式下,本裝置的工作流程如圖8所示,包括Si、用128位二進(jìn)制數(shù)表示明文數(shù)據(jù)長度,設(shè)為M,若代表數(shù)據(jù)長度的數(shù)據(jù)不足128 位,則以0補足最高位;將M值輸入數(shù)據(jù)填充模塊的專用寄存器中存儲;進(jìn)入步驟S2 ;S2、待加密的明文以1024位為一組,輸入數(shù)據(jù)填充模塊,進(jìn)入步驟S3 ;S3、Wt生成模塊選取上下兩行的寄存器組用于生成Wt算子;1024位的明文從高位 到低位被分為16組,每組64位數(shù)據(jù),高32位的數(shù)據(jù)存儲于上面一行的寄存器組中,低32 位的數(shù)據(jù)存儲于下面一行的寄存器組中,按順序從數(shù)據(jù)填充模塊輸入到Wt生成模塊的寄 存器組中,進(jìn)入S4;
S4、隨后進(jìn)入系統(tǒng)的下一個時鐘周期,Wt生成模塊中第0、1、9、14個寄存器上的數(shù) 據(jù)會被輸出,分別進(jìn)行下列運算邏輯(a)第1個寄存器的數(shù)據(jù)會作為變量χ被輸入到以下運算邏輯σ 0(χ) = (χ >> 1) “ (χ >> 8) “ (χ >>> 7)其中“ > > ”為循環(huán)右移操作,符號右側(cè)的數(shù)字代表需要移動的位數(shù),“ > > > ”為 算術(shù)右移操作,符號右側(cè)的數(shù)字代表需要移動的位數(shù),為異或操作;(b)第14個寄存器的數(shù)據(jù)會作為變量χ被輸入到運算邏輯σ 1 (χ) = (χ >> 19)" (χ >> 61)" (χ >>> 6)其中“ > > ”為循環(huán)右移操作,符號右側(cè)的數(shù)字代表需要移動的位數(shù),“ > > > ”為 算術(shù)右移操作,符號右側(cè)的數(shù)字代表需要移動的位數(shù),為異或操作;上述兩個運算邏輯生成的值,與第0個寄存器,第9個寄存器的值進(jìn)行加法操作, 生成的值作為新的Wt算子,進(jìn)入步驟S5 ;S5、隊列中原有的16個Wt算子依次前移一位,在第0個寄存器的Wt算子被移出, 作為該輪的Wt算子送入到哈希運算模塊,同時步驟S4中新的Wt算子被輸入到第15個寄 存器的位置,進(jìn)入S6 ;S6、哈希運算模塊接收Wt生成模塊輸出的Wt算子,并計算用于更新哈希運算模塊 中寄存器所需要的Tl值與Τ2值Tl = H+ Σ 512 (1) (E) +Ch (Ε, F, G) +Kt+fft ;T2 = Σ 512(0) (A) +Maj (A, B, C)其中Σ 512(1) (E) = (Ε >> 14)" (Ε >> 18)" (Ε >> 41)Σ 512 (0) (A) = (Α > > 28)" (Α > > 34)" (Α > > 39)Maj (Α, B, C) = (ΑΛΒ)十(AaC)十(BaC)Ch (Ε, F, G) =(EaF)十(,EAG)其中代表異或運算,“十”代表算術(shù)加運算;“<<”表示為循環(huán)左移操作,運算 符右邊的數(shù)字代表需要移位的位數(shù);“,”表示取反操作;“>>”為循環(huán)右移操作,符號右 側(cè)的數(shù)字代表需要移動的位數(shù),Wt表示步驟S5中Wt生成模塊輸出的Wt算子,A值、B值、 C值、D值、E值、F值、G值、H值分別對應(yīng)哈希運算模塊中從第一個寄存器到第八個寄存器 依次存儲的數(shù)據(jù);其中Kt為64個Kt算子,是已定義的32位常量,其值如下428a2f98d728ae227137449123ef65cdb5c0fbcfec4d3b2fe9b5dba58189dbbc
3956c25bf348b53859flllflb605d019923f82a4afl94f9bablc5ed5da6d8118
d807aa98a303024212835b0145706fbe243185be4ee4b28c550c7dc3d5ffb4e2
72be5d74f27b896f80deblfe3bl696bl9bdc06a725c71235cl9bfl74cf692694
e49b69cl9efl4ad2efbe4786384f25e30fcl9dc68b8cd5b5240calcc77ac9c65
2de92c6f592b02754a7484aa6ea6e4835cb0a9dcbd41fbd476f988da831153b5
983e5152ee66dfaba831c66d2db43210b00327c898fb213fbf597fc7beef0ee4
c6e00bf33da88fc2d5a79147930aa72506ca6351e003826f142929670a0e6e70
27b70a8546d22ffc2elb21385c26c9264d2c6dfc5ac42aed53380dl39d95b3df
650a73548baf63de766a0abb3c77b2a881c2c92e47edaee692722c851482353b
a2bfe8al4cfl0364a81a664bbc423001c24b8b70d0f89791c76c51a30654be30
dl92e819d6ef5218d69906245565a910f40e35855771202a106aa07032bbdlb8
19a4cll6b8d2d0c8Ie376c085141ab532748774cdf8eeb9934b0bcb5el9b48a8
391c0cb3c5c95a634ed8aa4ae3418acb5b9cca4f7763e373682e6ff3d6b2b8a3
748f82ee5defb2fc78a5636f43172f6084c87814alf0ab728cc702081a6439ec
90befffa23631e28a4506cebde82bde9bef9a3f7b2c67915c67178f2e372532b
ca273eceea26619cdl86b8c721c0c207eada7dd6cde0eblef57d4f7fee6edl78
06f067aa72176fba0a637dc5a2c898a6113f9804bef90daeIb710b35131c471b
28db77f523047d8432caab7b40c724933c9ebe0al5c9bebc431d67c49cl00d4c
4cc5d4becb3e42b6597f299cfc657e2a5fcb6fab3ad6faec6c44198c4a475817
S7、哈希運算模塊中,第七個寄存器中的G值更新第八個寄存器中的H值,第六個
寄存器中的F值更新第七個寄存器中的G值,第五個寄存器中的E值更新第六個寄存器中 的F值,第四個寄存器中的D值與Tl值相加后更新第五個寄存器中的E值,第三個寄存器 中的C值更新第四個寄存器中的D值,第二個寄存器中的B值更新第三個寄存器中的C值, 第一個寄存器中的A值更新第二個寄存器中的B值,Tl與T2相加的結(jié)果更新第一個寄存 器中的A值;進(jìn)入S8;S8、哈希運算模塊判斷是否已經(jīng)完成80輪散列計算,若不是,則返回步驟S4 ;若 是,則選擇第一、第二、第三、第四、第五、第六、第七及第八個寄存器的值作為輸出,進(jìn)入步 驟S9 ;S9、數(shù)據(jù)填充模塊的寄存器的值減一,進(jìn)入步驟SlO ;S10、數(shù)據(jù)填充模塊判斷寄存器的值是否等于0 若寄存器的值不等于0,則數(shù)據(jù)填充模塊將明文直接輸出到Wt生成模塊,返回到 S2 ;若寄存器的值等于0,則數(shù)據(jù)填充模塊在明文后面補充填充數(shù)據(jù)并一同輸出到Wt 生成模塊,進(jìn)入步驟Sll ;S11、數(shù)據(jù)填充模塊結(jié)束本次運算操作,等待下一次運算操作并返回到步驟Si。在SHA-512的步驟SlO中,所述填充數(shù)據(jù)的生成方法,包括以下步驟S4. 1、判斷明文數(shù)據(jù)長度(M值)能否被1024整除,若可以,則進(jìn)入步驟S4.2;若 不能,則進(jìn)入步驟S4. 3;S4. 2、數(shù)據(jù)填充模塊為明文填充1位‘1’,895位‘0’以及M值(所述M值為用128 位二進(jìn)制數(shù)表示明文數(shù)據(jù)長度);S4. 3、數(shù)據(jù)填充模塊為余下的一組不足1024位的數(shù)據(jù)塊填充1位‘1’以及若干位 ‘0,,使其成為1024位的數(shù)據(jù)塊;并且再填充一個1024位的數(shù)據(jù)塊,其組成為896位的‘0, 以及M值。上述實施例為本發(fā)明較佳的實施方式,但本發(fā)明的實施方式并不受所述實施例的 限制,其他的任何未背離本發(fā)明的精神實質(zhì)與原理下所作的改變、修飾、替代、組合、簡化, 均應(yīng)為等效的置換方式,都包含在本發(fā)明的保護(hù)范圍之內(nèi)。
權(quán)利要求
一種兼容三種SHA標(biāo)準(zhǔn)的裝置,其特征在于,包括依次相連的數(shù)據(jù)填充模塊、Wt生成模塊和哈希運算模塊,其中所述數(shù)據(jù)填充模塊,用于接收明文數(shù)據(jù),并生成填充數(shù)據(jù),將明文數(shù)據(jù)與填充數(shù)據(jù)輸出至Wt生成模塊;所述Wt生成模塊,用于接收數(shù)據(jù)填充模塊輸出的數(shù)據(jù),在SHA 1模式中通過異或運算連接各操作數(shù),在SHA 256及SHA 512模式中通過算術(shù)加操作對各操作數(shù)進(jìn)行連接,生成新的Wt算子并輸入到哈希運算模塊;所述哈希運算模塊,用于接收Wt生成模塊的Wt算子,進(jìn)行散列運算,生成160位、256位或者512位的數(shù)據(jù)摘要。
2.根據(jù)權(quán)利要求1所述一種兼容三種SHA標(biāo)準(zhǔn)的裝置,其特征在于所述數(shù)據(jù)填充模塊包括寄存器、減法器和多路開關(guān);所述Wt生成模塊包括寄存器、移位寄存器組、左循環(huán)移位邏輯、多路開關(guān)、加法器和異 或運算器。
3.根據(jù)權(quán)利要求2所述一種兼容三種SHA標(biāo)準(zhǔn)的裝置,其特征在于,所述哈希運算模塊 包括寄存器和邏輯運算模塊所述哈希運算模塊中的邏輯運算模塊包括左循環(huán)移位邏輯、算術(shù)左移邏輯、多路開關(guān)、 加法器和異或運算器;所述哈希運算模塊中的寄存器為8個64位寄存器,在不同模式,寄存器的初始值不同。
4.根據(jù)權(quán)利要求3所述一種兼容三種SHA標(biāo)準(zhǔn)的裝置,其特征在于,所述Wt生成模塊 中的寄存器、移位寄存器組分為上下兩行,每行的數(shù)據(jù)深度是16,具體為上面一行包括依次相連的一個32位位寬深度為2的移位寄存器、一個32位位寬深度 為5的移位寄存器、一個32位位寬深度為8的移位寄存器和一個32位位寬寄存器;下面一行包括依次相連的一個32位位寬深度為2的移位寄存器、一個32位位寬寄存 器、一個32位位寬深度為4的移位寄存器、一個32位位寬寄存器、一個32位位寬深度為6 的移位寄存器,一個32位位寬寄存器和一個32位位寬寄存器;所述哈希運算模塊中的寄存器為8個64位寄存器,所述每個64位寄存器都被定義為 低32位及高32位。
5.根據(jù)權(quán)利要求4所述兼容三種SHA標(biāo)準(zhǔn)的裝置的實現(xiàn)方法,其特征在于,包括以下步驟(I)數(shù)據(jù)填充模塊接收明文數(shù)據(jù),并生成填充數(shù)據(jù),將明文數(shù)據(jù)與填充數(shù)據(jù)輸出至Wt 生成模塊;(II)Wt生成模塊接收數(shù)據(jù)填充模塊輸出的數(shù)據(jù),在SHA-I模式中通過異或運算連接各 操作數(shù),在SHA-256及SHA-512模式中通過算術(shù)加操作對各操作數(shù)進(jìn)行連接,生成新的Wt 算子并輸入到哈希運算模塊;(III)哈希運算模塊接收Wt生成模塊的Wt算子,進(jìn)行散列運算,在SHA-I模式下生成 160位的數(shù)據(jù)摘要,在SHA-256模式下生成256位的數(shù)據(jù)摘要,或者在SHA-512模式下生成 512位的數(shù)據(jù)摘要。
6.根據(jù)權(quán)利要求5所述兼容三種SHA標(biāo)準(zhǔn)的裝置的實現(xiàn)方法,其特征在于,SHA-I模式 具體包括以下步驟`51、用64位二進(jìn)制數(shù)表示明文數(shù)據(jù)長度,設(shè)為M,若代表數(shù)據(jù)長度的數(shù)據(jù)不足64位,則 以0補足最高位;將M值輸入數(shù)據(jù)填充模塊的專用寄存器中存儲;進(jìn)入步驟S2 ;`52、待加密的明文以512位為一組,輸入數(shù)據(jù)填充模塊,進(jìn)入步驟S3;`53、Wt生成模塊選取下面一行的寄存器組用于生成Wt算子;512位的明文從高位到低 位被分成16組,每組32位,按順序從數(shù)據(jù)填充模塊輸入到Wt生成模塊的寄存器組中,進(jìn)入 S4;`54、隨后進(jìn)入系統(tǒng)的下一個時鐘周期,Wt生成模塊中第0、2、8、15個寄存器上的數(shù)據(jù)會 被輸出做異或操作;異或操作得出的數(shù)在左循環(huán)移位一位后,作為新的Wt算子,進(jìn)入步驟 S5 ;所述0、2、8、15表示寄存器在本16數(shù)據(jù)深度寄存器組中的位置;`55、隊列中原有的16個Wt算子依次前移一位,在第0個寄存器的Wt算子被移出,作為 該輪的Wt算子送入到哈希運算模塊,同時步驟S4中新的Wt算子被輸入到第15個寄存器 的位置,進(jìn)入S6 ;`56、哈希運算模塊由下至上,設(shè)這八個寄存器所存儲的數(shù)據(jù)從第一個寄存器到第八個 寄存器依次分別是A值、B值、C值、D值、B值、C值、D值、E值,哈希運算模塊接收Wt生成 模塊輸出的Wt算子,并判斷當(dāng)前散列運算正在進(jìn)行的輪數(shù),若在0到19輪散列運算中,則 進(jìn)入步驟S7 ;若在20到39輪或60到79輪的散列運算中,則進(jìn)入步驟S8 ;若在40到59的 散列輪運算中,則進(jìn)入步驟S9;`57、在0到19輪散列運算中,哈希運算模塊使用第五、六、七個寄存器的值,及步驟S5 中Wt生成模塊輸出的Wt算子,求出用于更新第一個寄存器所需要的T值,進(jìn)入步驟SlO ;步驟S8、在20到39輪或60到79輪的散列運算中,哈希運算模塊使用第五、六、七個寄 存器的值,或第二、三、四個寄存器的值,及步驟S5中Wt生成模塊輸出的Wt算子求出用于 更新第1寄存器所需要的T值,進(jìn)入步驟SlO ;步驟S9、在40到59輪的散列輪運算中,哈希運算模塊使用第二、三、四個寄存器的值, 及步驟S5中Wt生成模塊輸出的Wt算子,求出用于更新第一個寄存器所需要的T值,進(jìn)入 步驟SlO ;`S10、哈希運算模塊中,第四個及第七個寄存器中的D值一致,用第七個寄存器中的D值 更新第八個寄存器中的E值,第三個寄存器及第六個寄存器中的C值更新第四及第七個寄 存器中的D值,第二個寄存器及第五個寄存器中的B值更新第三及第六個寄存器中的C值, 第一個寄存器中的A更新第二及第五個寄存器中的B值,用求得的T值更新第一個寄存器 中存儲的A值,進(jìn)入Sll ;`Sl 1、哈希運算模塊判斷是否已經(jīng)完成80輪散列計算,若不是,則返回步驟S4;若是,則 哈希運算模塊選擇第一、第二、第三、第四及第八個寄存器的值作為輸出,進(jìn)入步驟S12 ;`512、數(shù)據(jù)填充模塊的寄存器的值減一,進(jìn)入步驟S13;`513、數(shù)據(jù)填充模塊判斷寄存器的值是否等于0若寄存器的值不等于0,則數(shù)據(jù)填充模塊將明文直接輸出到Wt生成模塊,返回到S2 ;若寄存器的值等于0,則數(shù)據(jù)填充模塊在明文后面補充填充數(shù)據(jù)并一同輸出至Wt生成 模塊,進(jìn)入步驟S14;`514、數(shù)據(jù)填充模塊結(jié)束本次運算操作,或等待下一次運算操作并返回到步驟Si。
7.根據(jù)權(quán)利要求5所述兼容三種SHA標(biāo)準(zhǔn)的裝置的實現(xiàn)方法,其特征在于,SHA-256模式具體包括以下步驟`51、用64位二進(jìn)制數(shù)表示明文數(shù)據(jù)長度,設(shè)為M,若代表數(shù)據(jù)長度的數(shù)據(jù)不足64位,則 以0補足最高位;將M值輸入數(shù)據(jù)填充模塊的專用寄存器中存儲;進(jìn)入步驟S2 ;`` 52、待加密的明文以512位為一組,輸入數(shù)據(jù)填充模塊,進(jìn)入步驟S3;`53、Wt生成模塊選取下面一行的寄存器組用于生成Wt算子;512位的明文從高位到低 位被分成16組,每組32位,按順序從數(shù)據(jù)填充模塊輸入到Wt生成模塊的寄存器組中,進(jìn)入 S4;`54、隨后進(jìn)入系統(tǒng)的下一個時鐘周期,Wt生成模塊中第0、1、9、14個寄存器上的數(shù)據(jù)會 被輸出并用于生成新的Wt算子,進(jìn)入步驟S5;所述0、1、9、14表示寄存器在本16數(shù)據(jù)深度 寄存器組中的位置;`55、隊列中原有的16個Wt算子依次前移一位,在第0個寄存器的Wt算子被移出,作為 該輪的Wt算子送入到哈希運算模塊,同時步驟S4中新的Wt算子被輸入到第15個寄存器 的位置,進(jìn)入S6 ;`56、哈希運算模塊接收Wt生成模塊輸出的Wt算子,設(shè)哈希運算模塊由下至上,這八個 寄存器所存儲的數(shù)據(jù)從第一個寄存器到第八個寄存器依次分別是A值、B值、C值、D值、E 值、F值、G值、H值;使用這八個寄存器所存儲的數(shù)據(jù)計算用于更新哈希運算模塊中寄存器 所需要的Tl值與T2值`57、哈希運算模塊中,第七個寄存器中的G值更新第八個寄存器中的H值,第六個寄存 器中的F值更新第七個寄存器中的G值,第五個寄存器中的E值更新第六個寄存器中的F 值,第四個寄存器中的D值與Tl值相加后更新第五個寄存器中的E值,第三個寄存器中的 C值更新第四個寄存器中的D值,第二個寄存器中的B值更新第三個寄存器中的C值,第一 個寄存器中的A值更新第二個寄存器中的B值,Tl與T2相加的結(jié)果更新第一個寄存器中 的A值,進(jìn)入S8 ;`58、哈希運算模塊判斷是否已經(jīng)完成64輪散列計算,若不是,則返回步驟S4;若是,則 哈希運算模塊選擇第一、第二、第三、第四、第五、第六、第七及第八個寄存器的值作為輸出, 進(jìn)入步驟S9 ;`59、數(shù)據(jù)填充模塊的寄存器的值減一,進(jìn)入步驟SlO;`510、數(shù)據(jù)填充模塊判斷寄存器的值是否等于0若寄存器的值不等于0,則數(shù)據(jù)填充模塊將明文直接輸出到Wt生成模塊,返回到S2 ;若寄存器的值等于0,則數(shù)據(jù)填充模塊在明文后面補充填充數(shù)據(jù)并一同輸出到Wt生成 模塊,進(jìn)入步驟Sll ;`511、數(shù)據(jù)填充模塊結(jié)束本次運算操作,或等待下一次運算操作并返回到步驟Si。
8.根據(jù)權(quán)利要求6或7所述兼容三種SHA標(biāo)準(zhǔn)的裝置的實現(xiàn)方法,其特征在于,所述填 充數(shù)據(jù),其生成方法包括以下步驟S4. 1、判斷明文數(shù)據(jù)長度M值能否被512整除,若可以,則進(jìn)入步驟S4. 2;若不能,則進(jìn) 入步驟S4. 3 ;S4. 2、數(shù)據(jù)填充模塊為明文填充1位‘1’,447位‘0,以及M值;S4. 3、數(shù)據(jù)填充模塊為余下的一組不足512位的數(shù)據(jù)塊填充1位‘1’以及若干位‘0’, 使其成為512位的數(shù)據(jù)塊;并且再填充一個512位的數(shù)據(jù)塊,其組成為448位的‘0’以及M值。
9.根據(jù)權(quán)利要求5所述兼容三種SHA標(biāo)準(zhǔn)的裝置的實現(xiàn)方法,其特征在于,SHA-512模 式具體包括以下步驟`51、用128位二進(jìn)制數(shù)表示明文數(shù)據(jù)長度,設(shè)為M,若代表數(shù)據(jù)長度的數(shù)據(jù)不足128位, 則以0補足最高位;將M值輸入數(shù)據(jù)填充模塊的專用寄存器中存儲,進(jìn)入步驟S2 ;`52、待加密的明文以1024位為一組,輸入數(shù)據(jù)填充模塊,進(jìn)入步驟S3;`53、Wt生成模塊選取上下兩行的寄存器組用于生成Wt算子;1024位的明文從高位到低 位被分為16組,每組64位數(shù)據(jù),高32位的數(shù)據(jù)存儲于上面一行的寄存器組中,低32位的 數(shù)據(jù)存儲于下面一行的寄存器組中,按順序從數(shù)據(jù)填充模塊輸入到Wt生成模塊的寄存器 組中,進(jìn)入S4;`54、隨后進(jìn)入系統(tǒng)的下一個時鐘周期,Wt生成模塊中第0、1、9、14個寄存器上的數(shù)據(jù)會 被輸出用于生成新的Wt算子,進(jìn)入步驟S5 ;所述0、1、9、14表示寄存器在本16數(shù)據(jù)深度寄 存器組中的位置;`55、隊列中原有的16個Wt算子依次前移一位,在第0個寄存器的Wt算子被移出,作為 該輪的Wt算子送入到哈希運算模塊,同時步驟S4中新的Wt算子被輸入到第15個寄存器 的位置,進(jìn)入S6 ;`56、設(shè)哈希運算模塊由下至上這八個寄存器所存儲的數(shù)據(jù)從第一個寄存器到第八個寄 存器依次分別是A值、B值、C值、D值、E值、F值、G值、H值;哈希運算模塊接收Wt生成模 塊輸出的Wt算子,并計算用于更新哈希運算模塊中寄存器所需要的Tl值與T2值;57、哈希運算模塊中,第七個寄存器中的G值更新第八個寄存器中的H值,第六個寄存 器中的F值更新第七個寄存器中的G值,第五個寄存器中的E值更新第六個寄存器中的F 值,第四個寄存器中的D值與Tl值相加后更新第五個寄存器中的E值,第三個寄存器中的 C值更新第四個寄存器中的D值,第二個寄存器中的B值更新第三個寄存器中的C值,第一 個寄存器中的A值更新第二個寄存器中的B值,Tl與T2相加的結(jié)果更新第一個寄存器中 的A值,進(jìn)入S8 ;58、哈希運算模塊判斷是否已經(jīng)完成80輪散列計算,若不是,則返回步驟S4;若是,則 選擇第一、第二、第三、第四、第五、第六、第七及第八個寄存器的值作為輸出,進(jìn)入步驟S9 ;59、數(shù)據(jù)填充模塊的寄存器的值減一,進(jìn)入步驟SlO;510、數(shù)據(jù)填充模塊判斷寄存器的值是否等于0若寄存器的值不等于0,則數(shù)據(jù)填充模塊將明文直接輸出到Wt生成模塊,返回到S2 ;若寄存器的值等于0,則數(shù)據(jù)填充模塊在明文后面補充填充數(shù)據(jù)并一同輸出到Wt生成 模塊,進(jìn)入步驟Sll ;511、數(shù)據(jù)填充模塊結(jié)束本次運算操作,或等待下一次運算操作并返回到步驟Si。
10.根據(jù)權(quán)利要求9所述兼容三種SHA標(biāo)準(zhǔn)的裝置的實現(xiàn)方法,其特征在于,所述 SHA-512的步驟SlO中填充數(shù)據(jù),其生成方法具體包括以下步驟S4. 1、判斷明文數(shù)據(jù)長度M值能否被1024整除,若可以,則進(jìn)入步驟S4. 2 ;若不能,則 進(jìn)入步驟S4. 3 ;S4. 2、數(shù)據(jù)填充模塊為明文填充1位‘1,,895位‘0,以及M值;S4. 3、數(shù)據(jù)填充模塊為余下的一組不足1024位的數(shù)據(jù)塊填充1位‘1’以及若干位‘0’,使其成為1024位的數(shù)據(jù)塊;并且再填充一個1024位的數(shù)據(jù)塊,其組成為896位的‘0’以及M值。
全文摘要
本發(fā)明公開子一種兼容三種SHA標(biāo)準(zhǔn)的裝置,包括依次相連的數(shù)據(jù)填充模塊、Wt生成模塊和哈希運算模塊。本發(fā)明還公開了一種兼容三種SHA標(biāo)準(zhǔn)裝置的實現(xiàn)方法,包括以下步驟(I)數(shù)據(jù)填充模塊接收明文數(shù)據(jù),并生成填充數(shù)據(jù),將數(shù)據(jù)輸出至Wt生成模塊;(II)Wt生成模塊,生成新的Wt算子并輸入到哈希運算模塊;(III)哈希運算模塊在SHA-1模式下生成160位的數(shù)據(jù)摘要,在SHA-256模式下生成256位的數(shù)據(jù)摘要,或者在SHA-512模式生成512位的數(shù)據(jù)摘要。本發(fā)明具有普遍適用性、兼容性好、功耗低,以及占用額外的資源少等優(yōu)點。
文檔編號G06F21/00GK101894229SQ20101021566
公開日2010年11月24日 申請日期2010年6月30日 優(yōu)先權(quán)日2010年6月30日
發(fā)明者何建華, 奚建清, 陳虎, 黃華強(qiáng) 申請人:華南理工大學(xué)
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
桂林市| 融水| 吉安县| 鸡泽县| 罗平县| 锡林郭勒盟| 隆子县| 东至县| 浮梁县| 嵊州市| 绥宁县| 繁昌县| 沧源| 寻乌县| 黄梅县| 托里县| 上饶市| 东丰县| 砀山县| 静安区| 仙游县| 天等县| 察隅县| 崇仁县| 日照市| 怀宁县| 伊宁县| 揭东县| 广州市| 炉霍县| 龙州县| 上思县| 托里县| 临桂县| 清原| 南澳县| 天峨县| 嘉义市| 达孜县| 清徐县| 南宁市|