專利名稱:哈希值計(jì)算裝置及其方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種哈希(hash)值計(jì)算裝置及其方法。
背景技術(shù):
(關(guān)于哈希函數(shù)) 近年來,由于例如普通家庭用戶能夠以低成本連接光纖網(wǎng)絡(luò),因此支持因特網(wǎng)的基礎(chǔ)設(shè)施投入使用,并且通信速度迅速加快。各種數(shù)字設(shè)備可以連接到網(wǎng)絡(luò),并且在數(shù)字設(shè)備間經(jīng)由因特網(wǎng)頻繁進(jìn)行通信。 在這種數(shù)字設(shè)備間的通信中,作為必不可少的功能,除了對(duì)要交換的消息進(jìn)行加密以外,還需要對(duì)通信伙伴和消息進(jìn)行認(rèn)證。在這種在數(shù)字設(shè)備間對(duì)通信伙伴和消息進(jìn)行認(rèn)證時(shí),通常使用稱作哈希函數(shù)的算法。 哈希函數(shù)是一種輸入任意位長(zhǎng)的消息并輸出固定位長(zhǎng)的哈希值的算法(函數(shù))。該哈希函數(shù)通過以下處理來計(jì)算哈希值。 1)將預(yù)定數(shù)據(jù)附加到任意位長(zhǎng)的輸入消息的最末位置,以使該消息成為在算法中指定的塊的位長(zhǎng)的整數(shù)倍(填充(padding)處理)。 2)針對(duì)各塊擴(kuò)展經(jīng)過填充處理的消息,以生成擴(kuò)展消息(消息擴(kuò)展處理)。
3)將使用與塊對(duì)應(yīng)的擴(kuò)展消息(擴(kuò)展塊)、從初始值改變內(nèi)部狀態(tài)值的處理重復(fù)在算法中指定的次數(shù)。注意,作為內(nèi)部狀態(tài)值的初始值,針對(duì)第一個(gè)塊使用在算法中指定的預(yù)定固定值(以下稱作哈希初始值)。針對(duì)第二個(gè)塊及隨后的塊,使用針對(duì)緊接在關(guān)注的塊之前的塊的哈希中間值(稍后描述)(分步處理)。 4)將進(jìn)行了預(yù)定次數(shù)的分步處理后的內(nèi)部狀態(tài)值與針對(duì)緊接的前一個(gè)塊的該加法處理結(jié)果(以下稱作哈希中間值)相加,以計(jì)算新的哈希中間值。注意,針對(duì)第一個(gè)塊,將進(jìn)行了預(yù)定次數(shù)的分步處理后的內(nèi)部狀態(tài)值與哈希初始值相加,以計(jì)算哈希中間值(加法處理)。 5)針對(duì)所有塊依次執(zhí)行處理2)到4)。將在完成對(duì)所有擴(kuò)展消息的處理時(shí)得到的哈希中間值作為哈希值輸出。 將哈希函數(shù)的處理1)到5)的組合稱作哈希值計(jì)算。注意,如果哈希初始值可用于第一個(gè)塊,或者如果緊接的前一個(gè)塊的哈希中間值可用于第二個(gè)塊及隨后的塊,則能夠執(zhí)行針對(duì)某個(gè)塊的哈希函數(shù)的處理3)和4)。因此,在計(jì)算從第一個(gè)塊到某個(gè)塊的哈希中間值時(shí),哈希值計(jì)算中斷,可以使用該哈希中間值從下一個(gè)塊重新開始處理。
哈希函數(shù)具有以下三個(gè)主要特征。作為第一個(gè)特征,可以根據(jù)消息來計(jì)算哈希值,但是實(shí)際上不可能根據(jù)輸出哈希值反過來計(jì)算輸入消息(單向)。作為第二個(gè)特征,在給定某個(gè)消息的哈希值時(shí),找出具有該哈希值的另一個(gè)消息非常困難(弱抗沖突性)。作為第三個(gè)特征,發(fā)現(xiàn)哈希值匹配的兩個(gè)不同的消息非常困難(強(qiáng)抗沖突性)。 在例如SSL/TLS和IPSec的各種通信協(xié)議中使用具有這種性質(zhì)的哈希函數(shù)。針對(duì)各個(gè)通信協(xié)議,通過規(guī)格(specification)來確定可以使用的哈希函數(shù)算法。在數(shù)字設(shè)備間進(jìn)行通信時(shí),從數(shù)字設(shè)備采用的通信協(xié)議可以使用的哈希算法中選擇在兩個(gè)數(shù)字設(shè)備中安裝的哈希算法,并且在進(jìn)行認(rèn)證處理時(shí)使用。 由于通信速度加快,所以在加密通信中保證通信速度的需要增加,并且所需的響應(yīng)時(shí)間根據(jù)要處理的數(shù)據(jù)而不同。例如,對(duì)于進(jìn)行修改檢測(cè)的大容量圖像數(shù)據(jù),允許一定程度的哈希值計(jì)算的長(zhǎng)響應(yīng)時(shí)間。但是,對(duì)于進(jìn)行個(gè)人認(rèn)證所需的短的密碼,期望非常短的哈希值計(jì)算的響應(yīng)時(shí)間。因此,還要求哈希值計(jì)算加速處理并盡可能地縮短對(duì)具有高優(yōu)先級(jí)的數(shù)據(jù)的響應(yīng)時(shí)間。通過硬件來實(shí)現(xiàn)處理以加速哈希值計(jì)算是必不可少的。在硬件實(shí)現(xiàn)的情況下,由于電路規(guī)模直接涉及成本,因此每個(gè)系統(tǒng)準(zhǔn)備一個(gè)例如實(shí)現(xiàn)哈希值計(jì)算的哈希值計(jì)算電路的硬件資源,并通過共享該一個(gè)硬件資源來實(shí)現(xiàn)針對(duì)多個(gè)消息的哈希值計(jì)算。
如上所述,哈希值計(jì)算將任意位長(zhǎng)的消息分割成各自具有固定位長(zhǎng)的塊,并處理這些塊。在完成針對(duì)所有塊的哈希值計(jì)算時(shí),能夠獲得針對(duì)該消息的哈希值。
(要處理的消息的切換) 下面,分析以下情況在使用一個(gè)硬件資源執(zhí)行針對(duì)多個(gè)消息的哈希值計(jì)算的條件下,在針對(duì)非常長(zhǎng)的消息的哈希值計(jì)算開始后,接收針對(duì)具有高優(yōu)先級(jí)的短消息的哈希處理請(qǐng)求。在這種情況下,針對(duì)第一個(gè)消息的哈希值計(jì)算需要很長(zhǎng)時(shí)間,無法保證與針對(duì)具有高優(yōu)先級(jí)的短消息的哈希值計(jì)算關(guān)聯(lián)的給定響應(yīng)時(shí)間。因此,為了保證給定響應(yīng)時(shí)間,需要加速哈希值計(jì)算本身、對(duì)要處理的消息分配優(yōu)先等級(jí)、并先處理具有高優(yōu)先級(jí)的消息的機(jī)制。例如,需要以下機(jī)制。即,臨時(shí)中斷先輸入的長(zhǎng)消息的哈希值計(jì)算,先執(zhí)行針對(duì)具有高優(yōu)先級(jí)的短消息的哈希值計(jì)算,在完成對(duì)該短消息的處理后,重新開始對(duì)長(zhǎng)消息的哈希值計(jì)算。 傳統(tǒng)上,已知一種加密處理裝置,其能夠與各種加密算法差異和加密處理模式差異無關(guān)地有效中斷和重新開始例如哈希值計(jì)算的加密處理(日本特開2006-39000號(hào)公報(bào))。在這種配置中,DMA控制器的描述符包括指令中斷和重新開始哈希值計(jì)算的格式。在傳輸附加有中斷信息的消息時(shí),將作為直到消息中間的某個(gè)塊的哈希值計(jì)算的計(jì)算結(jié)果而存儲(chǔ)的內(nèi)部狀態(tài)值寫出到外部存儲(chǔ)器中。另一方面,在傳輸附加有重新開始信息的消息時(shí),讀出存儲(chǔ)在外部存儲(chǔ)器中的內(nèi)部狀態(tài)值,并且從消息中的下一個(gè)塊開始重新開始哈希值計(jì)算。(多個(gè)哈希函數(shù)的支持) 另一方面,分別規(guī)定了在加密通信協(xié)議中能夠使用的哈希算法。在數(shù)字設(shè)備間的通信中,從安裝在各個(gè)通信設(shè)備中的哈希算法中選擇兩個(gè)通信設(shè)備能夠共同執(zhí)行的哈希算法。對(duì)方通信設(shè)備能夠執(zhí)行的哈希算法經(jīng)??赡懿煌枰c許多通信設(shè)備進(jìn)行加密通信的設(shè)備不得不執(zhí)行許多不同的哈希算法。 此外,近年來,指出了廣泛用作哈希算法的標(biāo)準(zhǔn)的SHA-1和MD5的脆弱性,并且推薦轉(zhuǎn)變到總稱為SHA-2的具有更高安全性的哈希算法。即使在標(biāo)準(zhǔn)加密通信協(xié)議中,也想定在不遠(yuǎn)的將來采用例如SHA-2的具有多位長(zhǎng)度的哈希算法。然而,新產(chǎn)品能夠采用新的哈希算法,但是存在許多數(shù)字設(shè)備只支持舊的哈希算法,這些數(shù)字設(shè)備難以進(jìn)行運(yùn)行改變。因此,必須支持傳統(tǒng)上用作標(biāo)準(zhǔn)的舊的哈希算法和具有高安全性的新的哈希算法兩者,以與不同的數(shù)字設(shè)備進(jìn)行安全的通信。日本特開2004-53716號(hào)公報(bào)公開了一種作為硬件來實(shí)現(xiàn)多個(gè)哈希函數(shù)的哈希函數(shù)處理電路。
在哈希值計(jì)算電路依次針對(duì)各個(gè)消息執(zhí)行哈希值計(jì)算的情況下,在針對(duì)某個(gè)消息的哈希值計(jì)算開始時(shí),針對(duì)另一個(gè)消息的哈希值計(jì)算必須等待完成該哈希值計(jì)算。在當(dāng)前處理的消息非常長(zhǎng),而另一個(gè)等待的消息非常短時(shí),不能保證針對(duì)所有消息的在預(yù)定響應(yīng)時(shí)間內(nèi)的處理性能。為了解決這種問題,期望提供一種能夠在一個(gè)消息的處理期間同時(shí)處理另一個(gè)消息的機(jī)制。(關(guān)于要處理的消息的切換的問題) 然而,在日本特開2006-39000號(hào)公報(bào)的配置中,作為哈希值計(jì)算的中間運(yùn)算結(jié)果
存儲(chǔ)的數(shù)據(jù)是加法處理之前的內(nèi)部狀態(tài)值,而不存儲(chǔ)重新開始哈希值計(jì)算所需的加法處理
后的哈希中間值。因此,僅這種配置實(shí)際上不能重新開始哈希值計(jì)算。為了中斷并重新開
始哈希值計(jì)算,除了上述配置以外,必須另外存儲(chǔ)緊接的前一個(gè)塊的哈希中間值。作為替選
方案,為了生成緊接的前一個(gè)塊的哈希中間值,必須另外存儲(chǔ)緊接的前一個(gè)塊之前的塊的
哈希中間值,并必須將其與存儲(chǔ)在外部存儲(chǔ)器中的內(nèi)部狀態(tài)值相加。以這種方式,在傳統(tǒng)配
置的框架下,要存儲(chǔ)的數(shù)據(jù)量增加,并且有關(guān)加法處理的時(shí)間開銷也增加。 利用通過對(duì)日本特開2006-39000號(hào)公報(bào)的配置添加哈希中間值存儲(chǔ)或生成裝置
的配置,可以通過在處理中間切換多個(gè)消息來執(zhí)行哈希值計(jì)算。但是,利用這種配置,將形
成消息的多個(gè)塊中的、直到中間塊的哈希值計(jì)算中間值寫出到外部存儲(chǔ)器中以中斷處理,
并在重新開始處理時(shí)從外部存儲(chǔ)器讀出該哈希值計(jì)算中間值。由于該原因,需要額外的時(shí)
間,來從存儲(chǔ)器讀取哈希值計(jì)算中間值/將哈希值計(jì)算中間值寫入到存儲(chǔ)器中。 例如,哈希中間值的位長(zhǎng),對(duì)于SHA-1總計(jì)為160位,對(duì)于SHA-256總計(jì)為256位,
對(duì)于SHA-512總計(jì)為512位。通常以32位或64位單位進(jìn)行存儲(chǔ)器讀/寫訪問,并且將哈
希值計(jì)算的中間運(yùn)算結(jié)果寫入到存儲(chǔ)器或從存儲(chǔ)器讀出需要幾到幾十個(gè)循環(huán)。由于數(shù)據(jù)的
存儲(chǔ)器讀/寫訪問還需要例如確保總線權(quán)所需的等待時(shí)間的額外時(shí)間,因此基于上述相關(guān)
技術(shù)中斷和重新開始哈希值計(jì)算,需要除了哈希值計(jì)算本身之外的大的時(shí)間開銷。 在上述配置中在處理中間切換針對(duì)多個(gè)消息的哈希值計(jì)算時(shí),必須將作為針對(duì)一
個(gè)消息的哈希值計(jì)算中的直到中間塊的哈希值計(jì)算結(jié)果而獲得的內(nèi)部狀態(tài)值寫入到與總
線連接的外部存儲(chǔ)器中。但是,在哈希值計(jì)算器外部泄漏內(nèi)部狀態(tài)值意味著被盜的風(fēng)險(xiǎn)增
加,從而引起安全問題。 在中斷和重新開始哈希值計(jì)算時(shí),期望不僅減少哈希值計(jì)算的中間運(yùn)算結(jié)果的讀/寫開銷,而且減少消息本身在外部存儲(chǔ)器上的讀/寫開銷。例如,在SHA-1的情況下,作為消息的處理單位的塊的位長(zhǎng)為512位,以32位或64位單位進(jìn)行存儲(chǔ)器讀/寫訪問需要16或8個(gè)循環(huán)。在對(duì)新消息的塊的數(shù)據(jù)或臨時(shí)放棄的消息的塊應(yīng)用哈希值計(jì)算時(shí),從外部存儲(chǔ)器讀出消息的塊所需的時(shí)間對(duì)哈希值計(jì)算施加大的開銷。 如日本特開2006-39000號(hào)公報(bào)所描述的,設(shè)置能夠給出中斷和重新開始哈希值計(jì)算的指令的DMA控制器的描述符格式,以消除在進(jìn)行中斷/重新開始控制時(shí)進(jìn)行條件確定所需的軟件的干擾,從而有效地中斷和重新開始哈希值計(jì)算。但是,日本特開2006-39000號(hào)公報(bào)僅公開了以下技術(shù)在數(shù)據(jù)傳輸?shù)焦V涤?jì)算器之前、CPU預(yù)先識(shí)別消息中要中斷和重新開始的一部分?jǐn)?shù)值之后,CPU將該數(shù)據(jù)與表示有無中斷/重新開始的信息一起傳輸給哈希值計(jì)算器。即,該參考文獻(xiàn)沒有公開針對(duì)在向哈希值計(jì)算器臨時(shí)發(fā)出對(duì)消息的數(shù)據(jù)的哈希處理請(qǐng)求后,對(duì)消息進(jìn)行中斷和重新開始處理的任何技術(shù)。
(關(guān)于多個(gè)哈希函數(shù)的支持的問題) 在用硬件實(shí)現(xiàn)加速哈希值計(jì)算的情況下,不僅需要哈希算法電路,還需要分別存儲(chǔ)經(jīng)過消息擴(kuò)展處理的數(shù)據(jù)、經(jīng)過分步處理的數(shù)據(jù)和經(jīng)過加法處理的數(shù)據(jù)的存儲(chǔ)單元。在分別配置處理許多不同的哈希算法和具有高安全性的新的哈希算法的硬件部件時(shí),電路規(guī)模增大。尤其是,由于具有高安全性的新的哈希算法的哈希值的位長(zhǎng)大,因此具有高安全性的新的哈希算法需要較大容量的存儲(chǔ)單元。但是,一般需要盡量抑制硬件的電路規(guī)模以實(shí)現(xiàn)功率和成本節(jié)省。 傳統(tǒng)的哈希裝置包括處理不同的哈希算法的多個(gè)專用電路以及由該多個(gè)專用電路共同使用的存儲(chǔ)單元,并且傳統(tǒng)的哈希裝置通過選擇哈希算法中的一個(gè)來執(zhí)行哈希值計(jì)算。在這種情況下,由于多個(gè)哈希算法共同使用存儲(chǔ)單元,因此不能針對(duì)多個(gè)消息同時(shí)執(zhí)行哈希值計(jì)算,從而不能保證針對(duì)所有消息的在預(yù)定響應(yīng)時(shí)間內(nèi)的處理性能。
如在日本特開2004-53716號(hào)公報(bào)中所描述的配置中,配置了處理不同的哈希算法的多個(gè)專用電路,而僅與所請(qǐng)求的哈希算法對(duì)應(yīng)的專用電路工作。但是,在這種情況下,不僅電路規(guī)模顯著增加,而且整個(gè)哈希值計(jì)算裝置的功耗的變化變大。因此,在外部通過功率分析來分析電路的內(nèi)部信息變得容易。由于該原因,在防篡改性(安全性)方面,也不優(yōu)選這種配置。
發(fā)明內(nèi)容
首先,本發(fā)明旨在提供一種能夠在處理中間切換針對(duì)多個(gè)消息的哈希值計(jì)算而不會(huì)使任何處理性能降低,并且能夠確保較高安全性的哈希值計(jì)算技術(shù)。 另外,本發(fā)明旨在提供一種允許同時(shí)執(zhí)行多個(gè)哈希算法,并且能夠確保小電路規(guī)模和高安全性的哈希值計(jì)算技術(shù)。 根據(jù)本發(fā)明的一個(gè)方面,提供一種哈希值計(jì)算裝置,其計(jì)算消息的哈希值,該哈希值計(jì)算裝置包括 輸入單元,其適于輸入根據(jù)要處理的消息獲得的擴(kuò)展塊; 哈希值計(jì)算單元,其適于執(zhí)行所輸入的塊的哈希值計(jì)算并輸出哈希中間值; 多個(gè)中間值存儲(chǔ)單元,其適于針對(duì)所述要處理的消息存儲(chǔ)由所述哈希值計(jì)算單元
輸出的所述哈希中間值; 輸出單元,其適于將與所述要處理的消息的所有塊關(guān)聯(lián)的哈希中間值作為所述消息的哈希值輸出;以及 哈希值計(jì)算控制單元,其適于通過切換用于存儲(chǔ)從所述哈希值計(jì)算單元輸出的所
述哈希中間值的所述中間值存儲(chǔ)單元來控制針對(duì)多個(gè)消息的哈希值計(jì)算。 根據(jù)本發(fā)明的另一個(gè)方面,提供一種哈希值計(jì)算裝置,其計(jì)算消息的哈希值,該哈
希值計(jì)算裝置包括 輸入單元,其適于輸入根據(jù)要處理的消息獲得的擴(kuò)展塊; 多個(gè)哈希值計(jì)算單元,其適于執(zhí)行所輸入的塊的哈希值計(jì)算并輸出哈希中間值,所述多個(gè)哈希值計(jì)算單元與不同的哈希算法對(duì)應(yīng)地配置; 切換單元,其適于根據(jù)要使用的哈希算法來切換要啟動(dòng)的所述哈希值計(jì)算單元;
中間值存儲(chǔ)單元,其適于與要處理的消息關(guān)聯(lián)地存儲(chǔ)從所啟動(dòng)的哈希值計(jì)算單元
7輸出的哈希中間值;以及 輸出單元,其適于將與所述要處理的消息的所有塊關(guān)聯(lián)的哈希中間值作為所述消息的哈希值輸出。 根據(jù)本發(fā)明的再一個(gè)方面,提供一種用于哈希值計(jì)算裝置的哈希值計(jì)算方法,所
述哈希值計(jì)算裝置計(jì)算消息的哈希值,該哈希值計(jì)算方法包括 輸入步驟,輸入根據(jù)要處理的消息獲得的擴(kuò)展塊; 哈希值計(jì)算步驟,執(zhí)行所輸入的塊的哈希值計(jì)算并輸出哈希中間值; 存儲(chǔ)步驟,針對(duì)所述要處理的消息在多個(gè)中間值存儲(chǔ)單元的一個(gè)中存儲(chǔ)在所述哈
希值計(jì)算步驟中輸出的所述哈希中間值; 輸出步驟,輸出與所述要處理的消息的所有塊關(guān)聯(lián)的哈希中間值作為所述消息的哈希值;以及 哈希值計(jì)算控制步驟,通過切換用于存儲(chǔ)在所述哈希值計(jì)算步驟中輸出的所述哈希中間值的所述中間值存儲(chǔ)單元來控制針對(duì)多個(gè)消息的哈希值計(jì)算。 根據(jù)本發(fā)明的又一個(gè)方面,提供一種用于哈希值計(jì)算裝置的哈希值計(jì)算方法,所述哈希值計(jì)算裝置計(jì)算消息的哈希值,該哈希值計(jì)算方法包括
輸入步驟,輸入根據(jù)要處理的消息獲得的擴(kuò)展塊; 哈希值計(jì)算步驟,在與不同的哈希算法對(duì)應(yīng)地配置的多個(gè)哈希值計(jì)算單元的一個(gè)中,執(zhí)行所輸入的塊的哈希值計(jì)算并輸出哈希中間值; 切換步驟,根據(jù)要使用的哈希算法來切換要啟動(dòng)的所述哈希值計(jì)算單元; 中間值存儲(chǔ)步驟,在存儲(chǔ)單元中,與要處理的消息關(guān)聯(lián)地存儲(chǔ)在所啟動(dòng)的哈希值
計(jì)算單元中輸出的哈希中間值;以及 輸出步驟,輸出與所述要處理的消息的所有塊關(guān)聯(lián)的哈希中間值作為所述消息的哈希值。 從以下參照附圖對(duì)示例性實(shí)施例的描述,本發(fā)明的其它特征將變得清楚。
圖1是示出哈希值計(jì)算電路的內(nèi)部配置的框圖; 圖2是示出操作哈希值計(jì)算電路所需的系統(tǒng)配置的主要部分的框圖; 圖3是示出哈希值計(jì)算系統(tǒng)中的針對(duì)各消息的哈希值計(jì)算的操作序列的流程圖; 圖4是示出哈希值計(jì)算電路中的寄存器的內(nèi)部結(jié)構(gòu)的圖; 圖5是示出消息A和消息B的塊結(jié)構(gòu)的圖; 圖6是示出消息A和消息B的塊的傳輸順序的圖; 圖7是示出哈希值計(jì)算系統(tǒng)中的針對(duì)多個(gè)消息的哈希值計(jì)算的操作序列的流程圖; 圖8A至圖8E是示出針對(duì)各個(gè)步驟的哈希值計(jì)算的時(shí)序 圖9A至圖9E是示出針對(duì)各個(gè)步驟的哈希值計(jì)算的時(shí)序 圖10A至圖10E是示出針對(duì)各個(gè)步驟的哈希值計(jì)算的時(shí)序 圖IIA和圖IIB是示出針對(duì)各個(gè)塊的哈希值計(jì)算的時(shí)序 圖12是示出哈希值計(jì)算電路的內(nèi)部配置的框8
圖13是示出哈希值計(jì)算電路中的寄存器的內(nèi)部結(jié)構(gòu)的圖; 圖14A和圖14B是示出哈希值計(jì)算系統(tǒng)中的針對(duì)多個(gè)消息的哈希值計(jì)算的操作序列的流程圖; 圖15A至圖15E是示出針對(duì)各個(gè)步驟的哈希值計(jì)算的時(shí)序圖; 圖16A至圖16E是示出針對(duì)各個(gè)步驟的哈希值計(jì)算的時(shí)序圖; 圖17A和圖17B是示出針對(duì)各個(gè)塊的哈希值計(jì)算的時(shí)序圖; 圖18是示出哈希值計(jì)算電路的內(nèi)部配置的框圖; 圖19是示出哈希值計(jì)算電路中的寄存器的內(nèi)部結(jié)構(gòu)的圖; 圖20A、圖20B和圖20C是示出哈希值計(jì)算系統(tǒng)中的針對(duì)多個(gè)消息的哈希值計(jì)算的操作序列的流程圖; 圖21A至圖21G是示出針對(duì)各個(gè)步驟的哈希值計(jì)算的時(shí)序圖; 圖22A至圖22F是示出針對(duì)各個(gè)步驟的哈希值計(jì)算的時(shí)序圖; 圖23A至圖23F是示出針對(duì)各個(gè)步驟的哈希值計(jì)算的時(shí)序圖; 圖24A和圖24B是示出針對(duì)各個(gè)塊的哈希值計(jì)算的時(shí)序圖; 圖25是示出哈希值計(jì)算電路的配置的框圖; 圖26是示出控制器的內(nèi)部配置的示例的框圖; 圖27是示出寄存器的規(guī)格的示例的圖; 圖28是示出操作哈希值計(jì)算電路所需的系統(tǒng)的配置的示例的框圖; 圖29A至圖29C是示出哈希值計(jì)算系統(tǒng)中的針對(duì)各消息接收的CPU的操作序列的
流程圖; 圖30A和圖30B是示出哈希值計(jì)算系統(tǒng)中的哈希電路的操作序列的流程圖; 圖31是示出要進(jìn)行哈希值計(jì)算的消息的示例的圖; 圖32A至圖32H是示出哈希值計(jì)算的詳細(xì)情況的示例的時(shí)序圖; 圖33A至圖33H是示出哈希值計(jì)算的詳細(xì)情況的示例的時(shí)序圖; 圖34A和圖34B是示出基于接口信號(hào)的操作的示例的時(shí)序圖; 圖35是示出數(shù)據(jù)ExMSGJ)和ExMSG_l的選擇策略的示例的圖; 圖36是示出擴(kuò)展消息存儲(chǔ)單元的內(nèi)部配置的示例的圖; 圖37是示出數(shù)據(jù)ExMSG_N[31:0]和ExMSG_N[63:32]的選擇策略的示例的圖; 圖38是示出數(shù)據(jù)TEMPJ)和TEMP_1的選擇策略的示例的圖; 圖39是示出數(shù)據(jù)TEMP—N[255:0]和TEMP_N[511:256]的選擇策略的示例的圖; 圖40是示出數(shù)據(jù)IHASHJ)和IHASH_1的選擇策略的示例的圖;以及 圖41是示出數(shù)據(jù)IHASH_N[255:0]和IHASH_N[511:256]的選擇策略的示例的圖。
具體實(shí)施例方式
下面,參考附圖詳細(xì)說明根據(jù)本發(fā)明的實(shí)施例。但是,在這些實(shí)施例中描述的部件僅是示例,其不限制本發(fā)明的范圍。在這些實(shí)施例中描述的特征的所有組合對(duì)于本發(fā)明的解決手段不始終是必不可少的。
《第一實(shí)施例》 本實(shí)施例例示應(yīng)用SHA-1作為用于計(jì)算哈希值的哈希函數(shù)的配置。在SHA-1中,
9針對(duì)各個(gè)512位的塊處理消息,將160位的哈希值作為哈希值計(jì)算的最終結(jié)果輸出。SHA-1 的哈希值計(jì)算包括如下一系列處理。
將消息分割為512位的±央,并將預(yù)定數(shù)據(jù)添加到消息的最末位置,以使最后的塊 具有512位(以下稱作填充處理)。
對(duì)各512位的塊應(yīng)用稍后描述的消息擴(kuò)展處理、80個(gè)步驟的分步處理和加法處 理,以生成哈希中間值。 消息擴(kuò)展處理根據(jù)512位的塊數(shù)據(jù)生成80個(gè)32位的擴(kuò)展消息(擴(kuò)展塊)。按原 樣使用源512位的塊數(shù)據(jù)作為第0到第15個(gè)擴(kuò)展消息。至于第16個(gè)及隨后的擴(kuò)展消息, 對(duì)第(n-16)到第(n-l)個(gè)消息應(yīng)用預(yù)定運(yùn)算處理,以生成第n個(gè)擴(kuò)展消息。
分步處理針對(duì)包括5個(gè)32位的數(shù)據(jù)的預(yù)定內(nèi)部狀態(tài)值的初始值(哈希初始值), 通過針對(duì)80個(gè)步驟中的各個(gè)步驟使用80個(gè)擴(kuò)展消息應(yīng)用預(yù)定運(yùn)算操作,來依次更新內(nèi)部 狀態(tài)值。在最初的第O個(gè)步驟(以下稱作步驟O)中,使用第O個(gè)擴(kuò)展消息對(duì)哈希初始值應(yīng) 用預(yù)定運(yùn)算處理,以更新內(nèi)部狀態(tài)值。在其余79個(gè)步驟中的各個(gè)(以下稱作步驟n)中,使 用第n個(gè)擴(kuò)展消息對(duì)步驟(n-l)的內(nèi)部狀態(tài)值應(yīng)用預(yù)定運(yùn)算處理,從而更新內(nèi)部狀態(tài)值。
加法處理將作為關(guān)注的塊的第80個(gè)步驟的分步處理結(jié)果的內(nèi)部狀態(tài)值與從第一 個(gè)塊到緊接的前一個(gè)塊的哈希中間值相加。 從消息的第一個(gè)塊到某個(gè)塊的哈希值計(jì)算結(jié)果是哈希中間值,從第一個(gè)塊到最后 的塊的哈希中間值是整個(gè)消息的哈希值。
(哈希值計(jì)算電路的配置) 圖1是示出根據(jù)本發(fā)明第一實(shí)施例的哈希值計(jì)算電路的配置的框圖。 附圖標(biāo)記100表示哈希值計(jì)算電路。附圖標(biāo)記101表示臨時(shí)存儲(chǔ)由稍后描述的外
部DMA控制器(以下稱作DMAC)從外部存儲(chǔ)器DMA傳輸?shù)焦V涤?jì)算電路100的消息的消
息存儲(chǔ)單元。 附圖標(biāo)記102表示臨時(shí)存儲(chǔ)擴(kuò)展消息的擴(kuò)展消息存儲(chǔ)單元。附圖標(biāo)記103表示輸 入臨時(shí)存儲(chǔ)在擴(kuò)展消息存儲(chǔ)單元102中的擴(kuò)展消息并執(zhí)行消息擴(kuò)展處理的消息擴(kuò)展處理 器。 附圖標(biāo)記104表示針對(duì)輸入消息的各塊針對(duì)各步驟依次執(zhí)行步驟0到步驟79的 分步處理的分步處理器。附圖標(biāo)記105表示選擇要由分步處理器104處理的內(nèi)部狀態(tài)值的 選擇器。 附圖標(biāo)記106表示臨時(shí)存儲(chǔ)作為來自分步處理器104的輸出的內(nèi)部狀態(tài)值的內(nèi)部 狀態(tài)值存儲(chǔ)單元。附圖標(biāo)記107表示對(duì)完成所有步驟的處理后的內(nèi)部狀態(tài)值和到緊接的前 一個(gè)塊的哈希中間值執(zhí)行加法處理的加法處理器。 附圖標(biāo)記108表示選擇要輸入到加法處理器107的哈希中間值的選擇器。附圖標(biāo) 記109和IIO表示存儲(chǔ)作為來自加法處理器107的輸出的哈希中間值的哈希中間值存儲(chǔ)單 元(第一和第二中間值存儲(chǔ)單元)。附圖標(biāo)記111表示選擇存儲(chǔ)在哈希中間值存儲(chǔ)單元109 和110中的哈希中間值中的一個(gè)的選擇器。 附圖標(biāo)記112表示選擇作為到緊接的前一個(gè)塊的哈希值計(jì)算結(jié)果的哈希中間值 和哈希初始值中的一個(gè)的選擇器。附圖標(biāo)記113表示生成控制外部DMAC和CPU之間的數(shù) 據(jù)交換和哈希值計(jì)算所需要的各種信號(hào)的哈希值計(jì)算控制器。
附圖標(biāo)記114表示針對(duì)消息的各分割將32位的假數(shù)據(jù)(dummy data)附加到160位的哈希值以獲得3個(gè)64位的數(shù)據(jù),并通過DMA傳輸將這些數(shù)據(jù)傳送到哈希值計(jì)算電路100外部的哈希值輸出單元。附圖標(biāo)記116表示存儲(chǔ)由哈希值計(jì)算電路100外部的CPU設(shè)置的哈希值計(jì)算電路100的操作參數(shù)的寄存器。 附圖標(biāo)記117表示包括用于向寄存器116輸入數(shù)據(jù)/從寄存器116輸出數(shù)據(jù)的地址信號(hào)、數(shù)據(jù)信號(hào)和控制信號(hào)的總線信號(hào)。附圖標(biāo)記118表示要與DMAC交換的DMA數(shù)據(jù)/控制信號(hào),包括DMA輸入數(shù)據(jù)、DMA輸出數(shù)據(jù)、DMA請(qǐng)求信號(hào)和DMA確認(rèn)信號(hào)(稍后描述)。
附圖標(biāo)記119表示由選擇器111選擇的哈希中間值。附圖標(biāo)記120表示要從DMAC輸出到哈希值計(jì)算電路100的DMA輸入數(shù)據(jù)。消息存儲(chǔ)單元101存儲(chǔ)該DMA輸入數(shù)據(jù)。
附圖標(biāo)記121表示要從哈希值計(jì)算電路100輸出到DMAC的DMA輸出數(shù)據(jù)。哈希值輸出單元114輸出哈希值或哈希中間值作為該DMA輸出數(shù)據(jù)。附圖標(biāo)記122表示要從哈希值計(jì)算電路100輸出到DMAC的DMA請(qǐng)求信號(hào)。哈希值計(jì)算控制器113在發(fā)出輸入數(shù)據(jù)的讀取請(qǐng)求和輸出數(shù)據(jù)的寫入請(qǐng)求時(shí)分別斷言(assert) DMA讀取請(qǐng)求信號(hào)和DMA寫入請(qǐng)求信號(hào)。 附圖標(biāo)記123表示要從DMAC輸出到哈希值計(jì)算電路100的DMA確認(rèn)信號(hào)。艮卩,DMAC響應(yīng)于輸入數(shù)據(jù)的讀取請(qǐng)求斷言DMA讀取確認(rèn)信號(hào)并輸出輸入數(shù)據(jù),并響應(yīng)于輸出數(shù)據(jù)的寫入請(qǐng)求斷言DMA寫入確認(rèn)信號(hào)并取出輸出數(shù)據(jù)。注意,DMA請(qǐng)求信號(hào)122和DMA確認(rèn)信號(hào)123 —起包括讀/寫信號(hào)。 附圖標(biāo)記124表示從哈希值計(jì)算控制器113輸出的、用于在針對(duì)各塊的哈希值計(jì)算開始時(shí)將存儲(chǔ)在消息存儲(chǔ)單元101中的擴(kuò)展消息加載到擴(kuò)展消息存儲(chǔ)單元102中的塊加載信號(hào)。附圖標(biāo)記125表示從哈希值計(jì)算控制器113輸出的作為選擇器105的控制信號(hào)的哈希中間值選擇信號(hào)。 附圖標(biāo)記126表示在寄存器116中設(shè)置的表示哈希值計(jì)算的初始值的信號(hào),即,要
從哈希值計(jì)算控制器113輸出到選擇器112的哈希初始值。附圖標(biāo)記127表示從哈希值計(jì)
算控制器113輸出的作為選擇器112的控制信號(hào)的哈希初始值選擇信號(hào)X。 附圖標(biāo)記128表示從哈希值計(jì)算控制器113輸出的作為選擇器108的控制信號(hào)的
哈希初始值選擇信號(hào)Y。附圖標(biāo)記129表示從哈希值計(jì)算控制器113輸出的作為哈希中間
值存儲(chǔ)單元A 109中的哈希中間值A(chǔ) 135的加載信號(hào)的哈希中間值A(chǔ)加載信號(hào)。 附圖標(biāo)記130表示從哈希值計(jì)算控制器113輸出的作為哈希中間值存儲(chǔ)單元B
IIO中的哈希中間值B 136的加載信號(hào)的哈希中間值B加載信號(hào)。附圖標(biāo)記131表示從哈
希值計(jì)算控制器113輸出的作為選擇器111的控制信號(hào)的消息A選擇信號(hào)。 附圖標(biāo)記132表示從消息存儲(chǔ)單元101輸出到擴(kuò)展消息存儲(chǔ)單元102的消息。附
圖標(biāo)記133表示從擴(kuò)展消息存儲(chǔ)單元102輸出到消息擴(kuò)展處理器103的擴(kuò)展消息。 附圖標(biāo)記134表示作為來自內(nèi)部狀態(tài)值存儲(chǔ)單元106的輸出的內(nèi)部狀態(tài)值。附圖
標(biāo)記135表示作為來自哈希中間值存儲(chǔ)單元A 109的輸出的哈希中間值A(chǔ)。附圖標(biāo)記136
表示作為來自哈希中間值存儲(chǔ)單元B 110的輸出的哈希中間值B。 附圖標(biāo)記137表示對(duì)要針對(duì)各消息處理的塊的數(shù)量進(jìn)行計(jì)數(shù)的塊計(jì)數(shù)器,其在針對(duì)形成消息的預(yù)定數(shù)量的塊的哈希值計(jì)算完成時(shí)清零。附圖標(biāo)記138表示對(duì)要針對(duì)消息的各塊處理的步驟的數(shù)量進(jìn)行計(jì)數(shù)的步驟計(jì)數(shù)器,其在對(duì)預(yù)定數(shù)量的步驟進(jìn)行計(jì)數(shù)后清零。
11
注意,在本實(shí)施例中,塊計(jì)數(shù)器137的計(jì)數(shù)器值針對(duì)第n(n = 0、…)個(gè)塊處理指示值(n+1)。步驟計(jì)數(shù)器138的計(jì)數(shù)器值針對(duì)第n(n = 0、…、79)個(gè)分步處理指示值(n+l)。
在本實(shí)施例中,哈希值計(jì)算電路100執(zhí)行除填充處理外的哈希值計(jì)算的消息擴(kuò)展處理、分步處理和加法處理。稍后描述的哈希值計(jì)算系統(tǒng)200中的除哈希值計(jì)算電路100以外的部件、即稍后描述的CPU 201和存儲(chǔ)器202執(zhí)行填充處理。
(哈希值計(jì)算系統(tǒng)的配置) 圖2是示出操作哈希值計(jì)算電路100所需的系統(tǒng)的配置的示例的框圖。附圖標(biāo)記200表示哈希值計(jì)算系統(tǒng)。附圖標(biāo)記201表示控制哈希值計(jì)算系統(tǒng)200的操作的CPU。附圖標(biāo)記202表示用于存儲(chǔ)要進(jìn)行哈希值計(jì)算的消息和哈希值等的存儲(chǔ)器。
附圖標(biāo)記203表示將消息從存儲(chǔ)器202傳輸?shù)焦V涤?jì)算電路100以及將哈希值從哈希值計(jì)算電路100傳輸?shù)酱鎯?chǔ)器202的直接存儲(chǔ)存取控制器(DMAC, direct memoryaccess controller)。附圖標(biāo)記204表示控制哈希值計(jì)算系統(tǒng)200的中斷信號(hào)的中斷控制器。附圖標(biāo)記205表示連接哈希值計(jì)算電路100、CPU 201、存儲(chǔ)器202、DMAC 203和中斷控制器204的總線,其包括地址信號(hào)、數(shù)據(jù)信號(hào)和控制信號(hào)。 附圖標(biāo)記206表示從DMAC 203到中斷控制器204的中斷信號(hào)。在本實(shí)施例中,在DMAC 203將哈希值從哈希值計(jì)算電路100傳輸?shù)酱鎯?chǔ)器202后,DMAC 203使用中斷信號(hào)206將來自DMAC 203的中斷通知給中斷控制器204。中斷控制器204使用中斷信號(hào)(未示出)將哈希值的存儲(chǔ)通知給CPU 201。
(哈希值計(jì)算的概要) 圖3是示出本實(shí)施例的哈希值計(jì)算系統(tǒng)中的針對(duì)各消息的哈希值計(jì)算的操作序列的流程圖。 在ST001中,CPU 201經(jīng)由總線信號(hào)117在哈希值計(jì)算電路100的寄存器116中設(shè)置針對(duì)關(guān)注的消息的哈希值計(jì)算的操作參數(shù)。 在ST002中,哈希值計(jì)算電路100通過DMA讀傳輸來讀取消息的數(shù)據(jù),針對(duì)各塊執(zhí)行哈希值計(jì)算,并生成直到最后的塊的哈希值。在ST003中,哈希值計(jì)算電路IOO通過DMA寫傳輸來輸出關(guān)注的消息的哈希值。
(寄存器的存儲(chǔ)內(nèi)容) 圖4是示出本實(shí)施例的哈希值計(jì)算電路100中的寄存器116存儲(chǔ)的信息的圖。
寄存器116具有作業(yè)開始信息、消息標(biāo)識(shí)符信息、塊的數(shù)量信息、哈希初始值信息和處理繼續(xù)信息的存儲(chǔ)區(qū)域。"作業(yè)開始"區(qū)域中的信息表示是否根據(jù)在"消息標(biāo)識(shí)符"、"塊的數(shù)量"、"哈希初始值"和"處理繼續(xù)"區(qū)域中設(shè)置的信息"開始哈希值計(jì)算"或者"不開始哈希值計(jì)算"??梢酝ㄟ^相應(yīng)區(qū)域中的預(yù)定位的"1"或"0"來表示是否開始哈希值計(jì)算。以下將在預(yù)定位中設(shè)置"1"或"0"稱作"設(shè)置標(biāo)志"或"清除標(biāo)志"。 CPU 201在哈希值計(jì)算電路100的寄存器116中的"作業(yè)開始"區(qū)域中設(shè)置預(yù)定標(biāo)志,以針對(duì)與一個(gè)消息對(duì)應(yīng)的各個(gè)哈希處理請(qǐng)求指示"開始哈希值計(jì)算"。當(dāng)在對(duì)應(yīng)的區(qū)域中設(shè)置預(yù)定標(biāo)志、并完成針對(duì)緊接的前一個(gè)消息的哈希值計(jì)算時(shí),哈希值計(jì)算電路100開始哈希值計(jì)算。接著,在針對(duì)要處理的消息的哈希值計(jì)算完成時(shí),哈希值計(jì)算電路ioo清除標(biāo)志以指示"不開始哈希值計(jì)算"。"消息標(biāo)識(shí)符"區(qū)域中的信息是用于通過區(qū)域中的多個(gè)預(yù)定位來識(shí)別處理請(qǐng)求中的目標(biāo)消息的標(biāo)識(shí)符。例如,在消息的類型的數(shù)量為2時(shí),如果預(yù)定位是"l",則其指示"處理消息A";如果預(yù)定位是"0",則其指示"處理消息B"。"塊的數(shù)量"區(qū)域中的信息通過預(yù)定位來指示處理請(qǐng)求中的塊的數(shù)量。例如,在預(yù)定位指示的值指示要處理的塊的數(shù)量時(shí),如果預(yù)定位的值是"0x004",則要處理的塊的數(shù)量為4。"哈希初始值"區(qū)域中的信息指示處理請(qǐng)求中的內(nèi)部狀態(tài)值的初始值(哈希初始值)。在SHA-1的情況下,由于內(nèi)部狀態(tài)值包括5個(gè)32位的數(shù)據(jù),因此該區(qū)域中的預(yù)定160位指示哈希初始值。注意,CPU 201可以將SHA-1算法的內(nèi)部狀態(tài)值的初始值寫入到"哈希初始值"區(qū)域,或者可以寫入與哈希中間值對(duì)應(yīng)的值,以重新開始并處理中斷的哈希值計(jì)算。"處理繼續(xù)"區(qū)域中的信息通過該區(qū)域中的預(yù)定位的"1"或"0"指示將使用哪個(gè)值
作為處理請(qǐng)求中的在哈希值計(jì)算中所使用的內(nèi)部狀態(tài)值的初始值 存儲(chǔ)在"哈希初始值"區(qū)域中的"使用內(nèi)部狀態(tài)值的初始值";或 存儲(chǔ)在哈希值計(jì)算電路100的哈希中間值存儲(chǔ)單元中的"使用哈希中間值"。 注意,CPU 201針對(duì)與一個(gè)消息對(duì)應(yīng)的各個(gè)哈希處理請(qǐng)求在"消息標(biāo)識(shí)符"、"塊的
數(shù)量"、"哈希初始值"和"處理繼續(xù)"區(qū)域中寫入預(yù)定值。(消息示例) 圖5示出了在本實(shí)施例中進(jìn)行哈希值計(jì)算的兩個(gè)消息,即消息A(第一消息)和消息B(第二消息)。在SHA-1中,針對(duì)各個(gè)512位的塊進(jìn)行哈希值計(jì)算。在這種情況下,將消息A從其頭位置開始分割為512位的塊AO、 Al、 A2、…、A51、 A52、 A53、 A54、…、A93、 A94和A95。對(duì)于最后的塊A95,對(duì)少于512位的部分附加填充數(shù)據(jù)。同樣地,將消息B從其頭位置開始分割為512位的塊B0、B1、B2和B3,并將填充數(shù)據(jù)附加到塊B3。這些消息存儲(chǔ)在存儲(chǔ)器202中。
(消息傳輸?shù)母乓? 圖6示出在本實(shí)施例中進(jìn)行哈希值計(jì)算的消息A和消息B從存儲(chǔ)器202傳輸?shù)焦V涤?jì)算電路100時(shí)的傳輸順序。本實(shí)施例將例示CPU 201控制哈希值計(jì)算電路100在消息A的中間優(yōu)先處理消息B的情況。艮卩,DMAC 203將形成消息A的塊A0、A1、A2、…、A51和A52依次傳輸?shù)焦V涤?jì)算電路IOO,接著將形成消息B的塊BO、 Bl、 B2和B3依次傳輸?shù)焦V涤?jì)算電路IOO。之后,DMAC 203將形成消息A的塊A53、A54、、 A93、 A94和A95傳輸?shù)焦V涤?jì)算電路IOO。 在本實(shí)施例中,預(yù)先決定CPU 201發(fā)出中斷消息A的哈希值計(jì)算并開始消息B的哈希值計(jì)算的處理請(qǐng)求。此外,CPU 201向哈希值計(jì)算電路100發(fā)出作為兩個(gè)消息、即包括塊AO到A52的消息和包括塊A53到A95的消息的消息A的處理請(qǐng)求。
(哈希值計(jì)算) 在本實(shí)施例中,哈希值計(jì)算電路100根據(jù)圖3所示的序列,針對(duì)具有在STOO1中由CPU 201在寄存器116中設(shè)置的塊的數(shù)量的消息,在ST002中執(zhí)行塊的數(shù)量的哈希值計(jì)算,而不中斷這些哈希值計(jì)算。在ST003中,哈希值計(jì)算電路100輸出哈希值計(jì)算結(jié)果的哈希值。在完成針對(duì)該消息的哈希值計(jì)算時(shí),在CPU 201在哈希值計(jì)算電路100的寄存器116中設(shè)置了針對(duì)下一個(gè)消息的處理請(qǐng)求時(shí),哈希值計(jì)算電路100執(zhí)行針對(duì)下一個(gè)消息的在寄
13存器116中設(shè)置的塊的數(shù)量的哈希值計(jì)算。 圖7是示出在以圖6所示的順序輸入三個(gè)消息(AO到A52、 BO到B3以及A53到 A95)時(shí),本實(shí)施例的哈希值計(jì)算的操作序列的流程圖。根據(jù)圖3中的STOOl和ST002中的 操作序列,依次針對(duì)各消息執(zhí)行哈希值計(jì)算。 在ST101中,CPU 201在哈希值計(jì)算電路100的寄存器116中設(shè)置針對(duì)第一消息 (A0到A52)的處理請(qǐng)求。 在ST102中,哈希值計(jì)算電路100通過向DMAC 203發(fā)出讀取請(qǐng)求來讀取第一消息 (AO到A52)的數(shù)據(jù),并執(zhí)行針對(duì)該消息的哈希值計(jì)算。 在ST103中,哈希值計(jì)算電路100通過向DMAC 203發(fā)出寫入請(qǐng)求來輸出針對(duì)第一 消息(A0到A52)的哈希值。 在ST104中,CPU 201在哈希值計(jì)算電路100的寄存器116中設(shè)置針對(duì)第二消息 (BO到B3)的處理請(qǐng)求。 在ST105中,哈希值計(jì)算電路100通過向DMAC 203發(fā)出讀取請(qǐng)求來讀取第二消息 (BO到B3)的數(shù)據(jù),并執(zhí)行針對(duì)該消息的哈希值計(jì)算。 在ST106中,哈希值計(jì)算電路100通過向DMAC 203發(fā)出寫入請(qǐng)求來輸出針對(duì)第二 消息(B0到B3)的哈希值。 在ST107中,CPU 201在哈希值計(jì)算電路100的寄存器116中設(shè)置針對(duì)第三消息 (A53到A95)的處理請(qǐng)求。 在ST108中,哈希值計(jì)算電路100通過向DMAC 203發(fā)出讀取請(qǐng)求來讀取第三消息 (A53到A95)的數(shù)據(jù),并執(zhí)行針對(duì)該消息的哈希值計(jì)算。 在ST109中,哈希值計(jì)算電路100通過向DMAC 203發(fā)出寫入請(qǐng)求來輸出針對(duì)第三 消息(A53到A95)的哈希值。 [OWO](哈希值計(jì)算的詳細(xì)情況) 圖8A至圖IOE是示出針對(duì)各個(gè)步驟的哈希值計(jì)算的操作的時(shí)序圖。注意,TXXX代 表基于作為分步處理和DMA傳輸處理的基本單位的操作時(shí)鐘周期T的時(shí)間段。在本實(shí)施例 中,根據(jù)具有周期T的操作時(shí)鐘同步設(shè)計(jì)哈希值計(jì)算電路100。例如,消息A的每個(gè)512位 的塊的數(shù)據(jù)對(duì)應(yīng)于16個(gè)、即第0到第15個(gè)32位的擴(kuò)展消息WO到W15。例如,將消息A的 第0個(gè)塊描述為AO,將塊AO的第0個(gè)和第1個(gè)32位的數(shù)據(jù)描述為A0_W00-W01,將塊AO的 最初的16個(gè)擴(kuò)展消息描述為EA0_W00-W15。同樣地,將塊AO的第0個(gè)步驟的內(nèi)部狀態(tài)值描 述為SAOJ)O,將塊AO的哈希中間值描述為HAO。以下將描述針對(duì)各個(gè)單位時(shí)間段的各個(gè)單 元的操作。 在TOOO中,哈希值計(jì)算控制器113將DMA寫入請(qǐng)求信號(hào)122斷言到DMAC 203以 寫入數(shù)據(jù)。在T001中,DMAC 203返回DMA寫入確認(rèn)信號(hào)123,并將從哈希值輸出單元114 作為DMA輸出數(shù)據(jù)116輸出的哈希值(在這種情況下為HAX)的最初的64位傳輸?shù)酱鎯?chǔ)器 202。之后,從T002到T005,DMAC 203將哈希值HAX傳輸?shù)酱鎯?chǔ)器202。在該區(qū)間期間,哈 希值計(jì)算控制器113對(duì)DMAC 203斷言DMA寫入確認(rèn)信號(hào)123的次數(shù)進(jìn)行計(jì)數(shù)。在這種情況 下,哈希值計(jì)算控制器113確認(rèn)在T005以前斷言了 DMA寫入確認(rèn)信號(hào)123三次,并在T006 中取消斷言(deassert)DMA寫入請(qǐng)求信號(hào)122。在T006和T007中,CPU 201經(jīng)由總線205和總線信號(hào)117設(shè)置寄存器116。在這種情況下,CPU 201在圖4中的寄存器116的"作業(yè)開始"區(qū)域中設(shè)置"開始哈希值計(jì)算"的 標(biāo)志,并且在"處理繼續(xù)"區(qū)域中設(shè)置"使用內(nèi)部狀態(tài)值的初始值"的標(biāo)志。另外,CPU 201 在"消息標(biāo)識(shí)符"區(qū)域中設(shè)置"處理消息A"的標(biāo)志,在"塊的數(shù)量"區(qū)域中設(shè)置"針對(duì)53個(gè) 塊進(jìn)行處理"的標(biāo)志,并且在"哈希初始值"區(qū)域中設(shè)置"SHA-1算法的初始值"。
在T008中,響應(yīng)于在寄存器116的"作業(yè)開始"區(qū)域中設(shè)置"開始哈希值計(jì)算"的 標(biāo)志,哈希值計(jì)算控制器113將DMA讀取請(qǐng)求信號(hào)122斷言到DMAC 203以讀取數(shù)據(jù)。在 T009中,DMAC 203返回DMA讀取確認(rèn)信號(hào)123。同時(shí),DMAC 203將存儲(chǔ)在存儲(chǔ)器202中的 消息A的第一個(gè)塊AO的最初的64位(A0_W00-W01)傳輸?shù)焦V涤?jì)算電路100。
在TOIO中,消息存儲(chǔ)單元101存儲(chǔ)64位的數(shù)據(jù)A0—W00-W01。之后,從TOll到 T023, DMAC 203將塊AO從存儲(chǔ)器202傳輸?shù)焦V涤?jì)算電路100。在該區(qū)間期間,哈希值 計(jì)算控制器113對(duì)DMAC 203斷言DMA確認(rèn)信號(hào)123的次數(shù)進(jìn)行計(jì)數(shù)。哈希值計(jì)算控制器 113確認(rèn)在T023以前斷言了 DMA確認(rèn)信號(hào)123八次,并在T024中取消斷言DMA讀取請(qǐng)求信 號(hào)122。在寄存器116的"作業(yè)開始"區(qū)域中設(shè)置了"開始哈希值計(jì)算"的標(biāo)志的狀態(tài)下,塊 計(jì)數(shù)器137根據(jù)DMA讀取請(qǐng)求信號(hào)122的取消斷言的次數(shù)對(duì)要處理的塊的數(shù)量進(jìn)行計(jì)數(shù)。 設(shè)塊計(jì)數(shù)器137的計(jì)數(shù)器值為BC,在這種情況下BC二 1。此外,在T024中,消息存儲(chǔ)單元 101存儲(chǔ)塊AO。 在T025中,哈希值計(jì)算控制器113斷言塊加載信號(hào)124。 在T026中,擴(kuò)展消息存儲(chǔ)單元102檢測(cè)塊加載信號(hào)124的斷言,并加載存儲(chǔ)在消 息存儲(chǔ)單元101中的塊AO。此時(shí),擴(kuò)展消息存儲(chǔ)單元102通過將塊AO分割為16個(gè)32位 的數(shù)據(jù)EAO_WOO到EA0_W15來存儲(chǔ)塊AO。在塊加載信號(hào)124的斷言后,步驟計(jì)數(shù)器138使 用針對(duì)各個(gè)基本處理時(shí)間段T的時(shí)鐘(未示出)來對(duì)步驟的數(shù)量進(jìn)行計(jì)數(shù)。設(shè)步驟計(jì)數(shù)器 138的計(jì)數(shù)器值為SC,在這種情況下SC二 1。之后,步驟計(jì)數(shù)器138針對(duì)作為一個(gè)分步處 理的單位的基本處理時(shí)間段T的各時(shí)鐘進(jìn)行向上計(jì)數(shù),直到計(jì)數(shù)器值SC達(dá)到80。響應(yīng)于 將存儲(chǔ)在消息存儲(chǔ)單元101中的數(shù)據(jù)加載到擴(kuò)展消息存儲(chǔ)單元102,哈希值計(jì)算控制器113 斷言DMA讀取請(qǐng)求信號(hào)122以讀取下一個(gè)塊的數(shù)據(jù)。 在T026中,消息擴(kuò)展處理器103輸入存儲(chǔ)在擴(kuò)展消息存儲(chǔ)單元102中的擴(kuò)展消息 133 (EAO_WOO到EA0_W15),并計(jì)算32位的數(shù)據(jù)EA0_W16。 在T026中,哈希值計(jì)算控制器113響應(yīng)于在寄存器116的"處理繼續(xù)"區(qū)域中設(shè) 置的"使用內(nèi)部狀態(tài)值的初始值"的標(biāo)志和步驟計(jì)數(shù)器138的計(jì)數(shù)器值=l,斷言哈希初始 值選擇信號(hào)X 127。在T026中,哈希值計(jì)算控制器113響應(yīng)于步驟計(jì)數(shù)器138的計(jì)數(shù)器值 =1來斷言哈希中間值選擇信號(hào)125。 在T026中,由于斷言了哈希初始值選擇信號(hào)X 127,因此選擇器112輸出作為其自
身的輸入的哈希中間值119和哈希初始值126中的哈希初始值126。選擇器105響應(yīng)于哈
希中間值選擇信號(hào)125的斷言,輸出作為其自身的輸入的來自選擇器112的輸出和內(nèi)部狀
態(tài)值134中的來自選擇器112的輸出。結(jié)果,選擇器105輸出哈希初始值126。在T026中,分步處理器104輸入存儲(chǔ)在擴(kuò)展消息存儲(chǔ)單元102中的數(shù)據(jù)EAO_WOO
和哈希初始值126,并通過對(duì)它們應(yīng)用SHA-1的步驟O的處理來計(jì)算內(nèi)部狀態(tài)值SAOJ)O。 在T027中,步驟計(jì)數(shù)器138將其計(jì)數(shù)器值SC向上計(jì)數(shù)到2。在T027中,擴(kuò)展消息存儲(chǔ)單元102存儲(chǔ)數(shù)據(jù)EA0_W01到EA0—W15,和在T026中消
15息擴(kuò)展處理器103計(jì)算的數(shù)據(jù)EA0_W16。 在T027中,內(nèi)部狀態(tài)值存儲(chǔ)單元106存儲(chǔ)在T026中計(jì)算的內(nèi)部狀態(tài)值SA0_00。
在T027中,消息擴(kuò)展處理器103輸入存儲(chǔ)在擴(kuò)展消息存儲(chǔ)單元102中的擴(kuò)展消息 133 (EA0_W01到EA0_W16),并計(jì)算32位的數(shù)據(jù)EA0_W17。 在T027中,哈希值計(jì)算控制器113響應(yīng)于步驟計(jì)數(shù)器138的計(jì)數(shù)器值^ l,取消斷 言哈希初始值選擇信號(hào)X 127和哈希中間值選擇信號(hào)125。 在T027中,選擇器105響應(yīng)于哈希中間值選擇信號(hào)125的取消斷言,輸出作為其 自身的輸入的來自選擇器112的輸出和內(nèi)部狀態(tài)值134中的內(nèi)部狀態(tài)值134。結(jié)果,選擇器 105輸出內(nèi)部狀態(tài)值SAO_00。 在T027中,分步處理器104輸入擴(kuò)展消息EA0_W01和內(nèi)部狀態(tài)值SAO_00,并通過 對(duì)它們應(yīng)用SHA-1的步驟1的處理來計(jì)算內(nèi)部狀態(tài)值SA0_01。 在T027中,DMAC 203返回DMA讀取確認(rèn)信號(hào)123,并將64位的數(shù)據(jù)A1_W00_W01 從存儲(chǔ)器202傳輸?shù)焦V涤?jì)算電路100。 在T028中,步驟計(jì)數(shù)器138將其計(jì)數(shù)器值SC向上計(jì)數(shù)到3。在T028中,擴(kuò)展消息存儲(chǔ)單元102存儲(chǔ)數(shù)據(jù)EA0_W02到EA0_W16和在T027中消
息擴(kuò)展處理器103計(jì)算的數(shù)據(jù)EA0_W17。 在T028中,內(nèi)部狀態(tài)值存儲(chǔ)單元106存儲(chǔ)在T027中計(jì)算的內(nèi)部狀態(tài)值SA0_01。
在T028中,消息擴(kuò)展處理器103輸入存儲(chǔ)在擴(kuò)展消息存儲(chǔ)單元102中的擴(kuò)展消息 133 (EA0_W02到EA0_W17),并計(jì)算32位的數(shù)據(jù)EA0_W18。 在T028中,選擇器105響應(yīng)于哈希中間值選擇信號(hào)125的取消斷言,輸出作為其 自身的輸入的來自選擇器112的輸出和內(nèi)部狀態(tài)值134中的內(nèi)部狀態(tài)值134。結(jié)果,選擇器 105輸出內(nèi)部狀態(tài)值SA0_01。 在T028中,分步處理器104輸入存儲(chǔ)在擴(kuò)展消息存儲(chǔ)單元102中的數(shù)據(jù)EAO— W02和內(nèi)部狀態(tài)值SAOJ)l,并通過對(duì)它們應(yīng)用SHA-1的步驟2的處理來計(jì)算內(nèi)部狀態(tài)值 SA0_02。 在T028中,消息存儲(chǔ)單元101存儲(chǔ)64位的數(shù)據(jù)A1_W00_W01。
之后,從T029到T041,DMAC 203將塊Al從存儲(chǔ)器202DMA傳輸?shù)焦V涤?jì)算電路 100。在該區(qū)間期間,哈希值計(jì)算控制器113對(duì)DMAC203斷言DMA讀取確認(rèn)信號(hào)123的次數(shù) 進(jìn)行計(jì)數(shù)。哈希值計(jì)算控制器113確認(rèn)在T041以前DMAC 203斷言了 DMA確認(rèn)信號(hào)123八 次,并在T042中取消斷言DMA讀取請(qǐng)求信號(hào)122。在T042中,消息存儲(chǔ)單元101存儲(chǔ)塊Al。 響應(yīng)于DMA讀取請(qǐng)求信號(hào)122的取消斷言,塊計(jì)數(shù)器137將其計(jì)數(shù)器值BC向上計(jì)數(shù)到2。
在從T029到T105的區(qū)間期間,哈希值計(jì)算電路100執(zhí)行SHA-1的步驟2到步驟 79的處理。在該區(qū)間期間,步驟計(jì)數(shù)器138將計(jì)數(shù)器值SC從3向上計(jì)數(shù)到80。結(jié)果,在 T106中,內(nèi)部狀態(tài)值存儲(chǔ)單元106存儲(chǔ)內(nèi)部狀態(tài)值SA0_79作為SHA-1的步驟79的處理結(jié) 果。 由于在T105之前計(jì)數(shù)了預(yù)定80個(gè)步驟,因此在T106中步驟計(jì)數(shù)器138將計(jì)數(shù)器 值SC清空為0。 在T106中,哈希值計(jì)算控制器113響應(yīng)于以下內(nèi)容,來斷言哈希初始值選擇信號(hào) Y 128 :
*在寄存器116的"處理繼續(xù)"區(qū)域中設(shè)置"使用內(nèi)部狀態(tài)值的初始值"的標(biāo)志;以 及 在T105中,步驟計(jì)數(shù)器138的計(jì)數(shù)器值SC = 80。 在T106中,選擇器108響應(yīng)于哈希初始值選擇信號(hào)Y 128的斷言,輸出作為其自 身的輸入的哈希初始值126和哈希中間值119中的哈希初始值126。 在T106中,加法處理器107輸入內(nèi)部狀態(tài)值134(SA0—79)和哈希初始值126,并計(jì) 算哈希中間值HAO。 在T106中,由于寄存器116的"消息標(biāo)識(shí)符"區(qū)域指示"處理消息A",因此哈希值 計(jì)算控制器113斷言哈希中間值A(chǔ)加載信號(hào)129。此外,哈希值計(jì)算控制器113斷言塊加載 信號(hào)124。 哈希中間值存儲(chǔ)單元A 109檢測(cè)哈希中間值A(chǔ)加載信號(hào)129的斷言,并在T107中 存儲(chǔ)哈希中間值HAO。在T107中,由于寄存器116的"消息標(biāo)識(shí)符"區(qū)域指示"處理消息A", 因此哈希值計(jì)算控制器113斷言消息A選擇信號(hào)131。接著,選擇器111將來自哈希中間值 存儲(chǔ)單元A 109的輸出和來自哈希中間值存儲(chǔ)單元B IIO的輸出中的來自哈希中間值存儲(chǔ) 單元A 109的輸出(HAO)輸出到哈希值輸出單元114。 擴(kuò)展消息存儲(chǔ)單元102檢測(cè)塊加載信號(hào)124的斷言,并在T107中加載存儲(chǔ)在消息 存儲(chǔ)單元101中的塊A1。此時(shí),擴(kuò)展消息存儲(chǔ)單元102通過將塊A1分割為16個(gè)32位的數(shù) 據(jù)EA1_W00到EA1_W15來存儲(chǔ)塊Al。哈希值計(jì)算控制器113響應(yīng)于擴(kuò)展消息存儲(chǔ)單元102 對(duì)存儲(chǔ)在消息存儲(chǔ)單元101中的數(shù)據(jù)的存儲(chǔ),斷言DMA讀取請(qǐng)求信號(hào)122以讀取下一個(gè)塊 的數(shù)據(jù)。 在T107中,哈希值計(jì)算控制器113響應(yīng)于塊AO的哈希值計(jì)算的完成,取消斷言哈 希初始值選擇信號(hào)Y 128。 在T107中,步驟計(jì)數(shù)器138響應(yīng)于塊加載信號(hào)124的斷言,開始將其計(jì)數(shù)器值SC 向上計(jì)數(shù)到1。 在T107中,消息擴(kuò)展處理器103輸入存儲(chǔ)在擴(kuò)展消息存儲(chǔ)單元102中的擴(kuò)展消息 133 (EA1_W00到EA1_W15),并計(jì)算32位的數(shù)據(jù)EA1_W16。 由于正在進(jìn)行塊A1的處理,因此在T107中哈希值計(jì)算控制器113不斷言哈希初 始值選擇信號(hào)X 127。 在T107中,選擇器112響應(yīng)于哈希初始值選擇信號(hào)X 127的取消斷言,輸出作為 其自身的輸入的哈希中間值119和哈希初始值126中的哈希中間值119(HA0)。此外,選擇 器105響應(yīng)于哈希中間值選擇信號(hào)125的斷言,輸出作為其自身的輸入的來自選擇器112 的輸出和內(nèi)部狀態(tài)值134中的來自選擇器112的輸出。結(jié)果,選擇器105輸出哈希中間值 119(廳)。 在T107中,分步處理器104輸入存儲(chǔ)在擴(kuò)展消息存儲(chǔ)單元102中的數(shù)據(jù)EA1— WOO和哈希中間值119(HA0),并通過對(duì)它們應(yīng)用SHA-1的步驟0的處理來計(jì)算內(nèi)部狀態(tài)值 SAIJ)O。 之后,與從T027到T041的塊A1的DMA傳輸相同,從T108到T122,DMA傳輸塊A2。 在T123中,哈希值計(jì)算控制器113取消斷言針對(duì)塊Al的DMA讀取請(qǐng)求信號(hào)122。響應(yīng)于 DMA讀取請(qǐng)求信號(hào)122的取消斷言,塊計(jì)數(shù)器137將其計(jì)數(shù)器值BC向上計(jì)數(shù)到3。與從T027
17到T105的針對(duì)塊AO的SHA-1的步驟1到步驟79的處理相同,從T108到T186,對(duì)塊Al應(yīng) 用SHA-1的步驟1到步驟79的處理。在該區(qū)間期間,步驟計(jì)數(shù)器138將計(jì)數(shù)器值SC從2 向上計(jì)數(shù)到80。結(jié)果,在T187中,內(nèi)部狀態(tài)值存儲(chǔ)單元106存儲(chǔ)內(nèi)部狀態(tài)值SA1_79作為 SHA-1的步驟79的處理結(jié)果。 在T187中,由于正在進(jìn)行塊A1的處理,因此哈希值計(jì)算控制器113不斷言哈希初 始值選擇信號(hào)Y 128。 在T187中,選擇器108響應(yīng)于哈希初始值選擇信號(hào)Y 128的取消斷言,輸出作為 其自身的輸入的哈希初始值126和哈希中間值119(HA0)中的哈希中間值119(HA0)。
在T187中,加法處理器107輸入內(nèi)部狀態(tài)值134(SA1_79)和哈希中間值 119 (HAO),并計(jì)算哈希中間值HA1 。 在T187中,由于寄存器116的"消息標(biāo)識(shí)符"區(qū)域指示"處理消息A",因此哈希值 計(jì)算控制器113斷言哈希中間值A(chǔ)加載信號(hào)129。哈希中間值存儲(chǔ)單元A 109檢測(cè)哈希中 間值A(chǔ)加載信號(hào)129的斷言,并在T188中存儲(chǔ)哈希中間值HA1。在這種情況下,由于寄存器 116的"消息標(biāo)識(shí)符"區(qū)域指示"處理消息A",因此哈希值計(jì)算控制器113斷言消息A選擇 信號(hào)131 。接著,選擇器111將來自哈希中間值存儲(chǔ)單元A 109的輸出和來自哈希中間值存 儲(chǔ)單元B IIO的輸出中的來自哈希中間值存儲(chǔ)單元A 109的輸出(HA1)輸出到哈希值輸出 單元114。 之后,響應(yīng)于寄存器116的"消息標(biāo)識(shí)符"區(qū)域指示"處理消息A"并且"塊的數(shù)量" 區(qū)域指示"針對(duì)53個(gè)塊進(jìn)行處理",DMA傳輸塊A3到A52。此外,針對(duì)塊A2到A52執(zhí)行哈希 值計(jì)算。(以塊為單位的操作) 圖IIA和圖IIB(以下總稱為圖11)是示出根據(jù)本實(shí)施例的針對(duì)各個(gè)塊的哈希值 計(jì)算的操作的時(shí)序圖。注意,TBXXX代表針對(duì)81個(gè)時(shí)間段T的時(shí)間段,每個(gè)時(shí)間段用作塊 處理的基本單位。上述T026到T106與TBO對(duì)應(yīng),T107到T187與TBI對(duì)應(yīng)。但是,與執(zhí)行 針對(duì)各消息的哈希值計(jì)算的完成時(shí)的DMA寫傳輸和下一個(gè)消息的最初的塊的DMA讀傳輸?shù)?時(shí)間段對(duì)應(yīng)的TB53和TB58中的各個(gè)與針對(duì)26個(gè)時(shí)間段T的時(shí)間段對(duì)應(yīng)。AO (t)表示輸入 消息AO_WOO至A0—W15,EA0(t)表示擴(kuò)展消息EAO_WOO到EA0_W79, SAO (t)表示內(nèi)部狀態(tài)值 SA0J)0到SA0—79。注意,t代表步驟的數(shù)量,XX(t)的值根據(jù)步驟的數(shù)量t而變化。
以下將描述各個(gè)塊處理時(shí)間段的各個(gè)單元的操作。注意,還將描述一些分步處理 時(shí)間段的詳細(xì)操作。 如上所述,在TBO中,DMAC 203將塊Al從存儲(chǔ)器202 DMA傳輸?shù)焦V涤?jì)算電路 100。在塊A1的DMA傳輸完成時(shí),塊計(jì)數(shù)器137將其計(jì)數(shù)器值BC向上計(jì)數(shù)到2。在TBl中, DMAC 203將塊A2從存儲(chǔ)器202DMA傳輸?shù)焦V涤?jì)算電路100。在塊A2的DMA傳輸完成 時(shí),塊計(jì)數(shù)器137將其計(jì)數(shù)器值BC向上計(jì)數(shù)到3。 如上所述,在TBO中,哈希值計(jì)算電路100輸入塊AO作為消息A的第一個(gè)塊,并計(jì) 算擴(kuò)展消息EAO(t)和內(nèi)部狀態(tài)值SAO(t)。在更新SA(t)的分步處理中,針對(duì)各步驟t使用 第t個(gè)擴(kuò)展消息和第(t-1)個(gè)內(nèi)部狀態(tài)值來更新內(nèi)部狀態(tài)值,并在步驟79中計(jì)算內(nèi)部狀態(tài) 值SA0_79。最終,將內(nèi)部狀態(tài)值SA0_79與哈希初始值相加,以計(jì)算哈希中間值HAO。在TBI 中,哈希中間值存儲(chǔ)單元A 109存儲(chǔ)哈希中間值HA0。哈希值計(jì)算電路100輸入塊A1,計(jì)算擴(kuò)展消息EAl(t)和內(nèi)部狀態(tài)值SAl(t),并在步驟79中計(jì)算內(nèi)部狀態(tài)值SA1—79。最終,將 內(nèi)部狀態(tài)值SA1—79與哈希中間值HA0相加,以計(jì)算哈希中間值HA1。 之后,在TB2到TB51中,DMAC 203將塊A3到A52從存儲(chǔ)器202DMA傳輸?shù)焦V?計(jì)算電路100。此時(shí),將塊計(jì)數(shù)器137的值從4向上計(jì)數(shù)到53。在TB2到TB52中,哈希值計(jì) 算電路100執(zhí)行塊A2到A52的哈希值計(jì)算。結(jié)果,在TB53中,哈希中間值存儲(chǔ)單元A 109 保持哈希中間值HA52,并且哈希值輸出單元114輸出哈希中間值HA52。
在這種情況下,滿足存儲(chǔ)在寄存器116的"消息標(biāo)識(shí)符"區(qū)域和"塊的數(shù)量"區(qū)域中 的"處理消息A"和"針對(duì)53個(gè)塊進(jìn)行處理"的要求。因此,在TB53中,哈希值計(jì)算控制器 113清除存儲(chǔ)在寄存器116的"作業(yè)開始"區(qū)域中的"開始哈希值計(jì)算"的標(biāo)志和存儲(chǔ)在"處 理繼續(xù)"區(qū)域中的"使用內(nèi)部狀態(tài)值的初始值"的標(biāo)志。此外,在TB53中,哈希值計(jì)算控制 器113將DMA寫入請(qǐng)求信號(hào)122斷言到DMAC 203。 DMAC 203返回DMA寫入確認(rèn)信號(hào)123, 并將從哈希值輸出單元114輸出的哈希中間值HA52傳輸?shù)酱鎯?chǔ)器202。哈希值計(jì)算控制器 113對(duì)DMAC 203斷言DMA寫入確認(rèn)信號(hào)123的次數(shù)進(jìn)行計(jì)數(shù)。哈希值計(jì)算控制器113確認(rèn) DMAC 203斷言了 DMA寫入確認(rèn)信號(hào)123三次,并取消斷言DMA寫入請(qǐng)求信號(hào)122。
在TB53中,DMAC 203檢測(cè)來自哈希值計(jì)算電路100的DMA寫入請(qǐng)求信號(hào)122的 取消斷言,并斷言中斷信號(hào)206,以將中斷通知給中斷控制器204。中斷控制器204使用中 斷信號(hào)(未示出)將哈希中間值HA52在存儲(chǔ)器202中的存儲(chǔ)通知給CPU 201。
在TB53中,CPU 201根據(jù)來自DMAC 203的中斷,檢測(cè)到"從消息的頭開始""針對(duì) 53個(gè)塊"對(duì)"消息A"的處理完成。接著,CPU 201經(jīng)由總線205和總線信號(hào)117設(shè)置寄存 器116。在這種情況下,CPU 201在圖4所示的寄存器116的"作業(yè)開始"區(qū)域中設(shè)置"開始 哈希值計(jì)算"的標(biāo)志,還在"處理繼續(xù)"區(qū)域中設(shè)置"使用內(nèi)部狀態(tài)值的初始值"的標(biāo)志。另 外,CPU 201在"消息標(biāo)識(shí)符"區(qū)域中設(shè)置"處理消息B"的標(biāo)志,在"塊的數(shù)量"區(qū)域中設(shè)置 "針對(duì)4個(gè)塊進(jìn)行處理"的標(biāo)志,并且在"哈希初始值"區(qū)域中設(shè)置"SHA-1算法的初始值"。
響應(yīng)于在寄存器116的"作業(yè)開始"區(qū)域中設(shè)置的"開始哈希值計(jì)算"的標(biāo)志,在 TB53中哈希值計(jì)算控制器113將DMA讀取請(qǐng)求信號(hào)122斷言到DMAC 203,以讀取數(shù)據(jù)。 DMAC 203返回DMA讀取確認(rèn)信號(hào)123,并將消息B的第一個(gè)塊BO DMA傳輸?shù)焦V涤?jì)算電 路100。接著,消息存儲(chǔ)單元101存儲(chǔ)塊BO。塊計(jì)數(shù)器137將其計(jì)數(shù)器值BC向上計(jì)數(shù)到1。
在TB54中,DMA傳輸塊Bl,并針對(duì)塊BO執(zhí)行哈希值計(jì)算。以下將描述詳細(xì)情況。
在T4344中,哈希值計(jì)算控制器113斷言塊加載信號(hào)124。在T4345中,擴(kuò)展消息 存儲(chǔ)單元102檢測(cè)塊加載信號(hào)124的斷言,并加載存儲(chǔ)在消息存儲(chǔ)單元101中的塊BO。此 時(shí),擴(kuò)展消息存儲(chǔ)單元102通過將塊BO分割為16個(gè)32位的數(shù)據(jù)EBO_WOO到EB0_W15來存 儲(chǔ)塊BO。步驟計(jì)數(shù)器138開始將其計(jì)數(shù)器值SC向上計(jì)數(shù)到1。哈希值計(jì)算控制器113響 應(yīng)于擴(kuò)展消息存儲(chǔ)單元102對(duì)存儲(chǔ)在消息存儲(chǔ)單元101中的數(shù)據(jù)的存儲(chǔ),斷言DMA讀取請(qǐng) 求信號(hào)122,以讀取下一個(gè)塊的數(shù)據(jù)。 在T4345中,消息擴(kuò)展處理器103輸入存儲(chǔ)在擴(kuò)展消息存儲(chǔ)單元102中的擴(kuò)展消 息133 (EBO_WOO到EB0_W15),并計(jì)算32位的數(shù)據(jù)EB0_W16。 在T4345中,哈希值計(jì)算控制器113響應(yīng)于以下內(nèi)容,斷言哈希初始值選擇信號(hào)X 127和哈希中間值選擇信號(hào)125 :,在寄存器116的"處理繼續(xù)"區(qū)域中設(shè)置的"使用內(nèi)部狀態(tài)值的初始值"的標(biāo)志;
19和 步驟計(jì)數(shù)器138的計(jì)數(shù)器值SC = 1 。 在T4345中,選擇器112響應(yīng)于哈希初始值選擇信號(hào)X 127的斷言,輸出作為其自 身的輸入的哈希中間值119和哈希初始值126中的哈希初始值126。此外,選擇器105響應(yīng) 于哈希中間值選擇信號(hào)125的斷言,輸出作為其自身的輸入的來自選擇器112的輸出和內(nèi) 部狀態(tài)值134中的來自選擇器112的輸出。結(jié)果,選擇器105輸出哈希初始值126。
在T4345中,分步處理器104輸入存儲(chǔ)在擴(kuò)展消息存儲(chǔ)單元102中的數(shù)據(jù)EB0_W00 和哈希初始值126,并通過對(duì)它們應(yīng)用SHA-1的步驟0的處理來計(jì)算內(nèi)部狀態(tài)值SB0_00。
在T4346中,步驟計(jì)數(shù)器138將其計(jì)數(shù)器值SC向上計(jì)數(shù)到2。
在T4346中,擴(kuò)展消息存儲(chǔ)單元102存儲(chǔ)數(shù)據(jù)EB0_W01到EB0_W15,和消息擴(kuò)展處 理器103計(jì)算的數(shù)據(jù)EB0_W16。 在T4346中,內(nèi)部狀態(tài)值存儲(chǔ)單元106存儲(chǔ)內(nèi)部狀態(tài)值SB0_00 。 在T4346中,消息擴(kuò)展處理器103輸入存儲(chǔ)在擴(kuò)展消息存儲(chǔ)單元102中的擴(kuò)展消
息133 (EB0_W01到EB0_W16),并計(jì)算32位的數(shù)據(jù)EB0_W17。 在T4346中,哈希值計(jì)算控制器113響應(yīng)于步驟計(jì)數(shù)器138的計(jì)數(shù)器值SC^ l,取 消斷言哈希初始值選擇信號(hào)X 127和哈希中間值選擇信號(hào)125。 在T4346中,選擇器105響應(yīng)于哈希中間值選擇信號(hào)125的取消斷言,輸出作為其 自身的輸入的來自選擇器112的輸出和內(nèi)部狀態(tài)值134中的內(nèi)部狀態(tài)值134。結(jié)果,選擇器 105輸出內(nèi)部狀態(tài)值SB0_00。 在T4346中,分步處理器104輸入擴(kuò)展消息EB0_W01和內(nèi)部狀態(tài)值SB0_00,并通 過對(duì)它們應(yīng)用SHA-1的步驟1的處理來計(jì)算內(nèi)部狀態(tài)值SBOJ)l。接著,哈希值計(jì)算控制器 113將步驟計(jì)數(shù)器138向上計(jì)數(shù)。此時(shí),步驟計(jì)數(shù)器138的值為2。 在T4346中,DMAC 203返回DMA讀取確認(rèn)信號(hào)123,并將64位的數(shù)據(jù)B1_W00_W01 從存儲(chǔ)器202傳輸?shù)焦V涤?jì)算電路100。 在T4347中,步驟計(jì)數(shù)器138將其計(jì)數(shù)器值SC向上計(jì)數(shù)到3。 在T4347中,擴(kuò)展消息存儲(chǔ)單元102存儲(chǔ)數(shù)據(jù)EB0_W02到EB0_W16和消息擴(kuò)展處
理器103計(jì)算的數(shù)據(jù)EB0_W17。 在T4347中,內(nèi)部狀態(tài)值存儲(chǔ)單元106存儲(chǔ)內(nèi)部狀態(tài)值SB0_01。 在T4347中,消息擴(kuò)展處理器103輸入存儲(chǔ)在擴(kuò)展消息存儲(chǔ)單元102中的擴(kuò)展消
息133 (EB0_W02到EB0_W17),并計(jì)算32位的數(shù)據(jù)EB0_W18。 在T4347中,選擇器105響應(yīng)于哈希中間值選擇信號(hào)125的取消斷言,輸出作為其 自身的輸入的來自選擇器112的輸出和內(nèi)部狀態(tài)值134中的內(nèi)部狀態(tài)值134。結(jié)果,選擇器 105輸出內(nèi)部狀態(tài)值SB0_01。 在T4347中,分步處理器104輸入擴(kuò)展消息EB0—W02和內(nèi)部狀態(tài)值SB0J)1,并通過 對(duì)它們應(yīng)用SHA-1的步驟2的處理來計(jì)算內(nèi)部狀態(tài)值SB0_02。 在T4347中,消息存儲(chǔ)單元101存儲(chǔ)DMAC 203 DMA傳輸?shù)?4位的數(shù)據(jù)Bl_ WOO-WOl。 之后,從T4348到T4360, DMAC 203連續(xù)執(zhí)行塊Bl的從存儲(chǔ)器202到哈希值計(jì)算 電路100的DMA傳輸。在該區(qū)間期間,哈希值計(jì)算控制器113對(duì)DMAC 203斷言DMA讀取確認(rèn)信號(hào)123的次數(shù)進(jìn)行計(jì)數(shù)。在哈希值計(jì)算控制器113確認(rèn)DMAC 203斷言了 DMA確認(rèn)信 號(hào)123八次后,其取消斷言DMA讀取請(qǐng)求信號(hào)122。接著,消息存儲(chǔ)單元101存儲(chǔ)塊Bl。塊 計(jì)數(shù)器137將其計(jì)數(shù)器值BC向上計(jì)數(shù)到2。 從T4348到T4424,哈希值計(jì)算電路100執(zhí)行SHA-1的步驟3到步驟79的處理。 在該區(qū)間期間,步驟計(jì)數(shù)器138在各個(gè)分步處理的開始從4向上計(jì)數(shù)到80。結(jié)果,在T4425 中,內(nèi)部狀態(tài)值存儲(chǔ)單元106存儲(chǔ)內(nèi)部狀態(tài)值SB0_79作為SHA-1的步驟79的處理結(jié)果。
在T4425中,哈希值計(jì)算控制器113響應(yīng)于以下內(nèi)容,斷言哈希初始值選擇信號(hào)Y 128 : *在寄存器116的"處理繼續(xù)"區(qū)域中設(shè)置的"使用內(nèi)部狀態(tài)值的初始值"的標(biāo)志; 和 在T4424中,步驟計(jì)數(shù)器138的計(jì)數(shù)器值SC = 80。 在T4425中,選擇器108響應(yīng)于哈希初始值選擇信號(hào)Y 128的斷言,輸出作為其自 身的輸入的哈希初始值126和哈希中間值119中的哈希初始值126。 在T4425中,加法處理器107輸入內(nèi)部狀態(tài)值134(SB0_79)和哈希初始值126,并 計(jì)算哈希中間值HBO。 在T4425中,由于寄存器116的"消息標(biāo)識(shí)符"區(qū)域指示"處理消息B",因此哈希值 計(jì)算控制器113斷言哈希中間值B加載信號(hào)130。哈希值計(jì)算控制器113還斷言塊加載信 號(hào)124。在TB55時(shí)間段期間的T4426中,哈希中間值存儲(chǔ)單元B 110存儲(chǔ)哈希中間值HBO。 此外,由于寄存器116的"消息標(biāo)識(shí)符"區(qū)域指示"處理消息B",因此哈希值計(jì)算控制器113 不斷言消息A選擇信號(hào)131。接著,選擇器111將來自哈希中間值存儲(chǔ)單元A 109的輸出和 來自哈希中間值存儲(chǔ)單元B 110的輸出中的來自哈希中間值存儲(chǔ)單元B 110的輸出(HBO) 輸出到哈希值輸出單元114。 在T4426中,擴(kuò)展消息存儲(chǔ)單元102檢測(cè)塊加載信號(hào)124的斷言,并加載存儲(chǔ)在消 息存儲(chǔ)單元101中的塊B1。此時(shí),擴(kuò)展消息存儲(chǔ)單元102通過將塊B1分割為16個(gè)32位的 數(shù)據(jù)EB1_W00到EB1_W15來存儲(chǔ)塊Bl。哈希值計(jì)算控制器113響應(yīng)于擴(kuò)展消息存儲(chǔ)單元 102對(duì)存儲(chǔ)在消息存儲(chǔ)單元101中的數(shù)據(jù)的存儲(chǔ),斷言DMA讀取請(qǐng)求信號(hào)122,以讀取下一 個(gè)塊的數(shù)據(jù)。 在T4426中,哈希值計(jì)算控制器113響應(yīng)于塊BO的哈希值計(jì)算的完成,取消斷言 哈希初始值選擇信號(hào)Y 128。 如上所述,在TB55中,哈希中間值存儲(chǔ)單元A 109存儲(chǔ)哈希中間值HA52,并且哈希 中間值存儲(chǔ)單元B IIO存儲(chǔ)哈希中間值HBO。 使用在TB55中存儲(chǔ)在哈希中間值存儲(chǔ)單元B 110中的哈希中間值HBO來進(jìn)行針 對(duì)塊B1的哈希值計(jì)算。 之后,在TB55和TB56中,DMAC 203將±央B2和B3從存儲(chǔ)器202DMA傳輸?shù)焦V?計(jì)算電路100。此時(shí),塊計(jì)數(shù)器137將計(jì)數(shù)器值BC從3向上計(jì)數(shù)到4。在TB55到TB57中, 哈希值計(jì)算電路100執(zhí)行針對(duì)塊Bl到B3的哈希值計(jì)算。在該區(qū)間期間,由于寄存器116 的"消息標(biāo)識(shí)符"區(qū)域指示"處理消息B",因此哈希值計(jì)算控制器113不斷言哈希中間值A(chǔ) 加載信號(hào)129,而根據(jù)需要斷言哈希中間值B加載信號(hào)130。由于該原因,哈希中間值存儲(chǔ) 單元A 109不存儲(chǔ)消息B的任何哈希中間值,而哈希中間值存儲(chǔ)單元B 110存儲(chǔ)消息B的哈希中間值。由于寄存器116的"消息標(biāo)識(shí)符"區(qū)域指示"處理消息B",因此哈希值計(jì)算控 制器113不斷言消息A選擇信號(hào)131。由于該原因,選擇器lll輸出來自哈希中間值存儲(chǔ)單 元A 109的輸出和來自哈希中間值存儲(chǔ)單元B 110的輸出中的來自哈希中間值存儲(chǔ)單元B 110的輸出。其它處理與針對(duì)塊A1到A3的處理相同。 結(jié)果,在TB55到TB57中,計(jì)算哈希中間值HB1到HB3。在TB58中,哈希中間值存 儲(chǔ)單元A 109存儲(chǔ)針對(duì)消息A的塊AO到A52的哈希中間值HA52,并且哈希中間值存儲(chǔ)單 元B 110存儲(chǔ)針對(duì)消息B的塊B0到B3的哈希中間值HB3。如圖5所示,由于消息B包括塊 BO到B3,因此輸出哈希中間值HB3作為消息B的哈希值HB。在TB58中,由于寄存器116的 "消息標(biāo)識(shí)符"區(qū)域指示"處理消息B",因此哈希值計(jì)算控制器113不斷言消息A選擇信號(hào) 131。由于該原因,選擇器111將作為其自身的輸入的來自哈希中間值存儲(chǔ)單元A 109的輸 出(HA52)和來自哈希中間值存儲(chǔ)單元B 110的輸出(HB)中的來自哈希中間值存儲(chǔ)單元B 110的輸出(HB)輸出到哈希值輸出單元114。 在這種狀態(tài)下,滿足存儲(chǔ)在寄存器116的"消息標(biāo)識(shí)符"和"塊的數(shù)量"區(qū)域中的 "處理消息B"和"針對(duì)4個(gè)塊進(jìn)行處理"的要求。接著,在TB58中,哈希值計(jì)算控制器113 清除存儲(chǔ)在寄存器116的"作業(yè)開始"區(qū)域中的"開始哈希值計(jì)算"的標(biāo)志和存儲(chǔ)在"處理 繼續(xù)"區(qū)域中的"使用內(nèi)部狀態(tài)值的初始值"的標(biāo)志。此外,在TB58中,哈希值計(jì)算控制器 113將DMA寫入請(qǐng)求信號(hào)122斷言到DMAC 203。 DMAC 203返回DMA寫入確認(rèn)信號(hào)123,并將 來自哈希值輸出單元114的哈希值HB傳輸?shù)酱鎯?chǔ)器202。哈希值計(jì)算控制器113對(duì)DMAC 203斷言DMA寫入確認(rèn)信號(hào)123的次數(shù)進(jìn)行計(jì)數(shù)。哈希值計(jì)算控制器113確認(rèn)DMAC 203斷 言了 DMA寫入確認(rèn)信號(hào)123三次,并取消斷言DMA寫入請(qǐng)求信號(hào)122。 在TB58中,DMAC 203檢測(cè)哈希值計(jì)算電路100對(duì)DMA寫入請(qǐng)求信號(hào)122的取消 斷言,斷言中斷信號(hào)206,并將中斷通知給中斷控制器204。接著,中斷控制器204使用中斷 信號(hào)(未示出)將哈希值HB在存儲(chǔ)器202中的存儲(chǔ)通知給CPU 201。 在TB58中,CPU 201根據(jù)來自DMAC 203的中斷,檢測(cè)到"使用內(nèi)部狀態(tài)值的初始 值""針對(duì)4個(gè)塊"對(duì)"消息B"對(duì)處理完成。接著,CPU201經(jīng)由總線205和總線信號(hào)117設(shè) 置寄存器116。在這種情況下,CPU 201在圖4所示的寄存器116的"作業(yè)開始"區(qū)域中設(shè) 置"開始哈希值計(jì)算"的標(biāo)志,并且在"處理繼續(xù)"區(qū)域中設(shè)置"使用哈希中間值"的標(biāo)志。 另外,CPU 201在"消息標(biāo)識(shí)符"區(qū)域中設(shè)置"處理消息A"的標(biāo)志,并且在"塊的數(shù)量"區(qū)域 中設(shè)置"針對(duì)43個(gè)塊進(jìn)行處理"的標(biāo)志。此時(shí),哈希值計(jì)算控制器113將塊計(jì)數(shù)器137清 零。 響應(yīng)于在寄存器116的"作業(yè)開始"區(qū)域中設(shè)置的"開始哈希值計(jì)算"的標(biāo)志,在 TB58中,哈希值計(jì)算控制器113將DMA讀取請(qǐng)求信號(hào)122斷言到DMAC 203,以讀取數(shù)據(jù)。 DMAC 203返回DMA讀取確認(rèn)信號(hào)123,并將消息A的塊A53 DMA傳輸?shù)焦V涤?jì)算電路100。 消息存儲(chǔ)單元101存儲(chǔ)塊A53。接著,塊計(jì)數(shù)器137將其計(jì)數(shù)器值BC向上計(jì)數(shù)到1。
在TB59中,DMA傳輸塊A54,并針對(duì)塊A53執(zhí)行哈希值計(jì)算。以下將描述詳細(xì)情 況。 在T4694中,哈希值計(jì)算控制器113斷言塊加載信號(hào)124。在T4695中,擴(kuò)展消息 存儲(chǔ)單元102檢測(cè)塊加載信號(hào)124的斷言,并加載存儲(chǔ)在消息存儲(chǔ)單元101中的塊A53。此 時(shí),擴(kuò)展消息存儲(chǔ)單元102通過將塊A53分割為16個(gè)32位的數(shù)據(jù)EA53_W00到EA53_W15
22來存儲(chǔ)塊A53。哈希值計(jì)算控制器113響應(yīng)于擴(kuò)展消息存儲(chǔ)單元102對(duì)存儲(chǔ)在消息存儲(chǔ)單
元101中的數(shù)據(jù)的存儲(chǔ),斷言DMA讀取請(qǐng)求信號(hào)122,以讀取下一個(gè)塊的數(shù)據(jù)。 在T4695中,步驟計(jì)數(shù)器138將其計(jì)數(shù)器值SC向上計(jì)數(shù)到1。 在T4695中,消息擴(kuò)展處理器103輸入存儲(chǔ)在擴(kuò)展消息存儲(chǔ)單元102中的擴(kuò)展消
息133 (EA53_W00到EA53_W15),并計(jì)算32位的數(shù)據(jù)EA53_W16。 哈希值計(jì)算控制器113響應(yīng)于在寄存器116的"處理繼續(xù)"區(qū)域中設(shè)置的"使用哈 希中間值"的標(biāo)志,取消斷言哈希初始值選擇信號(hào)X 127。 在T4695中,由于寄存器116的"消息標(biāo)識(shí)符"區(qū)域指示"處理消息A",因此哈希 值計(jì)算控制器113斷言消息A選擇信號(hào)131。由此,選擇器lll輸出作為其自身的輸入的 來自哈希中間值存儲(chǔ)單元A 109的輸出(HA52)和來自哈希中間值存儲(chǔ)單元B 110的輸出 (HB)中的來自哈希中間值存儲(chǔ)單元A 109的輸出(HA52)。選擇器112響應(yīng)于哈希初始值 選擇信號(hào)X 127的取消斷言,輸出作為其自身的輸入的哈希中間值119(HA52)和哈希初始 值126中的哈希中間值119(HA52)。選擇器105響應(yīng)于哈希中間值選擇信號(hào)125的斷言,輸 出作為其自身的輸入的來自選擇器112的輸出和內(nèi)部狀態(tài)值134中的來自選擇器112的輸 出。結(jié)果,選擇器105輸出哈希中間值119(HA52)。 在T4695中,分步處理器104輸入存儲(chǔ)在擴(kuò)展消息存儲(chǔ)單元102中的數(shù)據(jù)EA53_ WOO和哈希中間值HA52,并通過對(duì)它們應(yīng)用SHA-1的步驟0的處理來計(jì)算內(nèi)部狀態(tài)值 SA53_00。 在T4696中,步驟計(jì)數(shù)器138將其計(jì)數(shù)器值SC向上計(jì)數(shù)到2。 在T4696中,擴(kuò)展消息存儲(chǔ)單元102存儲(chǔ)數(shù)據(jù)EA53_W01到EA53_W15,和消息擴(kuò)展
處理器103計(jì)算的數(shù)據(jù)EA53_W16。 在T4696中,內(nèi)部狀態(tài)值存儲(chǔ)單元106存儲(chǔ)內(nèi)部狀態(tài)值SA53_00 。 在T4696中,消息擴(kuò)展處理器103輸入存儲(chǔ)在擴(kuò)展消息存儲(chǔ)單元102中的擴(kuò)展消
息133 (EA53_W01到EA53_W16),并計(jì)算32位的數(shù)據(jù)EA53_W17。 在T4696中,由于正在進(jìn)行SHA_1的步驟1的處理,因此哈希值計(jì)算控制器113取 消斷言哈希初始值選擇信號(hào)X 127。 在T4696中,選擇器105響應(yīng)于哈希中間值選擇信號(hào)125的取消斷言,輸出作為其 自身的輸入的來自選擇器112的輸出和內(nèi)部狀態(tài)值134中的內(nèi)部狀態(tài)值134。結(jié)果,選擇器 105輸出內(nèi)部狀態(tài)值SA53_00。 在T4696中,分步處理器104輸入擴(kuò)展消息EA53_W01和內(nèi)部狀態(tài)值SA53_00,并通 過對(duì)它們應(yīng)用SHA-1的步驟1的處理來計(jì)算內(nèi)部狀態(tài)值SA53_01。 在T4696中,DMAC 203返回DMA讀取確認(rèn)信號(hào)123,并將64位的數(shù)據(jù)A54_W00_W01 從存儲(chǔ)器202傳輸?shù)焦V涤?jì)算電路100。在T4697中,步驟計(jì)數(shù)器138將其計(jì)數(shù)器值SC 向上計(jì)數(shù)到3。 在T4697中,擴(kuò)展消息存儲(chǔ)單元102存儲(chǔ)數(shù)據(jù)EA53_W02到EA53_W16和消息擴(kuò)展 處理器103計(jì)算的數(shù)據(jù)EA53_W17。 在T4697中,內(nèi)部狀態(tài)值存儲(chǔ)單元106存儲(chǔ)內(nèi)部狀態(tài)值SA53_01。 在T4697中,消息擴(kuò)展處理器103輸入存儲(chǔ)在擴(kuò)展消息存儲(chǔ)單元102中的擴(kuò)展消
息133 (EA53_W02到EA53_W17),并計(jì)算32位的數(shù)據(jù)EA53_W18。
在T4697中,選擇器105響應(yīng)于哈希中間值選擇信號(hào)125的取消斷言,輸出作為其 自身的輸入的來自選擇器112的輸出和內(nèi)部狀態(tài)值134中的內(nèi)部狀態(tài)值134。結(jié)果,選擇器 105輸出內(nèi)部狀態(tài)值SA53_01。 在T4697中,分步處理器104輸入擴(kuò)展消息EA53—W02和內(nèi)部狀態(tài)值SA53J)1,并通 過對(duì)它們應(yīng)用SHA-1的步驟2的處理來計(jì)算內(nèi)部狀態(tài)值SA53_02。
在T4697中,消息存儲(chǔ)單元101存儲(chǔ)64位的數(shù)據(jù)A54_W00_W01。
之后,從T4698到T4710, DMAC 203連續(xù)執(zhí)行塊A54的從存儲(chǔ)器202到哈希值計(jì)算 電路100的DMA傳輸。在該區(qū)間期間,哈希值計(jì)算控制器113對(duì)DMAC 203斷言DMA讀取確 認(rèn)信號(hào)123的次數(shù)進(jìn)行計(jì)數(shù)。在T4711中,在哈希值計(jì)算控制器113確認(rèn)DMAC 203斷言了 DMA確認(rèn)信號(hào)123八次后,其取消斷言DMA讀取請(qǐng)求信號(hào)122。接著,消息存儲(chǔ)單元101存 儲(chǔ)塊A54。塊計(jì)數(shù)器137將其計(jì)數(shù)器值BC向上計(jì)數(shù)到2。 從T4697到T4774,哈希值計(jì)算電路100執(zhí)行SHA-1的步驟2到步驟79的處理。 在該區(qū)間期間,在各個(gè)分步處理開始時(shí),步驟計(jì)數(shù)器138將其計(jì)數(shù)器值SC從3向上計(jì)數(shù)到 80。結(jié)果,在T4775中,內(nèi)部狀態(tài)值存儲(chǔ)單元106存儲(chǔ)內(nèi)部狀態(tài)值SA53_79作為SHA-1的步 驟79的處理結(jié)果。 在T4775中,哈希值計(jì)算控制器113響應(yīng)于在寄存器116的"處理繼續(xù)"區(qū)域中設(shè)
置的"使用哈希中間值"的標(biāo)志,取消斷言哈希初始值選擇信號(hào)Y 128。 在T4775中,選擇器108響應(yīng)于哈希初始值選擇信號(hào)Y 128的取消斷言,輸出作為
其自身的輸入的哈希初始值126和哈希中間值119中的哈希中間值119。 在T4775中,加法處理器107輸入內(nèi)部狀態(tài)值134 (SA53_79)和哈希中間值
119(HA52),并計(jì)算哈希中間值HA53。 在T4775中,哈希值計(jì)算控制器113斷言塊加載信號(hào)124。 在T4775中,由于寄存器116的"消息標(biāo)識(shí)符"區(qū)域指示"處理消息A",因此哈希值 計(jì)算控制器113斷言哈希中間值A(chǔ)加載信號(hào)129。在TB60時(shí)間段期間的T4776中,哈希中 間值存儲(chǔ)單元A 109存儲(chǔ)哈希中間值HA53。此外,由于寄存器116的"消息標(biāo)識(shí)符"區(qū)域指 示"處理消息A",因此哈希值計(jì)算控制器113斷言消息A選擇信號(hào)131。接著,選擇器111 將來自哈希中間值存儲(chǔ)單元A 109的輸出和來自哈希中間值存儲(chǔ)單元BllO的輸出中的來 自哈希中間值存儲(chǔ)單元A 109的輸出(HA53)輸出到哈希值輸出單元114。
在T4776中,擴(kuò)展消息存儲(chǔ)單元102檢測(cè)到塊加載信號(hào)124的斷言,并加載存儲(chǔ)在 消息存儲(chǔ)單元101中的塊A54。此時(shí),擴(kuò)展消息存儲(chǔ)單元102通過將塊A54分割為16個(gè)32 位的數(shù)據(jù)EA54_W00到EA54_W15來存儲(chǔ)塊A54。哈希值計(jì)算控制器113響應(yīng)于擴(kuò)展消息存 儲(chǔ)單元102對(duì)存儲(chǔ)在消息存儲(chǔ)單元101中的數(shù)據(jù)的存儲(chǔ),斷言DMA讀取請(qǐng)求信號(hào)122,以讀 取下一個(gè)塊的數(shù)據(jù)。 在T4776中,哈希值計(jì)算控制器113響應(yīng)于塊A53的哈希值計(jì)算的完成,取消斷言 哈希初始值選擇信號(hào)Y 128。 如上所述,在TB60中,哈希中間值存儲(chǔ)單元A 109存儲(chǔ)哈希中間值HA53,并且哈希 中間值存儲(chǔ)單元B 110存儲(chǔ)哈希值HB。 之后,從TB60到TBIOO, DMAC 203將±央A55到A95從存儲(chǔ)器202DMA傳輸?shù)焦V?計(jì)算電路100。此時(shí),塊計(jì)數(shù)器137將計(jì)數(shù)器值BC從3向上計(jì)數(shù)到43。從TB60到TBIOI,
24哈希值計(jì)算電路100執(zhí)行針對(duì)塊A54到A95的哈希值計(jì)算。在該區(qū)間期間,由于寄存器116 的"消息標(biāo)識(shí)符"區(qū)域指示"處理消息A",因此哈希值計(jì)算控制器113不斷言哈希中間值B 加載信號(hào)130,而根據(jù)需要斷言哈希中間值A(chǔ)加載信號(hào)129。由于該原因,哈希中間值存儲(chǔ) 單元B 110不存儲(chǔ)消息A的任何哈希中間值,而哈希中間值存儲(chǔ)單元A 109存儲(chǔ)消息A的 哈希中間值。由于寄存器116的"消息標(biāo)識(shí)符"區(qū)域指示"處理消息A",因此哈希值計(jì)算控 制器113斷言消息A選擇信號(hào)131。由于該原因,選擇器lll輸出來自哈希中間值存儲(chǔ)單 元A 109的輸出和來自哈希中間值存儲(chǔ)單元B 110的輸出中的來自哈希中間值存儲(chǔ)單元A 109的輸出。其它處理與針對(duì)其它塊的處理相同。 結(jié)果,在TB102中,哈希中間值存儲(chǔ)單元A 109針對(duì)消息A的塊AO至lj A95存儲(chǔ)哈希 中間值HA95。如圖5所示,由于消息A包括塊AO到A95,因此輸出哈希中間值HA95作為消 息A的哈希值HA。在TB 102中,哈希值計(jì)算控制器113斷言消息A選擇信號(hào)131。由此, 選擇器111將作為其自身的輸入的來自哈希中間值存儲(chǔ)單元A 109的輸出(HA)和來自哈 希中間值存儲(chǔ)單元B 110的輸出(HB)中的來自哈希中間值存儲(chǔ)單元A 109的輸出(HA)輸 出到哈希值輸出單元114。 在這種狀態(tài)下,滿足存儲(chǔ)在寄存器116的"消息標(biāo)識(shí)符"和"塊的數(shù)量"區(qū)域中的 "處理消息A"和"針對(duì)43個(gè)塊進(jìn)行處理"的要求。因此,在TB102中,哈希值計(jì)算控制器113 清除存儲(chǔ)在寄存器116的"作業(yè)開始"區(qū)域中的"開始哈希值計(jì)算"的標(biāo)志和存儲(chǔ)在"處理 繼續(xù)"區(qū)域中的"使用哈希中間值"的標(biāo)志。此外,在TB102中,哈希值計(jì)算控制器113將 DMA寫入請(qǐng)求信號(hào)122斷言到DMAC 203。 DMAC 203返回DMA寫入確認(rèn)信號(hào)123,并將哈希 值HA從哈希值輸出單元114傳輸?shù)酱鎯?chǔ)器202。哈希值計(jì)算控制器113對(duì)DMAC 203斷言 DMA寫入確認(rèn)信號(hào)123的次數(shù)進(jìn)行計(jì)數(shù)。哈希值計(jì)算控制器113確認(rèn)DMAC 203斷言了 DMA 寫入確認(rèn)信號(hào)123三次,并取消斷言DMA寫入請(qǐng)求信號(hào)122。在TB 102中,DMAC 203檢測(cè)到哈希值計(jì)算電路100進(jìn)行的DMA寫入請(qǐng)求信號(hào)122
的取消斷言,斷言中斷信號(hào)206,并將中斷通知給中斷控制器204。接著,中斷控制器204使
用中斷信號(hào)(未示出)將哈希值HA在存儲(chǔ)器202中的存儲(chǔ)通知給CPU 201。 如上所述,根據(jù)本實(shí)施例,CPU依次請(qǐng)求哈希值計(jì)算電路執(zhí)行針對(duì)第一、第二和第
三消息的哈希值計(jì)算,使得在消息A的中間先處理消息B。注意,第一消息包括塊AO到A52,
第二消息包括塊BO到B3,第三消息包括塊A53到A95。接著,將作為針對(duì)第一消息的哈希
值計(jì)算結(jié)果的哈希中間值存儲(chǔ)到哈希值計(jì)算電路中。在第二消息的哈希值計(jì)算完成后,使
用所存儲(chǔ)的第一消息的哈希中間值來執(zhí)行針對(duì)第三消息的哈希值計(jì)算。結(jié)果,與將哈希中
間值臨時(shí)寫出到外部存儲(chǔ)器并重新加載的傳統(tǒng)配置相比,能夠減少與外部存儲(chǔ)器交換哈希
中間值所需的時(shí)間開銷,并能夠?qū)崿F(xiàn)以高響應(yīng)速度進(jìn)行高效率的哈希值計(jì)算。 在本實(shí)施例中,由于將消息的一個(gè)塊的數(shù)據(jù)存儲(chǔ)在哈希值計(jì)算電路中,因此能夠
消除從外部存儲(chǔ)器傳輸消息的各塊數(shù)據(jù)所需的開銷時(shí)間的需要。由于該原因,能夠?qū)崿F(xiàn)更
高效率的哈希值計(jì)算。 在本實(shí)施例中,在完成針對(duì)緊接的前一個(gè)塊的哈希值計(jì)算時(shí),將存儲(chǔ)在電路中的 一個(gè)塊的數(shù)據(jù)加載到擴(kuò)展處理器,接著發(fā)出從外部存儲(chǔ)器傳輸下一個(gè)塊的數(shù)據(jù)傳輸請(qǐng)求。 但是,本發(fā)明不限于此。例如,在完成針對(duì)該塊的哈希值計(jì)算之前將加載的該塊的數(shù)據(jù)存儲(chǔ) 在存儲(chǔ)單元中,接著可以發(fā)出針對(duì)下一個(gè)塊的數(shù)據(jù)傳輸請(qǐng)求。即使在處理中間針對(duì)關(guān)注的塊的哈希值計(jì)算異常中斷時(shí),由于在電路中存儲(chǔ)了關(guān)注的塊的數(shù)據(jù),因此也能夠獲得減少 從外部存儲(chǔ)器重新加載該數(shù)據(jù)所需的開銷的效果。 本實(shí)施例例示了將SHA-1用作哈希函數(shù)。但是,哈希函數(shù)可以使用例如MD5和 SHA-256的其它算法。 在本實(shí)施例中,針對(duì)各步驟依次生成擴(kuò)展消息。但是,可以在最初同時(shí)生成擴(kuò)展消息。 在本實(shí)施例的配置中,能夠存儲(chǔ)針對(duì)兩個(gè)不同的消息的哈希中間值。通過配置三 個(gè)或更多個(gè)哈希中間值存儲(chǔ)單元,能夠中斷和重新開始針對(duì)三個(gè)或更多個(gè)不同的消息的哈 希值計(jì)算。 在本實(shí)施例的配置中,配置了各自具有能夠存儲(chǔ)一個(gè)哈希中間值的哈希中間值存 儲(chǔ)區(qū)域的多個(gè)哈希中間值存儲(chǔ)單元。但是,本發(fā)明不限于這種特定配置。例如,可以配置各 自具有能夠存儲(chǔ)多個(gè)哈希中間值的哈希中間值存儲(chǔ)區(qū)域的一個(gè)或多個(gè)哈希中間值存儲(chǔ)單 元。 在本實(shí)施例中,各個(gè)消息的哈希中間值和哈希中間值存儲(chǔ)單元之間的對(duì)應(yīng)關(guān)系是 固定的,如消息A的哈希中間值存儲(chǔ)在哈希中間值存儲(chǔ)單元A中,消息B的哈希中間值存儲(chǔ) 在哈希中間值存儲(chǔ)單元B中。但是,例如,可以配置存儲(chǔ)表示哈希中間值存儲(chǔ)區(qū)域和消息的 哈希中間值之間的對(duì)應(yīng)關(guān)系的對(duì)應(yīng)關(guān)系信息的對(duì)應(yīng)關(guān)系信息存儲(chǔ)單元,可以根據(jù)存儲(chǔ)在對(duì) 應(yīng)關(guān)系信息存儲(chǔ)單元中的對(duì)應(yīng)關(guān)系信息來決定哈希中間值存儲(chǔ)區(qū)域。 在本實(shí)施例中,CPU在哈希電路外部對(duì)哈希值計(jì)算的填充處理進(jìn)行處理。但是,也 可以在哈希電路內(nèi)部對(duì)填充處理進(jìn)行處理。 在本實(shí)施例中,DMAC用作用于在哈希值計(jì)算電路和外部存儲(chǔ)器之間交換消息和哈 希值的設(shè)備。但是,可以使用其它傳輸設(shè)備。 在本實(shí)施例的示例中,DMA輸入/輸出數(shù)據(jù)的位寬(bit width)為64位。但是, 可以使用其它位數(shù)。 在本實(shí)施例中,哈希值計(jì)算的各步驟的處理的基本處理時(shí)間段T等于DMA傳輸處 理的基本處理時(shí)間段T。但是,分步處理和DMA傳輸處理的基本處理時(shí)間段可以不同。
在本實(shí)施例的示例中,CPU在哈希值計(jì)算電路的寄存器中設(shè)置消息的塊的數(shù)量,哈 希值計(jì)算電路通過對(duì)DMA確認(rèn)信號(hào)進(jìn)行計(jì)數(shù)來檢測(cè)具有CPU設(shè)置的塊的數(shù)量的消息的供 應(yīng)。但是,可以使用其它方法。例如,CPU可以通過在寄存器中設(shè)置消息傳輸完成,來通知 完成消息傳輸。 注意,本發(fā)明的實(shí)施例不限于上述配置,可以進(jìn)行各種變型。
《第二實(shí)施例》 在第一實(shí)施例中,CPU 201針對(duì)各消息在哈希值計(jì)算電路100的寄存器中設(shè)置處 理繼續(xù)信息和消息標(biāo)識(shí)符信息等。第二實(shí)施例將說明作為與消息的數(shù)據(jù)同步的邊帶信號(hào)的 輸入數(shù)據(jù)屬性信號(hào)包括處理繼續(xù)信息和消息標(biāo)識(shí)符信息等的情況。
(哈希值計(jì)算電路的配置) 圖12是示出根據(jù)第二實(shí)施例的哈希值計(jì)算電路的配置的框圖。下面,參照?qǐng)D12 僅描述與第一實(shí)施例的不同之處。 附圖標(biāo)記137表示對(duì)哈希值計(jì)算電路100接收的第一消息(以下稱作消息A)的塊的數(shù)量進(jìn)行計(jì)數(shù)的塊計(jì)數(shù)器。附圖標(biāo)記140表示對(duì)哈希值計(jì)算電路100接收的第二消息 (以下稱作消息B)的塊的數(shù)量進(jìn)行計(jì)數(shù)的塊計(jì)數(shù)器X。在針對(duì)形成消息的給定數(shù)量的塊的 哈希值計(jì)算完成時(shí),哈希值計(jì)算控制器113將塊計(jì)數(shù)器137或塊計(jì)數(shù)器X 140的計(jì)數(shù)器值 清零。附圖標(biāo)記139表示與DMA輸入數(shù)據(jù)120同步地從DMAC 203輸出到哈希值計(jì)算電路 100的輸入數(shù)據(jù)屬性信號(hào)。輸入數(shù)據(jù)屬性信號(hào)的內(nèi)容包括消息標(biāo)識(shí)符信息和處理繼續(xù)信息。
(寄存器的存儲(chǔ)內(nèi)容) 圖13是示出存儲(chǔ)在本實(shí)施例的哈希值計(jì)算電路100內(nèi)的寄存器116中的信息的 圖。以下僅描述與第一實(shí)施例的不同之處。 寄存器116具有針對(duì)各個(gè)消息類型的作業(yè)開始信息、塊的數(shù)量信息和哈希初始值 信息的存儲(chǔ)區(qū)域。 在本實(shí)施例中,在哈希值計(jì)算電路100開始作業(yè)之前,CPU 201將針對(duì)要處理的多 個(gè)消息的作業(yè)開始信息、塊的數(shù)量信息和哈希初始值信息的設(shè)置寫入寄存器116中。
在第一實(shí)施例中,CPU 201預(yù)先決定發(fā)出處理請(qǐng)求以中斷針對(duì)消息A的哈希值計(jì) 算,并執(zhí)行針對(duì)消息B的哈希值計(jì)算。S卩,CPU 201決定向哈希值計(jì)算電路100發(fā)出針對(duì)作 為兩個(gè)消息、即包括塊AO到A52的消息和包括塊A53到A95的消息的消息A的處理請(qǐng)求。 在本實(shí)施例中,CPU 201首先在哈希值計(jì)算電路100的寄存器中設(shè)置針對(duì)要進(jìn)行哈希值計(jì) 算的多個(gè)消息的信息。即,CPU 201在寄存器116的預(yù)定區(qū)域中設(shè)置包括96個(gè)塊的消息A 的信息和包括4個(gè)塊的消息B的信息。在CPU 201設(shè)置寄存器并且哈希值計(jì)算電路100開 始針對(duì)對(duì)應(yīng)的處理請(qǐng)求的哈希值計(jì)算后,CPU 201決定中斷消息A的哈希值計(jì)算。此外,CPU 201控制DMAC 203,從消息A的塊A52開始,從塊BO開始將消息B的數(shù)據(jù)依次傳輸?shù)焦?值計(jì)算電路。 哈希值計(jì)算電路100針對(duì)在寄存器中設(shè)置的多個(gè)消息,根據(jù)包括在輸入數(shù)據(jù)屬性 信號(hào)139中的消息標(biāo)識(shí)符信息和處理繼續(xù)信息,確定各消息類型和處理繼續(xù)的存在/不存 在。此外,哈希值計(jì)算電路100針對(duì)各消息,根據(jù)需要執(zhí)行哈希值計(jì)算。
哈希值計(jì)算電路IOO根據(jù)以下內(nèi)容,檢測(cè)到在接收到消息A的在寄存器中設(shè)置的 96個(gè)塊的數(shù)據(jù)之前,接收到消息B的塊數(shù)據(jù) 對(duì)傳輸?shù)母飨⒌膲K的數(shù)量進(jìn)行計(jì)數(shù)的塊計(jì)數(shù)器137的計(jì)數(shù)器值BC ;禾口
包括在屬性信息中的消息標(biāo)識(shí)符。 接著,哈希值計(jì)算電路100確定中斷消息A的哈希值計(jì)算。 [O335](哈希值計(jì)算) 圖14A和圖14B是示出在以圖6所示的順序輸入兩個(gè)消息(塊AO到A95及塊BO 到B3)時(shí),本實(shí)施例的哈希值計(jì)算的操作序列的流程圖。 在ST201中,CPU 201在哈希值計(jì)算電路100的寄存器116中設(shè)置針對(duì)第一消息 (A0到A95)的處理請(qǐng)求。 在ST202中,CPU 201在哈希值計(jì)算電路100的寄存器116中設(shè)置針對(duì)第二消息 (BO到B3)的處理請(qǐng)求。 在ST203中,哈希值計(jì)算電路100向DMAC 203發(fā)出讀取請(qǐng)求,以讀取消息的一個(gè) 塊的數(shù)據(jù)。 在ST204中,哈希值計(jì)算電路100根據(jù)屬性信號(hào)的消息標(biāo)識(shí)符,確定讀取塊數(shù)據(jù)的消息。如果消息標(biāo)識(shí)符指示消息A,則處理進(jìn)行到ST205 ;如果消息標(biāo)識(shí)符指示消息B,則處 理進(jìn)行到ST209。 在ST205中,哈希值計(jì)算電路100確定是否正在進(jìn)行針對(duì)緊接的前一個(gè)塊的哈希 值計(jì)算。如果正在進(jìn)行哈希值計(jì)算,則處理等待,直到完成該塊的哈希值計(jì)算為止;如果哈 希值計(jì)算完成,則處理進(jìn)行到ST206。 在ST206中,哈希值計(jì)算電路100執(zhí)行針對(duì)第一消息(AO到A95)的一個(gè)塊的哈希 值計(jì)算。 在ST207中,哈希值計(jì)算電路100確定針對(duì)包括總數(shù)=96的塊的第一消息(AO到 A95)的哈希值計(jì)算是否完成。如果哈希值計(jì)算完成,則處理進(jìn)行到ST208;否則,處理返回 到ST203。 在ST208中,哈希值計(jì)算電路100向DMAC 203發(fā)出寫入請(qǐng)求,以輸出針對(duì)第一消 息(A0到A95)的哈希值。 在ST209中,哈希值計(jì)算電路100確定是否正在進(jìn)行針對(duì)緊接的前一個(gè)塊的哈希 值計(jì)算。如果正在進(jìn)行哈希值計(jì)算,則處理等待,直到完成該塊的哈希值計(jì)算為止;如果哈 希值計(jì)算完成,則處理進(jìn)行到ST210。 在ST210中,哈希值計(jì)算電路100執(zhí)行針對(duì)第二消息(B0到B3)的一個(gè)塊的哈希 值計(jì)算。 在ST211中,哈希值計(jì)算電路100確定針對(duì)包括總數(shù)=4的塊的第二消息(B0到 B3)的哈希值計(jì)算是否完成。如果哈希值計(jì)算完成,則處理進(jìn)行到ST212 ;否則,處理返回到 ST203。 在ST212中,哈希值計(jì)算電路100向DMAC 203發(fā)出寫入請(qǐng)求,以輸出針對(duì)第二消 息(B0到B3)的哈希值。 在ST213中,哈希值計(jì)算電路100確定其它消息的處理是否完成。如果處理完成, 則結(jié)束處理;否則,處理返回到ST203。 在本實(shí)施例中,與在第一實(shí)施例中相同,在T006和T007(未示出)中,CPU 201經(jīng) 由總線205和總線信號(hào)117設(shè)置寄存器116。在這種情況下,CPU 201在圖12所示的寄存 器116的用于消息A的"作業(yè)開始"區(qū)域中設(shè)置"開始哈希值計(jì)算"的標(biāo)志。另外,CPU 201 在"塊的數(shù)量"區(qū)域中設(shè)置"針對(duì)96個(gè)塊進(jìn)行處理"的標(biāo)志,并且在"哈希初始值"區(qū)域中設(shè) 置"SHA-1算法的初始值"。同樣地,CPU 201在用于消息B的"作業(yè)開始"區(qū)域中設(shè)置"開 始哈希值計(jì)算"的標(biāo)志,在"塊的數(shù)量"區(qū)域中設(shè)置"針對(duì)4個(gè)塊進(jìn)行處理"的標(biāo)志,并且在 "哈希初始值"區(qū)域中設(shè)置"SHA-1算法的初始值"。 之后,哈希值計(jì)算電路100接收DMAC 203從存儲(chǔ)器傳輸?shù)南⒌腄MA輸入數(shù)據(jù) 120和輸入數(shù)據(jù)屬性信號(hào)139。哈希值計(jì)算電路100根據(jù)包括在輸入數(shù)據(jù)屬性信號(hào)139中 的消息標(biāo)識(shí)符和處理繼續(xù)信息,以及針對(duì)各消息存儲(chǔ)在寄存器中的塊的總數(shù)和DMA傳輸塊 的數(shù)量,執(zhí)行針對(duì)各消息的哈希值計(jì)算。 [O352](哈希值計(jì)算的詳細(xì)情況) 圖15A至圖16E是示出針對(duì)各個(gè)步驟的哈希值計(jì)算的操作的時(shí)序圖。圖15A至圖 16E分別示出將消息A切換到消息B時(shí)的操作以及將消息B切換到消息A時(shí)的操作。以下 僅描述與第一實(shí)施例的不同之處。
從T000到T4237的處理與第一實(shí)施例中的處理相同。在T4237中,加法處理器107 輸入內(nèi)部狀態(tài)值SA51—79和哈希中間值HA50以執(zhí)行加法處理,并輸出哈希中間值HA51。在 T4238中,哈希中間值存儲(chǔ)單元A 109存儲(chǔ)哈希中間值HA51。 在T4237中,哈希值計(jì)算控制器113斷言塊加載信號(hào)124。在T4238中,擴(kuò)展消息 存儲(chǔ)單元102檢測(cè)到塊加載信號(hào)124的斷言,并加載存儲(chǔ)在消息存儲(chǔ)單元101中的塊A52。
假定CPU 201控制DMAC 203,以在塊A52的傳輸完成后,開始從存儲(chǔ)器202向哈希 值計(jì)算電路IOO傳輸消息B。在T4238中,哈希值計(jì)算控制器113響應(yīng)于擴(kuò)展消息存儲(chǔ)單元 102對(duì)存儲(chǔ)在消息存儲(chǔ)單元101中的塊A52的數(shù)據(jù)的存儲(chǔ),斷言DMA讀取請(qǐng)求信號(hào)122,以 讀取下一個(gè)塊的數(shù)據(jù)。 從T4238到T4318,執(zhí)行針對(duì)塊A52的哈希值計(jì)算。 另一方面,從T4239至ljT4253,DMAC 203返回DMA數(shù)據(jù)讀取確認(rèn)信號(hào)123,同時(shí)將塊 B0從存儲(chǔ)器202傳輸?shù)焦V涤?jì)算電路100。在T4254中,消息存儲(chǔ)單元101存儲(chǔ)塊B0。 哈希值計(jì)算控制器113與塊BO的加載同時(shí)地,加載輸入數(shù)據(jù)屬性信號(hào)139,以識(shí)別指示"消 息B"的信息和指示"使用內(nèi)部狀態(tài)值的初始值"的信息。設(shè)塊計(jì)數(shù)器X 140的計(jì)數(shù)器值為 BCX,塊計(jì)數(shù)器X 140將與消息B的塊B0對(duì)應(yīng)的計(jì)數(shù)器值BCX向上計(jì)數(shù)到1 。塊計(jì)數(shù)器137 存儲(chǔ)"53"作為與消息A的塊A52對(duì)應(yīng)的計(jì)數(shù)器值BC。 在T4319中,哈希中間值存儲(chǔ)單元A 109存儲(chǔ)哈希中間值HA52。由于僅完成了針 對(duì)包括總數(shù)=96的塊的消息A中的從第一個(gè)塊開始的53個(gè)塊的哈希值計(jì)算,因此在T4319 中,哈希值計(jì)算控制器113不斷言DMA寫入請(qǐng)求信號(hào)122。此外,DMAC 203不將哈希中間值 HA52從哈希值計(jì)算電路100DMA傳輸?shù)酱鎯?chǔ)器202。
(以塊為單位的操作) 圖17A和圖17B(以下總稱為圖17)是示出根據(jù)本實(shí)施例的針對(duì)各個(gè)塊的哈希值 計(jì)算的操作的時(shí)序圖。注意,還描述一些分步處理時(shí)間段的詳細(xì)操作。
在TB52中,哈希值計(jì)算控制器113將DMA讀取請(qǐng)求信號(hào)122斷言到DMAC 203以 讀取數(shù)據(jù)。DMAC 203返回DMA讀取確認(rèn)信號(hào)123,并將消息B的第一個(gè)塊BO DMA傳輸?shù)焦?希值計(jì)算電路100。消息存儲(chǔ)單元101存儲(chǔ)塊BO。 在TB53中,DMA傳輸塊Bl,并執(zhí)行針對(duì)塊BO的哈希值計(jì)算。在TB54中,由于哈希 值計(jì)算控制器113斷言哈希中間值B加載信號(hào)130,因此哈希中間值存儲(chǔ)單元B 110存儲(chǔ)在 TB53中計(jì)算的哈希中間值HB0。哈希值計(jì)算控制器113取消斷言消息A選擇信號(hào)131。接 著,選擇器111將來自哈希中間值存儲(chǔ)單元A 109的輸出和來自哈希中間值存儲(chǔ)單元B 110 的輸出中的來自哈希中間值存儲(chǔ)單元B 110的輸出(HBO)輸出到哈希值輸出單元114。
以這種方式,在TB54中,哈希中間值存儲(chǔ)單元A 109存儲(chǔ)哈希中間值HA52,并且哈 希中間值存儲(chǔ)單元B IIO存儲(chǔ)哈希中間值HBO。 在TB54中,使用存儲(chǔ)在哈希中間值存儲(chǔ)單元B 110中的哈希中間值HBO來執(zhí)行針 對(duì)塊B1的哈希值計(jì)算。 之后,在TB54和TB55中,DMAC 203將±央B2和B3從存儲(chǔ)器202DMA傳輸?shù)焦V?計(jì)算電路IOO。 假定CPU 201控制DMAC 203,在塊B3的傳輸完成后,重新開始將消息A的其余數(shù) 據(jù)從存儲(chǔ)器202傳輸?shù)焦V涤?jì)算電路100。接著,在TB56中,DMAC 203將形成消息A的
29塊A53從存儲(chǔ)器202 DMA傳輸?shù)焦V涤?jì)算電路100。此時(shí),DMAC 203傳送指示"使用哈 希中間值"的值作為針對(duì)消息A的輸入數(shù)據(jù)屬性信號(hào)139中的處理繼續(xù)信息。在DMAC 203 完成塊A53的傳輸并且哈希值計(jì)算電路100存儲(chǔ)塊A53的數(shù)據(jù)后,哈希值計(jì)算控制器113 加載輸入數(shù)據(jù)屬性信號(hào)139。接著,哈希值計(jì)算控制器113識(shí)別指示"消息A"的信息和指 示"使用哈希中間值"的信息。塊計(jì)數(shù)器X 140存儲(chǔ)"4"作為計(jì)數(shù)器值BCX。塊計(jì)數(shù)器139 與消息A的塊A53對(duì)應(yīng)地將計(jì)數(shù)器值BC向上計(jì)數(shù)到54。注意,在第一實(shí)施例中,在消息B 的哈希值計(jì)算完成時(shí)進(jìn)行針對(duì)消息A的塊A53到A95的寄存器設(shè)置后,傳輸塊A53。對(duì)比而 言,在本實(shí)施例中,能夠在消息B的哈希值計(jì)算完成前,傳輸塊A53。 在TB54到TB56中,哈希值計(jì)算電路100執(zhí)行針對(duì)塊Bl到B3的哈希值計(jì)算。在 該區(qū)間期間,哈希值計(jì)算控制器113不斷言哈希中間值A(chǔ)加載信號(hào)129,而根據(jù)需要斷言哈 希中間值B加載信號(hào)130。由于該原因,哈希中間值存儲(chǔ)單元A 109不存儲(chǔ)消息B的任何 哈希中間值,而哈希中間值存儲(chǔ)單元B IIO存儲(chǔ)消息B的哈希中間值。此外,哈希值計(jì)算控 制器113取消斷言消息A選擇信號(hào)131。因此,選擇器111輸出來自哈希中間值存儲(chǔ)單元A 109的輸出和來自哈希中間值存儲(chǔ)單元B 110的輸出中的來自哈希中間值存儲(chǔ)單元B 110 的輸出。其它處理與針對(duì)塊A1到A3的處理相同。 結(jié)果,在TB54到TB56中,哈希值計(jì)算電路100計(jì)算哈希中間值HB1到HB3。
在TB57中,哈希中間值存儲(chǔ)單元A 109存儲(chǔ)針對(duì)消息A的塊AO到A52的哈希中間 值HA52,并且哈希中間值存儲(chǔ)單元B 110存儲(chǔ)針對(duì)消息B的塊BO到B3的哈希中間值HB3。 如圖5所示,由于消息B包括塊BO到B3,因此輸出哈希中間值HB3作為消息B的哈希值HB。 在TB57中,哈希值計(jì)算控制器113取消斷言消息A選擇信號(hào)131。由于該原因,選擇器lll 將作為其自身的輸入的來自哈希中間值存儲(chǔ)單元A 109的輸出(HA52)和來自哈希中間值 存儲(chǔ)單元B 110的輸出(HB)中的來自哈希中間值存儲(chǔ)單元B 110的輸出(HB)輸出到哈希 值輸出單元114。 此時(shí),滿足存儲(chǔ)在寄存器116的用于消息B的"塊的數(shù)量"區(qū)域中的"針對(duì)4個(gè)塊 進(jìn)行處理"的要求。由此,在TB57中,哈希值計(jì)算控制器113清除存儲(chǔ)在寄存器116的"作 業(yè)開始"區(qū)域中的"開始哈希值計(jì)算"的標(biāo)志。此外,哈希值計(jì)算控制器113清除塊計(jì)數(shù)器 X 140的計(jì)數(shù)器值BCX。在TB57中,哈希值計(jì)算控制器113將DMA寫入請(qǐng)求信號(hào)122斷言 到DMAC 203。 DMAC 203返回DMA寫入確認(rèn)信號(hào)123,并將來自哈希值輸出單元114的哈希 值HB傳輸?shù)酱鎯?chǔ)器202。哈希值計(jì)算控制器113對(duì)DMAC 203斷言DMA寫入確認(rèn)信號(hào)123 的次數(shù)進(jìn)行計(jì)數(shù)。哈希值計(jì)算控制器113確認(rèn)DMAC 203斷言了 DMA寫入確認(rèn)信號(hào)123三 次,接著取消斷言DMA寫入請(qǐng)求信號(hào)122。 在TB57中,DMAC 203檢測(cè)到哈希值計(jì)算電路100進(jìn)行的DMA寫入請(qǐng)求信號(hào)122的 取消斷言,斷言中斷信號(hào)206,并將中斷通知給中斷控制器204。接著,中斷控制器204使用 中斷信號(hào)(未示出)將哈希值HB在存儲(chǔ)器202中的存儲(chǔ)通知給CPU 201。
在TB57中,CPU 201根據(jù)來自DMAC 203的中斷,檢測(cè)到"使用內(nèi)部狀態(tài)值的初始 值""針對(duì)4個(gè)塊"對(duì)"消息B"的處理完成。 在TB57中,DMA傳輸塊A54,并執(zhí)行針對(duì)塊A53的哈希值計(jì)算。之后,在TB58到 TB98中,DMAC 203將i央A55到A95從存儲(chǔ)器202 DMA傳輸?shù)焦V涤?jì)算電路100。在TB58 到TB99中,哈希值計(jì) 電路100執(zhí)行針對(duì)塊A54到A95的哈希值計(jì)算。在該區(qū)間期間,哈希值計(jì)算控制器113不斷言哈希中間值B加載信號(hào)130,而根據(jù)需要斷言哈希中間值A(chǔ)加載 信號(hào)129。由于該原因,哈希中間值存儲(chǔ)單元B IIO不存儲(chǔ)消息A的任何哈希中間值,而哈 希中間值存儲(chǔ)單元A 109存儲(chǔ)消息A的哈希中間值。哈希值計(jì)算控制器113斷言消息A選 擇信號(hào)131。由于該原因,選擇器111輸出來自哈希中間值存儲(chǔ)單元A 109的輸出和來自哈 希中間值存儲(chǔ)單元BllO的輸出中的來自哈希中間值存儲(chǔ)單元A 109的輸出。其它處理與 針對(duì)其它塊的處理相同。 結(jié)果,在TB100中,哈希中間值存儲(chǔ)單元A 109存儲(chǔ)針對(duì)塊AO到A95的哈希中間 值HA95。如圖5所示,由于消息A包括塊AO到A95,因此輸出哈希中間值HA95作為消息A 的哈希值HA。在TB 100中,哈希值計(jì)算控制器113斷言消息A選擇信號(hào)131。由于該原因, 選擇器111將作為其自身的輸入的來自哈希中間值存儲(chǔ)單元A 109的輸出(HA)和來自哈 希中間值存儲(chǔ)單元B 110的輸出(HB)中的來自哈希中間值存儲(chǔ)單元A109的輸出(HA)輸 出到哈希值輸出單元114。 此時(shí),滿足存儲(chǔ)在寄存器116的用于消息A的"塊的數(shù)量"區(qū)域中的"針對(duì)96個(gè)塊 進(jìn)行處理"的要求。接著,在TBIOO中,哈希值計(jì)算控制器113清除存儲(chǔ)在寄存器116的"作 業(yè)開始"區(qū)域中的"開始哈希值計(jì)算"的標(biāo)志。此外,哈希值計(jì)算控制器113清除塊計(jì)數(shù)器 137的計(jì)數(shù)器值BC。 在TB100中,哈希值計(jì)算控制器113將DMA寫入請(qǐng)求信號(hào)122斷言到DMAC 203。 DMAC 203返回DMA寫入確認(rèn)信號(hào)123,并將來自哈希值輸出單元114的哈希值HA傳輸?shù)酱?儲(chǔ)器202。哈希值計(jì)算控制器113對(duì)DMAC 203斷言DMA寫入確認(rèn)信號(hào)123的次數(shù)進(jìn)行計(jì) 數(shù)。哈希值計(jì)算控制器113確認(rèn)DMAC 203斷言了 DMA寫入確認(rèn)信號(hào)123三次,接著取消斷 言DMA寫入請(qǐng)求信號(hào)122。 在TB100中,DMAC 203檢測(cè)到哈希值計(jì)算電路100進(jìn)行的DMA寫入請(qǐng)求信號(hào)122 的取消斷言,斷言中斷信號(hào)206,并將中斷通知給中斷控制器204。接著,中斷控制器204使 用中斷信號(hào)(未示出)將哈希值HA在存儲(chǔ)器202中的存儲(chǔ)通知給CPU 201。
在TB 100中,CPU 201根據(jù)來自DMAC 203的中斷檢測(cè)到"使用內(nèi)部狀態(tài)值的初始 值""針對(duì)96個(gè)塊"對(duì)"消息A"的處理完成。 如上所述,根據(jù)本實(shí)施例,從附加到消息的數(shù)據(jù)的輸入數(shù)據(jù)屬性信號(hào)中提取消息 標(biāo)識(shí)符和處理繼續(xù)信息,并進(jìn)行識(shí)別。接著,在處理中間中斷針對(duì)第一消息的哈希值計(jì)算, 并且首先執(zhí)行針對(duì)另外的第二消息的哈希值計(jì)算時(shí),與第一實(shí)施例相比,能夠進(jìn)一步縮短 哈希值計(jì)算時(shí)間段。即,能夠減少在直到第一消息的中間塊的哈希值計(jì)算之后將哈希值計(jì) 算結(jié)果(哈希中間值)DMA傳輸?shù)酱鎯?chǔ)器所需的時(shí)間,和在針對(duì)各消息的哈希值計(jì)算開始時(shí) 進(jìn)行針對(duì)消息的寄存器設(shè)置所需的時(shí)間。此外,能夠更早完成針對(duì)第二消息的哈希值計(jì)算。
更具體而言,在示出第一實(shí)施例中的各個(gè)步驟的哈希值計(jì)算的時(shí)序圖的圖9A至 圖9E中,在TB58內(nèi)的T4669的定時(shí),輸出消息B的哈希值。對(duì)比而言,在示出第二實(shí)施例 中的各個(gè)步驟的哈希值計(jì)算的時(shí)序圖的圖16A至圖16E中,在TB57內(nèi)的T4643的定時(shí),輸 出消息B的哈希值HB。 在第二實(shí)施例中,與第一實(shí)施例相比,哈希值計(jì)算時(shí)間段縮短了與第一實(shí)施例中 的TB53的時(shí)間段對(duì)應(yīng)的26個(gè)基本處理時(shí)間段。能夠?qū)⒌谝幌⒌奈刺幚聿糠值牡谝粋€(gè)塊 的DMA傳輸時(shí)間段隱藏在第二消息的哈希值計(jì)算時(shí)間段中,并且能夠比第一實(shí)施例更早地重新開始第一消息的哈希值計(jì)算。更具體而言,在圖IIA和圖11B中,在TB60內(nèi)的T4776 的定時(shí),輸出第一實(shí)施例中的針對(duì)消息A的第一個(gè)塊到塊A53的哈希中間值HA53。相比而 言,在圖16A到圖16E中,在TB58內(nèi)的T4724的定時(shí),輸出第二實(shí)施例中的針對(duì)消息A的第 一個(gè)塊到塊A53的哈希中間值HA53。與第一實(shí)施例相比,在第二實(shí)施例中,哈希值計(jì)算時(shí)間 段縮短了與第一實(shí)施例的TB53和TB58的時(shí)間段的和對(duì)應(yīng)的52個(gè)基本處理時(shí)間段。
在本實(shí)施例中,在完成針對(duì)緊接的前一個(gè)塊的哈希值計(jì)算時(shí),將存儲(chǔ)在電路中的 一個(gè)塊的數(shù)據(jù)加載到擴(kuò)展處理器,并且在加載后發(fā)出從外部存儲(chǔ)器傳輸下一個(gè)塊的數(shù)據(jù)傳 輸請(qǐng)求。雖然處理時(shí)間段延長(zhǎng),但是可以在完成針對(duì)一個(gè)加載的塊的哈希值計(jì)算之前將該 塊的數(shù)據(jù)存儲(chǔ)在存儲(chǔ)單元中,之后,可以發(fā)出針對(duì)下一個(gè)塊的數(shù)據(jù)傳輸請(qǐng)求。此時(shí),即使在 處理中間針對(duì)關(guān)注的塊的哈希值計(jì)算異常中斷,由于關(guān)注的塊的數(shù)據(jù)存儲(chǔ)在電路中,因此 也能夠獲得減少?gòu)耐獠看鎯?chǔ)器重新加載該數(shù)據(jù)所需的開銷的效果。 本實(shí)施例例示了 SHA-1用作哈希函數(shù)。但是,哈希函數(shù)可以使用例如MD5和 SHA-256的其它算法。 在本實(shí)施例中,針對(duì)各步驟依次生成擴(kuò)展消息。但是,可以在最初同時(shí)生成擴(kuò)展消息。 在本實(shí)施例的配置中,能夠存儲(chǔ)針對(duì)兩個(gè)不同的消息的哈希中間值。但是,本發(fā)明
不限于這種特定配置。例如,通過配置三個(gè)或者更多個(gè)哈希中間值存儲(chǔ)單元、塊計(jì)數(shù)器和寄
存器設(shè)置區(qū)域等,能夠中斷和重新開始針對(duì)三個(gè)或者更多個(gè)不同的消息的哈希值計(jì)算。 在本實(shí)施例的配置中,配置了各自具有能夠存儲(chǔ)一個(gè)哈希中間值的哈希中間值存
儲(chǔ)區(qū)域的多個(gè)哈希中間值存儲(chǔ)單元。但是,本發(fā)明不限于這種特定配置。例如,可以配置各
自具有能夠存儲(chǔ)多個(gè)哈希中間值的哈希中間值存儲(chǔ)區(qū)域的一個(gè)或多個(gè)哈希中間值存儲(chǔ)單元。 在本實(shí)施例中,各個(gè)消息的哈希中間值和哈希中間值存儲(chǔ)單元之間的對(duì)應(yīng)關(guān)系是
固定的,如消息A的哈希中間值存儲(chǔ)在哈希中間值存儲(chǔ)單元A中,消息B的哈希中間值存儲(chǔ)
在哈希中間值存儲(chǔ)單元B中。但是,例如,可以配置存儲(chǔ)表示哈希中間值存儲(chǔ)區(qū)域和消息的
哈希中間值之間的對(duì)應(yīng)關(guān)系的對(duì)應(yīng)關(guān)系信息的哈希中間值存儲(chǔ)信息存儲(chǔ)單元,可以根據(jù)存
儲(chǔ)在哈希中間值存儲(chǔ)信息存儲(chǔ)單元中的對(duì)應(yīng)關(guān)系信息來決定哈希中間值存儲(chǔ)區(qū)域。 在本實(shí)施例中,CPU在哈希電路的外部對(duì)哈希值計(jì)算的填充處理進(jìn)行處理。但是,
也可以在哈希電路內(nèi)部對(duì)填充處理進(jìn)行處理。 在本實(shí)施例中,DMAC用作用于在哈希值計(jì)算電路和外部存儲(chǔ)器之間交換消息和哈 希值的設(shè)備。但是,也可以使用其它傳輸設(shè)備。 在本實(shí)施例的示例中,DMA輸入/輸出數(shù)據(jù)的位寬為64位。但是,可以使用其它 位數(shù)。 在本實(shí)施例中,哈希值計(jì)算的各步驟的處理的基本處理時(shí)間段T等于DMA傳輸處 理的基本處理時(shí)間段T。但是,分步處理和DMA傳輸處理的基本處理時(shí)間段可以不同。
在本實(shí)施例中,輸入數(shù)據(jù)屬性信號(hào)包括消息標(biāo)識(shí)符信息和處理繼續(xù)信息,并且將 其數(shù)據(jù)寬度定義為8位。但是,輸入數(shù)據(jù)屬性信號(hào)還可以包括例如消息優(yōu)先級(jí)信息的其它 信息,并可以根據(jù)信息來改變信號(hào)的數(shù)據(jù)寬度。 在本實(shí)施例中,哈希值計(jì)算電路通過對(duì)各消息的輸入塊的數(shù)量進(jìn)行計(jì)數(shù)來識(shí)別輸
32入消息的塊編號(hào)??商鎿Q地,輸入數(shù)據(jù)屬性信號(hào)還可以包括塊編號(hào)。 在本實(shí)施例中,CPU在哈希值計(jì)算電路的寄存器中設(shè)置消息的塊的數(shù)量,哈希值計(jì) 算電路通過對(duì)DMA確認(rèn)信號(hào)進(jìn)行計(jì)數(shù),來檢測(cè)具有CPU設(shè)置的塊的數(shù)量的消息的供應(yīng)。但 是,可以使用其它方法。例如,CPU可以通過在寄存器中設(shè)置消息傳輸完成來通知消息傳輸 的完成。 在本實(shí)施例中,最初在寄存器中設(shè)置關(guān)于進(jìn)行哈希值計(jì)算的消息A和B的設(shè)置,并 根據(jù)輸入消息針對(duì)消息A或B執(zhí)行哈希值計(jì)算。但是,在需要在針對(duì)消息A或B的哈希值 計(jì)算中間開始針對(duì)消息C的哈希值計(jì)算時(shí),可以在處理中間增加針對(duì)消息C的哈希處理請(qǐng) 求的寄存器設(shè)置。在這種情況下,能夠根據(jù)輸入消息來執(zhí)行針對(duì)消息A、 B和C的哈希值計(jì)算。 注意,本發(fā)明的實(shí)施例不限于上述配置,可以進(jìn)行各種變型。 [O398]《第三實(shí)施例》 在第二實(shí)施例中,CPU預(yù)先在哈希值計(jì)算電路內(nèi)的寄存器中設(shè)置作業(yè)開始信息、塊 的數(shù)量信息和哈希初始值信息,來作為與各消息關(guān)聯(lián)的處理請(qǐng)求的信息。在第三實(shí)施例中, 除了上述信息之外,CPU還預(yù)先在哈希值計(jì)算電路內(nèi)的寄存器中設(shè)置消息優(yōu)先級(jí)信息。 [O400](哈希值計(jì)算電路的配置) 圖18是示出根據(jù)本實(shí)施例的哈希值計(jì)算電路的配置的框圖。下面,參照?qǐng)D18僅 描述與第二實(shí)施例的不同。 附圖標(biāo)記141表示存儲(chǔ)塊數(shù)據(jù)的消息存儲(chǔ)單元X。在滿足以下所有條件的情況下, 消息存儲(chǔ)單元X 141在哈希值計(jì)算完成時(shí)對(duì)存儲(chǔ)在消息存儲(chǔ)單元101中的數(shù)據(jù)進(jìn)行存儲(chǔ)。
存儲(chǔ)在消息存儲(chǔ)單元101中的塊數(shù)據(jù)的消息的優(yōu)先級(jí)低。
正在進(jìn)行哈希值計(jì)算的塊的消息的優(yōu)先級(jí)低。
正在進(jìn)行哈希值計(jì)算的塊存儲(chǔ)在其自身中。 附圖標(biāo)記142表示塊加載信號(hào)X,該塊加載信號(hào)X從哈希值計(jì)算控制器113輸出, 以將存儲(chǔ)在消息存儲(chǔ)單元101中的消息的數(shù)據(jù)加載到消息存儲(chǔ)單元X。附圖標(biāo)記143表示 從消息存儲(chǔ)單元X 141輸出到稍后描述的選擇器144的消息X。附圖標(biāo)記144表示選擇消 息132和消息X 143中的一個(gè)、并將所選擇的信息輸出到擴(kuò)展消息存儲(chǔ)單元102的選擇器。 附圖標(biāo)記145表示作為選擇器144的控制信號(hào)而從哈希值計(jì)算控制器113輸出的消息X選 擇信號(hào)。(寄存器的存儲(chǔ)內(nèi)容) 圖19是示出存儲(chǔ)在哈希值計(jì)算電路100內(nèi)的寄存器116中的信息的圖。以下僅 描述與第二實(shí)施例的不同之處。 寄存器116具有針對(duì)各個(gè)消息類型的作業(yè)開始信息、塊的數(shù)量信息、哈希初始值 信息和消息優(yōu)先級(jí)信息的存儲(chǔ)區(qū)域。 在本實(shí)施例中,在T006和T007中,與在第二實(shí)施例中相同,CPU 201經(jīng)由總線205 和總線信號(hào)117設(shè)置寄存器116。在這種情況下,CPU 201在圖19所示的寄存器116的用 于消息A的"作業(yè)開始"區(qū)域中設(shè)置"開始哈希值計(jì)算"的標(biāo)志。此外,CPU 201在"塊的數(shù) 量"區(qū)域中設(shè)置"針對(duì)96個(gè)塊進(jìn)行處理"的標(biāo)志,在"哈希初始值"區(qū)域中設(shè)置"SHA-1算法 的初始值",并且在"消息優(yōu)先級(jí)"區(qū)域中設(shè)置"低優(yōu)先級(jí)"的標(biāo)志。同樣地,CPU 201在用于消息B的"作業(yè)開始"區(qū)域中設(shè)置"開始哈希值計(jì)算"的標(biāo)志。此外,CPU 201在"塊的數(shù)量" 區(qū)域中設(shè)置"針對(duì)4個(gè)塊進(jìn)行處理"的標(biāo)志,在"哈希初始值"區(qū)域中設(shè)置"SHA-1算法的初 始值",并且在"消息優(yōu)先級(jí)"區(qū)域中設(shè)置"高優(yōu)先級(jí)"的標(biāo)志。之后,哈希值計(jì)算電路100接收DMAC 203從存儲(chǔ)器傳輸?shù)南⒌腄MA輸入數(shù)據(jù) 120和輸入數(shù)據(jù)屬性信號(hào)139。哈希值計(jì)算電路100根據(jù)包括在輸入數(shù)據(jù)屬性信號(hào)139中 的消息標(biāo)識(shí)符信息和處理繼續(xù)信息,以及針對(duì)各消息存儲(chǔ)在寄存器中的預(yù)定區(qū)域中的塊的 總數(shù)和DMA傳輸塊的數(shù)量,執(zhí)行針對(duì)各消息的哈希值計(jì)算。 [O412](哈希值計(jì)算) 圖20A、圖20B和圖20C是示出在以圖6所示的順序輸入兩個(gè)消息(塊AO到A95 及塊BO到B3)時(shí),根據(jù)本實(shí)施例的哈希值計(jì)算的操作序列的流程圖。 在ST301中,CPU 201在哈希值計(jì)算電路100的寄存器116中設(shè)置針對(duì)第一消息 (A0到A95)的處理請(qǐng)求。 在ST302中,CPU 201在哈希值計(jì)算電路100的寄存器116中設(shè)置針對(duì)第二消息 (BO到B3)的處理請(qǐng)求。 在ST303中,哈希值計(jì)算電路100向DMAC 203發(fā)出讀取請(qǐng)求,以讀取消息的一個(gè) 塊的數(shù)據(jù)。 在ST304中,哈希值計(jì)算電路100根據(jù)屬性信號(hào)的消息標(biāo)識(shí)符來確定讀取的塊數(shù) 據(jù)的消息。如果消息標(biāo)識(shí)符信息指示消息A,則處理進(jìn)行到ST305 ;如果消息標(biāo)識(shí)符信息指 示消息B,則處理進(jìn)行到ST312。 在ST305中,哈希值計(jì)算電路100確定是否正在進(jìn)行針對(duì)緊接的前一個(gè)塊的哈希 值計(jì)算。如果正在進(jìn)行哈希值計(jì)算,則處理等待,直到完成該塊的哈希值計(jì)算為止;如果哈 希值計(jì)算完成,則處理進(jìn)行到ST306。 在ST306中,哈希值計(jì)算電路IOO確定消息存儲(chǔ)單元X 141是否存儲(chǔ)具有低優(yōu)先 級(jí)的第一消息的放棄塊。如果消息存儲(chǔ)單元X存儲(chǔ)第一消息的放棄塊的數(shù)據(jù),則處理進(jìn)行 到ST307 ;否則,處理跳至ST309。 在ST307中,哈希值計(jì)算電路100執(zhí)行針對(duì)具有低優(yōu)先級(jí)的第一消息的放棄的塊 的哈希值計(jì)算。 在ST308中,哈希值計(jì)算電路100確定針對(duì)包括總數(shù)=96的塊的第一消息(AO到 A95)的哈希值計(jì)算是否完成。如果哈希值計(jì)算完成,則處理跳至ST311 ;否則,處理進(jìn)行到 ST309。 在ST309中,哈希值計(jì)算電路100執(zhí)行針對(duì)第一消息(AO到A95)的一個(gè)塊的哈希 值計(jì)算。 在ST310中,哈希值計(jì)算電路100確定針對(duì)包括總數(shù)=96的塊的第一消息(AO到 A95)的哈希值計(jì)算是否完成。如果哈希值計(jì)算完成,則處理進(jìn)行到ST311 ;否則,處理返回 到ST303。 在ST311中,哈希值計(jì)算電路100向DMAC 203發(fā)出寫入請(qǐng)求,以輸出針對(duì)第一消 息(A0到A95)的哈希值。 在ST312中,哈希值計(jì)算電路100確定緊接的前一個(gè)塊是否為具有高優(yōu)先級(jí)的第 二消息的塊。如果緊接的前一個(gè)塊是具有高優(yōu)先級(jí)的第二消息的塊,則處理進(jìn)行到ST313 ;如果緊接的前一個(gè)塊是具有低優(yōu)先級(jí)的第一消息的塊,則處理跳至ST314。
在ST313中,哈希值計(jì)算電路100確定是否正在進(jìn)行針對(duì)緊接的前一個(gè)塊的哈希 值計(jì)算。如果正在進(jìn)行哈希值計(jì)算,則處理等待,直到完成該塊的哈希值計(jì)算為止;如果哈 希值計(jì)算完成,則處理進(jìn)行到ST314。 在ST314中,哈希值計(jì)算電路100執(zhí)行針對(duì)第二消息(BO到B3)的一個(gè)塊的哈希 值計(jì)算。 在ST315中,哈希值計(jì)算電路100確定針對(duì)包括總數(shù)=4的塊的第二消息(BO到 B3)的哈希值計(jì)算是否完成。如果哈希值計(jì)算完成,則處理進(jìn)行到ST316 ;否則,處理返回到 ST303。 在ST316中,哈希值計(jì)算電路100向DMAC 203發(fā)出寫入請(qǐng)求,以輸出針對(duì)第二消 息(B0到B3)的哈希值。 在ST317中,哈希值計(jì)算電路100確定其它消息的處理是否完成。如果處理完成, 則結(jié)束處理;否則,處理返回到ST303。 [O431](哈希值計(jì)算的詳細(xì)情況) 圖21A至圖23F是示出根據(jù)本實(shí)施例的各個(gè)步驟的哈希值計(jì)算的操作的時(shí)序圖。 圖21A至圖23F分別示出消息A的開始步驟的操作、將消息A切換到消息B時(shí)的操作、和將 消息B切換到消息A時(shí)的操作。以下僅描述與第二實(shí)施例的不同之處。
從T000到T024的處理與第二實(shí)施例中的處理相同。在T025中,哈希值計(jì)算控制 器113斷言塊加載信號(hào)124。由于存儲(chǔ)在消息存儲(chǔ)單元中的消息A具有低優(yōu)先級(jí),因此哈希 值計(jì)算控制器113斷言塊加載信號(hào)124和塊加載信號(hào)X 142。消息存儲(chǔ)單元X 141檢測(cè)到 塊加載信號(hào)X 142的斷言,并在T026中加載存儲(chǔ)在消息存儲(chǔ)單元101中的塊AO。此外,擴(kuò) 展消息存儲(chǔ)單元102檢測(cè)到塊加載信號(hào)124的斷言,并在T026中加載來自選擇器144的輸 出。此時(shí),由于哈希值計(jì)算控制器113不斷言消息X選擇信號(hào)145,因此選擇器144輸出消 息132和消息X 143中的消息132。 從TOOO到T4237,執(zhí)行與第二實(shí)施例基本相同的處理。但是,在本實(shí)施例中,消息 存儲(chǔ)單元X 141根據(jù)消息的優(yōu)先級(jí)來存儲(chǔ)消息132,并且選擇器144選擇來自消息存儲(chǔ)單 元101的輸出和來自消息存儲(chǔ)單元X 141的輸出中的一個(gè),并將所選擇的消息輸出到擴(kuò)展 消息存儲(chǔ)單元102。 在T4237中,哈希值計(jì)算控制器113斷言塊加載信號(hào)124。擴(kuò)展消息存儲(chǔ)單元102 檢測(cè)到塊加載信號(hào)124的斷言,并在T4238中加載存儲(chǔ)在消息存儲(chǔ)單元101中的塊A52作 為從選擇器144的輸出。此時(shí),擴(kuò)展消息存儲(chǔ)單元102通過將塊A52分割為16個(gè)32位的 數(shù)據(jù)EA52_W00到EA52_W15來存儲(chǔ)塊A52。在從T4238到T4255中,哈希值計(jì)算電路100執(zhí) 行針對(duì)消息A的塊A52的步驟0到步驟17的處理。 在T4238中,哈希值計(jì)算控制器113響應(yīng)于擴(kuò)展消息存儲(chǔ)單元102對(duì)存儲(chǔ)在消息 存儲(chǔ)單元101中的數(shù)據(jù)的存儲(chǔ),斷言DMA讀取請(qǐng)求信號(hào)122,以讀取下一個(gè)塊的數(shù)據(jù)。從 T4238到T4253,哈希值計(jì)算電路100經(jīng)由DMA傳輸來加載塊B0,并且在T4254中,消息存儲(chǔ) 單元101存儲(chǔ)塊BO。 在T4255中,哈希值計(jì)算控制器113根據(jù)輸入數(shù)據(jù)屬性信號(hào)139中的消息標(biāo)識(shí)符 信息,檢測(cè)到消息B。此外,哈希值計(jì)算控制器113根據(jù)寄存器116的"消息優(yōu)先級(jí)"區(qū)域中的信息,檢測(cè)到消息B具有"高優(yōu)先級(jí)"。接著,哈希值計(jì)算控制器113斷言塊加載信號(hào)124, 以放棄針對(duì)在T4255以前處理的消息A的塊A52的分步處理,并先執(zhí)行具有高優(yōu)先級(jí)的消 息B的哈希值計(jì)算。擴(kuò)展消息存儲(chǔ)單元102檢測(cè)到塊加載信號(hào)124的斷言,并在T4256中加 載作為來自選擇器144的輸出的存儲(chǔ)在消息存儲(chǔ)單元101中的塊B0。此時(shí),由于在T4255 中,哈希值計(jì)算控制器113不斷言塊加載信號(hào)X 142,因此消息存儲(chǔ)單元X 141不加載作為 來自消息存儲(chǔ)單元101的輸出的消息132(塊B0)。 之后,從T4256到T4579,哈希值計(jì)算電路100執(zhí)行針對(duì)消息B的哈希值計(jì)算,從 T4580到T4585, DMAC 203輸出消息B的哈希值HB。 在T4499中,哈希值計(jì)算控制器113響應(yīng)于將存儲(chǔ)在消息存儲(chǔ)單元101中的消息 B的最后的塊B3加載到擴(kuò)展消息存儲(chǔ)單元102,斷言DMA讀取請(qǐng)求信號(hào)122。接著,讀取下 一個(gè)消息的數(shù)據(jù)。從T4500到T4514,DMAC 203DMA傳輸消息A的塊A53。在T4515中,消息 存儲(chǔ)單元101存儲(chǔ)塊A53。此時(shí),雖然存儲(chǔ)在消息存儲(chǔ)單元101中的消息A具有低優(yōu)先級(jí), 但由于存儲(chǔ)在消息存儲(chǔ)單元X 141中的數(shù)據(jù)的哈希值計(jì)算尚未完成,因此哈希值計(jì)算控制 器113不斷言塊加載信號(hào)X 142。因此,消息存儲(chǔ)單元X 141不加載作為來自消息存儲(chǔ)單元 101的輸出的消息132 (塊A53)。 在T4500中,哈希值計(jì)算控制器113加載輸入數(shù)據(jù)屬性信號(hào)139并檢測(cè)到重新開 始了消息A的加載。因此,在T4501中,哈希值計(jì)算控制器113斷言消息X選擇信號(hào)145。 接著,選擇器144輸出消息132和消息X 143中的消息X 143。在T4579中,哈希值計(jì)算控 制器113斷言塊加載信號(hào)124。在T4580中,擴(kuò)展消息存儲(chǔ)單元102檢測(cè)到塊加載信號(hào)124 的斷言,并加載作為選擇器144的輸出的消息X 143(A52)。哈希值計(jì)算控制器113在T4580 中取消斷言消息X選擇信號(hào)145。從T4580開始,重新開始之前在處理中間放棄的塊A52的 處理。(以塊為單位的操作) 圖24A和圖24B(以下總稱為圖24)是示出根據(jù)本實(shí)施例的針對(duì)各個(gè)塊的哈希值 計(jì)算的操作的時(shí)序圖。 與第二實(shí)施例中相同,在TB52中,DMAC 203將塊BO DMA傳輸?shù)焦V涤?jì)算電路 100。但是,在TB56內(nèi)的T4580的定時(shí),DMAC 203從哈希值計(jì)算電路100傳輸消息B的哈希 值HB。在第二實(shí)施例中,在TB57內(nèi)的T4643的定時(shí),哈希值計(jì)算電路IOO輸出哈希值HB。 因此,在第三實(shí)施例中,與第二實(shí)施例相比,消息B的哈希值的輸出開始定時(shí)縮短了63個(gè)基 本處理時(shí)間段。注意,通過從一個(gè)塊的81個(gè)基本處理時(shí)間段中減去存儲(chǔ)消息B的塊BO的 數(shù)據(jù)所需的18個(gè)基本處理時(shí)間段,來計(jì)算63個(gè)基本處理時(shí)間段。這18個(gè)基本處理時(shí)間段 也是執(zhí)行在處理中間放棄的哈希中間值A(chǔ)52的哈希值計(jì)算的時(shí)間段。 另一方面,在本實(shí)施例中,在TB58內(nèi)的T4742的定時(shí),哈希值計(jì)算單元100輸出哈 希中間值HA53。在第二實(shí)施例中,在TB58內(nèi)的T4724定時(shí),哈希值計(jì)算單元100輸出哈希 中間值HA53。因此,在第三實(shí)施例中,與第二實(shí)施例相比,消息A的哈希值的輸出開始定時(shí) 延遲了 18個(gè)基本處理時(shí)間段。 在本實(shí)施例中,消息B的消息優(yōu)先級(jí)高,但是本發(fā)明并不限于此。當(dāng)消息B的消息 優(yōu)先級(jí)與消息A同樣低時(shí),與在第二實(shí)施例中相同,哈希值計(jì)算單元IOO不在處理中間放棄 塊52的哈希值計(jì)算。換言之,在塊A52的哈希中間值的生成之后,哈希值計(jì)算單元100執(zhí)
36行針對(duì)塊BO的哈希值計(jì)算。 如上所述,根據(jù)本實(shí)施例,通過從附加到該消息的數(shù)據(jù)的輸入數(shù)據(jù)屬性信號(hào)中提 取目標(biāo)消息來識(shí)別目標(biāo)消息,并且增加了進(jìn)一步對(duì)存儲(chǔ)在消息存儲(chǔ)單元中的消息進(jìn)行存儲(chǔ) 的第二消息存儲(chǔ)單元。例如,下面分析在處理中間中斷針對(duì)第一消息的哈希值計(jì)算,并首先 執(zhí)行針對(duì)另外的第二消息的哈希值計(jì)算的情況。根據(jù)本實(shí)施例的配置,在存儲(chǔ)第二消息的 數(shù)據(jù)之前,放棄針對(duì)正在處理的第一消息的某個(gè)塊的哈希值計(jì)算,并能夠優(yōu)先處理第二消 息的第一個(gè)塊。因此,更早完成針對(duì)第二消息的哈希值計(jì)算。 本實(shí)施例例示了 SHA-1用作哈希函數(shù)。但是,哈希函數(shù)可以使用例如MD5和 SHA-256的其它算法。 在本實(shí)施例中,針對(duì)各步驟依次生成擴(kuò)展消息。但是,也可以在最初同時(shí)生成擴(kuò)展 消息。 在本實(shí)施例的配置中,能夠存儲(chǔ)針對(duì)兩個(gè)不同消息的哈希中間值。但是,本發(fā)明不
限于這種特定配置。例如,通過配置三個(gè)或更多個(gè)哈希中間值存儲(chǔ)單元、塊計(jì)數(shù)器和寄存器
設(shè)置區(qū)域等,能夠中斷和重新開始針對(duì)三個(gè)或更多個(gè)不同的消息的哈希值計(jì)算。在本實(shí)施
例的配置中,配置各自具有能夠存儲(chǔ)一個(gè)哈希中間值的哈希中間值存儲(chǔ)區(qū)域的多個(gè)哈希中
間值存儲(chǔ)單元。但是本發(fā)明不限于這種特定配置。例如,可以配置各自具有能夠存儲(chǔ)多個(gè)
哈希中間值的哈希中間值存儲(chǔ)區(qū)域的一個(gè)或多個(gè)哈希中間值存儲(chǔ)單元。 在上述描述中,各個(gè)消息的哈希中間值和哈希中間值存儲(chǔ)單元之間的對(duì)應(yīng)關(guān)系是
固定的,如消息A和B的哈希中間值分別存儲(chǔ)在哈希中間值存儲(chǔ)單元A和B中。但是,本發(fā)
明不限于此。例如,可以配置存儲(chǔ)表示哈希中間值存儲(chǔ)區(qū)域和消息的哈希中間值之間的對(duì)
應(yīng)關(guān)系的對(duì)應(yīng)關(guān)系信息的哈希中間值存儲(chǔ)信息存儲(chǔ)單元,并可以根據(jù)存儲(chǔ)在哈希中間值存
儲(chǔ)信息存儲(chǔ)單元中的對(duì)應(yīng)關(guān)系信息來決定哈希中間值存儲(chǔ)區(qū)域。 在本實(shí)施例中,消息優(yōu)先級(jí)包括兩個(gè)等級(jí),即高優(yōu)先級(jí)和低優(yōu)先級(jí)??商鎿Q的,消 息優(yōu)先級(jí)可以包括三個(gè)以上等級(jí),并可以優(yōu)先執(zhí)行針對(duì)具有較高優(yōu)先級(jí)的消息的哈希值計(jì)算。 在本實(shí)施例中,配置進(jìn)一步對(duì)存儲(chǔ)在第一消息存儲(chǔ)單元中的消息進(jìn)行存儲(chǔ)的另一
個(gè)消息存儲(chǔ)單元。然而,本發(fā)明不限于此。例如,除了第一消息存儲(chǔ)單元外,可以根據(jù)優(yōu)先
級(jí)等級(jí)數(shù)和哈希中間值存儲(chǔ)單元的數(shù)量,配置兩個(gè)或更多個(gè)消息存儲(chǔ)單元。 在本實(shí)施例中,CPU在哈希電路的外部對(duì)哈希值計(jì)算的填充處理進(jìn)行處理。但是,
也可以在哈希電路內(nèi)部對(duì)填充處理進(jìn)行處理。 在本實(shí)施例中,DMAC用作用于在哈希值計(jì)算電路和外部存儲(chǔ)器之間交換消息和哈 希值的設(shè)備。但是,也可以使用其它傳輸設(shè)備。 在本實(shí)施例中,DMA輸入/輸出數(shù)據(jù)的位寬為64位。但是,可以使用其它位數(shù)。
在本實(shí)施例中,哈希值計(jì)算的各步驟的處理的基本處理時(shí)間段T等于DMA傳輸處 理的基本處理時(shí)間段T。但是,分步處理和DMA傳輸處理的基本處理時(shí)間段可以不同。
本實(shí)施例中,CPU預(yù)先在寄存器的預(yù)定區(qū)域中設(shè)置消息優(yōu)先級(jí)作為處理請(qǐng)求的信 息??商鎿Q地,輸入數(shù)據(jù)屬性信號(hào)可以包括消息優(yōu)先級(jí)。 在本實(shí)施例中,輸入數(shù)據(jù)屬性信號(hào)包括消息標(biāo)識(shí)符信息和處理繼續(xù)信息,并且數(shù) 據(jù)寬度為8位。但是,本發(fā)明不限于此。例如,輸入數(shù)據(jù)屬性信號(hào)還可以包括例如消息優(yōu)先
37級(jí)信息、塊標(biāo)識(shí)符等的其它信息,并可以根據(jù)包括的信息來改變信號(hào)的數(shù)據(jù)寬度。 在本實(shí)施例中,哈希值計(jì)算電路通過對(duì)各消息的輸入塊的數(shù)量進(jìn)行計(jì)數(shù)來識(shí)別輸
入消息的塊編號(hào)??商鎿Q地,輸入數(shù)據(jù)屬性信號(hào)還可以包括塊編號(hào)。 在本實(shí)施例中,CPU在哈希值計(jì)算電路的寄存器中設(shè)置消息的塊的數(shù)量,哈希值計(jì) 算電路通過對(duì)DMA確認(rèn)信號(hào)進(jìn)行計(jì)數(shù)來識(shí)別具有CPU設(shè)置的塊的數(shù)量的消息的供應(yīng)。但是, 可以使用其它方法。例如,CPU可以通過在寄存器中設(shè)置消息傳輸完成來通知消息傳輸?shù)?完成。 在本實(shí)施例中,在處理中間根據(jù)存儲(chǔ)在寄存器的預(yù)定區(qū)域中的消息優(yōu)先級(jí)的信 息,放棄針對(duì)具有低優(yōu)先級(jí)的消息的塊的哈希值計(jì)算。然而,本發(fā)明不限于此。例如,屬性 信號(hào)中的消息標(biāo)識(shí)符還可以表示消息優(yōu)先級(jí),或者可以輸入其它處理中斷指令信號(hào),從而 通過優(yōu)先執(zhí)行針對(duì)具有高優(yōu)先級(jí)的消息的哈希值計(jì)算,來確定放棄針對(duì)正在進(jìn)行計(jì)算的消 息的哈希值計(jì)算。 在本實(shí)施例的描述中,最初在寄存器中設(shè)置關(guān)于作為進(jìn)行哈希值計(jì)算的消息的消 息A和B的設(shè)置,接著根據(jù)輸入消息來執(zhí)行針對(duì)消息A或B的哈希值計(jì)算。但是,本發(fā)明不 限于此。例如,下面分析需要在針對(duì)消息A或B的哈希值計(jì)算的中間開始針對(duì)消息C的哈 希值計(jì)算的情況。在這種情況下,在處理中間增加針對(duì)消息C的哈希處理請(qǐng)求的寄存器設(shè) 置時(shí),能夠根據(jù)輸入消息來執(zhí)行針對(duì)消息A、 B和C的哈希值計(jì)算。
注意,本發(fā)明的實(shí)施例不限于上述配置,可以進(jìn)行各種變型。 如上所述,根據(jù)第一到第三實(shí)施例的配置,能夠減少通過針對(duì)各個(gè)塊選擇要處理 的消息來執(zhí)行哈希值計(jì)算時(shí)的開銷,并能夠保持哈希值計(jì)算的安全性。
《第四實(shí)施例》 本實(shí)施例將說明支持MD5、 SHA1和SHA512作為哈希算法,并且并行處理最多兩個(gè) 消息的哈希值計(jì)算裝置。以下將并行執(zhí)行的兩個(gè)處理稱作處理A和處理B。
哈希值計(jì)算針對(duì)包括16個(gè)字(word)的各塊,對(duì)消息進(jìn)行處理,并輸出N個(gè)字的哈 希值作為其最終結(jié)果。該哈希值計(jì)算包括如下一系列處理。
將消息分割為各自包括16個(gè)字的塊,并將預(yù)定數(shù)據(jù)添加到消息的最末位置,使 得最后的塊也包括16個(gè)字(以下稱作填充處理)。
針對(duì)各個(gè)包括16個(gè)字的塊執(zhí)行稍后描述的消息擴(kuò)展處理、分步處理和加法處 理,從而生成哈希中間值。 消息擴(kuò)展處理是使用16個(gè)字的數(shù)據(jù)生成1個(gè)字的擴(kuò)展消息的運(yùn)算處理。按原樣 使用最初輸入的消息作為第1到第16個(gè)擴(kuò)展消息。對(duì)于第17及隨后的擴(kuò)展消息,使用16 個(gè)字的第(n-16)到第(n-l)個(gè)擴(kuò)展消息生成l個(gè)字的第n個(gè)擴(kuò)展消息。重復(fù)該生成,直到 生成第N個(gè)擴(kuò)展消息為止。假定N為在算法中規(guī)定的預(yù)定步驟數(shù)量。 各分步處理是使用包括W個(gè)字(W是由哈希算法規(guī)定的整數(shù))的預(yù)定內(nèi)部狀態(tài)值 和l個(gè)字的擴(kuò)展消息來生成下一個(gè)內(nèi)部狀態(tài)值的運(yùn)算處理。使用哈希初始值和第一擴(kuò)展消 息來生成第一內(nèi)部狀態(tài)值。使用第(n-l)個(gè)內(nèi)部狀態(tài)值和第n個(gè)擴(kuò)展消息來生成第n個(gè)內(nèi) 部狀態(tài)值。重復(fù)該生成,直到生成第N個(gè)內(nèi)部狀態(tài)值為止。 加法處理是將從第一個(gè)塊到緊接的前一個(gè)塊的哈希中間值和關(guān)注的塊的第N個(gè) 內(nèi)部狀態(tài)值相加的運(yùn)算處理。通過將哈希初始值和第一個(gè)塊的第N個(gè)內(nèi)部狀態(tài)值相加來生成第一個(gè)塊的哈希中間值。輸出針對(duì)最后一個(gè)塊獲得哈希中間值,作為針對(duì)整個(gè)消息的哈 希值。 針對(duì)各個(gè)哈希算法,規(guī)定了定義1個(gè)字的位數(shù)針對(duì)MD5為32位,針對(duì)SHA-1為32 位,針對(duì)SHA512為64位。 針對(duì)各個(gè)哈希算法,規(guī)定了內(nèi)部狀態(tài)值和哈希值的字的數(shù)量針對(duì)MD5為4個(gè)字
(128位),針對(duì)SHA-1為5個(gè)字(160位),針對(duì)SHA512為8個(gè)字(256位)。 針對(duì)各個(gè)哈希算法,規(guī)定了預(yù)定步驟數(shù)量N :針對(duì)MD5為N = 64,針對(duì)SHA-1為N
=80,針對(duì)SHA512為N = 80。(哈希值計(jì)算電路) 圖25是示出根據(jù)本實(shí)施例的哈希值計(jì)算電路配置的框圖。附圖標(biāo)記100表示哈 希值計(jì)算電路。 附圖標(biāo)記101表示控制處理A和B的哈希值計(jì)算的哈希值計(jì)算控制器,其包括用 于控制哈希值計(jì)算的寄存器。在哈希值計(jì)算電路100的外部配置的CPU能夠經(jīng)由系統(tǒng)總線 102訪問寄存器。 哈希值計(jì)算控制器101生成以下信號(hào) 指示正在進(jìn)行處理A的信號(hào)A_EXE ; 指示處理A正在執(zhí)行的哈希算法的信號(hào)A_ALG ; 指示處理A正在執(zhí)行的步驟的數(shù)量的信號(hào)A_STP_CNT ; 指示處理A正在執(zhí)行的塊的數(shù)量的信號(hào)A_BLK_CNT ;以及 指示在處理A中使用的哈希初始值的信號(hào)A_IV。 在信號(hào)A_EXE為"1"時(shí),信號(hào)A_EXE指示正在進(jìn)行處理A,信號(hào)A_ALG指示MD5、 SHA-1和SHA512的一個(gè)。在A_EXE ="1"時(shí),信號(hào)A_STP_CNT重置為0,并在響應(yīng)于輸入消 息的輸入傳輸請(qǐng)求接收到第一確認(rèn)時(shí),開始計(jì)數(shù)。信號(hào)A—STP—CNT針對(duì)各時(shí)鐘周期從0向上 計(jì)數(shù)到N+l,接著返回到0。在信號(hào)A_STP_CNT為0到N_l時(shí),消息擴(kuò)展處理執(zhí)行第1到第 N個(gè)處理,并且在信號(hào)A_STP_CNT為0到N時(shí),分步處理執(zhí)行第1到第N個(gè)處理。在信號(hào)A_ STP_CNT為2到N+l時(shí),加法處理執(zhí)行第1到第N個(gè)處理。在A_EXE = "1"時(shí),信號(hào)A_BLK_ CNT重置為0,并在信號(hào)A_STP_CNT達(dá)到N+l時(shí)向上計(jì)數(shù)+1。信號(hào)A_BLK_CNT向上計(jì)數(shù),直 到輸入消息的塊的數(shù)量-1為止,接著返回到O。 哈希值計(jì)算控制器101生成信號(hào)A_DMA_REQ作為到DMA控制器(以下稱作DMAC) A
的數(shù)據(jù)傳輸請(qǐng)求,DMAC A配置在哈希值計(jì)算電路100的外部,并傳輸處理A使用的輸入/輸
出數(shù)據(jù)。接著,哈希值計(jì)算控制器101從DMAC A接收確認(rèn)信號(hào)A—DMA—ACK。信號(hào)A_DMA_REQ
和信號(hào)A_DMA_ACK分別是2位的信號(hào)。假定信號(hào)A_DMA_REQ
/A_DMA_ACK
是用于輸入
作為要處理的數(shù)據(jù)的輸入消息的輸入傳輸信號(hào),并且信號(hào)A_DMA_REQ[1]/A_DMA_ACK[1]是
用于輸出作為哈希值計(jì)算結(jié)果而獲得的哈希值的輸出傳輸信號(hào)。 此外,哈希值計(jì)算控制器101生成以下的信號(hào) 指示正在進(jìn)行處理B的信號(hào)B_EXE ; 指示處理B正在執(zhí)行的哈希算法的信號(hào)B_ALG ; 指示處理B正在執(zhí)行的步驟的數(shù)量的信號(hào)B_STP_CNT ; 指示處理B正在執(zhí)行的塊的數(shù)量的信號(hào)B_BLK_CNT ;以及
39
指示在處理B中使用的哈希初始值的信號(hào)B_IV。 在信號(hào)B_EXE為"1"時(shí),信號(hào)B_EXE指示正在進(jìn)行處理B,信號(hào)B_ALG指示MD5、 SHA-1和SHA512的一個(gè)。在B_EXE ="1"時(shí),信號(hào)B_STP_CNT重置為0,并在響應(yīng)于輸入消 息的輸入傳輸請(qǐng)求接收到第一確認(rèn)時(shí),開始計(jì)數(shù)。信號(hào)B—STP—CNT針對(duì)各時(shí)鐘周期從0向 上計(jì)數(shù)到N+l,接著返回到0。在信號(hào)B_STP_CNT為0到N_l時(shí),消息擴(kuò)展處理執(zhí)行第1到 第N個(gè)處理,在信號(hào)B_STP_CNT為0到N時(shí),分步處理執(zhí)行第1到第N個(gè)處理。在信號(hào)B_ STP—CNT為2到N+l時(shí),加法處理執(zhí)行第1到第N個(gè)處理。在B—EXE = " 1 "時(shí),信號(hào)B—BLK— CNT重置為0,并在信號(hào)B_STP_CNT達(dá)到N+l時(shí)向上計(jì)數(shù)+1。信號(hào)B_BLK_CNT向上計(jì)數(shù),直 到輸入消息的塊的數(shù)量-1為止,接著返回到O。 哈希值計(jì)算控制器101生成信號(hào)B_DMA_REQ作為到DMAC B的數(shù)據(jù)傳輸請(qǐng)求,DMAC B配置在哈希值計(jì)算電路100的外部,并傳輸處理B使用的輸入/輸出數(shù)據(jù)。接著,哈希值 計(jì)算控制器101從DMAC B接收確認(rèn)信號(hào)B_DMA_ACK。信號(hào)B_DMA_REQ和信號(hào)B_DMA_ACK分 別是2位的信號(hào)。假定信號(hào)B—DMA—REQ
/B—DMA—ACK
是用于輸入作為要處理的數(shù)據(jù)的 輸入消息的輸入傳輸信號(hào),并且信號(hào)B_DMA_REQ[1]/B_DMA_ACK[1]是用于輸出作為哈希值 計(jì)算結(jié)果而獲得的哈希值的輸出傳輸信號(hào)。 附圖標(biāo)記103表示作為與配置在哈希值計(jì)算電路100的外部的DMAC的接口的DMA IF單元。附圖標(biāo)記104表示與傳輸處理A的輸入/輸出數(shù)據(jù)的DMAC A的接口信號(hào)。輸入 數(shù)據(jù)總線A_DMA_IDATA具有64位的寬度,以64位為單位來傳輸作為要處理的數(shù)據(jù)的輸入 消息,并且輸出64位的輸入消息A_MSG。輸出數(shù)據(jù)總線A_DMA_ODATA具有64位的寬度,并 且以64位為單位來傳輸作為哈希值計(jì)算結(jié)果而獲得的哈希值。附圖標(biāo)記105表示與傳輸 處理B的輸入/輸出數(shù)據(jù)的DMAC B的接口信號(hào)。輸入數(shù)據(jù)總線B_DMA_IDATA具有64位的 寬度,以64位為單位來傳輸作為要處理的數(shù)據(jù)的輸入消息,并輸出64位的輸入消息B—MSG。 輸出數(shù)據(jù)總線B_DMA_ODATA具有64位的寬度,并且以64位為單位來傳輸作為哈希值計(jì)算 結(jié)果而獲得的哈希值。
(接口信號(hào)) 圖34A和圖34B是示出基于接口信號(hào)104和105的操作的示例的時(shí)序圖。
T100到T105指示信號(hào)104的輸入傳輸,T107到T110指示信號(hào)104的輸出傳輸。 在輸入傳輸中,在T100中,DMAIF單元103將輸入傳輸請(qǐng)求信號(hào)A_DMA_REQ
斷言到DMAC A。 在T101中,DMAC A將第一輸入數(shù)據(jù)DIO傳輸?shù)紻MA IF單元103,并斷言確認(rèn)信 號(hào)A_DMA_ACK
。響應(yīng)于T102中的時(shí)鐘前沿,同時(shí)斷言信號(hào)A_DMA_REQ
和信號(hào)A_DMA_ ACK[O],以完成數(shù)據(jù)DIO的輸入傳輸,并且DMAC A傳輸?shù)诙斎霐?shù)據(jù)DIl。在輸出傳輸中, 在T107中,DMA IF單元103將第一輸出數(shù)據(jù)D00輸出到DMAC A,同時(shí)斷言輸出傳輸請(qǐng)求信 號(hào)A_DMA_REQ[1]。在T108中,DMAC A將確認(rèn)信號(hào)A_DMA_ACK[1]斷言到DMA IF單元103, 并接收輸出數(shù)據(jù)。 響應(yīng)于T109中的時(shí)鐘前沿,斷言信號(hào)A—DMA—REQ[1]和信號(hào)A_DMA_ACK[1],以完成 數(shù)據(jù)DOO的輸出傳輸,并且DMA IF單元103傳輸?shù)诙敵鰯?shù)據(jù)D01。在本實(shí)施例中,確定與 處理A的一個(gè)傳輸請(qǐng)求對(duì)應(yīng)的數(shù)據(jù)量,并且一旦DMAC A斷言確認(rèn)信號(hào),則DMAC A連續(xù)傳輸 確定的數(shù)據(jù)量。假定輸入傳輸針對(duì)一個(gè)塊連續(xù)傳輸l個(gè)字的數(shù)據(jù)。在1個(gè)字少于64位的輸入數(shù)據(jù)總線寬度時(shí),通過向低位填充數(shù)據(jù)來傳輸該字。假定輸出傳輸與哈希值的字的數(shù) 量對(duì)應(yīng)地連續(xù)傳輸一個(gè)字的數(shù)據(jù)。在1個(gè)字少于64位的輸入數(shù)據(jù)總線寬度時(shí),通過向低位 填充數(shù)據(jù)來傳輸該數(shù)據(jù)。由于MD5、SHA1和SHA512要求每個(gè)時(shí)鐘16個(gè)字,因此連續(xù)傳輸16 次數(shù)據(jù)。輸出傳輸將哈希值分割為各自具有64位的寬度的數(shù)據(jù),并連續(xù)傳輸分割的數(shù)據(jù)。 由于MD5的哈希值需要128位,因此連續(xù)傳輸兩次數(shù)據(jù)。由于SHA1的哈希值需要160位, 因此連續(xù)傳輸3次數(shù)據(jù)。由于SHA512的哈希值需要512位,因此連續(xù)傳輸8次數(shù)據(jù)。
Till到T116指示信號(hào)105的輸入傳輸,T118到T122指示信號(hào)105的輸出傳輸。 在輸入傳輸中,在Till中,DMA IF單元103將輸入傳輸請(qǐng)求信號(hào)B—DMA—REQ
斷言到DMAC B。 在T112中,DMAC B將第一輸入數(shù)據(jù)DIO傳輸?shù)紻MA IF單元103,并斷言確認(rèn)信 號(hào)B_DMA_ACK
。響應(yīng)于T113中的時(shí)鐘前沿,同時(shí)斷言信號(hào)B_DMA_REQ
和信號(hào)B_DMA_ ACK[O],以完成數(shù)據(jù)DIO的輸入傳輸,并且DMAC B傳輸?shù)诙斎霐?shù)據(jù)DIl。在輸出傳輸中, 在T118中,DMA IF單元103將第一輸出數(shù)據(jù)D00輸出到DMAC B,同時(shí)斷言輸出傳輸請(qǐng)求信 號(hào)B_DMA_REQ[1]。在T119中,DMAC B將確認(rèn)信號(hào)B_DMA_ACK[1]斷言到DMA IF單元103, 并接收輸出數(shù)據(jù)。 響應(yīng)于T120中的時(shí)鐘前沿,斷言信號(hào)B—DMA—REQ[1]和信號(hào)B—DMA—ACK[1],以完成 數(shù)據(jù)DOO的輸出傳輸,并且DMA IF單元103傳輸?shù)诙敵鰯?shù)據(jù)D01。在本實(shí)施例中,預(yù)先確 定與處理B的一個(gè)傳輸請(qǐng)求對(duì)應(yīng)的數(shù)據(jù)量,并且一旦DMAC B斷言確認(rèn)信號(hào),則DMAC B連續(xù) 傳輸所確定的數(shù)據(jù)量。假定輸入傳輸針對(duì)一個(gè)塊連續(xù)傳輸l個(gè)字的數(shù)據(jù)。在1個(gè)字少于64 位的輸入數(shù)據(jù)總線寬度時(shí),通過向低位填充數(shù)據(jù)來傳輸該字。由于MD5、 SHA1和SHA512要 求每個(gè)時(shí)鐘16個(gè)字,因此連續(xù)傳輸16次數(shù)據(jù)。假定輸出傳輸將哈希值分割為各自具有64 位的寬度的數(shù)據(jù),并連續(xù)傳輸分割的數(shù)據(jù)。由于MD5的哈希值需要128位,因此連續(xù)傳輸兩 次數(shù)據(jù)。由于SHA1的哈希值需要160位,因此連續(xù)傳輸3次數(shù)據(jù)。由于SHA512的哈希值 需要512位,因此連續(xù)傳輸8次數(shù)據(jù)。 附圖標(biāo)記106表示擴(kuò)展消息選擇器。擴(kuò)展消息選擇器106根據(jù)信號(hào)A_EXE、A_ALG、 A_STP_CNT、 B_EXE、 B_ALG以及B_STP_CNT,來選擇從外部輸入的消息A_MSG和B_MSG以及 擴(kuò)展消息ExMSG_N。接著,擴(kuò)展消息選擇器106輸出32位的數(shù)據(jù)ExMSGJ)和ExMSG_l。在 擴(kuò)展消息存儲(chǔ)單元107 (稍后描述)的區(qū)域0中存儲(chǔ)數(shù)據(jù)ExMSGJ),并在擴(kuò)展消息存儲(chǔ)單元 107的區(qū)域1中存儲(chǔ)數(shù)據(jù)ExMSG_l。
(數(shù)據(jù)ExMSGJ)和ExMSG_l的選擇) 圖35是示出數(shù)據(jù)ExMSGJ)和ExMSG_l的選擇策略的示例的圖。附圖標(biāo)記1001表 示數(shù)據(jù)ExMSGJ)的數(shù)據(jù)選擇策略。
附圖標(biāo)記1001-a表示正在進(jìn)行處理A的MD5哈希值計(jì)算,并且要執(zhí)行第1至第 16個(gè)消息擴(kuò)展處理(A_EXE = 1、A_ALG = MD5且A_STP_CNT = 0到15)的情況。在這種情 況下,選擇來自DMAC A的傳輸數(shù)據(jù)的低32位A_MSG[31:0]。
附圖標(biāo)記1001-b表示正在進(jìn)行處理A的SHA512哈希值計(jì)算,并且要執(zhí)行第1至 第16個(gè)消息擴(kuò)展處理(A_EXE = 1、 A_ALG = SHA512且A_STP_CNT = 0到15)的情況。在 這種情況下,選擇來自DMAC A的傳輸數(shù)據(jù)的低32位A_MSG[31:0]。
附圖標(biāo)記1001-c表示正在進(jìn)行處理B的MD5哈希值計(jì)算,并且要執(zhí)行第1至第
4116個(gè)消息擴(kuò)展處理(B_EXE = 1、B_ALG = MD5且B_STP_CNT = 0到15)的情況。在這種情 況下,選擇來自DMAC B的傳輸數(shù)據(jù)的低32位B_MSG[31:0]。
附圖標(biāo)記1001-d表示正在進(jìn)行處理B的SHA512哈希值計(jì)算,并且要執(zhí)行第1至 第16個(gè)消息擴(kuò)展處理(B_EXE = 1、 B_ALG = SHA512且B_STP_CNT = 0到15)的情況。在 這種情況下,選擇來自DMAC B的傳輸數(shù)據(jù)的低32位B_MSG[31:0]。
附圖標(biāo)記1001-e表示上述情況以外的情況。在這種情況下,選擇稍后描述的擴(kuò) 展消息的低32位ExMSG_N[31:0]。 附圖標(biāo)記1002表示數(shù)據(jù)ExMSG_l的數(shù)據(jù)選擇策略。
附圖標(biāo)記1002-a表示正在進(jìn)行處理A的MD5哈希值計(jì)算,并且要執(zhí)行第1至第 16個(gè)消息擴(kuò)展處理(A_EXE = 1、A_ALG = MD5且A_STP_CNT = 0到15)的情況。在這種情 況下,選擇來自DMAC A的傳輸數(shù)據(jù)的低32位A_MSG[31:0]。
附圖標(biāo)記1002-b表示正在進(jìn)行處理A的SHA512哈希值計(jì)算,并且要執(zhí)行第1至 第16個(gè)消息擴(kuò)展處理(A_EXE = 1、 A_ALG = SHA512且A_STP_CNT = 0到15)的情況。在 這種情況下,選擇來自DMAC A的傳輸數(shù)據(jù)的高32位A_MSG[63:32]。
附圖標(biāo)記1002-c表示正在進(jìn)行處理B的MD5哈希值計(jì)算,并且要執(zhí)行第1至第 16個(gè)消息擴(kuò)展處理(B_EXE = 1、B_ALG = MD5且B_STP_CNT = 0到15)的情況。在這種情 況下,選擇來自DMAC B的傳輸數(shù)據(jù)的低32位B_MSG[31:0]。
附圖標(biāo)記1002-d表示正在進(jìn)行處理B的SHA512哈希值計(jì)算,并且要執(zhí)行第1至 第16個(gè)消息擴(kuò)展處理(B_EXE = 1、 B_ALG = SHA512且B_STP_CNT = 0到15)的情況。在 這種情況下,選擇來自DMAC B的傳輸數(shù)據(jù)的高32位B_MSG[63:32]。
附圖標(biāo)記1002-e表示上述情況以外的情況。在這種情況下,選擇稍后描述的擴(kuò) 展消息的高32位ExMSG_N[63:32]。 根據(jù)圖35所示的選擇策略,在正在進(jìn)行處理A或B的哈希值計(jì)算時(shí),選擇在處理 中使用的數(shù)據(jù);在未正在進(jìn)行哈希值計(jì)算時(shí),輸出擴(kuò)展消息ExMSG_N,并將其存儲(chǔ)在擴(kuò)展消 息存儲(chǔ)單元107中。 附圖標(biāo)記107表示存儲(chǔ)來自擴(kuò)展消息選擇器106的輸出數(shù)據(jù)的擴(kuò)展消息存儲(chǔ)單元 107。擴(kuò)展消息存儲(chǔ)單元107包括1024位的觸發(fā)器,其中第0到第511位形成區(qū)域O,第512 位到第1023位形成區(qū)域1。將來自1024位的觸發(fā)器的輸出信號(hào)設(shè)為ExMSG[1023:0]。
(擴(kuò)展消息存儲(chǔ)單元) 圖36是示出擴(kuò)展消息存儲(chǔ)單元107的內(nèi)部配置的示例的圖。附圖標(biāo)記1101表示 區(qū)域O的觸發(fā)器。觸發(fā)器1101針對(duì)各時(shí)鐘將所存儲(chǔ)的數(shù)據(jù)向LSB移位32位,并在最高的32 位ExMSG[511:480]中存儲(chǔ)32位的數(shù)據(jù)ExMSGJ)。附圖標(biāo)記1102表示區(qū)域1的觸發(fā)器。觸 發(fā)器1102針對(duì)各時(shí)鐘將所存儲(chǔ)的數(shù)據(jù)向LSB移位32位,并在最高的32位ExMSG [ 1023:992] 中存儲(chǔ)32位的數(shù)據(jù)ExMSGj。 附圖標(biāo)記108-1、 108-2和108_3表示執(zhí)行對(duì)應(yīng)的哈希函數(shù)的消息擴(kuò)展處理的消 息擴(kuò)展處理器。由于消息擴(kuò)展處理對(duì)應(yīng)于哈希算法而不同,因此配置與各個(gè)哈希算法對(duì)應(yīng) 的消息擴(kuò)展處理器。消息擴(kuò)展處理器108-1對(duì)應(yīng)于MD5。消息擴(kuò)展處理器108-2對(duì)應(yīng)于 SHA1。消息擴(kuò)展處理器108-3對(duì)應(yīng)于SHA512。預(yù)先確定存儲(chǔ)消息擴(kuò)展處理器108_1、108_2 和108-3要處理的數(shù)據(jù)的擴(kuò)展消息存儲(chǔ)單元107的區(qū)域。
MD5消息擴(kuò)展處理器108-1使用區(qū)域0作為要處理的數(shù)據(jù)的存儲(chǔ)區(qū)域。消息擴(kuò)展 處理器108-1輸入?yún)^(qū)域0的數(shù)據(jù)ExMSG[511:0],并輸出一個(gè)字(32位)的擴(kuò)展消息MD5— ExMSG[31:0]。 SHA1消息擴(kuò)展處理器108-2使用區(qū)域1作為要處理的數(shù)據(jù)的存儲(chǔ)區(qū)域。消息擴(kuò) 展處理器108-2輸入?yún)^(qū)域1的數(shù)據(jù)ExMSG[1023:512],并輸出一個(gè)字(32位)的擴(kuò)展消息 SHAl_ExMSG[31:0]。 SHA512消息擴(kuò)展處理器108_3使用區(qū)域0和1作為要處理的數(shù)據(jù)的存儲(chǔ)區(qū)域。將 SHA512的一個(gè)字定義為64位,在區(qū)域0中存儲(chǔ)一個(gè)字的低32位數(shù)據(jù),在區(qū)域1中存儲(chǔ)一個(gè) 字的高32位數(shù)據(jù)。消息擴(kuò)展處理器108-3輸入?yún)^(qū)域O和1的數(shù)據(jù)ExMSG[1023:0],并輸出 一個(gè)字(64位)的擴(kuò)展消息SHA512—ExMSG[63:0]。 預(yù)先確定存儲(chǔ)消息擴(kuò)展處理器108-1、 108-2和108_3要處理的數(shù)據(jù)的擴(kuò)展消息存 儲(chǔ)單元107的區(qū)域,并連接擴(kuò)展消息存儲(chǔ)單元107作為到消息擴(kuò)展處理器108-l、108-2和 108-3的輸入。由于該原因,消息擴(kuò)展處理器108-1、 108-2和108-3始終以擴(kuò)展消息存儲(chǔ)單 元107的確定區(qū)域中的數(shù)據(jù)作為輸入,來執(zhí)行消息擴(kuò)展處理。 附圖標(biāo)記109表示消息擴(kuò)展處理結(jié)果選擇器。消息擴(kuò)展處理結(jié)果選擇器109根據(jù) 信號(hào)A_EXE、 A_ALG、 B_EXE和B_ALG選擇 來自MD5消息擴(kuò)展處理器108-1的輸出數(shù)據(jù)MD5_ExMSG ; 來自SHA1消息擴(kuò)展處理器108-2的輸出數(shù)據(jù)SHAl_ExMSG ;或 來自SHA512消息擴(kuò)展處理器108-3的輸出數(shù)據(jù)SHA512_ExMSG, 并輸出所選擇的數(shù)據(jù)作為64位數(shù)據(jù)的擴(kuò)展消息ExMSG_N。注意,ExMSG_N[31:0]
是存儲(chǔ)在擴(kuò)展消息存儲(chǔ)單元107的區(qū)域O中的擴(kuò)展消息,ExMSG—N[63:32]是存儲(chǔ)在擴(kuò)展消
息存儲(chǔ)單元107的區(qū)域1中的擴(kuò)展消息。 (數(shù)據(jù)ExMSG_N [31:0]禾P ExMSG_N [63:32]的選擇) 圖37是示出數(shù)據(jù)ExMSG_N[31:0]和ExMSG_N[63:32]的選擇策略的示例的圖。附 圖標(biāo)記1201表示數(shù)據(jù)ExMSG_N[31:0]的數(shù)據(jù)選擇策略。
附圖標(biāo)記1201-a表示正在進(jìn)行處理A的MD5哈希值計(jì)算(A_EXE = 1且A_ALG =MD5)的情況。在這種情況下,選擇消息擴(kuò)展處理器108-1的輸出數(shù)據(jù)MD5—ExMSG[31:0]。
附圖標(biāo)記1201-b表示正在進(jìn)行處理B的MD5哈希值計(jì)算(B_EXE = 1且B_ALG =MD5)的情況。在這種情況下,選擇消息擴(kuò)展處理器108-1的輸出數(shù)據(jù)MD5—ExMSG[31:0]。
附圖標(biāo)記1201-c表示上述情況以外的情況。在這種情況下,選擇SHA512消息擴(kuò) 展處理器108-3的輸出數(shù)據(jù)SHA512_ExMSG的低32位SHA512_ExMSG[31:0]。
附圖標(biāo)記1202表示數(shù)據(jù)ExMSG_N[63:32]的數(shù)據(jù)選擇策略。
附圖標(biāo)記1202-a表示正在進(jìn)行處理A的SHA1哈希值計(jì)算(A_EXE = 1且A—ALG = SHA1)的情況。在這種情況下,選擇消息擴(kuò)展處理器108-2的輸出數(shù)據(jù)SHAl_ExMSG[31:0]。
.附圖標(biāo)記1202-b表示正在進(jìn)行處理B的SHAl哈希值計(jì)算(B_EXE = 1且B_ALG = SHA1)的情況。在這種情況下,選擇消息擴(kuò)展處理器108-2的輸出數(shù)據(jù)SHAl_ExMSG[31:0]。
附圖標(biāo)記1202-c表示上述情況以外的情況。在這種情況下,選擇SHA512消息擴(kuò) 展處理器108-3的輸出數(shù)據(jù)SHA512_ExMSG的高32位SHA512_ExMSG[63:32]。
根據(jù)圖37所示的選擇策略,在正在進(jìn)行處理A或B的哈希值計(jì)算時(shí),選擇在處理中使用的來自消息擴(kuò)展處理器108-1或108-2的輸出;在未正在進(jìn)行哈希值計(jì)算時(shí),輸出SHA512消息擴(kuò)展處理器108-3的輸出數(shù)據(jù)SHA512_ExMSG,并將其存儲(chǔ)在擴(kuò)展消息存儲(chǔ)單元107中。 附圖標(biāo)記110表示內(nèi)部狀態(tài)值存儲(chǔ)數(shù)據(jù)選擇器。內(nèi)部狀態(tài)值存儲(chǔ)數(shù)據(jù)選擇器110根據(jù)信號(hào)A_EXE、 A_ALG、 A_STP_CNT、 A_BLK_CNT、 B_EXE、 B_ALG、 B—STP—CNT以及B—BLK—CNT選擇 哈希初始值A(chǔ)_IV和B_IV ; 分步處理結(jié)果TEMP_N ;或 哈希中間值存儲(chǔ)數(shù)據(jù)IHASH, 并輸出256位的數(shù)據(jù)TEMP_0和TEMP_1 。 數(shù)據(jù)TEMPJ)存儲(chǔ)在內(nèi)部狀態(tài)值存儲(chǔ)單元111(稍后描述)的區(qū)域0中,數(shù)據(jù)TEMPJ存儲(chǔ)在內(nèi)部狀態(tài)值存儲(chǔ)單元111的區(qū)域1中。
(數(shù)據(jù)TEMP_0和TEMP_1的選擇) 圖38是示出數(shù)據(jù)TEMP_0和TEMP_1的數(shù)據(jù)選擇策略的示例的圖。附圖標(biāo)記1301表示數(shù)據(jù)TEMP_0的數(shù)據(jù)選擇策略。
附圖標(biāo)記1301-a表示正在進(jìn)行處理A的MD5哈希值計(jì)算、直到第一個(gè)塊中的第一分步處理(A_EXE = 1、A_ALG = MD5、A_BLK_CNT = 0 iA_STP_CNT = 0)的情況。在這種情況下,選擇處理A哈希初始值的低256位A_IV [255:0]。
附圖標(biāo)記1301-b表示正在進(jìn)行處理A的SHA512哈希值計(jì)算、直到第一個(gè)塊中的第一分步處理(A—EXE = 1、 A—ALG = SHA512、 A—BLK—CNT = 0且A_STP_CNT = 0)的情況。在這種情況下,選擇處理A哈希初始值的低256位A_IV [255:0]。
附圖標(biāo)記1301-c表示正在進(jìn)行處理A的MD5哈希值計(jì)算、直到從第一個(gè)塊開始的土央中的第一分步處理(A_EXE = 1、 A_ALG = MD5、 A_BLK_CNT ^ 0且A_STP_CNT = 0)的情況。在這種情況下,選擇通過緊接的前一個(gè)塊的處理而獲得的哈希中間值存儲(chǔ)數(shù)據(jù)的低256位IHASH[255:0]。
附圖標(biāo)記1301-d表示正在進(jìn)行處理A的SHA512哈希值計(jì)算、直到從第一個(gè)塊開始的土央中的第一分步處理(A_EXE = 1、 A_ALG = SHA512、 A_BLK_CNT ^ 0且A_STP_CNT =0)的情況。在這種情況下,選擇通過緊接的前一個(gè)塊的處理而獲得的哈希中間值數(shù)據(jù)的低256位IHASH[255:0]。
附圖標(biāo)記1301-e表示正在進(jìn)行處理B的MD5哈希值計(jì)算、直到第一個(gè)塊中的第一分步處理(B_EXE = 1、B_ALG = MD5、B_BLK_CNT = 0且B_STP_CNT = 0)的情況。在這種情況下,選擇處理B哈希初始值的低256位B_IV [255:0]。
附圖標(biāo)記1301-f表示正在進(jìn)行處理B的SHA512哈希值計(jì)算、直到第一個(gè)塊中的第一分步處理(B—EXE = 1、 B—ALG = SHA512、 B—BLK—CNT = 0且B—STP—CNT = 0)的情況。在這種情況下,選擇處理B哈希初始值的低256位B_IV [255:0]。
附圖標(biāo)記1301-g表示正在進(jìn)行處理B的MD5哈希值計(jì)算、直到從第一個(gè)塊開始的土央中的第一分步處理(B_EXE = 1、B_ALG = MD5、B_BLK_CNT ^ 0且B_STP_CNT = 0)的情況。在這種情況下,選擇通過緊接的前一個(gè)塊的處理而獲得的哈希中間值數(shù)據(jù)的低256位皿SH[255:0]。
44
附圖標(biāo)記1301-h表示正在進(jìn)行處理B的SHA512哈希值計(jì)算、直到從第一個(gè)塊開始的土央中的第一分步處理(B_EXE = 1、 B_ALG = SHA512、 B_BLK_CNT ^ 0且B_STP_CNT =0)的情況。在這種情況下,選擇通過緊接的前一個(gè)塊的處理而獲得的哈希中間值數(shù)據(jù)的低256位IHASH[255:0]。
附圖標(biāo)記1301-i表示上述情況以外的情況。在這種情況下,選擇稍后描述的內(nèi)
部狀態(tài)值數(shù)據(jù)的低256位TEMP_N [255:0]。 附圖標(biāo)記1302表示數(shù)據(jù)TEMP_1的數(shù)據(jù)選擇策略。
附圖標(biāo)記1302-a表示正在進(jìn)行處理A的MD5哈希值計(jì)算、直到第一個(gè)塊中的第一分步處理(A_EXE = 1、A_ALG = MD5、A_BLK_CNT = 0 iA_STP_CNT = 0)的情況。在這種情況下,選擇處理A哈希初始值的低256位AJV [255:0]。
附圖標(biāo)記1302-b表示正在進(jìn)行處理A的SHA512哈希值計(jì)算、直到第一個(gè)塊中的第一分步處理(A—EXE = 1、 A—ALG = SHA512、 A—BLK—CNT = 0且A_STP_CNT = 0)的情況。在這種情況下,選擇處理A哈希初始值的高256位A_IV[511:256]。
附圖標(biāo)記1302-c表示正在進(jìn)行處理A的MD5哈希值計(jì)算、直到從第一個(gè)塊開始的土央中的第一分步處理(A_EXE = 1、A_ALG = MD5、A_BLK_CNT ^ 0且A_STP_CNT = 0)的情況。在這種情況下,選擇通過緊接的前一個(gè)塊的處理而獲得的哈希中間值數(shù)據(jù)的高256位IHASH[511:256]。
附圖標(biāo)記1302-d表示正在進(jìn)行處理A的SHA512哈希值計(jì)算、直到從第一個(gè)塊開始的土央中的第一分步處理(A_EXE = 1、 A_ALG = SHA512、 A_BLK_CNT ^ 0且A_STP_CNT =0)的情況。在這種情況下,選擇通過緊接的前一個(gè)塊的處理而獲得的哈希中間值數(shù)據(jù)的高256位IHASH[511:256]。
附圖標(biāo)記1302-e表示正在進(jìn)行處理B的MD5哈希值計(jì)算、直到第一個(gè)塊中的第一分步處理(B_EXE = 1、B_ALG = MD5、B_BLK_CNT = 0且B_STP_CNT = 0)的情況。在這種情況下,選擇處理B哈希初始值的低256位B_IV [255:0]。
附圖標(biāo)記1302-f表示正在進(jìn)行處理B的SHA512哈希值計(jì)算、直到第一個(gè)塊中的第一分步處理為止的情況(B_EXE = 1、 B_ALG = SHA512、 B_BLK_CNT = 0且B_STP_CNT =0)。在這種情況下,選擇處理B哈希初始值的高256位B_IV [511:256]。
附圖標(biāo)記1302-g表示正在進(jìn)行處理B的MD5哈希值計(jì)算、直到從第一個(gè)塊開始的土央中的第一分步處理(B_EXE = 1、B_ALG = MD5、B_BLK_CNT ^ 0且B_STP_CNT = 0)的情況。在這種情況下,選擇通過緊接的前一個(gè)塊的處理而獲得的哈希中間值數(shù)據(jù)的高256位IHASH[511:256]。
附圖標(biāo)記1302-h表示正在進(jìn)行處理B的SHA512哈希值計(jì)算、直到從第一個(gè)塊開始的土央中的第一分步處理(B_EXE = 1、 B_ALG = SHA512、 B_BLK_CNT ^ 0且B_STP_CNT =0)的情況。在這種情況下,選擇通過緊接的前一個(gè)塊的處理而獲得的哈希中間值數(shù)據(jù)的高256位IHASH[511:256]。
附圖標(biāo)記1302-i表示上述情況以外的情況。在這種情況下,選擇稍后描述的內(nèi)部狀態(tài)值數(shù)據(jù)的高256位TEMP_N[511:256]。 根據(jù)圖38所示的選擇策略,在正在進(jìn)行處理A或B的哈希值計(jì)算時(shí),選擇在處理中使用的數(shù)據(jù);在未正在進(jìn)行哈希值計(jì)算時(shí),輸出內(nèi)部狀態(tài)值TEMP—N,并將其存儲(chǔ)在內(nèi)部
45狀態(tài)值存儲(chǔ)單元111中。 附圖標(biāo)記111表示存儲(chǔ)來自內(nèi)部狀態(tài)值存儲(chǔ)數(shù)據(jù)選擇器109的輸出數(shù)據(jù)的內(nèi)部狀態(tài)值存儲(chǔ)單元。內(nèi)部狀態(tài)值存儲(chǔ)單元111包括512位的觸發(fā)器,第0位到第255位形成區(qū)域O,第256位到第511位形成區(qū)域1。將來自512位的觸發(fā)器的輸出信號(hào)設(shè)為TEMP[511:0]。區(qū)域0存儲(chǔ)數(shù)據(jù)TEMP_0,區(qū)域1存儲(chǔ)數(shù)據(jù)TEMP_1。 附圖標(biāo)記112-1、 112-2和112-3表示執(zhí)行分步處理的分步處理器。由于分步處理對(duì)應(yīng)于哈希算法而不同,因此配置與各個(gè)哈希算法對(duì)應(yīng)的分步處理器。分步處理器112-1對(duì)應(yīng)于MD5。分步處理器112-2對(duì)應(yīng)于SHA-1。分步處理器112-3對(duì)應(yīng)于SHA512。預(yù)先確定存儲(chǔ)分步處理器112-1 、112-2和112-3要處理的數(shù)據(jù)的內(nèi)部狀態(tài)值存儲(chǔ)單元111的區(qū)域。 MD5分步處理器112-1使用區(qū)域0作為要處理的數(shù)據(jù)的存儲(chǔ)區(qū)域。分步處理器112-1輸入?yún)^(qū)域0的數(shù)據(jù)TEMP[127:0]和來自擴(kuò)展消息存儲(chǔ)單元107的輸出數(shù)據(jù)ExMSG[511:480],并輸出128位的內(nèi)部狀態(tài)值MD5—TEMP [127:0]。 SHA1分步處理器112-2使用區(qū)域1作為要處理的數(shù)據(jù)的存儲(chǔ)區(qū)域。分步處理器112-2輸入?yún)^(qū)域1的數(shù)據(jù)TEMP[255:128]和來自擴(kuò)展消息存儲(chǔ)單元107的輸出數(shù)據(jù)ExMSG[1023:992],并輸出160位的內(nèi)部狀態(tài)值SHA1_TEMP[159:0]。 SHA512分步處理器112-3使用區(qū)域0和1作為要處理的數(shù)據(jù)的存儲(chǔ)區(qū)域。分步處理器112-3輸入?yún)^(qū)域O和1的數(shù)據(jù)TEMP[511:0]以及來自擴(kuò)展消息存儲(chǔ)單元107的輸出數(shù)據(jù)ExMSG [511:480]和ExMSG [1023:992],并輸出512位的內(nèi)部狀態(tài)值SHA512_TEMP[511:0]。 預(yù)先確定分別存儲(chǔ)分步處理器112-1 、112-2和112-3要處理的數(shù)據(jù)的內(nèi)部狀態(tài)值存儲(chǔ)單元111的區(qū)域,并連接內(nèi)部狀態(tài)值存儲(chǔ)單元111作為分步處理器的輸入。由于該原因,分步處理器112-l、112-2和112-3始終以內(nèi)部狀態(tài)值存儲(chǔ)單元111的確定區(qū)域中的數(shù)
據(jù)作為輸入,來執(zhí)行分步處理。 附圖標(biāo)記113表示分步處理結(jié)果選擇器。 分步處理結(jié)果選擇器113根據(jù)信號(hào)A_EXE、 A_ALG、 B_EXE和B_ALG選擇
來自MD5分步處理器112-1的輸出數(shù)據(jù)MD5_TEMP ;
來自SHA1分步處理器112-2的輸出數(shù)據(jù)SHA1_TEMP ;或
來自SHA512分步處理器112-3的輸出數(shù)據(jù)SHA512_TEMP, 并輸出所選擇的數(shù)據(jù)作為數(shù)據(jù)TEMP_N。數(shù)據(jù)TEMP_N[255:0]是存儲(chǔ)在內(nèi)部狀態(tài)值存儲(chǔ)單元111的區(qū)域O中的內(nèi)部狀態(tài)值數(shù)據(jù),數(shù)據(jù)TEMP_N[511:256]是存儲(chǔ)在內(nèi)部狀態(tài)值存儲(chǔ)單元111的區(qū)域1中的內(nèi)部狀態(tài)值數(shù)據(jù)。
(數(shù)據(jù)TEMP—N [255:0]和TEMP—N [511:256]的選擇) 圖39是示出數(shù)據(jù)TEMP_N[255:0]禾P TEMP_N[511:256]的選擇策略的示例的圖。
附圖標(biāo)記1401表示數(shù)據(jù)TEMP_N[255:0]的數(shù)據(jù)選擇策略。
附圖標(biāo)記1401-a表示正在進(jìn)行處理A的MD5哈希值計(jì)算(A_EXE = 1且A_ALG=MD5)的情況。在這種情況下,選擇MD5分步處理器112-1的輸出數(shù)據(jù)MD5_TEMP [127:0]作為低128位。
附圖標(biāo)記1401-b表示正在進(jìn)行處理B的MD5哈希值計(jì)算(B_EXE = 1且B_ALG=MD5)的情況。在這種情況下,選擇MD5分步處理器112-1的輸出數(shù)據(jù)MD5_TEMP [127:0]作為低128位。
附圖標(biāo)記1401-c表示上述情況以外的情況。在這種情況下,選擇SHA512分步處理器112-3的輸出數(shù)據(jù)SHA512_TEMP [127:0]。始終輸出數(shù)據(jù)SHA512_TEMP [255:128],作為數(shù)據(jù)TEMP_N[255:128]。 附圖標(biāo)記1402表示數(shù)據(jù)TEMP_N[511:256]的數(shù)據(jù)選擇策略。
附圖標(biāo)記1402-a表示正在進(jìn)行處理A的SHA1哈希值計(jì)算(A_EXE = 1且A—ALG =SHA1)的情況。在這種情況下,選擇SHA1分步處理器112-2的輸出數(shù)據(jù)SHA1_TEMP[159:0]作為低160位。.附圖標(biāo)記1402-b表示正在進(jìn)行處理B的SHAl哈希值計(jì)算(B_EXE = 1且B_ALG =SHA1)的情況。在這種情況下,選擇SHA1分步處理器112-2的輸出數(shù)據(jù)SHA1_TEMP[159:0]作為低160位。
附圖標(biāo)記1401-c表示上述情況以外的情況。在這種情況下,選擇SHA512分步處理器112-3的輸出數(shù)據(jù)SHA512_TEMP [511:256]。始終輸出數(shù)據(jù)SHA512_TEMP [511:256],作為數(shù)據(jù)TEMP_N[511:256]。 根據(jù)圖39所示的選擇策略,在正在進(jìn)行處理A或B的哈希值計(jì)算時(shí),選擇在對(duì)應(yīng)
的處理中使用的來自分步處理器的輸出;在未正在進(jìn)行哈希值計(jì)算時(shí),輸出SHA512分步處
理器112-3的輸出數(shù)據(jù)SHA512JEMP,并將其存儲(chǔ)在內(nèi)部狀態(tài)值存儲(chǔ)單元111中。 附圖標(biāo)記114表示哈希中間值存儲(chǔ)數(shù)據(jù)選擇器。哈希中間值存儲(chǔ)數(shù)據(jù)選擇器114
根據(jù)信號(hào)A_EXE、 A_ALG、 A_BLK_CNT、 A_STP_CNT、 B_STP_CNT、 B_ALG以及B_BLK_CNT選擇哈
希初始值A(chǔ)_IV和B_IV以及哈希中間值結(jié)果IHASH_N。接著,哈希中間值存儲(chǔ)數(shù)據(jù)選擇器
114輸出256位的數(shù)據(jù)IHASHJ)和IHASH_1。 數(shù)據(jù)IHASHJ)存儲(chǔ)在哈希中間值存儲(chǔ)單元115(稍后描述)的區(qū)域O中,數(shù)據(jù)IHASHJ存儲(chǔ)在哈希中間值存儲(chǔ)單元115的區(qū)域1中。
(數(shù)據(jù)IHASHJ)禾P IHASHJ的選擇) 圖40是示出數(shù)據(jù)IHASHJ)和IHASHJ的數(shù)據(jù)選擇策略的示例的圖。
附圖標(biāo)記1501表示數(shù)據(jù)IHASHJ)的數(shù)據(jù)選擇策略。
附圖標(biāo)記1501-a表示正在進(jìn)行處理A的MD5哈希值計(jì)算,并且要執(zhí)行第一個(gè)塊中的第N個(gè)加法處理以外的加法處理(A_EXE = 1、A_ALG = MD5、A_BLK_CNT = 0且A_STP_CNT # 65)的情況。在這種情況下,選擇處理A哈希初始值的低256位A_IV [255:0]。
附圖標(biāo)記1501-b表示正在進(jìn)行處理A的SHA512哈希值計(jì)算,并且要執(zhí)行第一個(gè)塊中的第N個(gè)加法處理以外的加法處理(A_EXE = 1、A_ALG = SHA512、A_BLK_CNT = 0且A_STP_CNT #81)的情況。在這種情況下,選擇處理A哈希初始值的低256位A_IV [255:0]。
附圖標(biāo)記1501-c表示正在進(jìn)行處理B的MD5哈希值計(jì)算,并且要執(zhí)行第一個(gè)塊中的第N個(gè)加法處理以外的加法處理(B_EXE = 1、B_ALG = MD5、B_BLK_CNT = 0且B_STP_CNT # 65)的情況。在這種情況下,選擇處理B哈希初始值的低256位B_IV [255:0]。
附圖標(biāo)記1501-d表示正在進(jìn)行處理B的SHA512哈希值計(jì)算,并且要執(zhí)行第一個(gè)塊中的第N個(gè)加法處理以外的加法處理(B_EXE = 1、B_ALG = SHA512、B_BLK_CNT = 0且B—STP_CNT # 81)的情況。在這種情況下,選擇處理B哈希初始值的低256位B_IV[255:0]。
附圖標(biāo)記1501-e表示上述情況以外的情況。在這種情況下,選擇哈希中間值數(shù)
據(jù)(稍后描述)的低256位IHASH—N[255:0]。 附圖標(biāo)記1502表示數(shù)據(jù)IHASH_1的數(shù)據(jù)選擇策略。
附圖標(biāo)記1502-a表示正在進(jìn)行處理A的MD5哈希值計(jì)算,并且要執(zhí)行第一個(gè)塊中的第N個(gè)加法處理以外的加法處理(A_EXE = 1、A_ALG = MD5、A_BLK_CNT = 0且A_STP_CNT # 65)的情況。在這種情況下,選擇處理A哈希初始值的低256位A_IV [255:0]。
附圖標(biāo)記1502-b表示正在進(jìn)行處理A的SHA512哈希值計(jì)算,并且要執(zhí)行第一個(gè)塊中的第N個(gè)加法處理以外的加法處理(A_EXE = 1、A_ALG = SHA512、A_BLK_CNT = 0且A_STP_CNT#81)的情況。在這種情況下,選擇處理A哈希初始值的高256位AJV[511:256]。
附圖標(biāo)記1502-c表示正在進(jìn)行處理B的MD5哈希值計(jì)算,并且要執(zhí)行第一個(gè)塊中的第N個(gè)加法處理以外的加法處理(B_EXE = 1、B_ALG = MD5、B_BLK_CNT = 0且B_STP_CNT # 65)的情況。在這種情況下,選擇處理B哈希初始值的低256位B_IV [255:0]。
附圖標(biāo)記1502-d表示正在進(jìn)行處理B的SHA512哈希值計(jì)算,并且要執(zhí)行第一個(gè)塊中的第N個(gè)加法處理以外的加法處理(B_EXE = 1、B_ALG = SHA512、B_BLK_CNT = 0且B_STP_CNT #81)的情況。在這種情況下,選擇處理B哈希初始值的高256位B_IV[511:256]。
附圖標(biāo)記1502-e表示上述情況以外的情況。在這種情況下,選擇哈希中間值數(shù)據(jù)(稍后描述)的高256位IHASH_N[511:256]。 根據(jù)圖40所示的選擇策略,在正在進(jìn)行處理A或B的哈希值計(jì)算時(shí),選擇在處理中使用的數(shù)據(jù);否則,輸出哈希中間值IHASH_N。 附圖標(biāo)記115表示存儲(chǔ)來自哈希中間值存儲(chǔ)數(shù)據(jù)選擇器114的輸出數(shù)據(jù)的哈希中間值存儲(chǔ)單元。哈希中間值存儲(chǔ)單元115包括512位的觸發(fā)器,第0位到第255位形成區(qū)域0,第256位到第511位形成區(qū)域1。將來自512位的觸發(fā)器的輸出信號(hào)設(shè)為IHASH[511:0]。區(qū)域0存儲(chǔ)數(shù)據(jù)IHASHJ),區(qū)域1存儲(chǔ)數(shù)據(jù)IHASH_1。 如上所述,加法處理將預(yù)定次數(shù)的分步處理后的內(nèi)部狀態(tài)值相加,以獲得作為新的哈希中間值的結(jié)果。在本實(shí)施例中,針對(duì)各周期將值與各第1到第N個(gè)分步處理后的內(nèi)部狀態(tài)值相加。但是,哈希中間值存儲(chǔ)單元僅存儲(chǔ)與第N個(gè)分步處理后的內(nèi)部狀態(tài)值相加的值。 數(shù)據(jù)IHASHJ)的存儲(chǔ)條件為 在正在進(jìn)行處理A的MD5或SHA512哈希值計(jì)算并且要執(zhí)行處理開始時(shí)的加法處理或第N個(gè)加法處理時(shí);以及"在正在進(jìn)行處理B的MD5或SHA512哈希值計(jì)算并且要執(zhí)行處理開始時(shí)的加法處
理或第N個(gè)加法處理時(shí)。 數(shù)據(jù)IHASH_1的存儲(chǔ)條件為 在正在進(jìn)行處理A的SHA1或SHA512哈希值計(jì)算并且要執(zhí)行處理開始時(shí)的加法處理或第N個(gè)加法處理時(shí);以及 在正在進(jìn)行處理B的SHA1或SHA512哈希值計(jì)算并且要執(zhí)行處理開始時(shí)的加法處理或第N個(gè)加法處理時(shí)。 附圖標(biāo)記116-1 、116-2和116-3表示加法處理器,各加法處理器將分步處理器112-1、 112-2和112-3生成并存儲(chǔ)在內(nèi)部狀態(tài)值存儲(chǔ)單元111中的數(shù)據(jù),與來自哈希中間值存儲(chǔ)單元115的輸出相加,以生成下一個(gè)的哈希中間值。由于加法處理器根據(jù)哈希算法而 需要不同的位寬,因此配置與各個(gè)哈希算法對(duì)應(yīng)的加法處理器。加法處理器116-1對(duì)應(yīng)于 MD5。加法處理器116-2對(duì)應(yīng)于SHA1。加法處理器116-3對(duì)應(yīng)于SHA512。預(yù)先確定存儲(chǔ)加 法處理器116-1 、116-2和116-3要處理的數(shù)據(jù)的哈希中間值存儲(chǔ)單元115的區(qū)域和內(nèi)部狀 態(tài)值存儲(chǔ)單元111的區(qū)域。 假定MD5加法處理器116-1包括四個(gè)32位的加法器,并在哈希中間值存儲(chǔ)單元 115的區(qū)域0中存儲(chǔ)要處理的數(shù)據(jù)。加法處理器116-1將哈希中間值存儲(chǔ)單元115的區(qū)域 0中的數(shù)據(jù)IHASH[127:0]和內(nèi)部狀態(tài)值存儲(chǔ)單元111的輸出數(shù)據(jù)TEMP [127:0]相加,并輸 出128位的哈希中間值MD5JHASH[127:0]。 假定SHA1加法處理器116-2包括五個(gè)32位的加法器,并在哈希中間值存儲(chǔ)單元 115的區(qū)域1中存儲(chǔ)要處理的數(shù)據(jù)。加法處理器116-2將哈希中間值存儲(chǔ)單元115的區(qū)域 1中的數(shù)據(jù)IHASH[511:256]和內(nèi)部狀態(tài)值存儲(chǔ)單元111的輸出數(shù)據(jù)TEMP[511:256]相加, 并輸出160位的哈希中間值SHA1_IHASH[159:0]。 假定SHA512加法處理器116-3包括八個(gè)64位的加法器,并在哈希中間值存儲(chǔ)單 元115的區(qū)域0和1中存儲(chǔ)要處理的數(shù)據(jù)。加法處理器116-3將哈希中間值存儲(chǔ)單元115 的區(qū)域O和1中的數(shù)據(jù)IHASH[511:0]和內(nèi)部狀態(tài)值存儲(chǔ)單元111的輸出數(shù)據(jù)TEMP[511:0] 相加,并輸出512位的哈希中間值SHA512_IHASH[255:0]。 加法處理器116-1 、116-2和116-3確定存儲(chǔ)它們要處理的數(shù)據(jù)的內(nèi)部狀態(tài)值存儲(chǔ) 單元lll的區(qū)域,并連接內(nèi)部狀態(tài)值存儲(chǔ)單元lll作為它們的輸入。由于該原因,加法處理 器116-l、116-2和116-3始終以內(nèi)部狀態(tài)值存儲(chǔ)單元111的確定區(qū)域中的數(shù)據(jù)作為輸入, 來執(zhí)行加法處理。 附圖標(biāo)記117表示哈希中間值結(jié)果選擇器。哈希中間值結(jié)果選擇器117根據(jù)信號(hào) A_EXE、 A_ALG、 B_EXE和B_ALG選擇 MD5加法處理器116-1的輸出數(shù)據(jù)MD5_IHASH ;
SHAl加法處理器116-2的輸出數(shù)據(jù)SHA1_IHASH ;或
SHA512加法處理器116-3的輸出數(shù)據(jù)SHA512_IHASH, 并輸出所選擇的數(shù)據(jù)作為數(shù)據(jù)IHASH_N。數(shù)據(jù)IHASH_N[255:0]是存儲(chǔ)在哈希中間 值存儲(chǔ)單元115的區(qū)域0中的哈希中間值數(shù)據(jù),數(shù)據(jù)IHASH_N[511:256]是存儲(chǔ)在哈希中間 值存儲(chǔ)單元115的區(qū)域1中的哈希中間值數(shù)據(jù)。
(數(shù)據(jù)IHASH—N [255:0]和IHASH_N[511:256]的選擇) 圖41是示出數(shù)據(jù)IHASH_N[255:0]和IHASH_N[511:256]的數(shù)據(jù)選擇策略的示例 的圖。 附圖標(biāo)記1601表示數(shù)據(jù)IHASH_N[255:0]的數(shù)據(jù)選擇策略。
附圖標(biāo)記1601-a表示正在進(jìn)行處理A的MD5哈希值計(jì)算(A_EXE = 1且A_ALG =MD5)的情況。在這種情況下,選擇MD5加法處理器116-1的輸出數(shù)據(jù)MD5_IHASH[127:0] 作為低128位。
附圖標(biāo)記1601-b表示正在進(jìn)行處理B的MD5哈希值計(jì)算(B_EXE = 1且B_ALG =MD5)的情況。在這種情況下,選擇MD5加法處理器116-1的輸出數(shù)據(jù)MD5_IHASH[127:0] 作為低128位。
49
附圖標(biāo)記1601-c表示上述情況以外的情況。在這種情況下,選擇SHA512加法處理器116-3的輸出數(shù)據(jù)SHA512_IHASH[255:0]。始終輸出數(shù)據(jù)SHA512JHASH[255:128],作為數(shù)據(jù)IHASH_N[255:128]。 附圖標(biāo)記1602表示數(shù)據(jù)IHASH_N[511:256]的數(shù)據(jù)選擇策略。
附圖標(biāo)記1602-a表示正在進(jìn)行處理A的SHA1哈希值計(jì)算(A_EXE = 1且A—ALG =
SHA1)的情況。在這種情況下,選擇SHA1加法處理器116-2的輸出數(shù)據(jù)SHA1_IHASH[159:0]
作為低160位。.附圖標(biāo)記1602-b表示正在進(jìn)行處理B的SHAl哈希值計(jì)算(B_EXE = 1且B_ALG =SHA1)的情況。在這種情況下,選擇SHA1加法處理器116-2的輸出數(shù)據(jù)SHA1_IHASH[159:0]作為低160位。
附圖標(biāo)記1602-c表示上述情況以外的情況。在這種情況下,選擇SHA512加法處理器116-3的輸出數(shù)據(jù)SHA512_IHASH[511:256]。始終輸出數(shù)據(jù)SHA512_IHASH[511:416],作為數(shù)據(jù)IHASH_N[511:416]。 根據(jù)圖41的選擇策略,在正在進(jìn)行處理A或B的哈希值計(jì)算時(shí),選擇在處理中使用的來自分步處理器的輸出。在未正在進(jìn)行哈希值計(jì)算時(shí),輸出SHA512加法處理器116-3的輸出數(shù)據(jù)SHA512JHASH,并將其存儲(chǔ)在哈希中間值存儲(chǔ)單元115中。[OS"](控制器的內(nèi)部配置) 圖26是示出控制器101的內(nèi)部配置的示例的框圖。參照?qǐng)D26,附圖標(biāo)記201表示控制處理A的處理A控制器。處理A控制器201包括用于設(shè)置哈希值計(jì)算所需的參數(shù)的處理A寄存器組202、對(duì)正在執(zhí)行的塊的數(shù)量進(jìn)行計(jì)數(shù)的塊計(jì)數(shù)器A 203以及對(duì)正在執(zhí)行的步驟的數(shù)量進(jìn)行計(jì)數(shù)的步驟計(jì)數(shù)器A204。 圖27是示出寄存器的規(guī)格的圖。圖27中的附圖標(biāo)記301到304表示包括在處理器A寄存器組202中的寄存器的規(guī)格。 附圖標(biāo)記301表示用于設(shè)置處理A的哈希值計(jì)算的開始請(qǐng)求的寄存器A_ENB。當(dāng)在該寄存器中設(shè)置"l"時(shí),寄存器發(fā)出開始哈希值計(jì)算的指令。在完成哈希值計(jì)算時(shí),該寄存器自動(dòng)清零。附圖標(biāo)記302表示用于設(shè)置哈希算法的寄存器A—ALG。在該寄存器中,通過設(shè)置"00 "來選擇MD5 ,通過設(shè)置"01"來選擇SHA1 ,并通過設(shè)置"10 "來選擇SHA512 。附圖標(biāo)記303表示用于設(shè)置進(jìn)行哈希值計(jì)算的消息的塊的數(shù)量的寄存器A_BLK。在該寄存器中設(shè)置進(jìn)行哈希值計(jì)算的消息的塊的數(shù)量-1的值。附圖標(biāo)記304表示用于設(shè)置哈希值計(jì)算中使用的初始值的寄存器。初始值由各哈希算法規(guī)定。 當(dāng)在寄存器A—ENB 301中設(shè)置"1"以請(qǐng)求開始哈希值計(jì)算時(shí),處理A控制器201
向共享資源管理器209(稍后描述)發(fā)出執(zhí)行在寄存器A—ALG中設(shè)置的哈希值計(jì)算所需的
以下內(nèi)容的使用請(qǐng)求 擴(kuò)展消息存儲(chǔ)單元的區(qū)域; 內(nèi)部狀態(tài)值存儲(chǔ)單元的區(qū)域; 消息擴(kuò)展處理器; 分步處理器;以及 加法處理器(下文將這些處理器總稱為處理引擎)。更具體而言,處理A控制器201發(fā)出擴(kuò)展
50消息存儲(chǔ)單元的特定區(qū)域的使用請(qǐng)求信號(hào)A_ExMSG_REQ,并從共享資源管理器209接收使 用許可信號(hào)A_ExMSG_ACK。處理A控制器201發(fā)出內(nèi)部狀態(tài)值存儲(chǔ)單元的特定區(qū)域的使用 請(qǐng)求信號(hào)A_TEMP_REQ,并從共享資源管理器209接收使用許可信號(hào)A_TEMP_ACK。處理A控 制器201發(fā)出特定哈希算法的處理引擎的使用請(qǐng)求信號(hào)A_ENG_REQ,并從共享資源管理器 209接收使用許可信號(hào)A_ENG_ACK。 附圖標(biāo)記205表示控制處理B的處理B控制器。與在處理A控制器201中相同, 處理B控制器205包括處理B寄存器組206、塊計(jì)數(shù)器B 207以及步驟計(jì)數(shù)器B 208。圖27 中的附圖標(biāo)記305到308表示包括在處理B寄存器組206中的寄存器規(guī)格。
附圖標(biāo)記305表示用于設(shè)置處理B的哈希值計(jì)算的開始請(qǐng)求的寄存器。附圖標(biāo)記 306表示用于設(shè)置哈希算法的寄存器。附圖標(biāo)記307表示用于設(shè)置進(jìn)行哈希值計(jì)算的消息 的塊的數(shù)量的寄存器。該寄存器307設(shè)置進(jìn)行哈希值計(jì)算的消息的塊的數(shù)量-l的值。附 圖標(biāo)記308表示用于設(shè)置在哈希值計(jì)算中使用的初始值的寄存器。寄存器的規(guī)格與包括在 處理A寄存器組202中的寄存器301到304的規(guī)格相同。 當(dāng)在寄存器B—ENB 305中設(shè)置"1"以請(qǐng)求開始哈希值計(jì)算時(shí),處理B控制器205 向共享資源管理器209發(fā)出執(zhí)行在寄存器B—ALG中設(shè)置的哈希值計(jì)算所需的以下內(nèi)容的使 用請(qǐng)求 擴(kuò)展消息存儲(chǔ)單元的區(qū)域;
內(nèi)部狀態(tài)值存儲(chǔ)單元的區(qū)域;以及
處理引擎。 更具體而言,處理B控制器205發(fā)出擴(kuò)展消息存儲(chǔ)單元的特定區(qū)域的使用請(qǐng)求信 號(hào)B_ExMSG_REQ,并從共享資源管理器209接收使用許可信號(hào)B_ExMSG_ACK。處理B控制器 205發(fā)出內(nèi)部狀態(tài)值存儲(chǔ)單元的特定區(qū)域的使用請(qǐng)求信號(hào)B_TEMP_REQ,并從共享資源管理 器209接收使用許可信號(hào)B_TEMP_ACK。處理B控制器205發(fā)出特定哈希算法的處理引擎的 使用請(qǐng)求信號(hào)B_ENG_REQ,并從共享資源管理器209接收使用許可信號(hào)B_ENG_ACK。
附圖標(biāo)記209表示管理處理A和B共享的資源的共享資源管理器。處理A和B共 享的資源包括 擴(kuò)展消息存儲(chǔ)單元107 ; 內(nèi)部狀態(tài)值存儲(chǔ)單元111; 哈希中間值存儲(chǔ)單元115 ; 消息擴(kuò)展處理器108-1 、108-2禾P 108-3 ; 分步處理器112-1 、112-2和112-3 ;以及 加法處理器116-1 , 116-2和116-3 。 附圖標(biāo)記210表示管理擴(kuò)展消息存儲(chǔ)單元107的使用區(qū)域的擴(kuò)展消息存儲(chǔ)區(qū)域仲 裁器。當(dāng)處理A和B發(fā)出同一區(qū)域的使用請(qǐng)求時(shí),擴(kuò)展消息存儲(chǔ)區(qū)域仲裁器210對(duì)這些請(qǐng) 求進(jìn)行仲裁,并給予使用許可。 附圖標(biāo)記211表示內(nèi)部狀態(tài)值存儲(chǔ)區(qū)域仲裁器。當(dāng)處理A和B發(fā)出同一區(qū)域的使 用請(qǐng)求時(shí),內(nèi)部狀態(tài)值存儲(chǔ)區(qū)域仲裁器211對(duì)這些請(qǐng)求進(jìn)行仲裁,并給予使用許可。將哈希 中間值存儲(chǔ)單元115分割成具有與內(nèi)部狀態(tài)值存儲(chǔ)單元111的區(qū)域相同的區(qū)域,在給予內(nèi) 部狀態(tài)值寄存器單元111的給定區(qū)域的使用許可時(shí),同時(shí)給予哈希中間值存儲(chǔ)單元115的相同區(qū)域的使用許可。 附圖標(biāo)記212表示管理消息擴(kuò)展處理器108-l、108-2和108_3的使用的處理引擎仲裁器。當(dāng)處理A和B發(fā)出同一哈希算法的消息擴(kuò)展處理器的使用請(qǐng)求時(shí),處理引擎仲裁器212對(duì)這些請(qǐng)求進(jìn)行仲裁,并給予使用許可。在給予消息擴(kuò)展處理器的使用許可時(shí),也給予同一哈希算法的分步處理器和加法處理器的使用許可。 附圖標(biāo)記213表示指示處理A的執(zhí)行狀態(tài)的門A_EXE。在A_EXE = 1時(shí),其指示"正在執(zhí)行"的狀態(tài)。在給予擴(kuò)展消息存儲(chǔ)單元的使用許可A_ExMSG_ACK、內(nèi)部狀態(tài)值存儲(chǔ)區(qū)域的使用許可A_TEMP_ACK和處理引擎的使用許可A_ENG_ACK時(shí),設(shè)置A_EXE = 1 (正在執(zhí)行)。 附圖標(biāo)記214表示指示處理B的執(zhí)行狀態(tài)的門B_EXE。在B_EXE = 1時(shí),其指示"正在執(zhí)行"的狀態(tài)。在給予擴(kuò)展消息存儲(chǔ)單元的使用許可B_ExMSG_ACK、內(nèi)部狀態(tài)值存儲(chǔ)區(qū)域的使用許可B_TEMP_ACK和處理引擎的使用許可B_ENG_ACK時(shí),設(shè)置B_EXE = 1 (正在執(zhí)行)。(系統(tǒng)配置示例) 圖28是示出操作哈希值計(jì)算電路100的系統(tǒng)的配置示例的框圖。
附圖標(biāo)記400表示哈希值計(jì)算系統(tǒng)。附圖標(biāo)記401表示控制哈希值計(jì)算系統(tǒng)400的操作的CPU。附圖標(biāo)記402表示存儲(chǔ)進(jìn)行哈希值計(jì)算的消息和哈希值等的存儲(chǔ)器。附圖標(biāo)記403表示將處理A的輸入消息從存儲(chǔ)器402傳輸?shù)焦V涤?jì)算電路100,并將處理A的哈希值計(jì)算結(jié)果從哈希值計(jì)算電路100傳輸?shù)酱鎯?chǔ)器402的DMACA。附圖標(biāo)記404表示將處理B的輸入消息從存儲(chǔ)器402傳輸?shù)焦V涤?jì)算電路IOO,并將處理B的哈希值計(jì)算結(jié)果從哈希值計(jì)算電路100傳輸?shù)酱鎯?chǔ)器402的DMAC B。附圖標(biāo)記405表示控制哈希值計(jì)算系統(tǒng)400的中斷信號(hào)的中斷控制器。 附圖標(biāo)記406表示連接哈希值計(jì)算電路100、 CPU 401、存儲(chǔ)器402、 DMAC A 403、DMAC B 404和中斷控制器405的總線,其包括地址信號(hào)、數(shù)據(jù)信號(hào)和控制信號(hào)等。附圖標(biāo)記407表示從DMAC A 403到中斷控制器405的中斷信號(hào)。在將處理A的哈希值計(jì)算結(jié)果從哈希值計(jì)算電路100傳輸?shù)酱鎯?chǔ)器402以后,DMAC A 403生成中斷信號(hào)以將傳輸完成通知給中斷控制器405。附圖標(biāo)記408表示從DMAC B 404到中斷控制器405的中斷信號(hào)。在將處理B的哈希值計(jì)算結(jié)果從哈希值計(jì)算電路100傳輸?shù)酱鎯?chǔ)器402以后,DMAC B 404生成中斷信號(hào)以將傳輸完成通知給中斷控制器405。中斷控制器405使用中斷信號(hào)(未示出)將哈希值計(jì)算結(jié)果的存儲(chǔ)通知給CPU 401。
(CPU的操作) 圖29A、圖29B和圖29C是示出本實(shí)施例的哈希值計(jì)算系統(tǒng)中的針對(duì)各消息接收的CPU的操作序列的流程圖。附圖標(biāo)記501表示接收消息時(shí)的序列。在CPU接收消息時(shí),在ST001中CPU決定處理A還是B對(duì)所接收的消息進(jìn)行處理。CPU 401包括指示處理A和B的處理狀態(tài)的處理狀態(tài)表。處理狀態(tài)表指示"繁忙"或"空閑"。CPU決定"空閑"的處理A或B作為用于處理消息的處理。假定在處理A和B都"空閑"時(shí),處理A具有更高優(yōu)先級(jí)。如果處理A和B都"繁忙"時(shí),CPU等待,直到它們中的一個(gè)變成"空閑"為止。如果CPU決定處理A,則在ST002中CPU將處理狀態(tài)表中的處理A的狀態(tài)更新為"繁忙",并啟動(dòng)處理A線程。如果CPU決定處理B,則在ST003中CPU將處理狀態(tài)表中的處理B的狀態(tài)更新為"繁忙",并啟動(dòng)處理B線程。 附圖標(biāo)記502表示在啟動(dòng)線程A時(shí)執(zhí)行的序列。在啟動(dòng)處理A線程時(shí),在ST004中, CPU在DMAC A的寄存器中進(jìn)行用于將消息從存儲(chǔ)器402傳輸?shù)焦V涤?jì)算電路100的輸入 傳輸設(shè)置和用于將哈希值從哈希值計(jì)算電路100傳輸?shù)酱鎯?chǔ)器402的輸出傳輸設(shè)置,并啟 動(dòng)處理A線程。在ST005中,CPU進(jìn)行用于哈希值計(jì)算電路100的處理A寄存器組中的哈 希值計(jì)算的設(shè)置,并發(fā)出處理開始請(qǐng)求。CPU等待DMAC A的數(shù)據(jù)輸出傳輸?shù)耐瓿?ST006), 并結(jié)束處理A線程。 附圖標(biāo)記503表示在啟動(dòng)線程B時(shí)執(zhí)行的序列。在啟動(dòng)處理B線程時(shí),在ST009中, CPU在DMAC B的寄存器中進(jìn)行用于將消息從存儲(chǔ)器402傳輸?shù)焦V涤?jì)算電路100的輸入 傳輸設(shè)置和用于將哈希值從哈希值計(jì)算電路100傳輸?shù)酱鎯?chǔ)器402的輸出傳輸設(shè)置,并啟 動(dòng)處理B線程。在ST010中,CPU進(jìn)行用于哈希值計(jì)算電路100的處理B寄存器組中的哈 希值計(jì)算的設(shè)置,并發(fā)出處理開始請(qǐng)求。CPU等待DMAC B的數(shù)據(jù)輸出傳輸?shù)耐瓿?STOll), 并結(jié)束處理B線程。 附圖標(biāo)記504表示在接收處理A線程結(jié)束通知時(shí)的序列。在ST014中,CPU將處 理狀態(tài)表中的處理A的狀態(tài)更新為"空閑"。附圖標(biāo)記505表示在接收處理B線程結(jié)束通知 時(shí)的序列。在ST015中,CPU將處理狀態(tài)表中的處理B的狀態(tài)更新為"空閑"。 [OSSO](哈希值計(jì)算電路的操作) 圖30A和圖30B是示出本實(shí)施例的哈希值計(jì)算系統(tǒng)中的哈希值計(jì)算電路100的操 作序列的流程圖。 附圖標(biāo)記600表示接收處理A開始請(qǐng)求時(shí)的序列。當(dāng)CPU在處理A作業(yè)開始設(shè)置 寄存器301中設(shè)置"1"時(shí),接收處理A開始請(qǐng)求。在接收處理A開始請(qǐng)求時(shí),處理A控制器 201根據(jù)處理A哈希算法設(shè)置寄存器302中的值A(chǔ)_ALG發(fā)出共享資源使用請(qǐng)求A_ExMSG_ REO、 A_TEMP_REQ和A_ENG_REQ (ST101-A)。 處理A控制器201等待共享資源管理器209給予許可(確認(rèn))A_ExMSG_ACK、 A_ TEMP_ACK和A_ENG_ACK (ST102-A)。在給予許可A_ExMSG_ACK、A_TEMP_ACK和A_ENG_ACK后, 處理A控制器201向DMAC_A發(fā)出數(shù)據(jù)輸入傳輸請(qǐng)求(ST103-A)。在ST102-A中接收到確 認(rèn)時(shí),處理A控制器201開始處理,并更新步驟計(jì)數(shù)器A_STP_CNT+1 (ST105-A)。在ST106-A 中,處理A控制器201確定在哈希算法中規(guī)定的針對(duì)一個(gè)塊的數(shù)據(jù)傳輸是否完成。如果數(shù) 據(jù)傳輸尚未完成,則處理返回到ST103-A以重新發(fā)出數(shù)據(jù)輸入傳輸請(qǐng)求。如果數(shù)據(jù)傳輸完 成,則數(shù)據(jù)輸入傳輸完成,處理進(jìn)行到ST107-A。在ST107-A中,處理A控制器201更新步驟 計(jì)數(shù)器+1。 在ST108-A中,處理A控制器201確定A_STP_CNT是否超過在哈希算法中規(guī)定的 值+1。處理A控制器201重復(fù)ST107-A,直到超過規(guī)定值+1。如果超過規(guī)定值+l,則處理 A控制器201將步驟計(jì)數(shù)器清零,并更新塊計(jì)數(shù)器A_BLK_CNT+1 (ST109-A)。在ST110-A中, 處理A控制器201確定A_BLK_CNT是否超過在處理A塊計(jì)數(shù)設(shè)置寄存器303中設(shè)置的值 A_BLK-1。處理A控制器201輸入數(shù)據(jù)并執(zhí)行哈希值計(jì)算,直到超過A—BLK-1。如果A—BLK— CNT超過A—BLK-1,則處理A控制器201將塊計(jì)數(shù)器清零(ST111-A)。為了輸出哈希值,在 ST112-A中,處理A控制器201向DMAC—A發(fā)出數(shù)據(jù)輸出傳輸請(qǐng)求,并在ST113-A中等待確 認(rèn)。處理A控制器201重復(fù)ST112-A和ST113-A,直到針對(duì)哈希值的數(shù)據(jù)傳輸完成。
如果針對(duì)哈希值的數(shù)據(jù)傳輸完成,則處理A控制器201將處理A作業(yè)開始設(shè)置寄存器301清零(ST115-A),并拒絕共享資源使用請(qǐng)求A_ExMSG_REQ、 A_TEMP_REQ和A_ENG_REQ(ST116-A),從而結(jié)束該處理。 附圖標(biāo)記601表示接收處理B開始請(qǐng)求時(shí)的序列。當(dāng)CPU在處理B作業(yè)開始設(shè)置寄存器305中設(shè)置"1"時(shí),接收處理B開始請(qǐng)求。在接收處理B開始請(qǐng)求時(shí),處理B控制器205根據(jù)處理B哈希算法設(shè)置寄存器306中的值B_ALG,發(fā)出共享資源使用請(qǐng)求B_ExMSG_REQ、 B_TEMP_REQ和B_ENG_REQ (ST101-B)。處理B控制器205等待共享資源管理器209給予許可(確認(rèn))B_ExMSG_ACK、 B_TEMP_ACK和B_ENG_ACK (ST102-B)。在給予許可B_ExMSG_ACK、 B_TEMP_ACK和B_ENG_ACK后,處理B控制器205向DMAC B發(fā)出數(shù)據(jù)輸入傳輸請(qǐng)求(ST103-B)。在ST102-B中接收到確認(rèn)時(shí),處理B控制器205開始處理,并更新步驟計(jì)數(shù)器B_STP_CNT+1(ST105-B)。 在ST106-B中,處理B控制器205確定在哈希算法中規(guī)定的針對(duì)一個(gè)塊的數(shù)據(jù)傳輸是否完成。如果數(shù)據(jù)傳輸尚未完成,則處理返回到ST103-B,以重新發(fā)出數(shù)據(jù)輸入傳輸請(qǐng)求。如果數(shù)據(jù)傳輸完成,則數(shù)據(jù)輸入傳輸完成,處理進(jìn)行到ST107-B。在ST107-B中,處理B控制器205更新步驟計(jì)數(shù)器+1。在ST108-B中,處理B控制器205確定B_STP_CNT是否超過在哈希算法中規(guī)定的值+1。處理B控制器205重復(fù)ST107-B,直到超過規(guī)定值+1。如果超過規(guī)定值+1,則處理B控制器205將步驟計(jì)數(shù)器清零,并更新塊計(jì)數(shù)器B_BLK_CNT+1 (ST109-B)。在ST110-B中,處理B控制器205確定B_BLK_CNT是否超過在處理B塊計(jì)數(shù)設(shè)置寄存器307中設(shè)置的值B—BLK-1。處理B控制器205輸入數(shù)據(jù)并執(zhí)行哈希值計(jì)算,直到超過B_BLK-1。如果B_BLK_CNT超過B_BLK_1,則處理B控制器205將塊計(jì)數(shù)器清零(ST111-B)。為了輸出哈希值,在ST112-B中,處理B控制器205向DMAC B發(fā)出數(shù)據(jù)輸出傳輸請(qǐng)求,并在ST113-B中等待確認(rèn)。處理B控制器205重復(fù)ST112-B和ST113-B,直到針對(duì)哈希值的數(shù)據(jù)傳輸完成。如果針對(duì)哈希值的數(shù)據(jù)傳輸完成,則處理B控制器205將處理B作業(yè)開始設(shè)置寄存器305清零(ST115-B),并拒絕共享資源使用請(qǐng)求B—ExMSG—REQ、BJEMP—REQ和B_ENG_REQ(ST116-B),從而結(jié)束該處理。[OSS8](消息示例) 圖31是示出作為在本實(shí)施例中進(jìn)行哈希值計(jì)算的三個(gè)消息的消息A、消息B和消息C的示例的圖。假定消息A包括使用哈希算法MD5執(zhí)行哈希值計(jì)算的請(qǐng)求。消息A包括各自包含16個(gè)字(512位)的共計(jì)兩個(gè)塊。消息B包括使用哈希算法SHA1執(zhí)行哈希值計(jì)算的請(qǐng)求。消息B包括包含16個(gè)字(512位)的共計(jì)一個(gè)塊。消息C包括使用哈希算法SHA512執(zhí)行哈希值計(jì)算的請(qǐng)求。消息C包括各自包含16個(gè)字(1024位)的共計(jì)八個(gè)塊。[oego](處理的詳細(xì)情況) 圖32A至圖33H是CPU 401以指定的順序接收消息A、消息B和消息C時(shí)的時(shí)序圖。 假定在TOO前接收了消息A。在接收到消息A時(shí),CPU 401根據(jù)圖29A、29B和29C所示的CPU操作序列進(jìn)行操作,在ST001中決定要在哈希值計(jì)算中使用處理A。在ST005中,CPU 401設(shè)置哈希值計(jì)算電路100中的處理A寄存器組。CPU 401在寄存器A—ALG(302)中設(shè)置指示MD5的"00",在寄存器A—BLK(303)中設(shè)置"1 ",在寄存器A_IV(304)中設(shè)置在MD5算法中規(guī)定的值,在寄存器A—ENG(301)中設(shè)置"l",并發(fā)出哈希值計(jì)算開始請(qǐng)求。在接收到
54處理A開始請(qǐng)求時(shí),哈希值計(jì)算電路100根據(jù)圖30A所示的哈希值計(jì)算電路的操作序列進(jìn)
行操作,并且在ST101-A中,哈希值計(jì)算電路100 (或控制器101)向共享資源管理器209發(fā)
出MD5哈希值計(jì)算所需的以下使用請(qǐng)求 擴(kuò)展消息存儲(chǔ)單元107的區(qū)域0的使用請(qǐng)求; 內(nèi)部狀態(tài)值存儲(chǔ)單元111的區(qū)域0的使用請(qǐng)求;以及 MD5處理引擎的使用請(qǐng)求。 由于處理B不使用這些資源,因此共享資源管理器209給予使用許可A_ExMSG_ ACK、 A_TEMP_ACK和A_ENG_ACK,從而開始處理。在給予許可A_ExMSG_ACK、 A_TEMP_ACK和 A_ENG_ACK時(shí),設(shè)置A_EXE = 1 (TOO)。 在TOO中,A_EXE = "1",并且A_ALG = MD5。由于該原因,消息擴(kuò)展處理結(jié)果選 擇器109選擇MD5消息擴(kuò)展處理器108-1的處理結(jié)果MD5_ExMSG[31:0]作為輸出ExMSG_ N[31:0]。接著,分步處理結(jié)果選擇器113選擇MD5分步處理器112-1的處理結(jié)果MD5_ TEMP[127:0]作為輸出TEMP_N[127:0]。此外,加法處理結(jié)果選擇器117選擇MD5加法處理 器116-1的處理結(jié)果MD5JHASH[127:0]作為輸出IHASH_N[127:0]??刂破?01向DMAC A 發(fā)出數(shù)據(jù)輸入傳輸請(qǐng)求A_DMA_REQ
。 在T01中,在斷言信號(hào)A_DMA_ACK
時(shí),控制器101從下一個(gè)時(shí)鐘的前沿開始更 新步驟計(jì)數(shù)器A_STP_CNT。計(jì)數(shù)器A_STP_CNT針對(duì)各時(shí)鐘周期通過+1來進(jìn)行更新,并在計(jì) 數(shù)器A_STP_CNT計(jì)數(shù)到65時(shí),將其清除為零。 在區(qū)間T01-T06中,傳輸?shù)谝粋€(gè)塊的輸入消息的16個(gè)字,DMA IF單元103輸出數(shù) 據(jù)A_DMA_IDATA[63:0]作為數(shù)據(jù)A_MSG[63:0]。擴(kuò)展消息存儲(chǔ)數(shù)據(jù)選擇器106選擇輸入消 息數(shù)據(jù)A_MSG[31:0]作為輸出ExMSGJ) [31:0]。 在區(qū)間T01-T06中,MD5消息擴(kuò)展處理器108-1使用擴(kuò)展消息存儲(chǔ)單元107的區(qū) 域0作為要處理的數(shù)據(jù)來執(zhí)行處理。但是,由于擴(kuò)展消息存儲(chǔ)數(shù)據(jù)選擇器106未選擇處理 結(jié)果ExMSG_N[31:0],因此其不在擴(kuò)展消息存儲(chǔ)單元107中存儲(chǔ)任何數(shù)據(jù)。在區(qū)間T02-T07 中,擴(kuò)展消息存儲(chǔ)單元107存儲(chǔ)第1到第16個(gè)擴(kuò)展消息(輸入消息)。
在區(qū)間T02-T07中,MD5分步處理器112-1使用存儲(chǔ)在擴(kuò)展消息存儲(chǔ)單元107中 的第1到第16個(gè)擴(kuò)展消息作為要處理的數(shù)據(jù)來執(zhí)行處理,并生成第1到第16個(gè)內(nèi)部狀態(tài) 值。在區(qū)間T03-T08中,將處理結(jié)果存儲(chǔ)到內(nèi)部狀態(tài)值存儲(chǔ)單元111中。在區(qū)間T0-T1中, 內(nèi)部狀態(tài)值存儲(chǔ)數(shù)據(jù)選擇器110輸出哈希初始值A(chǔ)_IV [255:0]作為輸出TEMP_0 [255:0],并 從T02開始通過選擇MD5分步處理結(jié)果來輸出值TEMP_N[255:0]。因此,在T02中,MD5分 步處理器112-1使用哈希初始值和第一輸入消息來生成第一內(nèi)部狀態(tài)值。在區(qū)間T03-T08 中,MD5分步處理器112-1使用第(n-1)個(gè)內(nèi)部狀態(tài)值和第n個(gè)輸入消息來生成第n個(gè)內(nèi) 部狀態(tài)值(n = 2到16)。 在區(qū)間T03-T08中,MD5加法處理器116-1使用存儲(chǔ)在內(nèi)部狀態(tài)值存儲(chǔ)單元111中 的第1到第16個(gè)分步處理數(shù)據(jù)作為要處理的數(shù)據(jù),來執(zhí)行針對(duì)第1到第16個(gè)內(nèi)部狀態(tài)值 的加法處理。但是,由于哈希中間值存儲(chǔ)數(shù)據(jù)選擇器114未選擇處理結(jié)果IHASH_N[255:0], 因此其不在哈希中間值存儲(chǔ)單元115中存儲(chǔ)任何數(shù)據(jù)。 在區(qū)間T07-T17中,擴(kuò)展消息存儲(chǔ)數(shù)據(jù)選擇器106選擇作為MD5消息擴(kuò)展處理器 108-1的處理結(jié)果的數(shù)據(jù)ExMSG[31:0]作為輸出ExMSGJ) [31:0]。
在區(qū)間T07-T17中,MD5消息擴(kuò)展處理器108-1使用存儲(chǔ)在擴(kuò)展消息存儲(chǔ)單元107 的區(qū)域0中的16個(gè)字的數(shù)據(jù)作為要處理的數(shù)據(jù),來生成第17個(gè)到第64個(gè)擴(kuò)展消息。在區(qū) 間T08-T20中,將處理結(jié)果存儲(chǔ)到擴(kuò)展消息存儲(chǔ)單元107中。擴(kuò)展消息存儲(chǔ)數(shù)據(jù)選擇器106 通過選擇MD5擴(kuò)展處理結(jié)果來輸出數(shù)據(jù)ExMSG_N[31:0]。接著,MD5消息擴(kuò)展處理器108-1 使用16個(gè)字的第(n-16)到第(n-l)個(gè)擴(kuò)展消息來生成第n個(gè)擴(kuò)展消息(n = 17到64)。
在區(qū)間T08-T18中,MD5分步處理器112-1使用存儲(chǔ)在擴(kuò)展消息存儲(chǔ)單元107中的 第17到第64個(gè)擴(kuò)展消息作為要處理的數(shù)據(jù)來執(zhí)行處理,并生成第17到第64個(gè)內(nèi)部狀態(tài) 值。在區(qū)間T09-T19中,將處理結(jié)果存儲(chǔ)到內(nèi)部狀態(tài)值存儲(chǔ)單元111中。內(nèi)部狀態(tài)值存儲(chǔ)數(shù) 據(jù)選擇器110通過選擇MD5分步處理結(jié)果來輸出值TEMP—N[255:0]。因此,在區(qū)間T08-T18 中,MD5分步處理器112-1使用第(n-l)個(gè)內(nèi)部狀態(tài)值和第n個(gè)輸入消息生成第n個(gè)內(nèi)部 狀態(tài)值(n = 17到64)。 在區(qū)間T09-T19中,MD5加法處理器116-1使用存儲(chǔ)在內(nèi)部狀態(tài)值存儲(chǔ)單元111中 的第17到第64個(gè)分步處理數(shù)據(jù)作為要處理的數(shù)據(jù),來執(zhí)行針對(duì)第17到第64個(gè)內(nèi)部狀態(tài)值 的加法處理。針對(duì)在T19中生成的第64個(gè)內(nèi)部狀態(tài)值的加法處理結(jié)果是第一個(gè)塊的哈希 中間值。在區(qū)間T0-T18中,哈希中間值存儲(chǔ)數(shù)據(jù)選擇器114輸出哈希初始值A(chǔ)_IV [255:0], 并從T19開始輸出值IHASH_N[255:0]。因此,在T19中,MD5加法處理器116-1執(zhí)行哈希初 始值和第64個(gè)內(nèi)部狀態(tài)值的加法處理,并在T20中將處理結(jié)果存儲(chǔ)到哈希中間值存儲(chǔ)單元 115中。 在T20中,將步驟計(jì)數(shù)器A_STP_CNT清除為零,塊計(jì)數(shù)器A_BLK_CNT向上計(jì)數(shù)到1 。 由于A_BLK_CNT沒有超過A_BLK值"1 ",因此控制器101向DMAC A發(fā)出下一個(gè)塊的數(shù)據(jù)輸 入傳輸請(qǐng)求A_DMA_REQ
。 在T21中斷言信號(hào)A—DMA—ACK
時(shí),控制器101從下一個(gè)時(shí)鐘的前沿開始更新步 驟計(jì)數(shù)器A_STP_CNT。計(jì)數(shù)器A_STP_CNT針對(duì)各時(shí)鐘周期通過+1來進(jìn)行更新,并在計(jì)數(shù)器 A_STP_CNT計(jì)數(shù)到65時(shí),將其清除為零。 在區(qū)間T21-T26中,傳輸?shù)诙€(gè)塊的輸入消息的16個(gè)字,DMA IF單元103輸出數(shù) 據(jù)A_DMA_IDATA[63:0]作為數(shù)據(jù)A_MSG[63:0]。擴(kuò)展消息存儲(chǔ)數(shù)據(jù)選擇器106選擇輸入消 息數(shù)據(jù)A_MSG[31:0]作為輸出ExMSGJ) [31:0]。 在區(qū)間T21-T26中,MD5消息擴(kuò)展處理器108-1使用擴(kuò)展消息存儲(chǔ)單元107的區(qū) 域0作為要處理的數(shù)據(jù)來執(zhí)行處理。但是,由于擴(kuò)展消息存儲(chǔ)數(shù)據(jù)選擇器106未選擇處理 結(jié)果ExMSG_N[31:0],因此其不在擴(kuò)展消息存儲(chǔ)單元107中存儲(chǔ)任何數(shù)據(jù)。在區(qū)間T22-T27 中,擴(kuò)展消息存儲(chǔ)單元107存儲(chǔ)第1到第16個(gè)擴(kuò)展消息(輸入消息)。
在區(qū)間T22-T27中,MD5分步處理器112-1使用存儲(chǔ)在擴(kuò)展消息存儲(chǔ)單元107中 的第1到第16個(gè)擴(kuò)展消息作為要處理的數(shù)據(jù)來執(zhí)行處理,并生成第1到第16個(gè)內(nèi)部狀態(tài) 值。在區(qū)間T23-T28中,將處理結(jié)果存儲(chǔ)到內(nèi)部狀態(tài)值存儲(chǔ)單元111中。在區(qū)間T20-T21 中,內(nèi)部狀態(tài)值存儲(chǔ)數(shù)據(jù)選擇器110輸出值IHASH[255:0]作為輸出TEMPJ)[255:0],并從 T22開始通過選擇MD5分步處理結(jié)果來輸出值TEMP—N[255:0]。因此,在T22中,MD5分步 處理器112-1使用前一個(gè)塊的哈希中間值和第一輸入消息來生成第一內(nèi)部狀態(tài)值。在區(qū)間 T23-T28中,MD5分步處理器112-1使用第(n-l)個(gè)內(nèi)部狀態(tài)值和第n個(gè)輸入消息生成第n 個(gè)內(nèi)部狀態(tài)值(n = 2到16)。
56
在區(qū)間T23-T28中,MD5加法處理器116-1使用存儲(chǔ)在內(nèi)部狀態(tài)值存儲(chǔ)單元111 中的第1到第16個(gè)分步處理數(shù)據(jù)作為要處理的數(shù)據(jù),來執(zhí)行針對(duì)第1到第16個(gè)內(nèi)部狀態(tài) 值的加法處理。但是,由于不滿足哈希中間值存儲(chǔ)單元115的存儲(chǔ)條件,因此不存儲(chǔ)處理結(jié) 果。 在區(qū)間T27-T42中,擴(kuò)展消息存儲(chǔ)數(shù)據(jù)選擇器106選擇作為MD5消息擴(kuò)展處理器 108-1的處理結(jié)果的數(shù)據(jù)ExMSG[31:0]作為輸出ExMSG—0 [31:0]。 在區(qū)間T27-T42中,MD5消息擴(kuò)展處理器108-1使用存儲(chǔ)在擴(kuò)展消息存儲(chǔ)單元107 的區(qū)域O中的16個(gè)字的數(shù)據(jù)作為要處理的數(shù)據(jù)來生成第17個(gè)到第64個(gè)擴(kuò)展消息。在區(qū) 間T28-T43中,將處理結(jié)果存儲(chǔ)到擴(kuò)展消息存儲(chǔ)單元107中。擴(kuò)展消息存儲(chǔ)數(shù)據(jù)選擇器106 通過選擇MD5擴(kuò)展處理結(jié)果來輸出數(shù)據(jù)ExMSG_N[31:0]。接著,MD5消息擴(kuò)展處理器108-1 使用16個(gè)字的第(n-16)到第(n-l)個(gè)擴(kuò)展消息來生成第n個(gè)擴(kuò)展消息(n = 17到64)。
在區(qū)間T28-T43中,MD5分步處理器112-1使用存儲(chǔ)在擴(kuò)展消息存儲(chǔ)單元107中的 第17到第64個(gè)擴(kuò)展消息作為要處理的數(shù)據(jù)來執(zhí)行處理,并生成第17到第64個(gè)內(nèi)部狀態(tài) 值。在區(qū)間T29-T44中,將處理結(jié)果存儲(chǔ)到內(nèi)部狀態(tài)值存儲(chǔ)單元111中。內(nèi)部狀態(tài)值存儲(chǔ)數(shù) 據(jù)選擇器110通過選擇MD5分步處理結(jié)果來輸出值TEMP—N[255:0]。因此,在區(qū)間T28-T43 中,MD5分步處理器112-1使用第(n-l)個(gè)內(nèi)部狀態(tài)值和第n個(gè)輸入消息,來生成第n個(gè)內(nèi) 部狀態(tài)值(n = 17到64)。 在區(qū)間T29-T44中,MD5加法處理器116-1使用存儲(chǔ)在內(nèi)部狀態(tài)值存儲(chǔ)單元111中 的第17到第64個(gè)分步處理數(shù)據(jù)作為要處理的數(shù)據(jù),來執(zhí)行針對(duì)第17到第64個(gè)內(nèi)部狀態(tài) 值的加法處理。針對(duì)在T4中生成的第64個(gè)內(nèi)部狀態(tài)值的加法處理結(jié)果是第二個(gè)塊的哈希 中間值。由于哈希中間值存儲(chǔ)單元115存儲(chǔ)前一個(gè)塊的哈希中間值,因此執(zhí)行前一個(gè)塊的 哈希中間值和第64個(gè)內(nèi)部狀態(tài)值的加法處理,并在T45中將處理結(jié)果存儲(chǔ)到哈希中間值存 儲(chǔ)單元115中。 在T45中,將步驟計(jì)數(shù)器A—STP—CNT清除為零,塊計(jì)數(shù)器A—BLK—CNT向上計(jì)數(shù)到2。 由于A_BLK_CNT超過A_BLK值"1 ",因此控制器101將塊計(jì)數(shù)器A_BLK_CNT清零并向DMAC A發(fā)出哈希值的數(shù)據(jù)輸出傳輸請(qǐng)求A_DMA_REQ[1]。 在區(qū)間T46-T47中,斷言信號(hào)A_DMA_ACK[1],并進(jìn)行128位的MD5哈希值的輸出傳 輸。 哈希值計(jì)算電路100根據(jù)圖30A所示的哈希值計(jì)算電路100的操作序列進(jìn)行操 作,并在ST116-A中拒絕執(zhí)行MD5哈希值計(jì)算所需的以下使用請(qǐng)求
擴(kuò)展消息存儲(chǔ)單元107的區(qū)域0的使用請(qǐng)求;
內(nèi)部狀態(tài)值存儲(chǔ)單元111的區(qū)域O的使用請(qǐng)求;以及
MD5處理引擎108-1 、112-1和116-1的使用請(qǐng)求。 接著哈希值計(jì)算電路100完成消息A的哈希值計(jì)算。由于拒絕了使用請(qǐng)求,因此 也拒絕了使用許可A_ExMSG_ACK、 A_TEMP_ACK和A_ENG_ACK,從而設(shè)置A_EXE = 1 (T48)。
另一方面,假定在T05中接收了消息B。在接收到消息B時(shí),CPU 401根據(jù)圖29A、 29B和29C所示的CPU操作序列進(jìn)行操作。在ST001中,由于處理A正在處理消息,因此CPU 決定將在哈希值計(jì)算中使用處理B。在ST011中,CPU 401設(shè)置哈希值計(jì)算電路100的處理 B寄存器組。CPU401在寄存器B—ALG(306)中設(shè)置指示SHA1的"01",在寄存器B_BLK (307)中設(shè)置"0",在寄存器BJV(308)中設(shè)置在SHA1算法中規(guī)定的值,在寄存器B—ENB(305)中 設(shè)置"l",并發(fā)出哈希值計(jì)算開始請(qǐng)求。在接收到處理B開始請(qǐng)求時(shí),哈希值計(jì)算電路100 根據(jù)圖30B所示的哈希值計(jì)算電路的操作序列進(jìn)行操作,在ST101-B中哈希值計(jì)算電路 IOO(或控制器101)向共享資源管理器209發(fā)出SHA1哈希值計(jì)算所需的以下使用請(qǐng)求
擴(kuò)展消息存儲(chǔ)單元107的區(qū)域1的使用請(qǐng)求;
內(nèi)部狀態(tài)值存儲(chǔ)單元111的區(qū)域1的使用請(qǐng)求;以及
SHA1處理引擎的使用請(qǐng)求。 由于處理A不使用這些資源,因此共享資源管理器209給予使用許可B_ExMSG_ ACK、B_TEMP_ACK和B_ENG_ACK從而開始處理。在給予許可B_ExMSG_ACK、B_TEMP_ACK和B_ ENG—ACK時(shí),設(shè)置B—EXE = 1 (T06)。 在T06中,B_EXE = " 1"并且B_ALG = SHAl 。響應(yīng)于此,消息擴(kuò)展處理結(jié)果選擇 器109選擇SHAl消息擴(kuò)展處理器108-2的處理結(jié)果SHAl_ExMSG[31:0]作為輸出ExMSG_ N[63:32]。接著,分步處理結(jié)果選擇器113選擇SHAl分步處理器112-2的處理結(jié)果SHA1_ TEMP[127:0]作為輸出TEMP_N[255:128]。此外,加法處理結(jié)果選擇器117選擇SHAl加法 處理器116-2的處理結(jié)果SHA1JHASH[159:0]作為輸出IHASH_N[511:256]??刂破?01向 DMAC B發(fā)出數(shù)據(jù)輸入傳輸請(qǐng)求B_DMA_REQ
。 在T07中,在斷言信號(hào)B_DMA_ACK
時(shí),控制器101從下一個(gè)時(shí)鐘的前沿開始更 新步驟計(jì)數(shù)器B_STP_CNT。計(jì)數(shù)器B_STP_CNT針對(duì)各時(shí)鐘周期通過+1進(jìn)行更新,并在計(jì)數(shù) 器B_STP_CNT計(jì)數(shù)到81時(shí),將其清除為零。 在區(qū)間T06-T12中,傳輸?shù)谝粋€(gè)塊的輸入消息的16個(gè)字,并且DMAIF單元103輸 出數(shù)據(jù)B_DMA_IDATA[63:0]作為數(shù)據(jù)B_MSG[63:0]。擴(kuò)展消息存儲(chǔ)數(shù)據(jù)選擇器106選擇輸 入消息數(shù)據(jù)B—MSG[31:0]作為輸出ExMSG—l [31:0]。 在區(qū)間T06-T12中,SHAl消息擴(kuò)展處理器108_2使用擴(kuò)展消息存儲(chǔ)單元107的區(qū) 域1作為要處理的數(shù)據(jù)來執(zhí)行處理。但是,由于擴(kuò)展消息存儲(chǔ)數(shù)據(jù)選擇器106未選擇處理結(jié) 果ExMSG_N[63:32],因此其不在擴(kuò)展消息存儲(chǔ)單元107中存儲(chǔ)任何數(shù)據(jù)。在區(qū)間T07-T13 中,擴(kuò)展消息存儲(chǔ)單元107存儲(chǔ)第1到第16個(gè)擴(kuò)展消息(輸入消息)。
在區(qū)間T07-T13中,SHAl分步處理器112-2使用存儲(chǔ)在擴(kuò)展消息存儲(chǔ)單元107中 的第1到第16個(gè)擴(kuò)展消息作為要處理的數(shù)據(jù)來執(zhí)行處理,并生成第1到第16個(gè)內(nèi)部狀態(tài) 值。在區(qū)間T08-T14中,將處理結(jié)果存儲(chǔ)到內(nèi)部狀態(tài)值存儲(chǔ)單元111中。在區(qū)間T06-T07中, 內(nèi)部狀態(tài)值存儲(chǔ)數(shù)據(jù)選擇器110輸出哈希初始值BJV[255:0]作為輸出TEMP_1 [255:0], 并從T08開始通過選擇SHAl分步處理結(jié)果來輸出值TEMP_N[511:256]。因此,在T08中, SHAl分步處理器112-2使用哈希初始值和第一輸入消息來生成第一內(nèi)部狀態(tài)值。在區(qū)間 T09-T13中,SHA1分步處理器112-2使用第(n_l)個(gè)內(nèi)部狀態(tài)值和第n個(gè)輸入消息,來生成 第n個(gè)內(nèi)部狀態(tài)值(n = 2到16)。 在區(qū)間T08-T14中,SHAl加法處理器116-2使用存儲(chǔ)在內(nèi)部狀態(tài)值存儲(chǔ)單元 111中的第1到第16個(gè)分步處理數(shù)據(jù)作為要處理的數(shù)據(jù),來執(zhí)行針對(duì)第1到第16個(gè)內(nèi)部 狀態(tài)值的加法處理。但是,由于哈希中間值存儲(chǔ)數(shù)據(jù)選擇器114未選擇處理結(jié)果IHASH_ N[511:256],因此其不在哈希中間值存儲(chǔ)單元115中存儲(chǔ)任何數(shù)據(jù)。 在區(qū)間T13-T32中,擴(kuò)展消息存儲(chǔ)數(shù)據(jù)選擇器106選擇作為SHA1消息擴(kuò)展處理器
58108-2的處理結(jié)果的數(shù)據(jù)ExMSG[63:32]作為輸出ExMSG—l [31:0]。 在區(qū)間T13-T32中,SHA1消息擴(kuò)展處理器108_2使用存儲(chǔ)在擴(kuò)展消息存儲(chǔ)單元 107的區(qū)域l中的16個(gè)字的數(shù)據(jù)作為要處理的數(shù)據(jù),來生成第17個(gè)到第80個(gè)擴(kuò)展消息。 在區(qū)間T14-T33中將處理結(jié)果存儲(chǔ)到擴(kuò)展消息存儲(chǔ)單元107中。擴(kuò)展消息存儲(chǔ)數(shù)據(jù)選擇器 106通過選擇SHA1擴(kuò)展處理結(jié)果來輸出數(shù)據(jù)ExMSG_N[31:0]。接著,SHA1消息擴(kuò)展處理器 108-2使用16個(gè)字的第(n-16)到第(n-l)個(gè)擴(kuò)展消息,來生成第n個(gè)擴(kuò)展消息(n = 17到 80)。 在區(qū)間T14-T33中,SHA1分步處理器112_2使用存儲(chǔ)在擴(kuò)展消息存儲(chǔ)單元107中 的第17到第80個(gè)擴(kuò)展消息作為要處理的數(shù)據(jù)來執(zhí)行處理,并生成第17到第80個(gè)內(nèi)部狀 態(tài)值。在區(qū)間T15-T34中,將處理結(jié)果存儲(chǔ)到內(nèi)部狀態(tài)值存儲(chǔ)單元111中。內(nèi)部狀態(tài)值存 儲(chǔ)數(shù)據(jù)選擇器110通過選擇SHA1分步處理結(jié)果來輸出值TEMP_N[511:256]。因此,在區(qū)間 T14-T33中,SHA1分步處理器112-2使用第(n-l)個(gè)內(nèi)部狀態(tài)值和第n個(gè)輸入消息,來生成 第n個(gè)內(nèi)部狀態(tài)值(n = 17到80)。 在區(qū)間T15-T34中,SHA1加法處理器116_2使用存儲(chǔ)在內(nèi)部狀態(tài)值存儲(chǔ)單元111 中的第17到第80個(gè)分步處理數(shù)據(jù)作為要處理的數(shù)據(jù),來執(zhí)行針對(duì)第17到第80個(gè)內(nèi)部狀態(tài) 值的加法處理。針對(duì)在T34中生成的第80個(gè)內(nèi)部狀態(tài)值的加法處理結(jié)果是第一個(gè)塊的哈希 中間值。在區(qū)間T06-T33中,哈希中間值存儲(chǔ)數(shù)據(jù)選擇器114輸出哈希初始值B_IV[255:0], 并從T34開始輸出值IHASH_N[255:0]。因此,在T34中SHA1加法處理器116_2執(zhí)行哈希初 始值和第80個(gè)內(nèi)部狀態(tài)值的加法處理,并在T35中將處理結(jié)果存儲(chǔ)到哈希中間值存儲(chǔ)單元 115中。 在T35中,將步驟計(jì)數(shù)器B_STP_CNT清除為零,塊計(jì)數(shù)器B_BLK_CNT向上計(jì)數(shù)到1 。 由于B_BLK_CNT超過B_BLK值"0",因此控制器101將塊計(jì)數(shù)器B_BLK_CNT清零,并向DMAC B發(fā)出哈希值的數(shù)據(jù)輸出傳輸請(qǐng)求B_DMA_REQ[1]。在區(qū)間T36-T38中,斷言信號(hào)B_DMA_ACK[1],并進(jìn)行160位的SHA1哈希值的輸出 傳輸。哈希值計(jì)算電路100根據(jù)圖30B所示的哈希值計(jì)算電路100的操作序列進(jìn)行操作, 并在ST116-B中拒絕執(zhí)行SHA1哈希值計(jì)算所需的以下使用請(qǐng)求
擴(kuò)展消息存儲(chǔ)單元107的區(qū)域1的使用請(qǐng)求;
內(nèi)部狀態(tài)值存儲(chǔ)單元111的區(qū)域1的使用請(qǐng)求;以及
SHA1處理引擎108-2、 112-2和116-2的使用請(qǐng)求。 接著哈希值計(jì)算電路100完成消息B的哈希值計(jì)算。在拒絕使用許可B_ExMSG_ ACK、 B_TEMP_ACK和B_ENG_ACK時(shí),設(shè)置B_EXE = 0 (T39)。 此外,假定在消息B的哈希值計(jì)算完成后、在消息A的哈希值計(jì)算完成前接收了消 息C。在接收到消息C時(shí),CPU 401根據(jù)圖29A、29B和29C所示的CPU操作序列進(jìn)行操作。 在STOOl中,由于處理A正在處理消息,因此CPU決定在哈希值計(jì)算中使用處理B。在STOll 中,CPU 401設(shè)置哈希值計(jì)算電路100的處理B寄存器組。CPU 401在寄存器B—ALG(306) 中設(shè)置指示SHA512的"10",在寄存器B—BLK(307)中設(shè)置"7",在寄存器B_IV(308)中設(shè)置 在SHA512算法中規(guī)定的值,在寄存器B—ENB(305)中設(shè)置"1",并發(fā)出哈希值計(jì)算開始請(qǐng)求。
在接收到處理B開始請(qǐng)求時(shí),哈希值計(jì)算電路100根據(jù)圖30B所示的哈希值計(jì)算 電路的操作序列進(jìn)行操作,并且在ST101-B中哈希值計(jì)算電路100 (或控制器101)向共享資源管理器209發(fā)出SHA512哈希值計(jì)算所需的以下使用請(qǐng)求
擴(kuò)展消息存儲(chǔ)單元107的區(qū)域0和區(qū)域1的使用請(qǐng)求;
內(nèi)部狀態(tài)值存儲(chǔ)單元111的區(qū)域0和區(qū)域1的使用請(qǐng)求;以及
SHA512處理引擎的使用請(qǐng)求。 由于處理A使用擴(kuò)展消息存儲(chǔ)單元107的區(qū)域O和內(nèi)部狀態(tài)值存儲(chǔ)單元111的區(qū) 域0,因此共享資源管理器209不給予使用許可B_ExMSG_ACK和B_TEMP_ACK。此外,由于處 理A不使用引擎108-3、 112-3和116-3,因此共享資源管理器209給予許可B_ENG_ACK。控 制器101不開始處理,直到共享資源管理器209給予許可B—ExMSG—ACK和BJEMP—ACK為止。
在T48中,在處理A完成消息A的哈希值計(jì)算并拒絕擴(kuò)展消息存儲(chǔ)單元107的區(qū) 域O和內(nèi)部狀態(tài)值存儲(chǔ)單元111的區(qū)域O的使用請(qǐng)求時(shí),給予許可B—ExMSG—ACK和B_TEMP_ ACK,并設(shè)置B—EXE = 1。 在T48中,B_EXE = "1"并且B_ALG = SHA512。因此,消息擴(kuò)展處理結(jié)果選擇器 109選擇SHA512消息擴(kuò)展處理器108-3的處理結(jié)果SHA512_ExMSG[63:0]作為輸出ExMSG_ N[63:0]。接著,分步處理結(jié)果選擇器113選擇SHA512分步處理器112-3的處理結(jié)果 SHA512_TEMP [511:0]作為輸出TEMP_N[511:0]。此外,加法處理結(jié)果選擇器117選擇SHA512 加法處理器116-3的處理結(jié)果SHA512_IHASH[511:0]作為輸出IHASH_N[511:0]。在T48 中,控制器101向DMAC B發(fā)出數(shù)據(jù)輸入傳輸請(qǐng)求B_DMA_REQ
。 在T49中,在斷言信號(hào)B_DMA_ACK
時(shí),控制器101從下一個(gè)時(shí)鐘的前沿開始更 新步驟計(jì)數(shù)器B_STP_CNT。計(jì)數(shù)器B_STP_CNT針對(duì)各時(shí)鐘周期通過+1進(jìn)行更新,并在計(jì)數(shù) 器B_STP_CNT計(jì)數(shù)到81時(shí),將其清除為零。 在區(qū)間T49-T54中,傳輸?shù)谝粋€(gè)塊的輸入消息的16個(gè)字,并且DMAIF單元103輸 出數(shù)據(jù)B_DMA_IDATA[63:0]作為數(shù)據(jù)B_MSG[63:0]。擴(kuò)展消息存儲(chǔ)數(shù)據(jù)選擇器106選擇輸 入消息數(shù)據(jù)B—MSG[31:0]作為輸出ExMSGJ) [31:0],并選擇輸入消息數(shù)據(jù)B_MSG[63:32]作 為輸出ExMSG_l[31:0]。 在區(qū)間T49-T54中,SHA512消息擴(kuò)展處理器108-3使用擴(kuò)展消息存儲(chǔ)單元107的 區(qū)域0和區(qū)域1作為要處理的數(shù)據(jù)來執(zhí)行處理。但是,由于擴(kuò)展消息存儲(chǔ)數(shù)據(jù)選擇器106 未選擇處理結(jié)果ExMSG—N[63:0],因此其不在擴(kuò)展消息存儲(chǔ)單元107中存儲(chǔ)任何數(shù)據(jù)。在區(qū) 間T50-T55中,擴(kuò)展消息存儲(chǔ)單元107存儲(chǔ)第1到第16個(gè)擴(kuò)展消息(輸入消息)。
在區(qū)間T50-T55中,SHA512分步處理器112-3使用存儲(chǔ)在擴(kuò)展消息存儲(chǔ)單元107 中的第1到第16個(gè)擴(kuò)展消息作為要處理的數(shù)據(jù)來執(zhí)行處理,并生成第1到第16個(gè)內(nèi)部狀 態(tài)值。在區(qū)間T51-T56中,將處理結(jié)果存儲(chǔ)到內(nèi)部狀態(tài)值存儲(chǔ)單元111中。在區(qū)間T48-T49 中,內(nèi)部狀態(tài)值存儲(chǔ)數(shù)據(jù)選擇器IIO輸出哈希初始值的低256位B—IV[255:0]作為輸出 TEMPJ)[255:0]。此外,內(nèi)部狀態(tài)值存儲(chǔ)數(shù)據(jù)選擇器110輸出高256位B_IV[511:256]作為 輸出TEMP_1 [255:0]。從T50開始,內(nèi)部狀態(tài)值存儲(chǔ)數(shù)據(jù)選擇器110通過選擇SHA512分步 處理結(jié)果的低256位來輸出值TEMP—N[255:0]作為輸出TEMPJ)[255:0]。此外,內(nèi)部狀態(tài)值 存儲(chǔ)數(shù)據(jù)選擇器110通過選擇SHA512分步處理結(jié)果的高256位來輸出值TEMP_N[511:256] 作為輸出TEMP_1 [255:0]。因此,在T50中,SHA512分步處理器112-3使用哈希初始值和第 一輸入消息,來生成第一內(nèi)部狀態(tài)值。在區(qū)間T51-T55中,SHA512分步處理器112-3使用 第(n-l)個(gè)內(nèi)部狀態(tài)值和第n個(gè)輸入消息來生成第n個(gè)內(nèi)部狀態(tài)值(n = 2到16)。
在區(qū)間T51-T56中,SHA512加法處理器116-3使用存儲(chǔ)在內(nèi)部狀態(tài)值存儲(chǔ)單元 111中的第1到第16個(gè)分步處理數(shù)據(jù)作為要處理的數(shù)據(jù),來執(zhí)行針對(duì)第1到第16個(gè)內(nèi)部 狀態(tài)值的加法處理。但是,由于哈希中間值存儲(chǔ)數(shù)據(jù)選擇器114未選擇處理結(jié)果IHASH_ N[511:0],因此其不在哈希中間值存儲(chǔ)單元115中存儲(chǔ)任何數(shù)據(jù)。 在區(qū)間T55-T60中,擴(kuò)展消息存儲(chǔ)數(shù)據(jù)選擇器106輸出作為SHA512消息擴(kuò)展處理 器108-3的處理結(jié)果的高位的數(shù)據(jù)ExMSG—N[31:0],來作為輸出ExMSGJ)[31:0]。此外,擴(kuò) 展消息存儲(chǔ)數(shù)據(jù)選擇器106輸出作為SHA512消息擴(kuò)展處理器108-3的處理結(jié)果的低位的 數(shù)據(jù)ExMSG_N[63:32],作為輸出ExMSG_l [31:0]。 在區(qū)間T55-T60中,SHA512消息擴(kuò)展處理器108_3使用存儲(chǔ)在擴(kuò)展消息存儲(chǔ)單 元107的區(qū)域0和區(qū)域1中的16個(gè)字的數(shù)據(jù)作為要處理的數(shù)據(jù),來生成第17個(gè)到第80 個(gè)擴(kuò)展消息。在區(qū)間T56-T61中,將處理結(jié)果存儲(chǔ)到擴(kuò)展消息存儲(chǔ)單元107中。擴(kuò)展消息 存儲(chǔ)數(shù)據(jù)選擇器106輸出作為SHA512消息擴(kuò)展處理器108-3的處理結(jié)果的高位的數(shù)據(jù) ExMSG—N[31:0],來作為輸出ExMSGJ) [31:0]。此外,擴(kuò)展消息存儲(chǔ)數(shù)據(jù)選擇器106輸出作 為SHA512消息擴(kuò)展處理器108-3的處理結(jié)果的低位的數(shù)據(jù)ExMSG_N[63:32],來作為輸出 ExMSG_l[31:0]。接著,SHA512消息擴(kuò)展處理器108-3使用16個(gè)字的第(n_16)到第(n_l) 個(gè)擴(kuò)展消息,來生成第n個(gè)擴(kuò)展消息(n = 17到80)。 在區(qū)間T56-T61中,SHA512分步處理器112-3使用存儲(chǔ)在擴(kuò)展消息存儲(chǔ)單元107 中的第17到第80個(gè)擴(kuò)展消息作為要處理的數(shù)據(jù)來執(zhí)行處理,并生成第17到第80個(gè)內(nèi)部 狀態(tài)值。在區(qū)間T57-T62中,將處理結(jié)果存儲(chǔ)到內(nèi)部狀態(tài)值存儲(chǔ)單元111中。內(nèi)部狀態(tài)值 存儲(chǔ)數(shù)據(jù)選擇器110通過選擇SHA512分步處理結(jié)果來輸出值TEMP_N[511:0]的低256位 TEMP_N[255:0],來作為輸出TEMPJ) [255:0]。此外,內(nèi)部狀態(tài)值存儲(chǔ)數(shù)據(jù)選擇器110輸出高 256位TEMP—N[511:256]來作為輸出TEMP—1 [255:0]。因此,在區(qū)間T56-T61中,SHA512分 步處理器112-3使用第(n-l)個(gè)內(nèi)部狀態(tài)值和第n個(gè)輸入消息,來生成第n個(gè)內(nèi)部狀態(tài)值 (n = 17到80)。 在區(qū)間T57-T62中,SHA512加法處理器116-3使用存儲(chǔ)在內(nèi)部狀態(tài)值存儲(chǔ)單元 111中的第17到第80個(gè)分步處理數(shù)據(jù)作為要處理的數(shù)據(jù),來執(zhí)行針對(duì)第17到第80個(gè)內(nèi)部 狀態(tài)值的加法處理。針對(duì)在T62中生成的第80個(gè)內(nèi)部狀態(tài)值的加法處理結(jié)果是第一個(gè)塊的 哈希中間值。在區(qū)間T48-T61中,哈希中間值存儲(chǔ)數(shù)據(jù)選擇器114輸出哈希初始值的低256 位BJV [255:0]來作為輸出IHASHJ) [255:0],并選擇高256位B_IV[ [511:256]來作為輸出 IHASH—1[511:256]。從T62開始,哈希中間值存儲(chǔ)數(shù)據(jù)選擇器114輸出值IHASH_N[255:0] 作為輸出IHASHJ) [255:0],并輸出值IHASH_N[511:256]作為輸出IHASH—1 [511:256]。因 此,在T62中SHA512加法處理器116-3執(zhí)行哈希初始值和第80個(gè)內(nèi)部狀態(tài)值的加法處理, 并在T63中將處理結(jié)果存儲(chǔ)到哈希中間值存儲(chǔ)單元115中。 在T63中,將步驟計(jì)數(shù)器B_STP_CNT清除為零,塊計(jì)數(shù)器B_BLK_CNT向上計(jì)數(shù)到1 。 由于B_BLK_CNT不超過B_BLK值"7",因此控制器101向DMAC B發(fā)出下一個(gè)塊的數(shù)據(jù)輸入 傳輸請(qǐng)求B_DMA_REQ
。 類似地,控制器101針對(duì)該數(shù)量或者更多的塊,重復(fù)進(jìn)行處理。 在T66中,獲得針對(duì)最后一個(gè)塊的第80個(gè)內(nèi)部狀態(tài)值的加法處理結(jié)果。在T67中,
將處理結(jié)果存儲(chǔ)到哈希中間值存儲(chǔ)單元115中。
61
在T67中,將步驟計(jì)數(shù)器B—STP—CNT清除為零,塊計(jì)數(shù)器B—BLK—CNT向上計(jì)數(shù)到8。 由于B_BLK_CNT超過B_BLK值"7",因此控制器101將塊計(jì)數(shù)器B_BLK_CNT清零,并向DMAC B發(fā)出哈希值的數(shù)據(jù)輸出傳輸請(qǐng)求B_DMA_REQ[1]。在區(qū)間T81-T88中,斷言信號(hào)B_DMA_ACK[1],并進(jìn)行512位的SHA512哈希值的輸 出傳輸。哈希值計(jì)算電路100根據(jù)圖30B所示的哈希值計(jì)算電路100的操作序列進(jìn)行操作, 并在ST116-B中拒絕執(zhí)行SHA512哈希值計(jì)算所需的以下使用請(qǐng)求
擴(kuò)展消息存儲(chǔ)單元107的區(qū)域0和區(qū)域1的使用請(qǐng)求;
內(nèi)部狀態(tài)值存儲(chǔ)單元111的區(qū)域0和區(qū)域1的使用請(qǐng)求;以及
SHA512處理引擎108-3、 112-3和116-3的使用請(qǐng)求。 接著哈希值計(jì)算電路100完成消息C的哈希值計(jì)算。在拒絕使用許可B_ExMSG_ ACK、 B_TEMP_ACK和B_ENG_ACK時(shí),設(shè)置B_EXE = 0 (T89)。 如上所述,上述配置能夠處理多個(gè)哈希算法、即MD5、SHA1和SHA512的消息。由于 擴(kuò)展消息存儲(chǔ)單元、內(nèi)部狀態(tài)值存儲(chǔ)單元和哈希中間值存儲(chǔ)單元在使用時(shí)不會(huì)被各個(gè)哈希 算法占用,因此能夠抑制電路規(guī)模的增加。 此外,能夠并行進(jìn)行消息A和消息B的處理,能夠在消息C之前正在進(jìn)行處理的消 息A的處理完成時(shí),開始和執(zhí)行由于其它處理使用共享資源而無法并行處理的消息C的哈 希值計(jì)算。 即使在不執(zhí)行消息處理時(shí),處理引擎也始終針對(duì)要處理的數(shù)據(jù)區(qū)域執(zhí)行處理,并
始終更新要處理的數(shù)據(jù)的區(qū)域。由于該原因,當(dāng)請(qǐng)求并執(zhí)行特定哈希算法處理時(shí),能夠提供
能夠抑制功耗的變化并能夠確保高抗篡改性和高安全性的哈希值計(jì)算裝置。 根據(jù)上述配置,能夠在抑制電路規(guī)模增加的同時(shí)執(zhí)行多個(gè)不同的哈希算法的哈希
值計(jì)算,能夠在更少的限制條件下同時(shí)執(zhí)行針對(duì)多個(gè)消息的哈希值計(jì)算。此外,能夠提供能
夠與選擇的哈希算法無關(guān)地抑制功耗變化并能夠確保高抗篡改性和高安全性的哈希值計(jì)
算裝置。 中間值存儲(chǔ)器單元能夠存儲(chǔ)來自多個(gè)哈希值計(jì)算單元中的輸出數(shù)據(jù)中的具有最 大位寬的輸出數(shù)據(jù)。也就是說,根據(jù)最大位寬來實(shí)現(xiàn)上述配置。由于該原因,能夠使所處理 的哈希算法難以指定。另外,在處理不需要最大位寬的哈希算法時(shí),能夠通過使用未使用的 位區(qū)域來減少哈希值計(jì)算的中斷和重新開始的時(shí)間開銷,并通過超前存儲(chǔ)處理輸入塊來加 速處理。 根據(jù)本發(fā)明,能夠提供能夠在處理中間切換針對(duì)多個(gè)消息的哈希值計(jì)算而不降低 任何處理性能,并且能夠確保高安全性的哈希值計(jì)算技術(shù)。此外,根據(jù)本發(fā)明,能夠提供能 夠同時(shí)執(zhí)行多個(gè)哈希算法,并能夠確保小的電路規(guī)模和高安全性的哈希值計(jì)算技術(shù)。
其它實(shí)施例 本發(fā)明的各方面還可以通過讀出并執(zhí)行記錄在存儲(chǔ)裝置上的用于執(zhí)行上述實(shí)施 例的功能的程序的系統(tǒng)或設(shè)備的計(jì)算機(jī)(或諸如CPU或MPU的裝置)、以及由系統(tǒng)或設(shè)備的 計(jì)算機(jī)例如讀出并執(zhí)行記錄在存儲(chǔ)裝置上的用于執(zhí)行上述實(shí)施例的功能的程序來執(zhí)行步 驟的方法來實(shí)現(xiàn)。鑒于此,例如經(jīng)由網(wǎng)絡(luò)或者從用作存儲(chǔ)裝置的各種類型的記錄介質(zhì)(例 如計(jì)算機(jī)可讀介質(zhì))向計(jì)算機(jī)提供程序。 雖然參照示例性實(shí)施例對(duì)本發(fā)明進(jìn)行了描述,但是應(yīng)當(dāng)理解,本發(fā)明不限于所公
62開的示例性實(shí)施例。所附權(quán)利要求的范圍符合最寬的解釋,以覆蓋所有變型、等同結(jié)構(gòu)和功
權(quán)利要求
一種哈希值計(jì)算裝置,其計(jì)算消息的哈希值,該哈希值計(jì)算裝置包括輸入單元,其適于輸入根據(jù)要處理的消息獲得的擴(kuò)展塊;哈希值計(jì)算單元,其適于執(zhí)行所輸入的塊的哈希值計(jì)算并輸出哈希中間值;多個(gè)中間值存儲(chǔ)單元,其適于針對(duì)所述要處理的消息存儲(chǔ)由所述哈希值計(jì)算單元輸出的所述哈希中間值;輸出單元,其適于將與所述要處理的消息的所有塊關(guān)聯(lián)的哈希中間值作為所述消息的哈希值輸出;以及哈希值計(jì)算控制單元,其適于通過切換用于存儲(chǔ)從所述哈希值計(jì)算單元輸出的所述哈希中間值的所述中間值存儲(chǔ)單元來控制針對(duì)多個(gè)消息的哈希值計(jì)算。
2. 根據(jù)權(quán)利要求1所述的哈希值計(jì)算裝置,其中,在使用針對(duì)第一消息的第一中間值 存儲(chǔ)單元執(zhí)行處理期間,輸入優(yōu)先級(jí)比所述第一消息高的第二消息的情況下,所述哈希值 計(jì)算控制單元進(jìn)行控制,以中斷針對(duì)所述第一消息的處理,并使用第二中間值存儲(chǔ)單元開 始針對(duì)所述第二消息的處理,并且在針對(duì)所述第二消息的處理完成后,使用存儲(chǔ)在所述第 一中間值存儲(chǔ)單元中的中間值重新開始針對(duì)所述第一消息的處理。
3. 根據(jù)權(quán)利要求2所述的哈希值計(jì)算裝置,該哈希值計(jì)算裝置還包括擴(kuò)展處理單元, 其適于針對(duì)要處理的消息的塊執(zhí)行擴(kuò)展處理;分步處理單元,其適于針對(duì)輸入數(shù)據(jù)執(zhí)行分 步處理,并將經(jīng)過所述分步處理的所述輸入數(shù)據(jù)作為內(nèi)部狀態(tài)值輸出,多個(gè)所述擴(kuò)展處理 單元和多個(gè)所述分步處理單元與不同的哈希算法對(duì)應(yīng)地配置,其中,所述輸入單元輸入經(jīng)過所述擴(kuò)展處理單元進(jìn)行的所述擴(kuò)展處理的塊作為所述擴(kuò) 展塊,所述哈希值計(jì)算單元使用所述內(nèi)部狀態(tài)值執(zhí)行所述哈希值計(jì)算,并且 所述哈希值計(jì)算裝置還包括切換單元,該切換單元適于根據(jù)要使用的哈希算法來切換 要啟動(dòng)的所述擴(kuò)展處理單元和所述分步處理單元。
4. 根據(jù)權(quán)利要求3所述的哈希值計(jì)算裝置,其中,所述第一中間值存儲(chǔ)單元和所述第 二中間值存儲(chǔ)單元被配置成存儲(chǔ)來自所述多個(gè)分步處理單元的輸出數(shù)據(jù)中的具有最大位 寬的輸出數(shù)據(jù)。
5. —種哈希值計(jì)算裝置,其計(jì)算消息的哈希值,該哈希值計(jì)算裝置包括 輸入單元,其適于輸入根據(jù)要處理的消息獲得的擴(kuò)展塊;多個(gè)哈希值計(jì)算單元,其適于執(zhí)行所輸入的塊的哈希值計(jì)算并輸出哈希中間值,所述多個(gè)哈希值計(jì)算單元與不同的哈希算法對(duì)應(yīng)地配置;切換單元,其適于根據(jù)要使用的哈希算法來切換要啟動(dòng)的所述哈希值計(jì)算單元; 中間值存儲(chǔ)單元,其適于與要處理的消息關(guān)聯(lián)地存儲(chǔ)從所啟動(dòng)的哈希值計(jì)算單元輸出的哈希中間值;以及輸出單元,其適于將與所述要處理的消息的所有塊關(guān)聯(lián)的哈希中間值作為所述消息的 哈希值輸出。
6. 根據(jù)權(quán)利要求5所述的哈希值計(jì)算裝置,其中,所述中間值存儲(chǔ)單元被配置成存儲(chǔ) 所述多個(gè)哈希值計(jì)算單元的輸出數(shù)據(jù)中的具有最大位寬的輸出數(shù)據(jù)。
7. —種用于哈希值計(jì)算裝置的哈希值計(jì)算方法,所述哈希值計(jì)算裝置計(jì)算消息的哈希 值,該哈希值計(jì)算方法包括輸入步驟,輸入根據(jù)要處理的消息獲得的擴(kuò)展塊;哈希值計(jì)算步驟,執(zhí)行所輸入的塊的哈希值計(jì)算并輸出哈希中間值;存儲(chǔ)步驟,針對(duì)所述要處理的消息在多個(gè)中間值存儲(chǔ)單元的一個(gè)中存儲(chǔ)在所述哈希值計(jì)算步驟中輸出的所述哈希中間值;輸出步驟,輸出與所述要處理的消息的所有塊關(guān)聯(lián)的哈希中間值作為所述消息的哈希值;以及哈希值計(jì)算控制步驟,通過切換用于存儲(chǔ)在所述哈希值計(jì)算步驟中輸出的所述哈希中 間值的所述中間值存儲(chǔ)單元來控制針對(duì)多個(gè)消息的哈希值計(jì)算。
8. —種用于哈希值計(jì)算裝置的哈希值計(jì)算方法,所述哈希值計(jì)算裝置計(jì)算消息的哈希 值,該哈希值計(jì)算方法包括輸入步驟,輸入根據(jù)要處理的消息獲得的擴(kuò)展塊;哈希值計(jì)算步驟,在與不同的哈希算法對(duì)應(yīng)地配置的多個(gè)哈希值計(jì)算單元的一個(gè)中, 執(zhí)行所輸入的塊的哈希值計(jì)算并輸出哈希中間值;切換步驟,根據(jù)要使用的哈希算法來切換要啟動(dòng)的所述哈希值計(jì)算單元;中間值存儲(chǔ)步驟,在存儲(chǔ)單元中,與要處理的消息關(guān)聯(lián)地存儲(chǔ)在所啟動(dòng)的哈希值計(jì)算 單元中輸出的哈希中間值;以及輸出步驟,輸出與所述要處理的消息的所有塊關(guān)聯(lián)的哈希中間值作為所述消息的哈希值。
全文摘要
本發(fā)明涉及一種哈希值計(jì)算裝置及其方法。哈希值計(jì)算裝置計(jì)算消息的哈希值,該哈希值計(jì)算裝置包括輸入單元,其適于輸入根據(jù)要處理的消息獲得的擴(kuò)展塊;哈希值計(jì)算單元,其適于執(zhí)行所輸入的塊的哈希值計(jì)算并輸出哈希中間值;多個(gè)中間值存儲(chǔ)單元,其適于針對(duì)所述要處理的消息存儲(chǔ)由所述哈希值計(jì)算單元輸出的所述哈希中間值;輸出單元,其適于將與所述要處理的消息的所有塊關(guān)聯(lián)的哈希中間值作為所述消息的哈希值輸出;以及哈希值計(jì)算控制單元,其適于通過切換用于存儲(chǔ)從所述哈希值計(jì)算單元輸出的所述哈希中間值的所述中間值存儲(chǔ)單元來控制針對(duì)多個(gè)消息的哈希值計(jì)算。
文檔編號(hào)H04L9/06GK101753291SQ200910253338
公開日2010年6月23日 申請(qǐng)日期2009年11月30日 優(yōu)先權(quán)日2008年11月28日
發(fā)明者熊取谷昭彥, 脇野栞, 菊地明美, 西川成 申請(qǐng)人:佳能株式會(huì)社