基于向量和標(biāo)量的模取冪的制作方法
【專利摘要】實(shí)施例包括一種用于使用向量和標(biāo)量指令的混合來(lái)計(jì)算運(yùn)算(諸如,模取冪)以加速嚴(yán)重依賴于大數(shù)算術(shù)運(yùn)算的各種應(yīng)用(諸如,加密協(xié)議)的方法。實(shí)施例需要比更傳統(tǒng)的實(shí)踐少得多的指令來(lái)執(zhí)行運(yùn)算。這里描述了其它實(shí)施例。
【專利說(shuō)明】基于向量和標(biāo)量的模取冪
【背景技術(shù)】
[0001] 加密算法(諸如,RSA2048和支撐安全套接字層(SSL)連接、傳輸層安全(TLS)連 接等的其它基礎(chǔ)加密算法)為支持計(jì)算裝置(例如,服務(wù)器)而產(chǎn)生沉重的計(jì)算負(fù)荷。
[0002] RSA的傳統(tǒng)軟件實(shí)現(xiàn)方式是使用算術(shù)邏輯單元(ALU)指令(例如,ADD/ADC/MUL) 的"標(biāo)量碼"。ADD/ADC/MUL的性能的提高已使標(biāo)量實(shí)現(xiàn)方式在現(xiàn)代處理器上更加高效。單 指令多數(shù)據(jù)(SMD)或"向量"架構(gòu)仍然能夠在標(biāo)量碼上提供改進(jìn)。SMD是這樣的架構(gòu):?jiǎn)?個(gè)指令同時(shí)計(jì)算幾個(gè)輸入的函數(shù)。這些輸入被稱為"元素"并且駐留在將一些輸入保存在 一起的寄存器中。早期SMD架構(gòu)使用在64位SMD寄存器上操作的指令(例如,MMX)。其 它架構(gòu)(例如,SSE)引入了 128位寄存器。再其它架構(gòu)(例如,高級(jí)向量擴(kuò)展(AVX)、AVX2 等)通過(guò)例如在256位寄存器上引入非破壞性目的地和浮點(diǎn)運(yùn)算來(lái)在幾個(gè)方面擴(kuò)展SSE架 構(gòu)。
[0003] 許多方法(例如,用在媒體處理中的離散余弦變換(DCT))對(duì)多個(gè)獨(dú)立元素進(jìn)行操 作,并且因此固有地適合SMD架構(gòu)。然而,考慮到例如由于算術(shù)運(yùn)算(諸如,加法和乘法) 期間的進(jìn)位傳送而不獨(dú)立的多位數(shù)的數(shù)位,在RSA應(yīng)用和許多其它應(yīng)用中重要的大數(shù)(例 如,多位)算術(shù)并不天然地適合向量架構(gòu)。
【專利附圖】
【附圖說(shuō)明】
[0004] 圖1描繪用于進(jìn)位傳送的方法。
[0005] 圖2描繪本發(fā)明的實(shí)施例中的冗余表示。
[0006] 圖3描繪本發(fā)明的實(shí)施例中的用于冗余表示轉(zhuǎn)換的方法。
[0007] 圖4提供本發(fā)明的實(shí)施例中的用于執(zhí)行算術(shù)運(yùn)算的例子。
[0008] 圖5描繪本發(fā)明的實(shí)施例中的用于進(jìn)位傳送的方法。
[0009] 圖6描繪本發(fā)明的實(shí)施例中的用于非約分(Non-Reduced)蒙哥馬利(Montgomery) 乘法的逐字計(jì)算的方法。
[0010] 圖7描繪本發(fā)明的實(shí)施例中的用于非約分蒙哥馬利乘法的計(jì)算的方法。
[0011] 圖8描繪本發(fā)明的實(shí)施例中的用于確定模取冪的方法。
[0012] 圖9描繪本發(fā)明的實(shí)施例中的用于使用標(biāo)量和向量指令的混合確定非約分蒙哥 馬利乘法的方法。
[0013] 圖10描繪本發(fā)明的實(shí)施例中的用于使用標(biāo)量和向量指令的混合確定非約分蒙哥 馬利乘法的優(yōu)化方法。
[0014] 圖11描繪本發(fā)明的實(shí)施例中的用于使用標(biāo)量和向量指令的混合確定非約分蒙哥 馬利乘法的方法。
[0015] 圖12包括用于與本發(fā)明的各種實(shí)施例一起使用的系統(tǒng)。
【具體實(shí)施方式】
[0016] 在下面的描述中,闡述了許多特定細(xì)節(jié),但可在沒(méi)有這些特定細(xì)節(jié)的情況下實(shí)施 本發(fā)明的實(shí)施例。公知電路、結(jié)構(gòu)和技術(shù)未被詳細(xì)地示出以避免模糊對(duì)本描述的理解。"實(shí) 施例"、"各種實(shí)施例"等指示如此描述的(一個(gè)或多個(gè))實(shí)施例可包括特定特征、結(jié)構(gòu)或特 性,但并非每個(gè)實(shí)施例都必須包括所述特定特征、結(jié)構(gòu)或特性。一些實(shí)施例可具有針對(duì)其 它實(shí)施例描述的特征中的一些特征、全部特征或者不具有針對(duì)其它實(shí)施例描述的特征。"第 一"、"第二"、"第三"等描述共同對(duì)象并且指示正在表示相似對(duì)象的不同實(shí)例。這種形容詞 并不意味著如此描述的對(duì)象必須在時(shí)間上、在空間上、在等級(jí)上或以任何其它方式處于給 定順序。"連接"可指示元件彼此處于直接物理或電氣接觸,并且"耦合"可指示元件彼此協(xié) 作或相互作用,但它們可處于直接物理或電氣接觸或者可不處于直接物理或電氣接觸。此 夕卜,盡管類似或相同數(shù)字可被用于在不同圖中指示相同或類似部分,但這樣操作并不意味 著包括類似或相同數(shù)字的所有圖構(gòu)成單個(gè)或同一實(shí)施例。
[0017] 實(shí)施例包括一種用于使用向量和標(biāo)量指令的混合來(lái)計(jì)算模取冪以加速嚴(yán)重依賴 于大數(shù)算術(shù)運(yùn)算的各種應(yīng)用(諸如,加密協(xié)議)的方法。實(shí)施例需要比更傳統(tǒng)的實(shí)踐少得 多的指令以執(zhí)行操作。
[0018] 實(shí)施例包括一種用于使用向量(SIMD)指令計(jì)算模取冪的方法,該方法性能優(yōu)于 傳統(tǒng)標(biāo)量(ALU)實(shí)現(xiàn)方式。實(shí)施例在各種平臺(tái)(諸如,支持SIMD指令(例如,AVX指令集) 的平臺(tái))上加速RSA2048協(xié)議。實(shí)施例適合1024位模取冪,并且需要比傳統(tǒng)實(shí)現(xiàn)方式(例 如,OpenSSL 1.0.1實(shí)現(xiàn)方式)少得多的指令。這可"加快"RSA2048執(zhí)行以及其它加密協(xié) 議的執(zhí)行。
[0019] 實(shí)施例包括一種用于將SIMD架構(gòu)用于大數(shù)算術(shù)(諸如,與模取冪關(guān)聯(lián)的大數(shù)算 術(shù))的高效方法。實(shí)施例高效地計(jì)算蒙哥馬利乘法(和求平方)(的變型),并且包括SMD 和ALU單元之間的計(jì)算工作負(fù)荷的平衡。這解決了存在于純粹SIMD或純粹ALU實(shí)現(xiàn)方式 中的瓶頸。
[0020] 實(shí)施例與具有2n位模數(shù)的RSA密碼系統(tǒng)一起使用,N = PxQ,其中P和Q是η位 素?cái)?shù)。2η位私有指數(shù)是d。2η位消息C的解密可需要一個(gè)2η位模取冪(^ mod Ν。為了使 用中國(guó)余數(shù)定理(CRT),預(yù)先計(jì)算下面的量:屯=d mod (P-1),d2 = d mod (Q-1)和Qinv =Q-1 mod P。然后,計(jì)算兩個(gè)n位模取冪,即^ = Cdl mod卩和仏=Cd2 mod Q(Mi、M2、屯、 d2是n位整數(shù))。通過(guò)使用Cd mod N = M2+ (Qinv X (Μι - M2) mod P) X Q來(lái)重新組合 這些結(jié)果。使用CRT,2n位RSA解密的計(jì)算成本近似為一個(gè)n位模取冪的計(jì)算成本的兩倍。 通過(guò)(RSA密鑰的)構(gòu)造,2 1^1〈 P,Q〈 2η。
[0021] 模取冪計(jì)算中的組成部件是模乘法或等同物。實(shí)施例使用非約分蒙哥馬利乘法 (NRMM),NRMM是蒙哥馬利乘法(ΜΜ)的變型。對(duì)于麗,Μ是奇整數(shù)(模數(shù)),a、b是兩個(gè)整 數(shù),使得〇 < a,b〈 M,并且t是正整數(shù)(此后,所有的變量是非負(fù)整數(shù))。關(guān)于t的a乘 以b,模Μ的MM由MM(a,b) =aXbX2imodM定義。對(duì)于NRMM,M是奇整數(shù)(模數(shù)),a、 b是兩個(gè)整數(shù),使得0彡a,b〈 2M,并且t是正整數(shù),使得2t MM。關(guān)于t的a乘以b,模 Μ的NRMM由下面的等式定義:
【權(quán)利要求】
1. 一種由至少一個(gè)處理器執(zhí)行的方法,包括: 將第一和第二整數(shù)從第一格式轉(zhuǎn)換成第二格式;其中與在第一格式中相比,第一和第 二整數(shù)各自均在第二格式中具有更多數(shù)位,并且與在第一格式中相比,在第二格式中的每 個(gè)數(shù)位在位大小方面更?。? 使用標(biāo)量和向量指令二者執(zhí)行第一和第二轉(zhuǎn)換的數(shù)位之間的算術(shù)運(yùn)算;以及 基于算術(shù)運(yùn)算確定模取冪(ME)。
2. 如權(quán)利要求1所述的方法,包括:基于ME確定加密值。
3. 如權(quán)利要求1所述的方法,其中第一格式中的所述數(shù)位被存儲(chǔ)在相等大小的第一容 器中,該方法包括將第二格式中的所述數(shù)位存儲(chǔ)在相等大小的第二容器中,第二容器在大 小方面等于第一容器。
4. 如權(quán)利要求3所述的方法,包括:將使用向量指令產(chǎn)生的進(jìn)位值存儲(chǔ)在第二容器之 一的未使用部分中。
5. 如權(quán)利要求3所述的方法,其中所述第一格式包括第一基數(shù)值,第二格式包括第二 基數(shù)值,第二基數(shù)值高于第一基數(shù)值,并且第二格式是冗余的。
6. 如權(quán)利要求1所述的方法,其中使用標(biāo)量指令執(zhí)行所述算術(shù)運(yùn)算包括執(zhí)行算術(shù)和邏 輯(ALU)指令,并且使用向量指令執(zhí)行所述算術(shù)運(yùn)算包括同時(shí)執(zhí)行單指令多數(shù)據(jù)(SMD)指 令。
7. 如權(quán)利要求1所述的方法,其中使用標(biāo)量和向量指令執(zhí)行所述算術(shù)運(yùn)算包括:同時(shí) 對(duì)第二格式中的多個(gè)數(shù)位執(zhí)行算術(shù)運(yùn)算并且同時(shí)執(zhí)行所述標(biāo)量和向量指令。
8. 如權(quán)利要求1所述的方法,其中第一格式中的第一整數(shù)具有第一總數(shù)的數(shù)位,第一 總數(shù)的數(shù)位擴(kuò)展到最高有效數(shù)位和最低有效數(shù)位并且包括最高有效數(shù)位和最低有效數(shù)位, 第二格式中的第一整數(shù)具有第二總數(shù)的數(shù)位,第二總數(shù)的數(shù)位擴(kuò)展到最高有效數(shù)位和最低 有效數(shù)位并且包括最高有效數(shù)位和最低有效數(shù)位,并且第二總數(shù)的數(shù)位超過(guò)第一總數(shù)的數(shù) 位。
9. 如權(quán)利要求1所述的方法,包括: 確定使用向量指令產(chǎn)生的第一和第二中間乘積; 針對(duì)第一中間乘積確定第一進(jìn)位值;以及 獨(dú)立于第一進(jìn)位值對(duì)第一和第二中間乘積求和。
10. 如權(quán)利要求1所述的方法,包括: 確定使用向量指令產(chǎn)生的第一和第二中間乘積; 針對(duì)第一和第二中間乘積分別確定第一和第二進(jìn)位值; 對(duì)第一和第二中間乘積求和以確定中間乘積值之和;以及 對(duì)第一和第二進(jìn)位值求和以確定進(jìn)位值之和。
11. 如權(quán)利要求10所述的方法,包括: 基于中間乘積值之和和進(jìn)位值之和確定累加值;以及 以第一格式對(duì)累加值進(jìn)行格式化。
12. 如權(quán)利要求1所述的方法,包括: 使用所述標(biāo)量指令對(duì)第一和第二轉(zhuǎn)換的數(shù)位的最低有效數(shù)位執(zhí)行算術(shù)運(yùn)算;以及 使用所述向量指令對(duì)第一和第二轉(zhuǎn)換的數(shù)位的最高有效數(shù)位執(zhí)行算術(shù)運(yùn)算。
13. 至少一個(gè)機(jī)器可讀介質(zhì),包括多個(gè)指令,響應(yīng)于在計(jì)算裝置上執(zhí)行所述多個(gè)指令, 使計(jì)算裝置執(zhí)行如權(quán)利要求1至12中任何一項(xiàng)所述的方法。
14. 一種通信裝置,被布置為執(zhí)行如權(quán)利要求1至12中任何一項(xiàng)所述的方法。
15. -種設(shè)備,包括用于執(zhí)行如權(quán)利要求1至12中任何一項(xiàng)的裝置。
16. -種設(shè)備,包括: 存儲(chǔ)器; 至少一個(gè)處理器,耦合到存儲(chǔ)器以執(zhí)行操作,所述操作包括: 將第一和第二整數(shù)從第一格式轉(zhuǎn)換成第二格式;其中與在第一格式中相比,第一和第 二整數(shù)各自均在第二格式中具有更多數(shù)位,并且與在第一格式中相比,在第二格式中的每 個(gè)數(shù)位在位大小方面更?。? 使用標(biāo)量和向量指令二者執(zhí)行第一和第二轉(zhuǎn)換的數(shù)位之間的算術(shù)運(yùn)算;以及 基于所述算術(shù)運(yùn)算確定模取冪(ME)。
17. 如權(quán)利要求16所述的設(shè)備,其中第一格式中的所述數(shù)位被存儲(chǔ)在相等大小的第一 容器中,并且所述操作包括: 將第二格式中的所述數(shù)位存儲(chǔ)在相等大小的第二容器中,第二容器在大小方面等于第 一容器;以及 將使用向量指令產(chǎn)生的進(jìn)位值存儲(chǔ)在第二容器之一的未使用部分中。
18. 如權(quán)利要求16所述的設(shè)備,其中使用向量指令執(zhí)行所述算術(shù)運(yùn)算包括同時(shí)對(duì)第二 格式中的多個(gè)數(shù)位執(zhí)行算術(shù)運(yùn)算。
19. 如權(quán)利要求16所述的設(shè)備,其中所述操作包括: 確定使用向量指令產(chǎn)生的第一和第二中間乘積; 針對(duì)第一中間乘積確定第一進(jìn)位值;以及 獨(dú)立于第一進(jìn)位值對(duì)第一和第二中間乘積求和。
20. 如權(quán)利要求16所述的設(shè)備,其中所述操作包括: 使用標(biāo)量指令對(duì)第一和第二轉(zhuǎn)換的數(shù)位的最低有效數(shù)位執(zhí)行算術(shù)運(yùn)算;以及 使用向量指令對(duì)第一和第二轉(zhuǎn)換的數(shù)位的最高有效數(shù)位執(zhí)行算術(shù)運(yùn)算。
【文檔編號(hào)】G06F9/305GK104254833SQ201280072786
【公開日】2014年12月31日 申請(qǐng)日期:2012年5月30日 優(yōu)先權(quán)日:2012年5月30日
【發(fā)明者】S.古伊龍, V.克拉斯諾夫 申請(qǐng)人:英特爾公司