A7 578096 五、發明說明(/ ) [相關申請案] 本申請案係一個非臨時申請案,其在35 U.S.C. sec. 119(c)之下而主張於西兀2〇〇1年6月13日由Satish N. Anand所提出之美國臨時申請案序號第6〇/297,876號(其標 題爲‘利用多個雜湊儲存區域之雜湊處理系統之裝置及方 法)以及於西兀2001年12月1 〇日由Satish N. Anand戶斤 提出之美國臨時申請案序號第60/340,013號(其標題爲“利 用多個雜湊儲存區域之雜湊處理系統之裝置及方法”)之裨 益,其係各自以參照方式而納入本文。 [發明背景] 本發明係槪括關於安全性處理系統,且尤指一種用於 雜湊處理之裝置及方法,運用多個雜湊儲存區域以供於雜 湊處理期間而讀取及寫入資料。 雜湊函數係已廣泛運用於現代密碼學,以產生特別是 壓縮資料、訊息摘要、指紋、與檢查總和(checksum)。一 雜湊函數係一數學函數,其取得一可變長度的輸入字串, 並且將其轉換爲一固定長度的輸出字串。該輸出字串係稱 爲一雜湊値,其典型爲小於輸入字串。一 “單向(one-way) ”雜湊函數係一種其運作於一個方向之雜湊函數,此意指 其爲易於從一輸入字串以計算一雜湊値,但係難以產生其 雜湊至同一値的一第二輸入字串。Bruce Schneier於西元 1996年著作之“應用密碼學”的第429-59頁係包括種種 的單向雜湊演算法之詳細論述。 於其實施雜湊處理之大多數現代安全性應用中,所 _____ 3 ____ 本紙張尺度適用中國國家標準(CNS)A4規格(210 X 297公釐) ------ (請先閱讀背面之注意事項再填寫本頁) 一*°J- _線· 578096 B7 五、發明說明(i ) 用的雜湊演算法係如同定義於FIPS PUB Μ0-1之SHA1演 算法、如同定義於RFC 1321之MD5演算法、以及如同定 義於 RFC 2104 之 HMAC-SHA1 與 HMAC-MD5,所有前述 者係以參照方式而整體納入於本文。此等演算法係計算一 序列的位元組之一簽名(signature)或訊息摘要。 MD5與SHA1雜湊演算法係各自需要至少爲十六個32 位元的字組之一暫時運作記憶體。演算法係作業於以64位 兀組的區塊之一輸入資料流。右輸入資料流係並非爲64位 元組的倍數(諸如可能發生在當處理對於一個資料封包之資 料的最後部分時),則演算法係定義一程序以供內在塡充 (implicit padding) 〇 典型而言,暫時運作記憶體係塡以輸入資料流之64位 元組的區塊。若對於一個資料封包之輸入資料的最後區塊 係少於64位元組,則暫時運作記憶體係塡以由演算法所定 義之內在塡充。 SHA1雜湊演算法 如上所述,一種普遍運用之單向雜湊演算法係“安全 雜湊演算法(secure hash algorithm)” 或 “SHA1” ,其係由 美國國家標準暨技術學會(NIST)與美國國家安全機構(NSA) 所硏發。SHA1係詳述於由NIST於西元1993年5月11日 所發行之聯邦資訊處理標準公報180-1 (FIPS PUB 180-1)。 美國聯邦政府係要求SHA1爲運用其標準化的“數位 簽名演算法(DSA,digital signature algorithm)” ,其計算對 於來自一個訊息摘要的訊息之一簽名。另外,美國聯邦政 _— —_4____ 本纸張尺度適用中國國家標準(CNS)A4規格(21〇 X 297公爱) (請先閲讀背面之注意事項再填寫本頁) * 4 . .線- 578096 A7 -— —____B7 ___ 五、發明說明()) -----«— »€-----— (請先閱讀背面之注意事項再填寫本頁) 府係要求SHA1爲運用在每當一安全雜湊演算法被要求用 於一聯邦應用時,且鼓勵其由私人與商業組織之運用。是 以’ SHA1之運用係已經成爲極爲普遍用於其需要一單向 雜湊演算法之應用。 當一個小於264位元之任何長度的輸入訊息係輸入至 SHA1,演算法係產生一個16〇位元的輸出,其稱爲一“訊 息摘要(message digest)” 。SHA1係在當計算一訊息摘要時 而依序處理512位元之訊息區塊。若一訊息係非爲512位 元之倍數,則SHA1係先塡充該訊息以使得該訊息爲512 位元之倍數。塡充後的訊息係接著由SHA1所處理爲n個 512位元的區塊,Mu Μ2,···,Μη,於其各個區塊係由十六 個32位元的字組L〇, ,…,L15所構成。 .線 訊息摘要計算係運用二個緩衝器與八十個32位元字組 的一序列’各個緩衝器由五個32位元的暫存器所組成。第 一個5字組的緩衝器之暫存器係標示爲]^、hb、he、hd、 與he,第二個5字組的緩衝器之暫存器係標示爲、hi、 h2、h3、h4。該80字組的序列之字組係出自於訊息區塊中 的十八個32位兀子組’且係標7P:爲W〇,Wi,。一單 一字組暫存器TEMP係亦運用。 一 回(round) t係執行於SHA1之各個反覆運作 (iteration),於其之一回係定義爲其作業於該8Q字組序列( 稱爲“輸入序列”)的一個字組Wt之計算。是以,各個區 塊之處理係涉及八十個反覆運作。因爲各個反覆運作係耗 時一個時脈週期’各個區塊之處理係運用八十個時脈週期 5 本紙張尺度適用中國國家標準(CNS)A4規格(210 X 297公釐—- A7 578096 _____ _B7_________ 五、發明說明(f ) Ο 於八十個反覆運作期間,SHA1係運用—序列之八十 個非線性函數(NLF),fG,A,…,f79。各個函數f t,〇$t^79 ’係作業於三個32位元的字組,且產生一個32位元的字 組作爲輸出。於八十個反覆運作期間,SHA1亦運用一序 列之常數字組,KG,.·.,K79。ft(X,Y,Z)係定義如下: ft(X?Y,Z)=(X and Y) or ((NOT X) AND Z) (0^ 19) ft(X,Y,Z)=X XOR Y XOR Z (20$ 39) ft(X,Y,Z)=(X AND Y) OR (X AND Z) OR (Y AND Z) (40^1^59) ft(X,Y,Z)= X X〇R Y XOR Z (60$t$79) 該演算法亦運用一序列之常數字組,KQ,.··,K79。此等 常數係同於SHA1所運用的常數。此等常數係以十六進制 (hex)而給定爲:
Kt=5A827999 (0^ 19)
Kt=6ED9EBAl (20$ 39)
Kt=8FlBBCDC (40^t^59)
Kt=CA62ClD6 (60^t^79)
欲產生訊息摘要,首先,hO、hi、h2、h3、與h4暫 存器係初始化至一預定組的初始化値。明確而言’暫存器 h0、Μ、h2、h3、與h4係初始化至下列的値(以十六進制 h0=67452301 hl=EFCDAB89 h2=98BADCFE _ 6____—----- 本紙張尺度適用中國國家標準(CNS)A4規格(210 χ 297公釐〉 > ------ (請先閱讀背面之注意事項再填寫本頁) · -線- 578096 A7 ___B7_ 五、發明說明(上) h3=10325476 h4=C3D2ElF0。 該訊息摘要之產生係接著涉及以下作業,其中,區塊 Ml5 M2,...,Mn之各者係依序處理: 1) 將Mx分割爲十六個32位元的字組,L〇, Li,...,L15, 其中L〇係最左的字組,而Mx係欲處理之下一訊息區塊。 2) 令暫存器 ha=h0,hb=hl,hc=h2,hd=h3,且 h4=h4 3) 對於t=0至15,令Wt=Lt;及 對於 t=16 至 79,令 W^S1 (Wt_3 XOR Wt_8 XOR Wt_14 XOR Wt_16), 其中sx表示一左循環移位X位元。 4) 對於t=0至79, TEMP=S5(ha)+ft(hb,hc,hd)+he+Wt+Kt; ha=TEMP; hb=ha; hc=S30(hb); hd=hc; he=hd 5) 令 h0=h0+ha; hl=hl+hb; h2=h2+hc; h3=h3+hd; h4=h4+he 對於下一區塊而重複步驟1-5。 在處理最後一個區塊Mn之後,訊息摘要係由五個字 組h0、hi、h2、h3、h4所表示之160位元的字串。 於諸多情形,SHA1演算法係執行於一特定應用積體 電路(ASIC),於其之作業係運用硬體實施的邏輯閘而執行 。該SHA1演算法之一硬體實施係需有對於32位元的摘要 變數h0、hi、h2、h3、h4之五個暫存器,其係在起始時而 初始化至定値。其亦運用對於暫時週期變數ha、hb、he、 _7 _ 本紙張尺度適用中國國家標準(CNS)A4規格(210 χ 297公釐)
V •I ——,#.! (請先閱讀背面之注意事項再填寫本頁) •線' 578096 A7 -- —__B7____ 五、發明說明(t ) hd、he之暫存器,其分別具有由對於h0、hl、h2、h3、h4 的五個暫存器所載入之其初始値。存有80回之雜湊作業, 其改變ha、hb、he、hd、he暫存器値。最後,在80回之 後,h0、m、h2、h3、h4 變數係分別爲由 ha、hb、he、hd 、he所增量。於SHAi作業之各回,資料係讀取自暫時運 作記憶體’且寫入至暫時運作記憶體。典型而言,於先前 之實施中’於64位元組之各個雜湊作業係對於SHA1之 各回而耗時80個時脈。 MD5演算法 如上所述,一種普遍運用之單向雜湊演算法係“MD5 ’ MD係代表“訊息摘要(message digest)”。MD5係由 Ron L· Rivest所開發,且詳述於其標題爲“MD5訊息摘要 演算法”之論文,RFC 1321(西元1992年4月)。 當一個任意大的輸入訊息係輸入至MD5,演算法係產 生一個128位元的輸出,稱爲該輸入訊息之一 “指紋 (fingerprint)”或“訊息摘要”。MD5係在當計算一訊息摘 要時而依序處理512位元之訊息區塊。若一訊息係非爲 512位元之倍數,則MD5係先塡充該訊息以使得該訊息爲 512位元之倍數。塡充後的訊息係接著由MD5所處理爲η 個512位元的區塊,Ml5 Μ2,...,Μη,其各個區塊係由十六 個32位元的子區塊%所構成,15。MD5之主迴路 係一次一個而處理各個512位元的區塊,且持續對於如同 爲該訊息中之諸多個512位元的區塊。該演算法之輸出係 一組四個32位元的字組,其係連結以形成單一個128位元 ___8_ 本紙張尺度適用中國國家標準(CNS)A4規格(210 X 297公釐)
.V β I n n ϋ —41 ϋ n 1 -ϋ n n 1_1 n · n I (請先閱讀背面之注意事項再填寫本頁) 丨線· 578096 A7 ^___BL_— 五、發明說明(TJ ) 的訊息摘要。一個四字組的暫時緩衝器(ha、hb、he、hd) 係運用以於四個所謂的計算回而計算該訊息摘要,其中ha 、hb、he、與hd各者係一個3 2位兀的暫存器。一個四子 組的摘要緩衝器(h0、hi、h2、h3)係運用以累積來自各回 之結果,且暫存器h0、hi、h2、與h3係初始化至如同定 義於MD5演算法之特定値。 MD5之主迴路具有四“回(round)” ’於其之各回係包 括十六個作業。是以,六十四個作業i (〇^i^63)係執行對 於各個訊息區塊。 於各個作業期間’一非線性函數(NLF,non-linear function)係執行於ha、hb、he、與hd所儲存之四個32位 元的變數之三者。之後,該作業係加上NLF輸出至第四變 數、該訊息之一子區塊Μ厂與一常數字組ti。該作業係接 著執行一可變數目位元之一向左循環移位Si,且加上此結 果至ha、hb、he、或hd之一者的內容。最後,總和係取 代ha、hb、he、或hd之一者的內容,且下一個作業係執 行。運用於該作業的各回(即16個連續作業各組)之NLF係 不同於運用在前一回之NLF。 在第四回之後,ha、hb、he、與hd係分別加至h0、 hi、h2、與h3,且該主迴路係反覆針對下一訊息區塊,直 到最後一個區塊Mn已處理爲止。在處理最後的區塊之後 ’訊息摘要係由儲存於h0、hi、h2、與h3的連結字組所 代表之128位元的字串。 MD5係可由軟體所執行,或執行於一特定應用積體電 _____9__ 本紙張尺度適用中國國家標準(CNS)A4規格(210 X 297公釐) ---------!!#.! (請先閱讀背面之注意事項再填寫本頁) 訂· 丨線 578096 A7 _____B7_____ 五、發明說明(S ) 路(ASIC),於其之作業係運用硬體實施的邏輯閘而執行。 於一個作業期間,一非線性函數(NLFi)係應用至儲存於暫 存器ha、hb、he、與hd之變數的三者。所輸入至該NLF 之三個變數係儲存於hb、he、與hd之變數,雖然該等輸 入變數係可能對於其他回而爲不同。該結果係由一第一全 加法器所加至暫存器ha之內容。一第二全加法器係加上第 一全加法器的輸出至對於該回與所執行的作業之適當的子 區塊Wj。之後,一第三全加法器係加上第二全加法器的輸 出至對於該回與所執行的作業之適當的常數字組q。 一移位器(shifter)係以對於該回與所執行的作業之適當 數目的位元\而循環向左移位第三全加法器之輸出。最後 ,暫存器hb之內容係由一第四全加法器而加至移位器之輸 出。第四全加法器之輸出係接著加至暫存器hb之內容,且 該總和係置放於暫存器ha,以供運用於下一個作業期間。 之後,下一個作業係將運用一不同的訊息子區塊W广常數 字組ti、與於向左循環移位作業之移位數目Si,以及欲由 NLF所作業於之一不同組的三個變數。另外,後續作業係 可能(或可能不)運用一不同的NLF。 在關連於一訊息區塊之四回的期間,邏輯方塊係循環 六十四次。再者,邏輯循環的總數目係64η,其中n係於 該訊息中之512位元的區塊數目。於邏輯之各個循環係相 當於一個時脈週期。時脈頻率係受限於與邏輯閘及其他邏 輯構件有關的種種延遲。作業的邏輯深度係確爲實質,因 爲該邏輯係於其他元件間而包括計算複雜的全加法器。關 _ίο____ 本紙張尺度適用中國國家標準(CNS)A4規格(210 X 297公釐) ------- (請先閱讀背面之注意事項再填寫本頁) .It ϋ n Jv · .線- 578096 A7 _B7__—_ 五、發明說明(?) 連於此設計的累積延遲係長的,且因此該時脈頻率係必爲 相當低。 現在係更爲詳細描述MD5演算法,如上所述,該四 字組的摘要緩衝器(h〇、hi、h2、h3)係運用以計算訊息摘 要,其中h0、hi、h2、與h3之各者係一個32位元的暫存 器。此等暫存器係初始化至特定値,其係如同運用於標準 MD5實施之相同的初始化値。 如先前所述,MD5之主迴路具有四回t (0$t$3),於 其之各回係包括十六個作業。是以,六十四個作業i $63)係執行對於各個訊息區塊。 於各個作業期間,一非線性函數(NLF)係執行於儲存 在ha、hb、he、與hd之四個32位元的變數之三者。之後 ,該作業係加上該NLF輸出至第四變數、該訊息之一子區 塊Μ广與一常數字組tj。該作業係接著執行一可變數目位 元之一向左循環移位Si,且加上此結果至ha、hb、he、或 hd之一者的內容。最後,該總和係取代hb之內容。其他 的暫存器係更新爲:ha=hd; hd=hc; hc=hb;且hb=總和。 運用在各回之作業(即各組之十六個連續作業)的nlf 係不同於運用在前一回的NLF。各個NLF取得作爲輸入三 個3 2位兀的子組,且產生作爲輸出一個3 2位元的字組。 該四個NLF係定義如後,且係同於運用在標準的MD5實 施之NLF: F(X,Y,Z)=(X AND Y) 〇R ((N〇T X) AND Z)(對於回 1: 15) ____n___ 本紙張尺度適用中國國家標準(CNS)A4規格(210 x 297公釐) -------!f (請先閱讀背面之注意事項再填寫本頁) 訂·. •線- 578096 A7 _______ B7____ 五、發明說明(仏) G(X,Y,Z)=(X AND Z) OR (Y AND (NOT Z))(對於回 2: 16^1^31) Η(χ,Υ,Ζ)=χ x〇R γ x〇R z (對於回 3: 32$i$47) KX’Y’Z^Y x〇R (X OR (NOT z))(對於回 4: 48$i$ 63) MD5演算法之主迴路係執行如後述。首先,於緩衝器 、h2、h3)之四個暫存器的値係保留且複製至四個 32 位兀的變數 ha、hb、he、與 hd,使得 ha=h0,hb=M, hc=h2 ’ 且 hd=h3。 M四回之各者係係接著執行,藉著應用其爲如同於標 準的MD5實施所運用之相同邏輯的下述邏輯。於以下之函 數中,,,W係代表該訊息之第j個子區塊(〇‘015),‘‘ <<<s係代表s個位元之一向左循環 且“ +,,係表示 字組之加法。 回丨:對於i=0至15, FF(ha,hb,hc,hd,W」,s,ki)係袠示作業 ha=hb+((ha十F(hb,hc,hd)+ W」+ti) <<<s) 回2:對於卜16至31, GG(ha,hb,hc,hd,W」,s,ki)係表示作業 ha=hb+((ha+G(hb,hc,hd)+ W」+ti) <<<s) 回3:對於i=32至47, HH(ha,hb,hc,hd,Wj,s,k〇係袠示作業 ha=hb+((ha+H(hb,hc,hd)+ Wj +ti) <<<s) 回4:對於i=48至63, ______ 12 本纸張尺度適國家標準(CNS)A4規格(21G x 297公餐]〜 ------- 一 ----------♦-------- (請先閱讀背面之注意事項再填寫本頁) 一5J· .線 578096 A7 ______B7____ 五、發明說明(!丨) II(ha,hb,hc,hd,W」,s,kt)係表示作業 (請先閱讀背面之注意事項再填寫本頁) ha=hb+((ha+I(hb,hc,hd)+ Wj +1) <<<s) 於各回期間,由NLF作業之三個變數、訊息子區塊 Wj、常數字組q、與於向左循環移位作業之移位數目s1係 隨著作業不同而改變。對於各回與作業,此等作業係依序 執行,其中該等作業係同於標準MD5實施所述之64個作 業。 在回4係已完成之後,ha、hb、he、與hd係分別加至 h0、hi、h2、與h3之目前內容。主迴路係接著反覆對於後 續的訊息區塊,直到最後的區塊Mn.已經處理爲止。在處 理最後區塊之後,訊息摘要係由儲存於h0、hi、h2、與h3 之連結的字組所表示之128位元的字串。 如上所述,MD5演算法係需有四個32位元的摘要變 數h0、hi、h2、h3,其係在起始時而初始化至定値。其亦 運用暫時週期變數ha、hb、he、hd,其係分別由h0、hi、 h2、h3而載入其初始値。存有64回之雜湊作業,其係於 處理期間而改變ha、hb、he、hd値。最後,在64回之後 ,h0、hi、h2、h3變數係分別由ha、hb、he、hd所增量 。於MD5作業之各回,僅有讀取作業係執行於暫時運作記 憶體。典型而言,於64位元組之各個雜湊作業係對於 MD5之各回而耗時64個時脈。 暫時運作記憶體運用 典型而言,對於64位元組之各個雜湊作業,其包括前 述之SHA1或MD5作業,雜湊方塊係在暫時運作記憶體再 _____ 13_ 本紙張尺度適用中國國家標準(CNS)A4規格(210 X 297公釐) 578096 A7 _______B7_____ 五、發明說明(Θ ) ------------------ (請先閲讀背面之注意事項再填寫本頁) 次塡以下個64位元組的輸入資料時而爲閒置(idle)。此塡 充(filling)作業係可能典型耗時16個時脈,以寫入16個字 組之32位元的資料。此等閒置週期係減小一雜湊電路或方 塊之閒置頻寬。將爲令人合意的是,欲具有其實質排除理 想頻寬的此損失之一種雜湊方塊。由於該雜湊作業係耗時 數個時脈週期以完成,通常,下個64位元組的輸入資料流 係累積於一緩衝器,以在雜湊作業爲完成時而立即載入至 暫時運作記憶體。 -線 於標準IPSec與SSL/TLS應用,編密與雜湊作業係均 執行。對於較短的資料封包,雜湊作業係典型需要大於對 應的加密作業之時脈週期數目的一大小規模。若數個雜湊 方塊係運用於同一加密通道,因爲單獨的緩衝器與運作記 憶體之運用,則更多的緩衝與運作記憶體資源係爲該等雜 湊作業所需。將爲令人合意的是欲具有一種雜湊方塊,其 實施對於各個加密通道之二個(或多個)雜湊通道而減小所 需的緩衝與運作記憶體資源之尺寸。 內在塡充(implicit padding) 如上所述,內在塡充係定義用於SHA1與MD5演算法 二者。典型而言,先前的雜湊電路係在一資料區塊已經載 入至暫時運作S憶體之後而執行此種塡充。此種塡充係加 入額外的時脈週期之處理時間,以供欲作雜湊之各個64位 元組的資料區塊。將爲令人合意的是,避免其以塡充位元 組而載入暫時運作記憶體所需之閒置時脈週期,俾使於雜 湊方塊之頻寬係可爲增大。 —_____14___ 各紙張尺度適用中國國家標準_(CNS)A4規格(210 x 297公釐)" ' -- 578096 A7 _ - _ B7________ 五、發明說明(〇 ) ------------------#·丨丨 (請先閱讀背面之注意事項再填寫本頁) 對於改良的雜湊處理系統之需求 隨著對於計算資料之期望係提高,通訊系統係逐漸賦 予更多的要求於密碼演算法之計算速度。因此,具有對於 一種改良的雜湊處理系統之需求,其係以較少的有效時脈 週期而處理SHA1與MD5雜湊作業,其作成緩衝與運作記 憶體之改良利用,且其減少欲在資料雜湊處理前而執行塡 充所用的時間。 [圖式簡單說明] 第一圖係根據本發明的一個實施例之一種雜湊處理系 統之一系統階層架構的方塊圖; 第二圖係根據本發明的一個實施例之於第一圖的雜湊 處理系統中之一雜湊方塊的詳細方塊圖; 第三圖係根據本發明的一個實施例之於第二圖的雜湊 方塊中之一 SHA1加法器的詳細方塊圖; -線 第四圖係根據本發明的一個實施例之於第二圖的雜湊 方塊中之一 MD5加法器的詳細方塊圖;及 第五圖係時序圖,其說明根據本發明的一個實施例之 於第二圖的雜湊方塊中之雜湊通道的運用。 [主要符號說明] 100雜湊處理系統 102加密方塊 103雜湊方塊 104外部介面 105雜湊對齊方塊 ____15 ___ 本紙張尺度適用中國國家標準(CNS)A4規格(210 x 297公爱) ' 578096 A7 ____B7_ 五、發明說明(fvo 106雜湊記憶體 108、110、112儲存區域 (請先閱讀背面之注意事項再填寫本頁) 114、116雜湊通道 118、120雜湊控制器 122、136雜湊有限狀態機器(雜湊FSM) 124、134雜湊暫存器 126、130 MD5 電路 128、132 SHA1 電路 202-214多工器 216-224暫存器 226 SHA1加法器 228 MD5加法器 230-236計數暫存器 238、244讀取位址暫存器 240、242寫入位址暫存器 246、248塡充電路 250、252寫入致能訊號 302-318邏輯函數方塊 320-340多工器 342-352保留進位加法器 354、356全加法器 358、360函數方塊 362、364暫存器 402-408邏輯函數方塊 本紙張尺度適用中國國家標準(CNS)A4規格(210 X 297公釐) 578096 A7 _________Β7 _ 五、發明說明() 410-416多工器 418、420保留進位加法器(CSA) 422、424全加法器 426函數方塊 428多工器 430暫存器 1102-1110加密資料區塊 Π11雜湊通道0與1 1112-1124雜湊區塊 [較佳實施例詳細說明] 本發明係槪括提出一種改良的雜湊處理系統及方法, 用以降低欲實施SHA1與MD5雜湊演算法所需要的時脈週 期數目,藉著運用一共同的雜湊記憶體,其具有各自耦接 至二或多個雜湊通道的一者之多個儲存區域。本發明係更 提供塡充(paddmg),其係隨著資料爲從共同的雜湊記憶體 讀取所作成’而非要求雜湊記憶體之塡充爲在開始雜湊作 業之前。甚者,本發明係共用暫存器與其他電路資源而用 於其爲實施於各個雜湊通道之MD5與SHA1雜湊電路,且 運用管線式、二通道SHA1與管線式、單通道MD5的雜湊 架構,以相較於先前實施而降低欲實施SHA1與MD5演算 法所需的有效時間。所應注意的是,如本文所用之辭語“ 暫存器(register)”係意欲包括暫存器與其他型式的資料儲 存元件’其係可爲替換運用於下文所述之雜湊處理系統及 方法,舉例而言’諸如爲部分之隨機存取記憶體(RAM)。 _______17_ ^紙張尺度適用中國國家標準(CNS)A4規格(210 x 297公釐) -----------#·1 (請先閱讀背面之注意事項再填寫本頁) -trtz · 線 A7 578096 ____ B7____ 五、發明說明(β ) 第一圖係根據本發明的一個實施例之一種雜湊處理系 統100之一系統階層架構的方塊圖。舉例而言,該系統 100係接受來自一加密方塊102之資料以供雜湊處理(本文 所用之辭語“方塊(block)”係槪括關於一電路)。系統1〇〇 亦可接收來自其他來源的資料以供雜湊處理。該資料係運 用標準對齊技術而於一雜湊對齊方塊105所對齊,且接著 提供以由一雜湊方塊103所雜湊處理。該系統1〇〇包括雜 湊控制器Π8與120 (標示爲雜湊控制〇與雜湊控制丨),其 係耦接至一外部介面104,以提供初始之預先計算的雜湊 摘要並儲存最終的雜湊摘要,且接受諸如欲執行的雜湊型 式(其包括例如 MD5、SHA1、HMAC-MD5、HMAC-SHA1 、PRF、…等等)之控制資訊。控制器us與120亦起始對 於在雜湊通道114或116的一對應者中之一個給定的資料 封包之雜湊作業。一旦一個資料封包之雜湊處理係已經開 始於雜湊通道114或116的一者,同一通道係將運用以完 成該整個資料封包之雜湊處理。 雜湊方塊103包含一共同的雜湊記憶體106,其具有 多個儲存區域。舉例而言,雜湊記憶體丨〇6係一隨機存取 記憶體(RAM)。舉例而言,於圖示之特定實施例中,係具 有二個儲存區域108、110、與112,其標示爲HS0、HS1 、與HS2。雜湊方塊1〇3更包含多個雜湊通道。舉例而言 ,於圖示之特定實施例中,係具有二個雜湊通道U4與 116 ’其標不爲雜湊通道〇與雜湊通道1。於本發明之其他 實施例中’係可能具有超過三個雜湊記憶體儲存區域以及 _ ________ 18 東紙張尺度適用中國國家標準(CNS)A4規格(210 X 297公餐)" ------------------- (請先閱讀背面之注意事項再填寫本頁) 訂-· -線· 578096 A7 ____ B7__ 五、發明說明(叼) 超過二個雜湊通道。 雜湊通道114包含一雜湊有限狀態機器(FSM,finite state machine) 122 (其標示爲雜湊FSM0)、一雜湊暫存器 124 (其標示爲雜湊暫存器0)、MD5電路126 (其實施標準 MD5演算法)、與SHA1電路128 (其實施標準SHA1演算 法PFSM 122係控制於雜湊通道114之所選的雜湊作業之 發生順序。根據本發明,電路126與128係可運用標準的 MD5與SHA1架構而實施,或者係可運用本文所述之特定 架構而實施。根據本發明,電路126與128係共用某些電 路資源,諸如例如多工器與暫存器,.如同下文所更爲詳述 。雜湊通道116包含一雜湊FSM 136、一雜湊暫存器134 ( 其標示爲雜湊暫存器1)、MD5電路130、與SHA1電路 132,其係均爲實質同於雜湊通道114之結構與作業。 於作業期間,雜湊控制0與雜湊控制1之控制器118 與120係分別載入所運用於SHA1或MD5演算法的初始値 至雜湊暫存器〇與雜湊暫存器1之暫存器124與134,且 載入諸如例如雜湊作業的型式與塡充需求之控制資訊至雜 湊通道114與116之中的控制暫存器(未顯示)。 舉例而言,各個儲存區域108、110、與112具有64 位元組之一尺寸。來自雜湊對齊區塊105之資料係槪括爲 連繪域:入各個儲存區域,以一種“循環(round-robin)”方 式’其隨著資料被接收而以諸如例如HS0之一個儲存區域 所開始且繼續以塡入HS1、接著爲HS2、之後再次爲HS0 〇 ___19 本紙張尺度適用中國國家標準(CNS)A4規格(210 X 297公釐) ---------------- (請先閱讀背面之注意事項再填寫本頁) 入-δ · -線 578096 A7 B7 五、發明說明(J ) 於作業期間,當雜湊通道114或116之一者係空出, 則其將接受來自儲存區域HS0、HS1、或HS2之一者的資 料。於雜湊處理期間,中間雜湊計算結果係累積於雜湊暫 存器124與134。一雜湊通道係持續以接受來自雜湊記憶 體106之資料,直到對於一給定的資料封包之所有資料係 均已經透過雜湊通道114或116而處理。之後,雜湊控制 器Π8或120係爲適當讀取來自雜湊暫存器124與134之 最終摘要,且將其提供至外部介面104,舉例而言,以供 進入的資料封包之驗證,或者附加一 MAC至出站 (outbound)的資料封包,或針對由同一晶片(與否)的外部密 碼處理電路(未顯示)之其他目的。 暫存器124與134係一般儲存其爲運用於雜湊處理之 値。舉例而言,諸如HMAC預先處理與虛擬隨機函數 (PRF,pseudo-random function)之某些雜湊演算法係涉及內 部與外部摘要値之計算,其係於雜湊處理期間所再次運用 。內部與外部摘要値係儲存於暫存器124與134。此外, 舉例而言,隨著各個64位元組的區塊之資料係雜湊處理’ 暫存器124與134係累積來自各個64位元組的區塊之結果 而直到完整的封包係處理爲止。 雜湊儲存區域HS0、HS1、與HS2之各者係由雜湊通 道〇與1所共用。雜湊記憶體106係接收來自加密方塊 102之加密資料。加密資料係寫入至雜湊儲存區域之一者 ,例如HS0,直到其爲塡滿爲止。接著,稍後的加密資料 係塡入一後續的儲存區域,例如HS1。其次,儲存區域 ____20____— 一 本紙張尺度適用中國國家標準(CNS)A4規格(210 x 297公《 ) * n n ϋ —1 n I ι*ϋ ϋ I ϋ ϋ · ϋ I (請先閱讀背面之注意事項再填寫本頁) · ;線 578096 A7 --------B7_______ 五、發明說明(/?) -n I ϋ I# Ιϋ ϋ n ·1»§ n I ·ϋ ·ϋ · m n (請先閱讀背面之注意事項再填寫本頁) HS2係塡入’則前述模式係於作業期間持續以透過HS〇、 HS1、與HS2而旋轉。在寫入資料至雜湊記憶體1〇6之前 ’於雜湊對齊方塊105之雜湊對齊電路(未顯示)係對齊來 自加密方塊102之資料。 當雜湊記憶體106之各個儲存區域係塡滿(或一封包之 末端係由通過至雜湊方塊103之一個位元組計數以透過外 部介面104之來自一外部控制器(未顯示)的一控制訊號而 決定’如同例如由對於封包之雜湊起始位址偏移與雜湊長 度(位元組)所決定),其內容係讀取至雜湊通道114或116 以供雜湊處理。舉例而言,所得的摘要係送至外部控制器。 ‘線· 更爲特定而言,雜湊通道0與雜湊通道1係各自執行 處理於其對應於單一資料封包之例如64位元組的區塊之資 料上。~第一外部FSM (未顯示)係控制對於一第一資料封 包之封包處理’且係耦接以控制雜湊通道〇而執行對於第 一資料封包之雜湊處理。若對於一第二封包之資料係塡入 雜湊記憶體106之儲存區域的一者,則該第二封包之雜湊 處理係將由一第二外部FSM (未顯示)與從該雜湊記憶體 106所送至雜湊通道1以供處理之資料而控制。若雜湊通 道1係亦爲忙碌(busy),則對於第二封包之資料係將等待 於雜湊記憶體106,直到雜湊通道114或116之一者係空 出(free)。因此,槪括而言,當雜湊通道114與116之一者 係空出時,雜湊方塊1〇3係開始雜湊處理下一個封包之資 料。 此外,應係注意的是,雜湊方塊103係典型以一交替 本紙張尺度適用中關家標準(CNS)A4規格(210 X 297公"一" A7 578096 五、發明說明(> ) 、或乒乓(ping-pong)方式而運用雜湊通道114與116,舉 例而言,於單一 IPSec資料通道中之各個連續的資料封包 係運用前一個封包之相反的雜湊通道。然而,當對於一個 新的封包之資料係儲存於雜湊記憶體106,若雜湊通道114 與116係均爲空出,則雜湊處理係爲任意預設(例如至雜湊 通道〇)。因此,鑒於以上論述且根據本發明,雜湊方塊 103係能夠同時雜湊處理一第一資料封包與一第二資料封 包,其係於相同的獨立IPSec資料通道管線。 對於某些安全性通訊協定,一 64位元的區塊之資料係 自雜湊記憶體106之一個儲存區域而讀取超過一次,以進 行反覆的雜湊作業於雜湊通道114或116之一者。舉例而 言,TLS或IPSec係視封包之位元組計數而定以要求一 HMAC作業。亦可有一塡充與一 HMAC週期。因此,舉例 而言,一區塊之資料係可自雜湊記憶體區域HS1而爲連續 讀取三次,並且係送至雜湊通道1以計算一摘要。 舉例而言,當欲實施之安全性通訊協定係TLS虛擬隨 機函數(PRF)模式時,則雜湊通道114與116係爲前後縱排 而運作以同時執行對於第一資料封包之MD5與SHA1處理 。藉著該種前後縱排之作業,雜湊處理時間係可爲槪略削 減一半。於該PRF計算期間,資料係可爲讀取自一個雜湊 儲存區域,例如HS0,且係寫回至另一個雜湊儲存區域,· 例如HS2。然後,在最初16回的計算(例如SHA1計算)之 後,所有的讀取及寫入係僅由區域HS2而可作成。此外, 對於高達128位元組之PRF計算,資料係均可讀取自區域 ____22_____ 本紙張尺度適用中國國家標準(CNS)A4規格(210 X 297公釐) » n ί I -·, n n n »11 n i n *_ϋ · n ϋ (請先閱讀背面之注意事項再填寫本頁) 一SJ·- -線· 578096 A7 ____B7____ 五、發明說明(y丨) HS0 與 HS1。 雜湊通道114與116亦可運作爲前後縱排以進行對於 一資料封包之HMAC預先處理。由HMAC預先處理所計 算的內部與外部摘要係可儲存於例如暫存器124或134, 其內容係可藉著前文所述之外部控制器(未顯示)而透過外 部介面104以接著儲存至一外部資料快取記憶體(未顯示) ,供稍後運用以進行對於一給定資料封包之適當的HMAC 處理。該預先計算的摘要係與如同讀取自雜湊記憶體106 之資料而多工處理,以供下文所更爲詳述之雜湊處理。上 述之預先處理步驟係儲存每64個位元組的資料之二個雜湊 週期,且係必須如同於IPSec與TLS 1.0模式所要求而進 行對於每個資料封包。於IPSec與TLS 1.0模式中之一資 料封包的處理期間,在雜湊處理另一個資料封包之起始, 所儲存的摘要係由外部控制器所恢復至暫存器124或134 。當對於一個資料封包之雜湊處理係完成時,一雜湊完成 訊號係由雜湊方塊103所送出至外部控制器,其係接著透 過外部介面104以自暫存器124或134而讀取對於該封包 之最終的計算摘要。 弟一圖係雜湊方塊103之一個實施例的較詳細方塊圖 。於本文所提供圖式之中,共同的參考數字係運用於共同 的元件。針對說明之簡化,第二圖係實質說明僅有雜湊通 道114。結構與作業之以下論述將亦實質應用至雜湊通道 116 〇 所應注意的是,根據本發明,雜湊通道114與116係 ___ 23____ 本紙張尺度適用中國國家標準(CNS)A4規格(210 X 297公釐) !!丨丨_丨丨 (請先閱讀背面之注意事項再填寫本頁) I - --線· A7 578096 五、發明說明( 共用共同的雜湊記億體106。各個雜湊通道具有獨立的讀 取及寫入資料路徑以讀/寫該雜湊記憶體106之定址。資料 係從雜湊對齊方塊105而於資料匯流排wrdatal以寫入至 雜湊記憶體106。一寫入控制訊號wrl係於寫入期間所運 用,以寫入至其由位址wraddrl所指出的位置。該wraddrl 位址亦包括儲存區域HS〇、HS1或HS2之一者的選擇。 雜湊方塊103包含七個多工器(一槪標示爲“MUX” ) 202-214與暫時的暫存器216-224 (對應於暫時變數ha、hb 、:he、hd與he),其係在雜湊FSM 122之控制下而由MD5 電路126與SHA1電路128 (參見第一圖)所共用。MD5電 路126包含一個四輸入的MD5加法器228,而SHA1電路 128包含一個五輸入的SHA1加法器226。 計數器暫存器 230-236 (標不爲 first、ncount、n2count 、與count)係耦接至加法器226與228。讀取位址暫存器 238與244以及寫入位址暫存器240與242係耦接以讀寫 資料往返於雜湊記憶體106,其係例如爲記憶體映射以提 供各個儲存區域HS0、HS1、與HS2。二組之讀取及寫入 位址暫存器係提供以支援根據本發明之每個週期二回的 SHA1處理,如於下文所更爲詳述。 根據本發明,塡充電路246、248係耦接以提洪對於 讀取自雜湊記憶體106的資料所需之塡充。塡充係實質爲 隨著資料爲正自雜湊記憶體106所讀取而作成(有時候於本 文稱爲“即時(on-the-fly)”之塡充),且於雜湊處理期間而 提供至加法器226或228之一者。所運用之塡充位元組(例 _______24__ 本紙張尺度適用中國國家標準(CNS)A4規格(210 X 297公釐) » n n n ιφ ϋ ϋ ϋ ·11 ϋ ϋ H ϋ · ϋ 1 (請先閱讀背面之注意事項再填寫本頁) ·. .線· 578096 A7 _____Β7___ 五、發明說明(W) --------1-------- (請先閱讀背面之注意事項再填寫本頁) 如爲値0x80或0x00)係取決於輸入資料之尺寸(如同由一模 數(modulus) 64作業所減小)以及所正在讀取之目前位址。 塡充位元組與最終長度位元組係爲即時插入,使得其爲例 如依從於MD5與SHA1演算法之需求。塡充電路246與 248亦具有能力以插入先前計算的內部雜湊摘要,其係爲 需要用於HMAC-MD5與HMAC-SHA1演算法之最終雜湊 回數。塡充電路246與248更具有能力以預先附加之先前 計算的摘要至雜湊記憶體106之資料,如於諸如PRF之某 些演算法中所需。 -丨線 如上所述,於SHA1演算法之執行期間,寫入作業係 執行於雜湊記憶體106。寫入致能訊號250 (其標示爲 chi—md5—shal)與252 (其標示爲ch0-md5—shal)係允許當運 用SHA1時而寫入至雜湊記憶體106。訊號252係由雜湊 通道〇所運用,且寫入係在當ch0_md5_shal爲高時而爲致 動。訊號250係由雜湊通道1所運用。多工器206與212 係運用於SHA1寫入作業期間,如於下文所更爲詳述。 現在係更詳細描述雜湊方塊103,舉例而言,雜湊方 塊103係支援二個雜湊通道114與116,其可獨立運作以 執行諸如 MD5、SHA1、HMAC-MD5、HMAC-SHA1 之雜 湊作業,或者可爲前後縱排而運作以執行諸如預先處理的 HMAC或虛擬隨機函數(PRF)之雜湊作業,如同定義於傳輸 層級安全性(TLS) 1.0規格。 如上所述,係有其對應於雜湊記憶體儲存區域HS0、 HS1、與HS2之三個雜湊組的暫時運作記憶體。如上所述 __25_ 本紙張尺度適用中國國家標準(CNS)A4規格(210 X 297公釐) 578096 A7 _____ B7_______ 五、發明說明(好) ,雜湊對齊方塊105係以一循環(round-robin)方式而寫入 資料至儲存區域。舉例而言’若雜湊通道0係已經運作於 來自區域HS0之資料,雜湊對齊方塊105係寫入下一個64 位元組至區域HS1,然後係寫入另一個後續的64位元組至 區域HS2。該三個雜湊儲存區域係運用以作用爲對於雜湊 對齊方塊105之一 FIFO (先進先出)緩衝器,且亦提供三個 雜湊組的暫時運作記憶體,其係由雜湊通道114與116所 共用。 相對於本發明,先前的系統係已要求一單獨的FIFO 緩衝器,其係典型與雜湊運作記憶體爲串聯連接,以供接 收進入資料。根據本發明之系統係減少其關連於運用該種 單獨的緩衝器之延遲,且係不需要對於各個通道之一單獨 的緩衝器(如同於先前系統者),因而減少晶片面積。再者 ’根據本發明,雜湊暫時運作記憶體106由二或多個雜湊 通道之共用係節省緩衝資源。其亦使得二或多個雜湊通道 能夠各自運作於相同的資料,如需於諸如PRF、HMAC預 先處理之某些雜湊作業,其要求SHA1與MD5雜湊處理。 於該種情形,舉例而言,雜湊通道之一者係使用一 MD5雜 湊處理而運作於資料,而另一個雜湊通道係使用一 SHA1 雜湊處理而運作於同一資料。 雜湊控制器118與120係控制於雜湊通道114與116 的作業之起始及完成,且亦對於由其對應的雜湊通道所處 理之資料封包而爲適當續行透過塡充雜湊狀態、HMAC雜 湊狀態、PRJF雜湊狀態、與HMAC:預先處理的雜湊狀態。 —-----26 本紙張尺度適用中國國家標準(CNS)A4規格(210 X 297公釐) 1 H n 14 ϋ ill n n n ϋ ϋ « ϋ I (請先閱讀背面之注意事項再填寫本頁) ·. 線 578096 A7 ________B7__ 五、發明說明(/) _ϋ n n n —Jw I n I -J— —i ϋ n n · n n Γ%先閱tt背面之注意事項再填寫本頁) 雜湊控制器118與120亦在起始一新的雜湊處理之前而恢 復所預先計算的HMAC標準內部摘要或外部摘 暫存器叫其包括對龍 的暫存器),且更控制來自ho、h.l、h2、h3、與M暫存器 的最終訊息摘要之讀取。 線- 對於SHA1演算法之雜湊資料路徑 如對於第三圖之後述於下文,SHA1電路128係實施 爲一種管線、並行之每個時脈週期爲二回的架構。對應於 SHA1計算之二回,每個時脈週期係具有來自儲存區域 HS0 (或者HS1或HS2,如其可爲適用於目前的雜湊作業) 之二個讀取存取以及對於同一個儲存區域HS0 (或者HS1 或HS2)之二個寫入存取。暫存器238與240 (訊號rdaddr 、wraddr)控制對於目前時脈週期的一個雜湊回之讀取與寫 入位址。暫存器242與244 (訊號rdaddrl、wraddrl)控制對 於同一個時脈週期的第一雜湊回之讀取與寫入位址。 來自雜湊記憶體106之讀取資料(資料匯流排rddatad 、:rd2datar2)係由塡充電路246與248 (標示爲“PadDigLen ” mux與mux2)所修正,以提供塡充後的輸入雜湊資料 rddata與rd2data,其爲由SHA1加法器226於目前的二個 雜湊回而所運用。塡充電路246與248係基於該輸入資料 流長度而自動實施即時的內在塡充。更爲明確而言’塡充 電路246與248之各者係多工處理塡充位元組0x80或 0x00、如由MD5與SHA1演算法所需之輸入資料流長度( 以位元計)、及/或於HMAC作業之儲存的內部摘要’均爲 _J7___ 本紙張尺度適用中國國家標準(CNS)A4規格(210 X 297公爱) 578096 A7 ______B7_____ 五、發明說明(〆) 視該雜湊命令與輸入資料流長度而定。 (請先閱讀背面之注意事項再填寫本頁) 欲實施如上所述之即時的塡充,塡充電路246與248 係各自包含標準的多工電路(未顯示),以選擇適當的塡充 位元組、資料流長度、或者先前計算的摘要,適當針對特 定的輸入資料尺寸,以供插入至對於讀取自雜湊儲存區域 之各個32位元的字組之一部分或全部的位元位置。先前計 算的摘要係再次載入至暫存器,且係接著與其讀取自該雜 湊儲存區域之字組而作多工處理。 -線· 雜湊方塊103係接收及儲存例如由雜湊對齊方塊105 所提供之一輸入資料流長度,以供運用於由塡充電路246 與248之塡充及/或其他位元組的多工。即時之塡充係使得 雜湊方塊103能夠達成較爲理想的頻寬,且避免由先前雜 湊電路以塡充位元組載入暫時運作記憶體所需的閒置時脈 。先前的系統係先寫入輸入資料至運作記憶體,檢查該輸 入資料之長度,且然後加上塡充至該運作記憶體。反之, 本發明係允許於一旦所有的輸入資料均寫入至運作記憶體 而起始雜湊處理,無須等待而且同時亦寫入塡充位元組至 該運作記憶體。 雜湊FSM0狀態機器122係控制於該雜湊的諸回之依 序發生。對於64位元組的資料之雜湊作業係完成於41個 時脈。SHA1之80回係完成於40個時脈(即每個時脈週期 二回),而最後一個時脈係運用以分別由以暫存器216-224 的ha、hb、he、hd、與he暫存器216-224之値而增量該暫 存器124之h0、hi、h2、h3、與h4暫存器。 ______28______ 本紙張尺度適用中國國家標準(CNS)A4規格(210 X 297公釐) 578096 、 A7 ____B7_____ 五、發明說明(>Ί ) 當訊號hashstart爲作用時,ha、hb、he、hd '與he 暫存器216-224係載入來自h0、hi、h2、h3、與h4暫存 器之初始値。如第二圖所示,所有的多工器(表示爲“MUX ”)係舉例說明以跟隨如下文所述之一種一致的模式。首先 ,若訊號hashstart係作用(active)或邏輯1,則該等三輸入 式的多工器(“mux”)係以其對應於如顯示於多工器之右手 側(如第二圖所不)的第二輸入之値而載入ha、hb、he、hd 、與he暫存器。舉例而言,對於多工器204,値hi係載 入至hb暫存器218。 若訊號hashstart係不作用(inactive)或爲邏輯〇,貝[](於 第二圖所示之各個多工器的左手側)前二個輸入之一者係選 擇。若一 SHA1雜湊係選擇(即訊號md5_shal係作用或爲 邏輯1),則中間的輸入(例如對於多工器204之 shal-templ)係選擇。若一 MD5雜湊係選擇(即訊號 md5_shal係不作用或爲邏輯〇),則對於多工器204之第一 個輸入md5_temp係選擇。ha、hb、he、hd、與he雜湊暫 存器、計數暫存器230-236 (即訊號ncount (其相當於下一 計數)、recount(其相當於下下一個計數)、與first(其指出 一雜湊之第一週期))、以及讀取資料rddata與rd2data係親 接以提供輸入至SHA1加法器226(其係更爲詳述於下文)。 如上所述,於SHA1演算法之執行時,寫入作業係執 行於雜湊記憶體106。二個該種寫入作業係針對各個時脈 週期而作成,其對應於本發明之並行、每個時脈週期二回 的實施。多工器206與212係運用以選擇供寫入之適當的 ___ 29__ 本紙張尺度適用中國國家標準(CNS)A4規格(210 X 297公釐) (請先閱讀背面之注意事項再填寫本頁) -1 -^-r0JI . ;線- 578096 A7 ___B7_— 五、發明說明(』) (請先閱讀背面之注意事項再填寫本頁) 資料,以依從標準的SHA1演算法。若選擇輸入訊號 {ncount<16}係假或爲0,則左手側的輸入係運用。若 {ncount<16}係爲真,則右手側的輸入係選擇。由wraddr 與wraddrl所指出之寫入位址的最低四個位元係可爲如同 讀取位址rdaddr與rdaddrl之相同位址,而且最高二個位 元(其指出區域HS0、HS1、或HS2)係可爲相同或不同。一 般而言,寫入以及讀取係運用相同的雜湊儲存區域,但對 PRF與HMAC預先處理命令而言,雜湊通道114與116係 作業於相同資料(例如爲儲存於區域HS0與HS1),第一雜 湊通道114 (執行SHA1)係可讀取來自區域HS0或HS1之 資料並運用HS2以供寫入;另一雜湊通道116 (執行MD5) 係可讀取來自區域HS0或HS1之資料。 根據本發明,槪括而言,當執行SHA1演算法, rdaddi*與wraddr位址係運用以讀取及寫入偶數位址0, 2, 4, ...。rdaddrl與wraddrl位址係運用以讀取及寫入奇數位址 1,3,5,…。欲達成此舉,位址rdaddr[0]與wraddr[0]之各 者的較低位址位元係強制爲〇,而位址rdaddirl[0]與 wraddrl[0]之各者的較低位址位元係強制爲1。 分別對於SHA1演算法的第一與第二回之來自雜湊 FSM0狀態機器122的rdxor與rdX〇r2訊號係指出至雜湊 記憶體106之讀取存取的型式。此等訊號係作用僅爲針對 在回17至80之SHA1演算法。其對於MD5演算法係不作 用。對於回17至80,四個字組係於單一存取作業而讀取 自一雜湊儲存區域(類似於如上所述),且接著爲如下文所 _____30 ___ 本紙張尺度適用中國國家標準(CNS)A4規格(210 X 297公釐) 578096 A7 ____B7 __ 五、發明說明(β ) ------------------ (請先閱讀背面之注意事項再填寫本頁) 述而互斥或(exclusively-OR)及移位,以提供一字組Wt (17 St^80)而供處理如由標準SHA1演算法所定義。 於rdaddr與rdaddrl之讀取位址的較高二個位元係指 出雜湊儲存區域。讀取位址的較低四個位元係指出32位元 的字組之16個位置的一者。若rdxor (或rdxor2)訊號係不 作用,則例如由讀取位址rdaddr[3:0](或rdaddrl[3:0])的較 低四個位元所指出之16個位置的一者係返回。 -線· 若rdxor訊號係作用,則對於由rdaddr所指出之第一 讀取而言,係進行在位置rdaddr[3:0] 、(rdaddr[3:0]+2)模 數 16、(rdaddr[3:0]+8)模數 16、與(rdaddr[3:0] + 13)模數 16 之四個讀取存取。此外,.對於前三個讀取存取,由於 SHA1之第一回係僅存取偶數位置0、2、4等等,最小有 效位址位元係強制爲〇。第四讀取存取具有最小有效位址 位元,其係強制爲1。由四個讀取存取所得到之資料係作 互斥或處理(即爲由X0R邏輯運算所組合)及移位,且輸入 至塡充電路246。 若rdx〇r2訊號係作用,則對於由rdaddrl所指出之第 二讀取,係進行在位置 rdaddi*l[3:0] 、(rdaddi*l[3:0]+2)模 數 16、(rdaddrl[3:0] + 8)模數 16、與(rdaddrl[3:0] + 13)模數 16之四個讀取存取。此外,對於前三個讀取存取,由於 SHA1之第二回係僅存取奇數位置1、3、5等等,最小有 效位址位元係強制爲1。 如同本文所述SHA1架構之管線方式的部分者,一字 組係有時必須於一目前時脈週期而讀取自一雜湊儲存區域 _____31__ 本紙張尺度適用中國國家標準(CNS)A4規格(210 X 297公釐) 578096 B7 五、發明說明(P ) --------------0H (請先閱讀背面之注意事項再填寫本頁) ,其係由一先前時脈週期所起始之一個寫入作業而仍爲被 寫入;然而,讀取作業係無法自該雜湊儲存區域而讀取一有 效字組,由於其仍含有較舊的資料。根據本發明,欲實施 管線式,所寫入字組的一穩定値係運用以提供對於讀取存 取之字組資訊。更爲明確而言,例如對於第四讀取存取, 於先前的週期所寫入之wrdatal係運用,由於 (rdaddrl[3:0]+13)模數16位置具有較舊的資料,其係將由 目前週期之wrdatal所改寫。由四個讀取存取所得到的資 料係以反或閘處理,且輸入至塡充電路248。 根據本發明所處理爲偶數與奇數位址位置之SHA1之 二回的讀取及寫入存取,係減少對於雜湊儲存區域(HS0、 HS1、HS2)之讀取/寫入處理所需之必要的讀取與寫入解碼 邏輯,因而節省於倂入雜湊處理系統100之晶片上的邏輯 閘面積。 •線· 對於MD5演算法之雜湊資料路徑 如同對於第四圖之稍後論述於下文,MD5演算法係實 施爲一種管線式之每個時脈週期一回的架構。其於各個時 脈週期係運用僅有一個讀取存取至雜湊記憶體106,藉著 運用位址暫存器238 (訊號fdaddr)。 讀取資料rddatar2係由塡充電路246所修正,以提供 輸入資料rddata而供由MD5雜湊的各個單一回之運用。 如同對於SHA1演算法所上述,塡充電路246係實質爲即 時而自動實施內在塡充。 雜湊FSM0狀態機器122係控制於MD5雜湊的諸回之 _32____ 本紙張尺度適用中國國家標準(CNS)A4規格(210 X 297公釐) 578096 A7 B7 五、發明說明(}丨) 依序發生。對於64位元組的資料之雜湊作業係完成於65 個時脈。MD5之64回係完成於64個時脈,而最後一個時 脈係運用以分別由ha、hb、he、與hd暫存器216-222之値 而增量該暫存器124之h0、hi、h2、與h3暫存器。暫存 器h4與he係未運用於MD5雜湊處理。 當訊號hashstart係作用時,ha、hb、he、與hd暫存 器216-224係載入以自h〇、hi、h2、與h3暫存器之初始 値。如上所論,若訊號hashstart係作用時,提供値至ha、 hb、he、與hd暫存器216-224之三輸入式的多工器202-214係載入於右手側的第三輸入(如第二圖所示)。若該訊號 hashstart係不作用,於左手側的前二個輸入之一者係選擇 。若MD5係目前選擇的作業(即訊號md_shal係不作用), 則第一個輸入係選擇(例如對於多工器204,md5_temp係 選用)。雜湊暫存器ha、hb、he、與hd、計數暫存器230_ 236 (即訊號count、ncount (其相當於下一計數)、與first( 其指出一雜湊之第一週期))、以及讀取資料rddata係耦接 以提供輸入至MD5加法器228 (其係更爲詳述於下文)。 SHA1加法器 第二圖係根據本發明一個實施例之SHA1加法器226 的詳細方塊圖。加法器226包含數個邏輯函數方塊sepsis , 其實施四個標準 SHA1 函數 (其標示爲 SHA1_F1 、 SHA1—F2、SHA1—F3、與 SHA1—F4)。如圖所示,方塊 302-3 18之各者具有三個輸入訊號。於本文圖式中之標示 爲[1:0]與[3 1:2]的移位記號與類似與否者係指出如於shai __33 本紙張尺度適用中國國家標举(CNS)A4規格(21Q X 297公爱1 " (請先閲讀背面之注意事項再填寫本頁) L^T· -線· 578096 A7 _____ _B7__. 五、發明說明(p) 演算法所定義之標準移位作業。舉例而言,此種移位係可 藉著重新命名訊號以達成而無需運用邏輯閘。 -----------!#i (請先閱讀背面之注意事項再填寫本頁) 加法器226亦包含七個多工器320-340,其各者具有 二個輸入。應注意的是,於第三與四圖所示之二輸入式多 工器(標示爲“MUX”)係運用一個共同表示定義,其在於 當至一多工器之一選擇訊號(例如nc〇imt<40)爲作用或爲邏 輯1時而選擇右手側(如各圖所示)。舉例而言,對於多工 器334,若訊號〜first係邏輯1,則he係輸入。若訊號 〜first係邏輯〇,則he係輸入。亦應注意的是,對於多工 器334,於訊號〜first之“〜”符號係指出此選擇訊號爲作 用於低位,使得於第一週期,first係邏輯1而〜first係邏輯 0 〇 -線- 加法器226更包含保留進位加法器342-352 (標示爲字 首“CSA”)以及全加法器354與356,舉例而言,全加法 器354與356係32位元的加法器。函數方塊358與360係 選擇如同定義於標準SHA1演算法之Kt的値,運用輸入 ncount於方塊358而運用輸入n2count於方塊360。暫存 器362與364係運用以閂鎖於SHA1演算法之執行期間的 中間値,以實施第三圖所示之管線式架構。 更明確描述加法器226之作業,對於各個SHA1雜湊 回,五個輸入項係提供至五輸入的加法器226。加法器226 係實施爲一種保留進位加法器(CSA)樹(tree),其具有對於 各回之例如爲三個CSA加法器與一個全加法器(標示爲 FullAdd32),該全加法器係諸如一個32位元的加法器。第 34_____ 本紙張尺度適用中國國家標準(CNS)A4規格(210 X 297公S ) 578096 A7 ______B7____ 五、發明說明(A) 一回之輸出係訊號shal_templ,而第二回之輸出係訊號 shal_temp2。該二回係實質爲並行計算。SHA1之各回係亦 爲管線式。在暫存器362與364 (暫存器1與暫存器2)前的 所有輸入係提取及計算於一個稍早的時脈週期且閂鎖。輸 出shal_templ與shal_temp2係分別閂鎖至hb與ha暫存 器。 對於加法器226之五個輸入項係更爲詳細描述於後(對 於第一與第二回之各者): 1·第一輸入:讀取資料rddata與rd2data係提取於一個 稍早的時脈,並且係在由暫存器1與暫存器2之閂鎖前而 各自透過一多工器(參考號數336或340)與CSA級(344或 348)所饋送。 2·第二輸入:fsha與fsha2訊號係分別用於回〇至19、 回20至39、回40至59、與回60至79之非線性SHA1函 數 SHA1—FI、SHA1__F2、SHA1—F3、與 SHA1—F4 的一者 之選擇結果。由於二回係爲並行執行且亦爲實施於一種管 線式存取方式,對於該等函數之輸入係對於第一回之第一 週期而爲hb、he、hd且對於第一回之稍後週期而爲 shal—tempi、{ha[l:〇],ha[31:2]}、{ hb[l:〇],hb[31:2]}(顯 示於第三圖之左側)。對於函數之輸入係對於第二回(顯示 於第三圖之右側)係 ha、{ hb[l:〇],hb[31:2]}、與 he。fsha 訊號係計算於稍早於目前時脈週期之一早時脈週期,而 fsha2訊號係計算於目前時脈週期。 3.第三輸入:tk與tk2訊號係得自於SHA1雜湊之Kt __— —_35 ________ 本紙張尺度適用中國國家標準(CNS)A4規格(210 X 297公釐) ------------------ (請先閱讀背面之注意事項再填寫本頁) · · •線 578096 A7 _ __ _B7 ___ 五、發明說明(外) (請先閱讀背面之注意事項再填寫本頁) 函數的匹配至標準常數ΚΙ、K2、K3、或K4之一者,其視 t分別爲0至19、20至39、40至59、與60至79之回計 數而定。tk與tk2訊號係基於對於第~回之nc〇unt與對於 第二回之n2count而計算於一個稍早的時脈週期。 4·第四輸入:SHA1之第一回係選擇暫存器he以用於第 一時脈週期,且選擇暫存器he於後續諸回。SHA1之第二 回係選擇暫存器hd以用於第一週期,且選擇{hb[l:0], hb[31:2]}(其如上述之表示法係用於本文以指出對於SHA1 所定義之標準移位)以供雜湊於後續諸回。此等第一與第二 回輸入係計算於一個稍早的時脈週期。 5·第五輸入:於各個時脈週期之SHA1的第一回係運用 {ha[26:0],ha[31:47]}作爲一輸入,而於各個時脈週期之 SHA1的第二回係運用shal—tempi作爲一輸入。此等輸入 之各者係運用於目前時脈週期。 於本發明之如上所述的輸入選擇係使得能夠達成一種 管線式且並行之每週期二回的SHA1實施,其提高雜湊量 。再者,如上所述之根據本發明之管線式、並行的實施係 提供對於第一回之一臨界(critical)路徑,由暫存器1 (362) 至訊號shaljempl至SHAlJF[l-4]函數而後返回至暫存器 1。對於第二回之臨界路徑係由暫存器1至shal_temPl至 shaLtemp2而終止於ha暫存器216。因此,藉著實施於每 週期之二回,上述SHA1實施係相較於先前硬體實施而減 小臨界路徑,且提高對於各個週期之雜湊作業的速度。 此外,根據本發明,對於在SHA1雜湊處理期間所作 __36 ___ 本紙張尺度適用中國國家標準(CNS)A4規格(210 X 297公釐) 578096 A7 ___B7 __ 五、發明說明() (請先閱讀背面之注意事項再填寫本頁) 成的讀取及寫入存取之儲存區域HS0、HS1、與HS2係可 爲不同。舉例而言,一讀取存取係可作成至區域HS0或 HS1,而對於同一回之寫入存取係作成至區域HS2。 於SHA1之最初的16個週期,諸如HS0或HS1之一 個儲存區域係可運用作爲讀取組。根據本發明,在最初的 16個週期之後,諸如HS2之一不同的儲存區域係運用作爲 對於在雜湊處理期間的讀取與寫入二者之一寫入組。此舉 係使得能夠於HS0與HS1之資料的雜湊處理,舉例而言, 藉由其爲並行發生於雜湊方塊103之另一雜湊通道的一 MD5雜湊作業(如下文所述),而不會改寫其爲運用於 SHA1雜湊之資料。 --線· 另外’反覆的讀取及寫入作業係可由雜湊通道114或 116所作成於相同的儲存區域108_112,以進行反覆的雜湊 處理。本發明之此個層面係爲有用,例如用於TLS 1.0模 式之虛擬隨機函數(PRF)產生,於其之輸入資料的反覆雜湊 處理係進行於一序列。此舉係避免對於PRF產生之各個 HMAC雜湊回而反覆載入所提供至系統1〇〇之輸入資料流 至雜湊記憶體106。 MD5加法器
第四圖係根據本發明之一個實施例之MD5加法器228 的詳細方塊圖。明確而言,加法器228包含其運用以實施 十MD5函數之邂細函數方塊402-408 (其標示爲]VID5 F 、MD5—G、MD5—Η、與MD5—I)。加法器228亦包含多工 器410-416,其係遵循對於第三圖之上述的二輸入式多工 ΐ氏張尺度適用中闕家標準(CNS)A4規格(21Q χ 297公)- ---- 578096 A7 ___B7_ 五、發明說明(“) 器之選擇慣例。 (請先閱讀背面之注意事項再填寫本頁) 加法器228包含保留進位加法器418與420以及全加 法器422與424,其例如爲32位元之加法器。一函數方塊 426係視輸入ncount而定以選擇對於標準MD5演算法之適 當常數Ti (且提供作爲訊號ti)。一多工器428係基於輸入 訊號count而實施標準MD5旋轉。舉例而言,多工器428 係可實施如同其爲串聯連接之二個四輸入式的多工器,或 者可運用一移位器。一暫存器430 (暫存器3)係運用以閂鎖 於MD5計算執行期間的中間値,以實施如第四圖所示之管 線式架構。 更爲明確敘述加法器228之作業,各個MD5雜湊回 係具有五個輸入項,舉例而言,以至一個四輸入式的加法 器與二輸入式的加法器。四輸入式的加法器係實施例如爲 一 CSA樹(tree),其具有二個CSA加法器418與420以及 一個32位元的全加法器422。四輸入式的加法器之輸出係 由一個常數所旋轉,視由多工器428之回計數而定,且結 果係提供作爲一輸入至二輸入式的全加法器424,其係例 如爲一個32位元的加法器。至加法器228之第五輸入係饋 送至加法器424之另一輸入。該回之輸出係訊號md5_temp ,其係加法器424之輸出。 如上所述,MD5之各回係管線處理。在暫存器3 (430)之前的所有輸入係提取及計算於一個稍早的時脈週期 且作閂鎖。輸出md5_temp係閂鎖至hb暫存器218。 對於加法器228之五個輸入項係更爲詳細描述於後: _38_ 本紙張尺度適用中國國家標準(CNS)A4規格(210 X 297公釐) 578096 A7 ------B7_____ 五、發明說明() 1. 第一輸入:讀取資料rddata係提取於一個稍早的時脈 週期,並且係在由暫存器3 (430)之閂鎖前而透過CSA 418 所饋送。 2. 第二輸入:fmd5訊號係分別用於回〇至15、回16至 31、回32至47、與回48至63之非線性MD5函數 MD5—F、MD5—G、MD5_H、MD5J[的一者之選擇結果。 對於該等函數之輸入係訊號hb、he、與hd。fmd5訊號係 計算於目前的時脈週期。 3·第三輸入4訊號係得自於標準MD5雜湊之Ti函數 的選擇至該等常數之一者,其視由0.至63之回計數而定。 此係基於ncount而計算於一個稍早的時脈週期。 4·第四輸入:Mux 416係選擇ha暫存器216以用於第一 時脈週期且選擇hd暫存器以用於後續之回。此輸入係計算 於一個稍早的時脈週期。 5_第五輸入:此輸入係由hb暫存器218所提供。 於一稍早的時脈週期之第一、第三、與第四輸入的選 擇與附加以及至暫存器3 (430)之閂鎖係減小該臨界路徑。 此外’如上所述之本發明係致能一種管線式的MD5實施, 其提高雜湊量。另外,該種管線式實施係提供對於一回之 一臨界路徑,如同爲由he、hb與hd暫存器218-222至 MD5—F (或G或Η或I,如爲適用)函數方塊402-408,至 CSA32 加法器 420,至 FullAdd32 加法器 422,至 RotMux 多工器4M,至FullAdd32加法器424,且然後回到hb暫 存器218。根據本發明之此種實施係使得臨界路徑爲最小 ____39____ 本紙張尺度適用中國國家標準(CNS)A4規格(210 X 297公f ) (請先閱讀背面之注意事項再填寫本頁) 訂· *線 578096 A7 ____Β7____ 五、發明說明(U ) 化,且提高雜湊計算之速度。再者,CSA31加法器418係 並未於臨界路徑。 對於MD5雜湊之雜湊資料係可讀取自區域HS0、HS1 或HS2之一者。類似如上所述,舉例而言,MD5雜湊係可 運用區域HS0或HS1以供雜湊處理,而同時於另一雜湊通 道之SHA1加法器226係運用區域HS0或HS1以供讀取且 運用區域HS2以供寫入。舉例而言,此特點係可用於TLS 1.0模式之虛擬隨機函數(PRF)產生,於其之輸入資料的反 覆雜湊處理係進行於一序列。 雜湊通道與共同的雜湊記憶體之運用 第五圖係一個時序圖,其說明根據本發明的特定實施 例之雜湊通道114與116以及雜湊記憶體106的儲存區域 HS0、HS1、與HS2之運用。更爲明確而言,第五圖係一 個時序圖,其說明於單一 IPSec資料處理通道中之資料封 包的管線方式以及多個雜湊通道114與116 (其由括號 11Π所標示)之運用,其爲針對根據本發明之該種資料處 理通道(雜湊通道114與116係亦於下文描述爲“雜湊通道 〇”與“雜湊通道Γ )。 對應於資料封包(標示爲封包〇、封包1、與封包2)之 64位元組的資料區塊之簡化表示係說明於第五圖,於資料 處理通道之多個加密區塊Π02-1110各者的水平長度係對 應於欲於加密方塊102執行一 64位元組區塊之加密作業的 處理時間(其方向係由“時間”箭號所標示)。雜湊方塊103 係在此描述爲具有二個雜湊通道114與116;然而’熟悉此 __40__________ 本紙張尺度適用中國國家標準(CNS)A4規格(210 X 297公釐) --------.-------- (請先閱讀背面之注意事項再填寫本頁} _ -I線. 578096 A7 ______B7_____ 五、發明說明(β ) 技藝人士將理解的是,於其他的實施例係可運用超過二個 通道。再者,封包0與1係針對解說之目的而顯示爲含有 二個64位元組的加密區塊。於實際作業,封包係可爲於尺 寸變化廣泛。 現在係更爲詳細描述第五圖,封包〇係含有加密資料 區塊1102與1104。資料區塊1102代表欲於加密方塊102 而處理此個64位元組的資料所需的時間。類似而言,區塊 1104代表欲於加密方塊102而處理第二個64位元組的資 料所需的時間。如上文對於雜湊方塊103所述,一旦區塊 1102已經完成加密處理,則進入一雜湊記憶體106之儲存 區域,例如爲HS0。所應注意的是,雜湊記憶體106之塡 入係作成於當例如64位元組的資料區塊爲由加密方塊102 所處理時。假設雜湊通道0係非爲忙碌,則該64位元組的 資料係進入雜湊通道0以供雜湊處理。此係指出於第五圖 之區塊1112。於區塊1112 ’ “雜湊〇”指出雜湊通道〇爲 進行雜湊,而“(HS0)”指出資料爲讀取自雜湊記憶體儲存 區域HS0。當區塊1112係正爲雜湊時,區塊11〇4係持續 以加密處理。 一旦區塊1104係完成加密處理,資料係進入雜湊記 憶體106之下一個儲存區域,其於此例爲HS1。區塊1104 係對應於此資料,且具有記號“(HS1),,以指出資料爲讀取 自儲存區域HS1。由於對於一給定的封包(在此爲封包〇)之 所有資料係處理於相同的雜湊通道,區塊11〇4亦具有記號 雜湊〇” 。對於封包〇之安全性通訊協定係要求塡充以 ------------41__ 芩紙張尺度翻巾國國家標準(CNS)A4規格(210 X 297公爱) -----------I--· I I (請先閲讀背面之注意事項再填寫本貢> 訂· -線 578096 B7 五、發明說明(β) --------------0^ —— (請先閱讀背面之注意事項再填寫本頁) 及於雜湊方塊103之HMAC處理作業(諸如運用於例如 TLS),俾使第二區塊之64位元組係再次讀取自HS1以執 行於雜湊通道0之此等另外的雜湊作業(如爲由區塊1116 與1118所指出)。 當區塊1114係正在雜湊處理時,加密方塊1〇2已完 成於封包0之加密處理且已經接收對於封包1之區塊1106 的資料並開始加密處理。一旦區塊1106係作成加密處理, 資料係以旋轉順序而寫入至下一個雜湊記憶體儲存區域, 其係於此例爲HS2且標示爲於第五圖之區塊1122。因爲連 續的資料封包係典型爲運用交替的雜湊通道114與116而 作處理,且於此例子中之雜湊通道0係運用於封包0,封 包1係處理於雜湊通道1 (標示爲於區塊1122之“雜湊1 •線 當區塊1122係雜湊處理時,封包1之第二資料區塊 Π08係加密處理。一旦區塊1108完成加密處理,則資料 係以如上所述之循環順序而寫入至下一個儲存區域,其於 此例爲HS0且標示爲於第五圖之區塊1124。雜湊通道1係 運用以處理區塊1124,由於此資料係於封包1,其係爲透 過雜湊通道1而作處理。 下一個資料封包(封包2)係已有某些資料寫入至一輸入 FIFO (未顯示),其在加密方塊102之前而爲於資料處理通 道的整體系統管線之部分;然而,封包2之區塊1110係未 開始處理於加密方塊102而直到雜湊通道114與之〜 者爲空出。因此,一旦區塊1Π8完成處理時,則區塊 42 ------ 本紙張尺度適用中國國家標準(CNS)A4規格(210 X 297公釐) 578096 B7 五、發明說明() --------·-------- (請先閱讀背面之注意事項再填寫本頁) 1110開始加密處理。當區塊mo係完成,則資料係寫入 至下一個雜湊記憶體106儲存區域,其係於此例爲HS1(且 標示爲於第五圖之區塊Π2.0),雜湊處理起始於雜湊通道〇 。雜湊通道0與雜湊通道1係在當區塊1110爲備妥以供雜 湊時而均爲空出,且封包2係進入雜湊通道〇,由於雜湊 通道〇係已任意選擇作爲預設通道(如上文所述)。當區塊 1120係作雜湊處理之時及之後,另外的資料區塊(未顯示) 可繼續以進入加密方塊102,隨著上述管線以類似方式繼 續以供處理另外的資料區塊與封包。 結論 -線. 藉著上述說明,一種用於雜湊處理之新穎的系統及方 法係已經描述。本發明具有優點爲以較少的有效時脈週期 而處理SHA1與MD5雜湊作業,並改善利用緩衝及運作記 憶體資源,且降低欲在資料雜湊處理之前而執行塡充所用 的時間。本發明亦允許雜湊演算法SHA1、MD5、HMAC-SHA1、HMAC-MD5、雙重雜湊、以及於TLS的虛擬隨機 函數之硬體實施於單一晶片上。舉例而言,本發明係可運 用於虛擬私人網路處理系統,其實施IPSec、負載平衡器 與網頁切換實施,例如SSL 3.0與TLS 1·0。 雖然特定實施例係已經描述於上文,將可理解的是, 本發明之諸多的修改與替代係可作成。舉例而言,雖然一 個特定的硬體實施係.已經描述於上文’其他的實施例係可 運用不同硬體構件,且亦可包括軟體構件。是以,本發明 係已藉由舉例說明而非限制方式作描述。 ___43 —_______ 本紙張尺度適用中國國家標準(CNS)A4規格(210 X 297公釐)