散列算法在處理器上的有效實(shí)現(xiàn)的制作方法
【專利摘要】本發(fā)明提供了SHA-512以及類似地SHA-384在ARM處理器上的有效實(shí)現(xiàn)。該實(shí)現(xiàn)最大化迭代之間的寄存器值的重新使用,以最小化從存儲器加載這些值的需要。這是通過以下方式實(shí)現(xiàn)的:將迭代歸類為偶數(shù)迭代和奇數(shù)迭代,使得偶數(shù)迭代中的計(jì)算順序在奇數(shù)迭代中被反轉(zhuǎn),并且在一次迭代結(jié)束時的寄存器值在下一次迭代開始時被耗用。
【專利說明】散列算法在處理器上的有效實(shí)現(xiàn)
[0001]相關(guān)申請的交叉引用
[0002]本申請基于35U.S.C.§ 119(e)要求于2011年4月6日提交的題為“EfficientImplementation of Hash Algorithm on a Processor”的美國臨時申請 N0.61 / 472,422的優(yōu)先權(quán)。美國臨時申請N0.61 / 472,422包括示例性系統(tǒng)和方法,并且通過引用的方式完整地并入本文。
【技術(shù)領(lǐng)域】
[0003]本發(fā)明大體上涉及通信系統(tǒng)和用于操作通信系統(tǒng)的方法,更具體地,涉及散列算法在處理器上的有效實(shí)現(xiàn)。
【背景技術(shù)】
[0004]在已知的無線電信系統(tǒng)中,基站或接入設(shè)備中的發(fā)射設(shè)備在稱作小區(qū)的地理區(qū)域上發(fā)送信號。隨著技術(shù)的發(fā)展,已經(jīng)引入了更高級的設(shè)備,該設(shè)備可以提供在以前是不可能的服務(wù)。該高級的設(shè)備可以包括例如E-UTRAN(演進(jìn)通用陸地?zé)o線電接入網(wǎng))節(jié)點(diǎn)B(eNB)、基站或其它系統(tǒng)和設(shè)備。這種高級的設(shè)備或者下一代設(shè)備通常稱作長期演進(jìn)(LTE)設(shè)備,并且使用這種設(shè)備的基于分組的網(wǎng)絡(luò)通常稱作演進(jìn)分組系統(tǒng)(EPS)。接入設(shè)備是諸如傳統(tǒng)的基站或LTE eNB (演進(jìn)型節(jié)點(diǎn)B)等的任意組件,其可以向諸如用戶設(shè)備(UE)或移動設(shè)備(ME)等的通信設(shè)備提供對電信系統(tǒng)中的其它組件的訪問。
[0005]在很多UE型的設(shè)備中存在的一個問題涉及例如經(jīng)由散列算法提供安全性。SHA-512是第二代安全散列算法(SHA-2)簇中的散列算法(參見例如FIPS180-3散列標(biāo)準(zhǔn))。SHA-512包括對由八個64比特的字構(gòu)成的狀態(tài)進(jìn)行80輪重復(fù)操作。SHA-512在諸如ARMv5t架構(gòu)等高級的精簡指令集計(jì)算機(jī)(rise)機(jī)器型ARM處理器上的實(shí)現(xiàn)是一項(xiàng)富有挑戰(zhàn)性的任務(wù),這是因?yàn)锳RM處理器包括十六個32比特的寄存器,其中一個寄存器是程序計(jì)數(shù)器(PC),另一個寄存器是堆棧 指針(SP)。因此,SHA-512狀態(tài)不能完全保存在14個工作寄存器中,每次只有SHA-512狀態(tài)的一部分被加載到這些寄存器中,并且在被存儲回堆棧上之前經(jīng)歷必要的計(jì)算。挑戰(zhàn)在于優(yōu)化寄存器利用并且最小化相對漫長的加載操作。
【專利附圖】
【附圖說明】
[0006]當(dāng)結(jié)合下面的附圖考慮下面的詳細(xì)描述時,可以理解本發(fā)明并且獲得本發(fā)明的大量目的、特征和優(yōu)點(diǎn),在附圖中:
[0007]圖1示出了散列算法中的計(jì)算的流的框圖。
[0008]圖2描繪了可以在其中實(shí)現(xiàn)本發(fā)明的示例性系統(tǒng)。
[0009]圖3示出了包括用戶設(shè)備(UE)的實(shí)施例的無線通信系統(tǒng)。
[0010]圖4是包括數(shù)字信號處理器(DSP)的示例性UE的簡化框圖。
[0011]圖5是可以由DSP實(shí)現(xiàn)的軟件環(huán)境的簡化框圖?!揪唧w實(shí)施方式】
[0012]提供了用于最大化在迭代結(jié)束時包含要在下一次迭代開始時使用的值的寄存器的數(shù)量的方法、系統(tǒng)和計(jì)算機(jī)可用介質(zhì)。這是通過將SHA-512算法迭代歸類為偶數(shù)迭代和奇數(shù)迭代來實(shí)現(xiàn)的,其中,偶數(shù)迭代中的計(jì)算順序在奇數(shù)迭代中被反轉(zhuǎn)。因此,偶數(shù)迭代和奇數(shù)迭代一起形成了新的循環(huán)迭代。此外,通過仔細(xì)地將狀態(tài)字指派給寄存器來利用諸如ARMv5te等一些更高級的架構(gòu)的能力,包括數(shù)據(jù)預(yù)加載和雙字加載/存儲。
[0013]更具體地說,在特定的實(shí)施例中,本發(fā)明包括將SHA-512以及類似地將SHA-384的迭代歸類和展開為偶數(shù)迭代和奇數(shù)迭代,其中,偶數(shù)迭代中的計(jì)算順序在奇數(shù)迭代中被反轉(zhuǎn)。因此,偶數(shù)迭代和奇數(shù)迭代一起形成了新的循環(huán)迭代。此外,在特定的實(shí)施例中,在一次迭代結(jié)束時在寄存器中容易找到的狀態(tài)字中的一些在下一次迭代開始時被重新使用。此夕卜,在特定的實(shí)施例中,在后64次迭代中,在當(dāng)前8個狀態(tài)字的位置與針對當(dāng)前w字的指針之間的偏移保持恒定,當(dāng)前w字是16個w字中的一個w字,其中,輸入塊最初被復(fù)制在堆棧中并且不斷被更新。此外,在特定的實(shí)施例中,每16次迭代被組合在一起并且由計(jì)數(shù)器管理,該計(jì)數(shù)器存儲當(dāng)前w的索引并且用于確定其它w字的位置并核查循環(huán)終止。此外,在特定的實(shí)施例中,當(dāng)對算法的64比特的字進(jìn)行加載/存儲時,將寄存器對R(d)、R(d+1)指派給這些64比特的字,其中,d是偶數(shù)并且不等于14,以便如果加載/存儲雙字指令在目標(biāo)處理器上可用,則利用這些加載/存儲雙字指令。
[0014]現(xiàn)在將參照附圖來詳細(xì)描述本發(fā)明的各個示例性實(shí)施例。雖然在以下描述中闡述了各個細(xì)節(jié),但是將清楚的是,可以在沒有這些具體細(xì)節(jié)的情況下實(shí)踐本發(fā)明,并且可以對本文描述的本發(fā)明進(jìn)行多種實(shí)現(xiàn)特定的決定,以達(dá)到發(fā)明人的具體目標(biāo),例如,符合將隨實(shí)現(xiàn)變化的與處理技術(shù)或設(shè)計(jì)有關(guān)的約束。雖然這樣的開發(fā)工作可能是復(fù)雜且耗時的,但是對于受益于本公開的本領(lǐng)域技術(shù)人員而言仍是例行事務(wù)。例如,以框圖和流程圖的形式而不是詳細(xì)地示出了所選擇的方面,以避免限制本發(fā)明或使本發(fā)明模糊。此外,本文提供給的詳細(xì)描述的一些部分是圍繞對計(jì)算機(jī)存儲器內(nèi)的數(shù)據(jù)執(zhí)行的算法或運(yùn)算給出的。這樣的描述和表示被本領(lǐng)域技術(shù)人員用于向本領(lǐng)域其他技術(shù)人員描述和傳達(dá)他們工作的實(shí)質(zhì)。
[0015]現(xiàn)在參照圖1,示出了散列算法中的計(jì)算的流的框圖。更具體地說,示出了針對散列算法的SHA-2簇的每一次迭代執(zhí)行的計(jì)算。在特定的實(shí)施例中,除非另外聲明,否則字的長度是64個比特,而處理器寄存器的長度是32個比特。
[0016]在SHA-512以及作為SHA-512的截?cái)喟姹镜腟HA-384中,每一次迭代的狀態(tài)包括八個64比特的字A至H。要散列的塊包括十六個64比特的字,這十六個64比特的字在前16次迭代期間通過數(shù)據(jù)輸入被輸入算法中并且依次被存儲在陣列w中。在剩余的64次迭代中,對4個w字(w[j]、w[j-2]、w[j-7]和w[j_15])計(jì)算所示出的函數(shù),并且結(jié)果用于更新w[j]并且貢獻(xiàn)新的狀態(tài)值A(chǔ)和E。針對A和E的其它貢獻(xiàn)值是由算法針對80次迭代中的每一次迭代i指定的64比特的字Ki和對前一狀態(tài)值操作的函數(shù)Σ 0、Ma1、Σ I和Ch的輸出。與A和E不同,其它新的狀態(tài)值是前一狀態(tài)的平移副本(即,舊A變?yōu)锽、B變?yōu)镃等等)。在實(shí)際的實(shí)現(xiàn)中,這些值未被復(fù)制,而是被存儲在堆棧上,其中,分配了適當(dāng)?shù)目臻g來在舊A之前存儲新A,如圖1所示。在每一次迭代中使指針前進(jìn)。
[0017]與使用零或者算法的前一輪的散列輸出對狀態(tài)值進(jìn)行初始化的第一次迭代不同,僅需要針對w[j]、A和E的存儲指令。因此,在圖1中經(jīng)由實(shí)線箭頭來更新這些值,而使用虛線箭頭來“更新”(重新命名)其它值。在偽代碼I中概述了該經(jīng)典描述。
[0018]偽代碼1.SHA-2迭代的偽代碼
[0019]1.針對i從O至15,進(jìn)行以下操作:
[0020]1.1 w[i]=輸入的接下來8個字節(jié)
[0021]1.2 H+ = Ki
[0022]1.3 H+ = w[i]
[0023]1.4 H+ = Σ I (E)
[0024]1.5 H+=Ch(E,F(xiàn),G)
[0025]1.6 D+=H
[0026]1.7 存儲 D
[0027]1.8 H+ = Σ O (A)
[0028]1.9 H+ = Maj (A, B,C)
[0029]1.10在A之前存儲H,其中,H變?yōu)樾翧。
[0030]1.11更新堆棧指針;對所有值重新命名。
[0031]2.針對i從16至79,進(jìn)行以下操作:
[0032]2.1 j = i modl6
[0033]2.2 w[j]+= ο I (w[ (j_2)modl6])
[0034]2.3 w[j]+= (w[ (j-7)modl6])
[0035]2.4 w[j]+= σ 0 (w[ (j-15) modl6])
[0036]2.5 重復(fù)步驟 1.2 至 1.11
[0037]然而,所有值A(chǔ)至H、Ki和w需要從堆棧到寄存器的加載操作以經(jīng)歷指定的函數(shù)運(yùn)算。本實(shí)施例通過重新使用來自前一次迭代的仍然處于寄存器中的值來最小化每一次迭代中所需的加載指令的數(shù)量。這是通過將算法迭代歸類和展開為偶數(shù)迭代和奇數(shù)迭代來實(shí)現(xiàn)的,其中,偶數(shù)迭代中的計(jì)算順序在接下來的奇數(shù)迭代中被反轉(zhuǎn),如下文所解釋的并且如偽代碼2中所概述的。
[0038]偽代碼2.新實(shí)現(xiàn)的偽代碼
[0039]1.1=0
[0040]2.進(jìn)行以下操作:
[0041 ]2.1 t= Σ O ⑷ +Maj (A, B, C)
[0042]2.2 w[i]=輸入的接下來8個字節(jié)
[0043]2.3 H+ = w[i]
[0044]2.4 H+ = Ki
[0045]2.5 H+ = Σ I (E)
[0046]2.6 H+ = Ch(E,F, G)
[0047]2.7 D+ = H
[0048]2.8 存儲 D
[0049]2.9 H+=t
[0050]2.10在A之前存儲H,其中,H變?yōu)樾翧。
[0051]2.11更新堆棧指針;對所有值重新命名。[0052]2.12 i+=l / /當(dāng)加載Ki和w[i]中的每一個時,其相應(yīng)指針被更新;不存在包含要增加的i的實(shí)際寄存器
[0053]2.13 (值E至H、A在寄存器中,不需要對它們進(jìn)行加載)
[0054]2.14 H+ = Ch (E, F, G)
[0055]2.15 H+ =E I(E)
[0056]2.16 w[i]=輸入的接下來8個字節(jié)
[0057]2.17 H+ = w[i]
[0058]2.18 H+ = Ki [0059]2.19 D+ = H
[0060]2.20 存儲 D
[0061]2.21 H+ =E O(A)
[0062]2.22 H+ = Maj (A, B, C)
[0063]2.23在A之前存儲H,其中,H變?yōu)樾翧。
[0064]2.24更新堆棧指針;對所有值重新命名。
[0065]2.25 i+=l / /當(dāng)加載Ki和w[i]時,針對它們的指針被更新
[0066]2.26 (值A(chǔ)至C在寄存器中,不需要對它們進(jìn)行加載)
[0067]判斷(while)Ki^ K15 / / 8 次迭代
[0068]3.對于i從16至79,進(jìn)行以下操作:/ /該循環(huán)被展開為4個循環(huán),每一個循環(huán)具有8個新的奇偶迭代程序。其中,堆棧指針與w[0]之間的偏移是恒定的
[0069]3.1 t= Σ O (A) +Maj (A, B, C)
[0070]3.2 j = i modl6 / /寄存器用于存儲j,并且每隔16次迭代被復(fù)位。通過使用恒定的偏移和j,來確定w[j]的位置。
[0071]3.3 w[j]+=o I (w[ (j-2)modl6])
[0072]3.4 w[j]+= (w[ (j-7)modl6])
[0073]3.5w[j]+= σ 0 (w[ (j_15) modl6])
[0074]3.6 H+ = w[j]
[0075]3.7 重復(fù)步驟 2.4 至 2.15
[0076]3.8重復(fù)步驟3.2至3.6
[0077]3.9 重復(fù)步驟 2.18 至 2.25
[0078]3.10 (值A(chǔ)至C和w [j+Ι]在寄存器中,不需要對它們進(jìn)行加載)
[0079]在第一次迭代(i=0)中,首先對字A至C進(jìn)行加載,并且計(jì)算圖1中的值t并將其存儲在一對寄存器中。然后,加載剩余的字D至H,計(jì)算值U,計(jì)算并存儲的新值E以及之后的新值A(chǔ)。該偶數(shù)迭代結(jié)束時,在寄存器中找到的值根據(jù)其更新的名字是E至H和A。在接下來的奇數(shù)迭代(i = D中直接使用這些值,以首先計(jì)算u并且更新新Ε。然后加載B至D,計(jì)算t,并且更新新A。現(xiàn)在,在該奇數(shù)迭代結(jié)束時,容易在寄存器中得到成為A至C的值
H、A和B以在接下來的偶數(shù)迭代開始時以與迭代i=0中相同的方式耗用(consume)。因此,偶數(shù)迭代及其后的奇數(shù)迭代形成了單個新的循環(huán)迭代。在我們的新實(shí)施方式中針對每一個原始迭代加載的字A至H的平均數(shù)量為4 (八次32比特的加載),而不是經(jīng)典實(shí)施方式中的8 (十六次32比特的加載)。[0080]在前16次迭代中的每一次迭代中,加載新Ki并且通過每次將輸入數(shù)據(jù)的八個字節(jié)中的一個字節(jié)加載到寄存器來形成新W。在迭代中間當(dāng)在計(jì)算出值u或t以后寄存器變得可用時發(fā)生該情況,以便不會干擾在迭代開始和結(jié)束時的寄存器重新使用。此外,因?yàn)镵i的值并且可能還有地址是恒定的并且被硬編碼,因此前16次迭代的循環(huán)的結(jié)束條件可能是核查K15的地址或值;這需要使兩個寄存器中的一個保存Ki,直到奇數(shù)迭代結(jié)束為止。因此,在這些迭代中,不存在用作計(jì)數(shù)器i的寄存器;在偽代碼2中,i是兩個寄存器的用于保存當(dāng)前Ki的地址和輸入緩沖中的當(dāng)前位置的占位符。
[0081]在接下來的64次迭代中,將字《[」]、02]、《[」_7]和w[j_15]從其在堆棧中的位置加載到為字A至H及其更新過程分配的空間的下方。索引j每隔16次迭代回繞(wrap)一次。我們的新穎設(shè)計(jì)針對每一組16次迭代利用堆棧指針與w[j]的位置之間的恒定偏移;因此,不使用其它寄存器來包含w[j]的地址。取而代之地,一個寄存器用于存儲j,j用于計(jì)算w字modl6的偏移并且用于終止每一組16次迭代的循環(huán)。
[0082]此外,在這64次迭代中,來自奇數(shù)迭代的字w[j-15](其索引modl6實(shí)際上等于j+Ι)可以在接下來的偶數(shù)迭代中重新使用,這是因?yàn)樵诮酉聛淼呐紨?shù)迭代時它變?yōu)閣[j]。這是除了先前所述的可以利用值A(chǔ)至C以外的又一重新使用。與經(jīng)典實(shí)施方式相比,這進(jìn)一步減少了針對迭代的加載指令的平均數(shù)量。
[0083]此外,寄存器指派考慮了利用更高級的處理器特征的能力的可能性,具體地說,力口載/存儲雙字,即,64比特的字,這一點(diǎn)可以在從ARMv5te開始的ARM架構(gòu)中找到。為了使用加載/存儲雙字指令,所使用的寄存器必須是兩個緊鄰的寄存器,一個具有偶數(shù)索引而另一個具有順次的奇數(shù)索引,例如,R0、R1,并且偶數(shù)寄存器不能是R14。還值得注意的是,如果這種高級架構(gòu)可用,則我們的實(shí)施方式利用預(yù)加載指令,這加速了接下來的相應(yīng)加載指令。然而,在我們的設(shè)計(jì)中,由于當(dāng)需要值時寄存器可用性的約束,因此針對每一次迭代,預(yù)加載指令的使用局限于一個值;對于所有其它加載的值,最大化當(dāng)加載值時與當(dāng)值實(shí)際參與計(jì)算時之間的指令數(shù)量。這種差距拉大(distancing)最大化ARM處理器的流水線架構(gòu)的利用,并且消除了當(dāng)在加載值以后立即使用該值的情況下由于存儲器存取引起的停轉(zhuǎn)。
[0084]圖2示出了適合于執(zhí)行本文公開的一個或多個實(shí)施例的系統(tǒng)200的示例。在各個實(shí)施例中,系統(tǒng)200包括處理器210 (其可以稱作中央處理單元(CPU)或數(shù)字信號處理器(DSP))、網(wǎng)絡(luò)連接設(shè)備220、隨機(jī)存取存儲器(RAM) 230、只讀存儲器(ROM) 240、輔助存儲設(shè)備250和輸入/輸出(I / O)設(shè)備260。在一些實(shí)施例中,處理器210包括諸如符合ARMv5t架構(gòu)的ARM處理器等的ARM處理器。在一些實(shí)施例中,這些組件中的一些可以不存在,或者可以通過各種組合方式來將這些組件中的一些彼此組合或者與未示出的其它組件進(jìn)行組合。這些組件可以位于單個物理實(shí)體中,或者位于多于一個的物理實(shí)體中。本文描述為由處理器210進(jìn)行的任何動作可以由處理器210單獨(dú)進(jìn)行,或者可以由處理器210聯(lián)合圖2中所示出的或未示出的一個或多個組件來進(jìn)行。
[0085]處理器210執(zhí)行它可以從網(wǎng)絡(luò)連接設(shè)備220、RAM230或R0M240訪問的指令、代碼、計(jì)算機(jī)程序或腳本。雖然僅示出了一個處理器210,但是可以存在多個處理器。因此,雖然將這些指令作為由處理器210執(zhí)行的來進(jìn)行討論,但是這些指令可以由實(shí)現(xiàn)為一個或多個CPU芯片的一個或多個處理器210來同時執(zhí)行、連續(xù)地執(zhí)行或者以其它方式執(zhí)行。
[0086]在各個實(shí)施例中,網(wǎng)絡(luò)連接設(shè)備220可以采取以下形式:調(diào)制解調(diào)器、調(diào)制解調(diào)器組、以太網(wǎng)設(shè)備、通用串行總線(USB)接口設(shè)備、串行接口、令牌環(huán)設(shè)備、光纖分布式數(shù)據(jù)接口(FDDI)設(shè)備、無線局域網(wǎng)(WLAN)設(shè)備、無線電收發(fā)機(jī)設(shè)備(例如,碼分多址(CDMA)設(shè)備、全球移動通信系統(tǒng)(GSM)無線電收發(fā)機(jī)設(shè)備)、微波接入的全球可互操作性(WiMAX)設(shè)備和/或用于連接到網(wǎng)絡(luò)的其它公知的設(shè)備。這些網(wǎng)絡(luò)連接設(shè)備220可以使處理器210能夠與以下各項(xiàng)進(jìn)行通信:互聯(lián)網(wǎng)或者一個或多個電信網(wǎng)絡(luò)或者處理器210可以從其接收信息或者處理器210可以向其輸出信息的其它網(wǎng)絡(luò)。
[0087]網(wǎng)絡(luò)連接設(shè)備220還可以能夠以電磁波(例如,射頻信號或微波頻率信號)的形式無線地發(fā)送或接收數(shù)據(jù)。由網(wǎng)絡(luò)連接設(shè)備220發(fā)送或接收的信息可以包括已經(jīng)由處理器210處理的數(shù)據(jù)或者將由處理器210執(zhí)行的指令??梢愿鶕?jù)對于處理或生成數(shù)據(jù)或者發(fā)送或接收數(shù)據(jù)而言期望的不同的序列來對數(shù)據(jù)進(jìn)行排序。
[0088]在各個實(shí)施例中,RAM230可以用于存儲易失性數(shù)據(jù)和由處理器210執(zhí)行的指令。圖2中所示的R0M240可以用于存儲指令并且可以存儲在執(zhí)行指令期間讀取的數(shù)據(jù)。與對輔助存儲設(shè)備250進(jìn)行訪問相比,對RAM230和R0M240 二者進(jìn)行訪問通常更快。輔助存儲設(shè)備250通常由一個或多個磁盤驅(qū)動器或磁帶驅(qū)動器組成,并且可以用于對數(shù)據(jù)進(jìn)行非易失性存儲,或者如果RAM230不足以容納所有工作的數(shù)據(jù),則輔助存儲設(shè)備250可以用作溢出數(shù)據(jù)存儲設(shè)備。輔助存儲設(shè)備250可以用于存儲當(dāng)選擇了要執(zhí)行的程序時而被加載至RAM230中的程序。I / O設(shè)備260可以包括液晶顯示器(IXD)、觸摸屏顯示器、鍵盤、鍵區(qū)、開關(guān)、撥號盤、鼠標(biāo)、軌跡球、語音識別器、讀卡器、紙帶閱讀器、打印機(jī)、視頻監(jiān)控器或者其它公知的輸入/輸出設(shè)備。
[0089]圖3示出了包括用戶設(shè)備(UE)302的實(shí)施例的無線通信系統(tǒng)。雖然將UE302示出為移動電話,但是UE302可以具有多種形式,其包括:無線手機(jī)、尋呼機(jī)、個人數(shù)字助理(PDA)、便攜式計(jì)算機(jī)、平板電腦或膝上型計(jì)算機(jī)。很多適合的設(shè)備組合了這些功能中的一些或全部。在一些實(shí)施例中,UE302不是諸如便攜式計(jì)算機(jī)、膝上型計(jì)算機(jī)或平板電腦等的通用計(jì)算設(shè)備,而是諸如移動電話、無線手機(jī)、尋呼機(jī)、PDA或安裝在車輛中的電信設(shè)備等的專用通信設(shè)備。同樣地,UE302可以是具有類似的功能但不是便攜式的設(shè)備(例如,臺式電腦、機(jī)頂盒或網(wǎng)絡(luò)節(jié)點(diǎn)),包括這樣的設(shè)備,或者可以包含在這樣的設(shè)備中。在這些實(shí)施例和其它實(shí)施例中,UE302可以支持專門的活動,例如,游戲、存貨控制、工作控制和/或任務(wù)管理功能等等。
[0090]在各個實(shí)施例中,UE302包括顯示器304。同樣地,UE302包括觸摸敏感表面、鍵盤或通常由用戶用于輸入的其它輸入鍵306。在這些環(huán)境和其它環(huán)境中,鍵盤可以是全字母數(shù)字鍵盤或者簡化的字母數(shù)字鍵盤(例如,QWERTY、Dvorak, AZERTY和順序鍵盤型),或者具有與電話鍵區(qū)相關(guān)聯(lián)的字母的傳統(tǒng)數(shù)字鍵區(qū)。同樣地,輸入鍵可以包括滾輪、退出鍵或換碼鍵、軌跡球和可以被向內(nèi)按壓以提供進(jìn)一步的輸入功能的其它導(dǎo)航鍵或功能鍵。同樣地,UE302可以呈現(xiàn)用于使用戶選擇的選項(xiàng)、用于使用戶驅(qū)動的控制以及用于使用戶引導(dǎo)的光標(biāo)或其它指示符。
[0091]UE302還可以接受來自用戶的數(shù)據(jù)輸入,其包括要撥打的號碼或者用于配置UE302的操作的各個參數(shù)值。UE302可以響應(yīng)于用戶命令來進(jìn)一步執(zhí)行一個或多個軟件或固件應(yīng)用。這些應(yīng)用可以將UE302配置為響應(yīng)于用戶交互來執(zhí)行各種定制的功能。此外,可以通過無線基站310、服務(wù)器316、無線網(wǎng)絡(luò)接入點(diǎn)308或?qū)Φ萓E302在空中(OTA)對UE302進(jìn)行編程或配置。
[0092]可以由UE200執(zhí)行的各種應(yīng)用可以包括使顯示器304能夠顯示網(wǎng)頁的網(wǎng)站瀏覽器。可以經(jīng)由與諸如基地站等的無線網(wǎng)絡(luò)接入點(diǎn)308、對等UE302或任何其它無線通信網(wǎng)絡(luò)312或系統(tǒng)的無線通信來獲得網(wǎng)頁。在各個實(shí)施例中,將無線網(wǎng)絡(luò)312耦合到諸如互聯(lián)網(wǎng)等的有線網(wǎng)絡(luò)314。UE302可以經(jīng)由無線網(wǎng)絡(luò)312和有線網(wǎng)絡(luò)314利用諸如服務(wù)器316等的服務(wù)器上的信息。服務(wù)器316可以提供可以在顯示器304上顯示的內(nèi)容??商鎿Q地,UE302可以通過對等UE302來接入無線網(wǎng)絡(luò)312,其中,對等UE302在中繼類型或跳變類型的連接中用作媒介。本領(lǐng)域技術(shù)人員將認(rèn)識到,很多這種實(shí)施例是可以的,并且前述內(nèi)容并不旨在限制本發(fā)明的精神、范圍或意圖。
[0093]圖4描繪了可以在其中執(zhí)行本發(fā)明的示例性用戶設(shè)備(UE)302的框圖。雖然描繪了 UE302的各個組件,但是UE302的各個實(shí)施例可以包括所列出的組件的子集以及額外的未列出的組件。如圖4所示,UE302包括數(shù)字信號處理器(DSP)402和存儲器404。如圖所示,UE302還可以包括天線和前端單元406、射頻(RF)收發(fā)機(jī)408、模擬基帶處理單元410、麥克風(fēng)412、聽筒揚(yáng)聲器414、耳機(jī)插口 416、輸入/輸出(I / O)接口 418、可移除存儲卡420、通用串行總線(USB)端口 422、短程無線天線子系統(tǒng)424、警報(bào)426、鍵區(qū)428、可以包括觸摸敏感表面的液晶顯示器(LCD) 430、LCD控制器432、電容耦合器(CCD)照相機(jī)434、照相機(jī)控制器436和全球定位系統(tǒng)(GPS)傳感器438。在各個實(shí)施例中,UE302可以包括未提供觸摸敏感屏幕的另一種顯示器。在一個實(shí)施例中,DSP402可以在不經(jīng)過輸入/輸出接口418的情況下與存儲器404直接通信。
[0094]在各個實(shí)施例中,DSP402或者某種其它形式的控制器或中央處理單元(CPU)操作以根據(jù)存儲在存儲器404中或者存儲在DSP402自身中包含的存儲器中的嵌入的軟件或固件來控制UE302的各個組件。除了嵌入的軟件或固件以外,DSP402還可以執(zhí)行存儲在存儲器404中的或者經(jīng)由信息載體介質(zhì)(例如,諸如可移除存儲卡420等的便攜式數(shù)據(jù)存儲介質(zhì))或者經(jīng)由有線或無線網(wǎng)絡(luò)通信而使得可用的其它應(yīng)用。應(yīng)用軟件可以包括經(jīng)編譯的一組機(jī)器可讀指令,這些指令將DSP402配置為提供期望的功能,或者應(yīng)用軟件可以是將由解釋器或編譯器處理以間接配置DSP402的高級軟件指令。
[0095]可以提供天線和前端單元406以在無線信號與電信號之間進(jìn)行轉(zhuǎn)換,從而使UE302能夠發(fā)送和接收來自蜂窩網(wǎng)絡(luò)或者某個其它可用的無線通信網(wǎng)絡(luò)的信息或者來自對等UE302的信息。在一個實(shí)施例中,天線和前端單元306可以包括多個天線以支持波束成型和/或多輸入多輸出(MMO)操作。如本領(lǐng)域技術(shù)人員所公知的,MMO操作可以提供空間分集,空間分集可以用于克服不同的信道條件或者增加信道吞吐量。同樣地,天線和前端單元406可以包括天線調(diào)諧或阻抗匹配組件、RF功率放大器或低噪聲放大器。
[0096]在各個實(shí)施例中,RF收發(fā)機(jī)408提供頻移、將接收的RF信號轉(zhuǎn)換到基帶并且將基帶發(fā)射信號轉(zhuǎn)換到RF。在一些描述中,無線電收發(fā)機(jī)或RF收發(fā)機(jī)可以被理解為包括其它信號處理功能,例如,調(diào)制/解調(diào)、編碼/解碼、交織/解交織、擴(kuò)頻/解擴(kuò)、逆快速傅里葉變換(IFFT) /快速傅里葉變換(FFT)、循環(huán)前綴添加/移除和其它信號處理功能。為了清楚起見,這里的描述將對該信號處理的描述與RF和/或無線電級分開,并且在概念上將該信號處理分配給模擬基帶處理單元410或DSP402或其它中央處理單元。在一些實(shí)施例中,可以在一個或多個處理單元和/或?qū)S眉呻娐?ASIC)中合并RF收發(fā)機(jī)208、天線和前端406的各個部分以及模擬基帶處理單元410。
[0097]模擬基帶處理單元410可以提供對輸入和輸出的各種模擬處理,例如對來自麥克風(fēng)412和耳機(jī)416的輸入和去往聽筒414和耳機(jī)416的輸出的模擬處理。為此,模擬基帶處理單元410可以具有用于連接至使UE302能夠用作手機(jī)的內(nèi)置麥克風(fēng)412和聽筒揚(yáng)聲器414的端口。模擬基帶處理單元410還可以包括用于連接至耳機(jī)或其它免提麥克風(fēng)和揚(yáng)聲器配置的端口。模擬基帶處理單元410可以在一個信號方向上提供數(shù)模轉(zhuǎn)換并且在相反信號方向上提供模數(shù)轉(zhuǎn)換。在各種實(shí)施例中,模擬基帶處理單元410的功能中的至少一些可以由數(shù)字處理組件(例如由DSP402或由其它中央處理單元)提供。
[0098]DSP402可以執(zhí)行調(diào)制/解調(diào)、編碼/解碼、交織/解交織、擴(kuò)頻/解擴(kuò)、逆快速傅里葉變換(IFFT) /快速傅里葉變換(FFT)、循環(huán)前綴添加/移除以及與無線通信相關(guān)聯(lián)的其它信號處理功能。在一個實(shí)施例中,例如在碼分多址(CDMA)技術(shù)應(yīng)用中,對于發(fā)射機(jī)功能,DSP402可以執(zhí)行調(diào)制、編碼、交織和擴(kuò)頻,而對于接收機(jī)功能,DSP402可以執(zhí)行解擴(kuò)、解交織、解碼和解調(diào)。在另一實(shí)施例中,例如在正交頻分多址(OFDMA)技術(shù)應(yīng)用中,對于發(fā)射機(jī)功能,DSP402可以執(zhí)行調(diào)制、編碼、交織、逆快速傅里葉變換和循環(huán)前綴添加,而對于接收機(jī)功能,DSP402可以執(zhí)行循環(huán)前綴移除、快速傅里葉變換、解交織、解碼和解調(diào)。在其它無線技術(shù)應(yīng)用中,可以由DSP402執(zhí)行其它信號處理功能以及信號處理功能的組合。
[0099]DSP402可以經(jīng)由模擬基帶處理單元410與無線網(wǎng)絡(luò)通信。在一些實(shí)施例中,通信可以提供互聯(lián)網(wǎng)連接,從而使用戶能夠訪問互聯(lián)網(wǎng)上的內(nèi)容并且發(fā)送和接收電子郵件或文本消息。輸入/輸出接口 418將DSP402和各種存儲器和接口互連。存儲器404和可移除存儲卡420可以提供軟件和數(shù)據(jù),以配置DSP402的操作。接口可以包括USB接口 422和短程無線通信子系統(tǒng)424。USB接口 422可以用于為UE302充電,并且還可以使UE302能夠用作外圍設(shè)備,以與個人計(jì)算機(jī)或其它計(jì)算機(jī)系統(tǒng)交換信息。短程無線通信子系統(tǒng)424可以包括紅外線接口、藍(lán)牙接口、符合IEEE802.11的無線接口或可以使UE302能夠與其它附近的移動設(shè)備和/或無線基站進(jìn)行無線通信的任意其它短程無線通信子系統(tǒng)。
[0100]輸入/輸出接口 418可以進(jìn)一步將DSP402與警報(bào)426連接,其中,當(dāng)觸發(fā)警報(bào)426時,該警報(bào)426使UE302例如通過響鈴、播放旋律或振動向用戶提供通知。警報(bào)426可以用作用于通過無聲振動或通過針對特定呼叫方播放專門預(yù)先指派的旋律來警告用戶存在各種事件(如,傳入呼叫、新文本消息以及約會提醒)中的任意一個事件的機(jī)制。
[0101]鍵區(qū)428經(jīng)由I / O接口 418耦合至DSP402以提供一種使用戶進(jìn)行選擇、輸入信息并且以其它方式向UE302提供輸入的機(jī)制。鍵盤428可以是全字母數(shù)字鍵盤或者簡化的字母數(shù)字鍵盤(例如,QWERTY、Dvorak、AZERTY和順序鍵盤型),或者具有與電話鍵區(qū)相關(guān)聯(lián)的字母的傳統(tǒng)數(shù)字鍵區(qū)。同樣地,輸入鍵可以包括滾輪、退出鍵或換碼鍵、軌跡球和可以被向內(nèi)按壓以提供進(jìn)一步的輸入功能的其它導(dǎo)航鍵或功能鍵。另一輸入機(jī)制可以是LCD430,IXD430可以包括觸摸屏能力并且還向用戶顯示文本和/或圖形。IXD控制器432將DSP402耦合至LCD430。
[0102]CXD照相機(jī)434(如果裝備有的話)使UE302能夠拍攝數(shù)字照片。DSP402經(jīng)由照相機(jī)控制器436與CCD照相機(jī)434通信。在另一實(shí)施例中,可以使用根據(jù)除了電荷耦合器照相機(jī)以外的技術(shù)操作的照相機(jī)。GPS傳感器438耦合至DSP402以對全球定位系統(tǒng)的信號進(jìn)行解碼,從而使UE302能夠確定其位置。還可以包括各種其它外圍設(shè)備,以提供額外的功能,例如無線電接收和電視接收。
[0103]圖5示出了可由DSP402執(zhí)行的軟件環(huán)境502。DSP402執(zhí)行操作系統(tǒng)驅(qū)動器504,操作系統(tǒng)驅(qū)動器504提供其余軟件通過其操作的平臺。操作系統(tǒng)驅(qū)動器504向UE302的硬件提供具有可以訪問應(yīng)用軟件的標(biāo)準(zhǔn)接口的驅(qū)動器。操作系統(tǒng)驅(qū)動器504包括:應(yīng)用管理服務(wù)(AMS) 506,其在UE302上運(yùn)行的應(yīng)用之間傳遞控制。圖5中還示出了網(wǎng)站瀏覽器應(yīng)用508、媒體播放器應(yīng)用510和Java應(yīng)用512。網(wǎng)站瀏覽器應(yīng)用508將UE302配置為用作網(wǎng)站瀏覽器,從而允許用戶將信息輸入表格并且選擇用于取回和瀏覽網(wǎng)頁的鏈接。媒體播放器應(yīng)用510將UE302配置為取回和播放音頻或視聽媒體。Java應(yīng)用512將UE302配置為提供游戲、實(shí)用工具和其它功能。組件514可以提供本文描述的功能。本文所描述的UE302、基站310和其它組件可以包括能夠執(zhí)行與上述動作有關(guān)的指令的處理組件。
[0104]雖然本公開中已經(jīng)提供了多個實(shí)施例,但是應(yīng)當(dāng)理解的是,在不偏離本公開的精神或范圍的情況下,可以以許多其它具體形式來體現(xiàn)所公開的系統(tǒng)和方法。本示例應(yīng)被認(rèn)為是示意性而非限制性的,并且并不旨在局限于本文給出的細(xì)節(jié)。例如,各種元件或組件可以組合或集成在另一系統(tǒng)中,或者可以省略或不實(shí)現(xiàn)某些特征。
[0105]如本文所使用的,術(shù)語“組件”、“系統(tǒng)”等旨在指代與計(jì)算機(jī)相關(guān)的實(shí)體,其是硬件、硬件和軟件的組合、軟件或執(zhí)行中的軟件。例如,組件可以是但不限于在處理器上運(yùn)行的進(jìn)程、處理器、對象、可執(zhí)行文件、執(zhí)行的線程、程序和/或計(jì)算機(jī)。舉例說明,在計(jì)算機(jī)上運(yùn)行的應(yīng)用和計(jì)算機(jī)本身都可以是組件。一個或多個組件可以駐留在執(zhí)行進(jìn)程或線程內(nèi),并且組件可以位于一個計(jì)算機(jī)上和/或分布在兩個或更多個計(jì)算機(jī)之間。
[0106]如本文所使用的,術(shù)語“用戶設(shè)備”和“UE”可以是指無線設(shè)備,例如,移動電話、個人數(shù)字助理(PDA)、手提電腦或膝上型計(jì)算機(jī)或者具有電信能力的類似設(shè)備或其它用戶代理(“UA”)。在一些實(shí)施例中,UE可以指代移動臺、無線設(shè)備。術(shù)語“UE”可以是指具有類似的功能但通常不是便攜式的設(shè)備,例如,臺式電腦、機(jī)頂盒或網(wǎng)絡(luò)節(jié)點(diǎn)。
[0107]此外,所公開的主題可以被實(shí)現(xiàn)為系統(tǒng)、方法、裝置或制品,其使用標(biāo)準(zhǔn)的編程和/或工程技術(shù)產(chǎn)生軟件、固件、硬件或其任意組合,以控制基于計(jì)算機(jī)或處理器的設(shè)備來實(shí)現(xiàn)本文詳細(xì)描述的方面。本文使用的術(shù)語“制品”(或者可替換地“計(jì)算機(jī)程序產(chǎn)品”)旨在涵蓋任意計(jì)算機(jī)可讀設(shè)備、載體或介質(zhì)可訪問的計(jì)算機(jī)程序。例如,計(jì)算機(jī)可讀介質(zhì)可以包括但不限于磁存儲設(shè)備(例如,硬盤、軟盤、磁帶等)、光盤(如壓縮光盤(CD)或數(shù)字多功能光盤(DVD)等)、智能卡和閃存設(shè)備(例如,卡、棒等)。當(dāng)然,本領(lǐng)域技術(shù)人員將認(rèn)識到,在不偏離要求保護(hù)的主題的范圍或精神的情況下,可以對該配置做出多種修改。
[0108]本文使用“示例性” 一詞來表示用作示例、實(shí)例或例證。本文描述為“示例性”的任意方面或設(shè)計(jì)不一定被理解為比其它方面或設(shè)計(jì)更優(yōu)選或更具優(yōu)勢。本領(lǐng)域技術(shù)人員將認(rèn)識到,可以在不偏離要求保護(hù)的主題的范圍、精神或意圖的情況下對該配置做出多種修改。此外,所公開的主題可以被實(shí)現(xiàn)為系統(tǒng)、方法、裝置或制品,其使用標(biāo)準(zhǔn)的編程和工程技術(shù)產(chǎn)生軟件、固件、硬件或其任意組合,以控制基于計(jì)算機(jī)或處理器的設(shè)備來實(shí)現(xiàn)本文詳細(xì)描述的方面。
[0109]此外,在不偏離本公開的范圍的情況下,在各個實(shí)施例中描述和示出為分立的或單獨(dú)的技術(shù)、系統(tǒng)、子系統(tǒng)和方法可以與其它系統(tǒng)、模塊、技術(shù)或方法組合或結(jié)合在一起。示出或討論為相互耦合或直接耦合或通信的其它項(xiàng)可以通過某個接口、設(shè)備或中間組件間接耦合或通信,不論是電氣的、機(jī)械的還是以其它方式。本領(lǐng)域技術(shù)人員可以確定改變、替換和變化的其它示例,并且在不偏離本文公開的精神和范圍的情況下進(jìn)行所述改變、替換和變化的其它示例。雖然已經(jīng)詳細(xì)地描述了本發(fā)明,但是應(yīng)當(dāng)理解的是,可以在不偏離由所附權(quán)利要求限定的本發(fā)明的精神和范圍的情況下,對本發(fā)明進(jìn)行各種改變、替換和變化。
【權(quán)利要求】
1.一種用于最大化在散列算法的迭代結(jié)束時將在下一次迭代中使用的寄存器的數(shù)量的方法,所述方法包括: 將安全散列算法迭代歸類和展開為偶數(shù)迭代和奇數(shù)迭代; 反轉(zhuǎn)所述偶數(shù)迭代中的計(jì)算順序,成為所述奇數(shù)迭代中的計(jì)算順序;以及 對偶數(shù)迭代和奇數(shù)迭代進(jìn)行組合以提供新的循環(huán)迭代。
2.根據(jù)權(quán)利要求1所述的方法,其中, 所述安全散列算法包括SHA-512算法和SHA-384算法中的至少一個。
3.根據(jù)權(quán)利要 求1所述的方法,其中, 通過將狀態(tài)字指派給高級處理器架構(gòu)中的寄存器,來利用所述高級處理器架構(gòu)的能力。
4.根據(jù)權(quán)利要求3所述的方法,其中, 所述高級處理器架構(gòu)包括ARM型處理器。
5.根據(jù)權(quán)利要求3所述的方法,其中, 所述能力包括數(shù)據(jù)預(yù)加載以及雙字加載和存儲。
6.根據(jù)權(quán)利要求3所述的方法,還包括: 在下一次迭代開始時耗用在迭代結(jié)束時駐留在所述寄存器中的狀態(tài)值。
7.根據(jù)權(quán)利要求1所述的方法,還包括: 在所述散列算法的后64次迭代中,使當(dāng)前8個狀態(tài)字的位置與針對當(dāng)前w字的指針之間的偏移保持恒定。
8.根據(jù)權(quán)利要求7所述的方法,其中, 所述當(dāng)前w字是16個字中的一個字;以及 輸入塊最初被復(fù)制在狀態(tài)中并且不斷被更新。
9.根據(jù)權(quán)利要求1所述的方法,其中, 所述散列算法的每16次迭代被組合在一起并且由計(jì)數(shù)器管理,所述計(jì)數(shù)器存儲當(dāng)前w字的索引,所述計(jì)數(shù)器用于確定其它w字的位置并且確定循環(huán)終止。
10.根據(jù)權(quán)利要求1所述的方法,還包括: 當(dāng)加載和存儲64比特的字時,將寄存器對R(d)、R(d+l)指派給所述64比特的字;以及其中, d是不等于14的偶數(shù),以利用所述處理器的雙字指令。
11.一種用于最大化在散列算法的迭代結(jié)束時將在下一次迭代中使用的寄存器的數(shù)量的系統(tǒng),所述系統(tǒng)包括能夠由處理器執(zhí)行以進(jìn)行以下操作的指令: 將安全散列算法迭代歸類和展開為偶數(shù)迭代和奇數(shù)迭代; 反轉(zhuǎn)所述偶數(shù)迭代中的計(jì)算順序,成為所述奇數(shù)迭代中的計(jì)算順序;以及 將偶數(shù)迭代和奇數(shù)迭代進(jìn)行組合以提供新的循環(huán)迭代。
12.根據(jù)權(quán)利要求11所述的系統(tǒng),其中, 所述安全散列算法包括SHA-512算法和SHA-384算法中的至少一個。
13.根據(jù)權(quán)利要求11所述的系統(tǒng),其中, 通過將狀態(tài)字指派給高級處理器架構(gòu)中的寄存器,來利用所述高級處理器架構(gòu)的能力。
14.根據(jù)權(quán)利要求13所述的系統(tǒng),其中, 所述高級處理器架構(gòu)包括ARM型處理器。
15.根據(jù)權(quán)利要求13所述的系統(tǒng),其中, 所述能力包括數(shù)據(jù)預(yù)加載以及雙字加載和存儲。
16.根據(jù)權(quán)利要求13所述的系統(tǒng),還包括: 在下一次迭代開始時耗用在迭代結(jié)束時駐留在所述寄存器中的狀態(tài)值。
17.根據(jù)權(quán)利要求11所述的系統(tǒng),還包括: 在所述散列算法的后64次迭代中,使當(dāng)前8個狀態(tài)字的位置與針對當(dāng)前w字的指針之間的偏移保持恒定。
18.根據(jù)權(quán)利要求17所述的系統(tǒng),其中, 所述當(dāng)前w字是16個字中的一個字;以及 輸入塊最初被復(fù)制在狀態(tài)中并且不斷被更新。
19.根據(jù)權(quán)利要求11所述的系統(tǒng),其中, 所述散列算法的每16次迭代被組合在一起并且由計(jì)數(shù)器管理,所述計(jì)數(shù)器存儲當(dāng)前w字的索引,所述計(jì)數(shù)器用于確定其它w字的位置并且確定循環(huán)終止。
20.根據(jù)權(quán)利要求11所述的系統(tǒng),還包括: 當(dāng)加載和存儲64比特的字時,將寄存器對R(d)、R(d+1)指派給所述64比特的字,其中, d是不等于14的偶數(shù),以利用所述處理器的雙字指令。
【文檔編號】G06F21/00GK103477341SQ201280017281
【公開日】2013年12月25日 申請日期:2012年4月5日 優(yōu)先權(quán)日:2011年4月6日
【發(fā)明者】內(nèi)文·莫里斯·納斯夫·艾貝德, 羅伯特·約翰·蘭伯特 申請人:塞爾蒂卡姆公司