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

使用查找表的模乘運(yùn)算的制作方法

文檔序號(hào):10534463閱讀:340來源:國(guó)知局
使用查找表的模乘運(yùn)算的制作方法
【專利摘要】各實(shí)施例涉及一種編碼有用于由處理器執(zhí)行的用于執(zhí)行模冪運(yùn)算的指令的非瞬時(shí)機(jī)器可讀介質(zhì)以及方法、系統(tǒng),所述非瞬時(shí)機(jī)器可讀介質(zhì)包括:用于迭代地計(jì)算模冪bd mod n的指令,包括:用于將工作值c平方的指令;以及用于根據(jù)指數(shù)d的比特有條件地將工作值c乘以底數(shù)值b的指令,包括:用于將所述工作值c無條件地乘以與所述底數(shù)值相關(guān)聯(lián)的查找表?xiàng)l目的指令。
【專利說明】
使用查找表的模乘運(yùn)算
技術(shù)領(lǐng)域
[0001] 本文公開的各實(shí)施例一般地涉及模冪運(yùn)算,更具體但非排除地,涉及針對(duì)基于RSA 的數(shù)字簽名和解密方案的模冪運(yùn)算。
【背景技術(shù)】
[0002] 諸如RSA的許多密碼系統(tǒng)利用模冪運(yùn)算作為模糊數(shù)據(jù)的一個(gè)步驟。具體地,為了對(duì) 數(shù)據(jù)進(jìn)行加密,將編碼數(shù)據(jù)a提升到公共指數(shù)e次冪,并使用值N對(duì)其進(jìn)行模運(yùn)算:c = ae mod N。解密稍后被執(zhí)行,并且包括將加密數(shù)據(jù)提升到私人指數(shù)d次冪:a = cd mod N。類似的模冪 運(yùn)算可用于創(chuàng)建數(shù)字簽名,差別在于對(duì)私人指數(shù)和公共指數(shù)的使用被交換:私人指數(shù)d被用 于初始地對(duì)數(shù)據(jù)加密,而公共指數(shù)e被用于稍后驗(yàn)證簽名。
[0003] 傳統(tǒng)地,針對(duì)密鑰3元組<e,d,N>選擇的值非常大。例如,RSA通常使用尺寸為1024 到4096比特的密鑰。由于這些值很大,現(xiàn)有算法將使用過度量的處理時(shí)間來計(jì)算給定密碼 系統(tǒng)所使用的模冪運(yùn)算。

【發(fā)明內(nèi)容】

[0004] 各種實(shí)施例簡(jiǎn)單總結(jié)如下。在以下概述中有一些簡(jiǎn)化和省略,其旨在突出和介紹 各實(shí)施例的一些方面,而非限制本發(fā)明的范圍。在下面的部分中將給出足以使本領(lǐng)域普通 技術(shù)人員利用和使用發(fā)明構(gòu)思的優(yōu)選實(shí)施例的詳細(xì)描述。
[0005] 本文描述的多種實(shí)施例涉及一種編碼有指令的非瞬時(shí)機(jī)器可讀介質(zhì)以及相關(guān)方 法和設(shè)備,所述指令用于由處理器執(zhí)行以用于執(zhí)行模冪運(yùn)算,所述非瞬時(shí)機(jī)器可讀介質(zhì)包 括:用于迭代地計(jì)算模冪b d mod n的指令,包括:用于將工作值c平方的指令;以及用于根據(jù) 指數(shù)d的比特有條件地將工作值c乘以底數(shù)值b的指令,包括:用于將所述工作值c無條件地 乘以與所述底數(shù)值相關(guān)聯(lián)的查找表?xiàng)l目的指令。
[0006] 描述了多種實(shí)施例,其中,在余數(shù)系統(tǒng)RNS中表示所述工作值C和所述底數(shù)值b,并 且用于將所述工作值c無條件地乘以與所述底數(shù)值相關(guān)聯(lián)的查找表?xiàng)l目的指令包括:將表 示所述工作值C的多個(gè)工作RNS整數(shù)乘以與表示所述底數(shù)值b的多個(gè)底數(shù)RNS整數(shù)相關(guān)聯(lián)的 多個(gè)查找表?xiàng)l目。
[0007] 描述了多種實(shí)施例,其中,用于將表示所述工作值c的多個(gè)工作RNS整數(shù)乘以與表 示所述底數(shù)值b的多個(gè)底數(shù)RNS整數(shù)相關(guān)聯(lián)的多個(gè)查找表?xiàng)l目的指令包括:用于將表示所述 工作值c的所述多個(gè)工作RNS整數(shù)中的一個(gè)工作RNS整數(shù)乘以與表示所述底數(shù)值b的所述多 個(gè)底數(shù)RNS整數(shù)中的底數(shù)RNS整數(shù)相關(guān)聯(lián)的一個(gè)查找表?xiàng)l目的指令,所述查找表?xiàng)l目來自與 對(duì)應(yīng)于所述底數(shù)RNS整數(shù)的RNS模數(shù)相關(guān)聯(lián)的查找表。
[0008] 描述了多種實(shí)施例,其中,用于迭代地計(jì)算所述模冪的指令包括:用于在所述指數(shù) d的多個(gè)比特位置中進(jìn)行迭代的指令;以及用于將所述工作值c無條件地乘以與所述底數(shù)值 b相關(guān)聯(lián)的查找表?xiàng)l目的指令包括:用于利用多個(gè)查找表中與當(dāng)前比特位置相關(guān)聯(lián)的查找 表的指令。
[0009] 描述了多種實(shí)施例,其中,用于根據(jù)指數(shù)d的比特有條件地將工作值c乘以底數(shù)值b 的指令包括:用于執(zhí)行蒙哥馬利乘法的指令;以及用于執(zhí)行蒙哥馬利乘法的指令調(diào)用所述 用于將所述工作值c無條件地乘以與所述底數(shù)值相關(guān)聯(lián)的查找表?xiàng)l目的指令。
[0010] 多種實(shí)施例還包括:用于從另一設(shè)備接收由所述用于將所述工作值c無條件地乘 以與所述底數(shù)值相關(guān)聯(lián)的查找表?xiàng)l目的指令使用的查找表的集合的指令。
[0011] 本文描述的多種實(shí)施例涉及一種編碼有指令的非瞬時(shí)機(jī)器可讀介質(zhì)以及相關(guān)設(shè) 備和方法,所述指令用于由處理器執(zhí)行以用于產(chǎn)生用于執(zhí)行模冪運(yùn)算的查找表,所述非瞬 時(shí)機(jī)器可讀介質(zhì)包括:用于初始化分別與秘密指數(shù)d內(nèi)的不同比特位置相對(duì)應(yīng)的多個(gè)查找 表的指令;用于產(chǎn)生用于添入所述多個(gè)查找表中的值的指令,包括:用于當(dāng)所述秘密指數(shù)d 在與查找表相關(guān)聯(lián)的比特位置處攜帶第一比特值時(shí)根據(jù)第一方法產(chǎn)生針對(duì)所述查找表的 值的指令;用于當(dāng)所述秘密指數(shù)d在與查找表相關(guān)聯(lián)的比特位置處攜帶與第一比特值不同 的第二比特值時(shí)根據(jù)與第一方法不同的第二方法產(chǎn)生針對(duì)所述查找表的值的指令。
[0012] 描述了多種實(shí)施例,其中,用于產(chǎn)生用于添入所述多個(gè)查找表中的值的指令包括: 用于模糊所產(chǎn)生的值的指令。
[0013] 描述了多種實(shí)施例,其中,用于模糊所產(chǎn)生的值的指令包括:用于對(duì)用于添入第一 查找表中的第一值執(zhí)行第一數(shù)學(xué)函數(shù)的指令;以及用于對(duì)用于添入第二查找表中的第二值 執(zhí)行第二數(shù)學(xué)函數(shù)的指令,其中,第二數(shù)學(xué)函數(shù)是第一數(shù)學(xué)函數(shù)的有效逆函數(shù)。
[0014]描述了多種實(shí)施例,其中:第一數(shù)學(xué)函數(shù)將模糊值并入第一值中,并且第二數(shù)學(xué)函 數(shù)將所述模糊值的模逆的平方并入第二值中。
[0015]描述了多種實(shí)施例,其中,所述模糊值包括:基于第一值將被存儲(chǔ)在第一查找表中 的位置的索引而不變的恒定值。
[0016]描述了多種實(shí)施例,其中,所述模糊值包括:第一值將被存儲(chǔ)在所述查找表中的位 置的索引被提升到恒定指數(shù)值次冪。
[0017]描述了多種實(shí)施例,其中,用于模糊所產(chǎn)生的值的指令包括:用于對(duì)用于添入第一 查找表中的第一值執(zhí)行第一數(shù)學(xué)函數(shù)的指令;以及用于對(duì)用于添入第二查找表中的第二值 執(zhí)行第二數(shù)學(xué)函數(shù)的指令,其中,第二數(shù)學(xué)函數(shù)是第一數(shù)學(xué)函數(shù)的有效逆函數(shù)。
[0018]描述了多種實(shí)施例,其中:第一數(shù)學(xué)函數(shù)將模糊值并入第一值中,并且第二數(shù)學(xué)函 數(shù)將所述模糊值的模逆的平方并入第二值中。
[0019]描述了多種實(shí)施例,其中,所述模糊值包括:基于第一值將被存儲(chǔ)在第一查找表中 的位置的索引而不變的恒定值。
[0020] 描述了多種實(shí)施例,其中,所述模糊值包括:第一值將被存儲(chǔ)在所述查找表中的位 置的索引被提升到恒定指數(shù)值次冪。
[0021] 描述了多種實(shí)施例,其中,第一方法和第二方法共同共享至少一個(gè)指令。
[0022] 描述了多種實(shí)施例,其中,第一方法包括用于將所述值將被存儲(chǔ)在查找表中的位 置的索引并入所述值中的區(qū)分指令;以及第二方法不包括所述區(qū)分指令。
[0023] 描述了多種實(shí)施例,其中,用于初始化分別與秘密指數(shù)d內(nèi)的不同比特位置相對(duì)應(yīng) 的多個(gè)查找表的指令包括:用于確定將用于余數(shù)系統(tǒng)RNS中的模數(shù)M的集合的指令;以及用 于針對(duì)所述模數(shù)M的集合中的每個(gè)模數(shù)nu初始化分別與秘密指數(shù)d內(nèi)的不同比特位置相對(duì) 應(yīng)的多個(gè)查找表的指令。
[0024] 本文描述的多種實(shí)施例涉及一種編碼有指令的非瞬時(shí)機(jī)器可讀介質(zhì)以及相關(guān)設(shè) 備和方法,所述指令用于由處理器執(zhí)行以用于產(chǎn)生用于執(zhí)行模冪運(yùn)算的查找表,所述非瞬 時(shí)機(jī)器可讀介質(zhì)包括:用于初始化分別與秘密指數(shù)d的比特位置與余數(shù)系統(tǒng)RNS模數(shù)的多個(gè) 配對(duì)相對(duì)應(yīng)的多個(gè)查找表的指令;用于當(dāng)所述秘密指數(shù)d在與第一查找表Lo.dg對(duì)應(yīng)的 比特位置處的值為〇時(shí)將所述多個(gè)查找表中的第一查找表Lo, k的值設(shè)置為
[0025] L〇imi:(at) = (S0 * aeL°)mod mt
[0026] 的指令,其中,ai是針對(duì)RNS模數(shù)中的模數(shù)nu的潛在RNS整數(shù),5。是第一預(yù)定常數(shù),eo 是第一預(yù)定指數(shù);以及用于當(dāng)所述秘密指數(shù)d在與第一查找表Lo,k相對(duì)應(yīng)的比特位置處的值 為1時(shí)將所述多個(gè)查找表中的第一查找表Lo, mi的值設(shè)置為
[0027] LQm.(aL) = (S0 * a;e〇 * at )mod mt
[0028] 的指令。
[0029]多種實(shí)施例還包括:用于當(dāng)所述秘密指數(shù)d在與最后的查找表Lk-1>mi相對(duì)應(yīng)的比特 位置處的值為0時(shí),將所述多個(gè)查找表中的第一查找表Lk-1>mi的值設(shè)置為
[0030] ife-i,m,(a/) - {iSk^7710^ * (ttirl)2efc_2) m〇d- m/.
[0031]的指令,其中,ai是針對(duì)RNS模數(shù)中的模數(shù)nu的潛在RNS整數(shù),知-2是最后的預(yù)定常 數(shù),ek-2是最后的預(yù)定指數(shù),N是用于模冪運(yùn)算的模數(shù);以及用于當(dāng)所述秘密指數(shù)d在與最后 的查找表相對(duì)應(yīng)的比特位置處的值為0時(shí)將所述多個(gè)查找表中的第一查找表的 值設(shè)置為
[0032] Lk_lm.(ai) - ^(5^2?nod N) * (a^1)26^-2 * aL ^ mod mL [0033] 的指令。
[0034] 多種實(shí)施例還包括:用于當(dāng)所述秘密指數(shù)d在與中間查找表對(duì)應(yīng)的比特位 置處的值為〇時(shí)將所述多個(gè)查找表中的第一查找表k,mi的值設(shè)置為
[0035] Ljim.(aL) = * Sjmod N) * (af1)2^-1 * mod
[0036] 的指令,其中,ai是針對(duì)RNS模數(shù)mi中的模數(shù)mi的潛在RNS整數(shù),心^是針對(duì)中間查找 表的先前預(yù)定常數(shù),心是針對(duì)中間查找表的當(dāng)前預(yù)定常數(shù),eH是針對(duì)中間查找表的先前預(yù) 定指數(shù),幻是針對(duì)中間查找表的當(dāng)前預(yù)定指數(shù),N是用于模冪運(yùn)算的模數(shù);以及用于當(dāng)所述 秘密指數(shù)d在與中間查找表Lj, mi相對(duì)應(yīng)的比特位置處的值為1時(shí)將所述多個(gè)查找表中的第 一查找表k,mi的值設(shè)置為
[0037] * SjMod iV) * * ol^ * at J mod m,i
[0038] 的指令。
[0039] 本文描述的多種實(shí)施例涉及一種用于提供白箱模冪運(yùn)算的系統(tǒng),包括:第一設(shè)備, 包括第一處理器和如上所述編碼有用于由處理器執(zhí)行以用于執(zhí)行模冪運(yùn)算的指令的非瞬 時(shí)機(jī)器可讀介質(zhì);以及第二設(shè)備,包括第二處理器和如上所述編碼有用于由處理器執(zhí)行以 用于產(chǎn)生用于執(zhí)行模冪運(yùn)算的查找表的指令的非瞬時(shí)機(jī)器可讀介質(zhì)之一,其中,第二設(shè)備 產(chǎn)生由第一設(shè)備用來在不訪問所述秘密指數(shù)d的情況下執(zhí)行模冪運(yùn)算的多個(gè)查找表。
【附圖說明】
[0040] 為了更好地理解各實(shí)施例,現(xiàn)在參考附圖,其中:
[0041] 圖1示出用于實(shí)施本文描述的模冪方案的硬件系統(tǒng)100的示例;
[0042] 圖2示出用于向用戶設(shè)備提供安全內(nèi)容和對(duì)該安全內(nèi)容進(jìn)行處理的軟件應(yīng)用的系 統(tǒng)的示例;
[0043] 圖3示出用于計(jì)算模冪的方法的示例;
[0044] 圖4示出用于在余數(shù)系統(tǒng)(RNS)中計(jì)算兩個(gè)數(shù)的乘積的方法的示例;
[0045] 圖5示出用于執(zhí)行條件乘法的查找表的集合的第一示例;
[0046] 圖6示出用于產(chǎn)生查找表的集合的第一示例的方法的示例;
[0047] 圖7示出用于使用查找表執(zhí)行條件乘法的方法的示例;
[0048] 圖8示出用于執(zhí)行條件乘法的查找表的集合的第二示例;
[0049] 圖9示出用于產(chǎn)生查找表的集合的第二示例的方法的示例;
[0050] 圖10示出用于執(zhí)行條件乘法的查找表的集合的第三示例;
[0051] 圖11示出用于產(chǎn)生查找表的集合的第三示例的方法的示例。
[0052] 為幫助理解,使用相同的附圖標(biāo)記來表示具有本質(zhì)上相同或相似結(jié)構(gòu)或本質(zhì)上相 同或相似功能的元件。
【具體實(shí)施方式】
[0053] 本文給出的描述和【附圖說明】了多個(gè)原理。因此可以理解的是,本領(lǐng)域的技術(shù)人員 將能夠設(shè)計(jì)出雖然沒有明確地描述或示出但體現(xiàn)了本公開的原理并包括在其范圍之內(nèi)的 各種布置。如本文的使用,術(shù)語"或"表示非限制性的或(g卩,和/或),除非另外地指示(例如 "否則"或"或者備選地")。此外,本文中描述的各種實(shí)施例并不是互斥的,并且可以組合以 產(chǎn)生包含本文中描述的原理的附加實(shí)施例。
[0054] 考慮到密碼系統(tǒng)的上下文中的可能在計(jì)算模冪時(shí)涉及的過大值,希望實(shí)施用于高 效地執(zhí)行這種功能的算法。本文描述的各方法利用對(duì)值的余數(shù)系統(tǒng)(RNS)表示法進(jìn)行的平 方乘方法,以及對(duì)比初始底數(shù)和指數(shù)更小的值進(jìn)行的蒙哥馬利乘法,從而提供在計(jì)算成本 上比現(xiàn)有算法更少的算法。
[0055] 由于加密的環(huán)境和應(yīng)用(諸如在不受信任平臺(tái)上的應(yīng)用)增加,最近已經(jīng)致力于 "白箱密碼"的概念,其中,密碼方案被開發(fā)為即使密碼實(shí)現(xiàn)對(duì)于攻擊者公開也是安全的。白 箱密碼涉及被工程化為在不受信任平臺(tái)上執(zhí)行的密碼算法的軟件實(shí)現(xiàn)的設(shè)計(jì)和分析。具體 地,這是特定設(shè)備的用戶可以(用密鑰)對(duì)用其公鑰加密的消息解密,但是不能提取或獲得 足夠的信息以恢復(fù)該密鑰的情景。此外,假設(shè)在這種實(shí)現(xiàn)中,用戶可以是攻擊者:例如,攻擊 者可以完全訪問軟件實(shí)現(xiàn),可以在任何時(shí)間暫停、改變和恢復(fù)軟件實(shí)現(xiàn)的執(zhí)行。
[0056]例如,在數(shù)字版權(quán)管理系統(tǒng)中,希望向內(nèi)容消費(fèi)者提供能夠簡(jiǎn)單地將他們認(rèn)證為 有權(quán)訪問內(nèi)容的一方的能力。然而,也希望防止內(nèi)容消費(fèi)者為了向其它方提供對(duì)僅原始內(nèi) 容消費(fèi)者有權(quán)訪問的相同內(nèi)容的訪問的目的,而與其它方共享證書。
[0057]針對(duì)該情景的一個(gè)白箱方法在于向內(nèi)容消費(fèi)者提供使用為內(nèi)容消費(fèi)者分配的私 鑰d對(duì)消息進(jìn)行數(shù)字簽名的能力,而不將該私鑰d實(shí)際提供給內(nèi)容消費(fèi)者。為此,可以向內(nèi)容 消費(fèi)者提供可用于計(jì)算模冪的基于私鑰d的預(yù)計(jì)算的值的查找表。例如,在各系統(tǒng)中,可以 由例如中央數(shù)字版權(quán)管理服務(wù)器向內(nèi)容消費(fèi)者提供查找表,所述中央數(shù)字版權(quán)管理服務(wù)器 用于向?qū)κ鼙Wo(hù)內(nèi)容進(jìn)行服務(wù)的一個(gè)或多個(gè)媒體服務(wù)器認(rèn)證內(nèi)容消費(fèi)者。內(nèi)容消費(fèi)者可以 隨后使用該查找表來計(jì)算數(shù)字簽名,而不需要知道他們的私鑰d的值。本文描述的各實(shí)施例 通過提供使設(shè)備能夠在不實(shí)際知道秘密指數(shù)d的情況下使用該秘密指數(shù)d來計(jì)算模冪的查 找表,實(shí)現(xiàn)高效模冪方案的白箱實(shí)施。
[0058] 將理解,雖然在數(shù)字簽名方案的上下文中解釋本文描述的各示例,但是本文描述 的各方面可以適用于使用公鑰對(duì)數(shù)據(jù)加密并使用私鑰檢索的數(shù)據(jù)加密方案。
[0059] 圖1示出用于實(shí)施本文描述的模冪方案的硬件系統(tǒng)100的示例。硬件系統(tǒng)100可以 對(duì)應(yīng)于可以參與密碼系統(tǒng)方案中的幾乎任何設(shè)備,例如,個(gè)人計(jì)算機(jī),膝上型電腦、平板、移 動(dòng)通信設(shè)備、服務(wù)器、筆記本、智能卡、近場(chǎng)通信(NFC)設(shè)備或其它設(shè)備。例如,硬件系統(tǒng)可以 對(duì)應(yīng)于用于接收和渲染數(shù)字內(nèi)容的機(jī)頂盒或者用于提供數(shù)字內(nèi)容的服務(wù)器。本文描述的方 法的各種應(yīng)用將明顯可用于例如數(shù)字版權(quán)管理(DRM)、銀行應(yīng)用以及在諸如移動(dòng)電話和電 視機(jī)頂盒的設(shè)備中保護(hù)密碼密鑰。
[0060] 如圖所示,設(shè)備100包括經(jīng)由一個(gè)或多個(gè)系統(tǒng)總線110互連的處理器120、存儲(chǔ)器 130、用戶接口 140、網(wǎng)絡(luò)接口 150、和存儲(chǔ)設(shè)備160。將理解的是,圖1在一定程度上是抽象的 并且設(shè)備100的組件的實(shí)際組織可以比所示出的更為復(fù)雜。
[0061] 處理器120可以是能夠執(zhí)行存儲(chǔ)在存儲(chǔ)器130或存儲(chǔ)設(shè)備150中的指令的任何硬件 設(shè)備。由此,處理器可以包括微處理器、現(xiàn)場(chǎng)可編程門陣列(FPGA)、專用集成電路(ASIC)或 其他類似的設(shè)備。
[0062] 存儲(chǔ)器130可以包括各種內(nèi)容,例如L1、L2、L3高速緩存或系統(tǒng)存儲(chǔ)器。因此,存儲(chǔ) 器130可以包括靜態(tài)隨機(jī)存取存儲(chǔ)器(SRAM)、動(dòng)態(tài)RAM(DRAM)、閃存、只讀存儲(chǔ)器(ROM)、或者 其他類似存儲(chǔ)器設(shè)備。
[0063]用戶接口 140可以包括用于使得能夠與諸如管理員的用戶進(jìn)行通信的一個(gè)或多個(gè) 設(shè)備。例如,用戶接口 140可以包括顯示器、鼠標(biāo)、以及用于接收用戶命令的鍵盤。在一些實(shí) 施例中,用戶接口 140可以包括經(jīng)由網(wǎng)絡(luò)接口 150向遠(yuǎn)程終端呈現(xiàn)的命令行界面和圖形用戶 界面。
[0064] 網(wǎng)絡(luò)接口 150可以包括用于實(shí)現(xiàn)與其他硬件設(shè)備的通信的一個(gè)或多個(gè)設(shè)備。例如, 網(wǎng)絡(luò)接口 150可以包括配置成根據(jù)以太網(wǎng)協(xié)議進(jìn)行通信的網(wǎng)絡(luò)接口卡(NIC)。此外,網(wǎng)絡(luò)接 口 150可以實(shí)現(xiàn)用于根據(jù)TCP/IP協(xié)議的通信的TCP/IP棧。網(wǎng)絡(luò)接口 150的各種備選或附加的 硬件或配置將是顯而易見的。
[0065] 存儲(chǔ)設(shè)備160可以包括一個(gè)或多個(gè)機(jī)器可讀存儲(chǔ)介質(zhì),例如,只讀存儲(chǔ)器(R0M)、隨 機(jī)存取存儲(chǔ)器(RAM)、磁盤存儲(chǔ)介質(zhì)、光學(xué)存儲(chǔ)介質(zhì)、閃存設(shè)備、或類似的存儲(chǔ)介質(zhì)。在各個(gè) 實(shí)施例中,存儲(chǔ)設(shè)備160可以存儲(chǔ)由處理器120執(zhí)行的指令或者處理器120可以操作的數(shù)據(jù)。
[0066] 例如,當(dāng)硬件設(shè)備100被配置為根據(jù)本文描述的白箱密碼系統(tǒng)對(duì)數(shù)據(jù)解密或?qū)ο?息進(jìn)行數(shù)字簽名時(shí),存儲(chǔ)設(shè)備160包括用于指示這種操作的密碼系統(tǒng)實(shí)施161。如上所述,白 箱密碼系統(tǒng)161可以利用一個(gè)或多個(gè)模冪步驟,如此,密碼系統(tǒng)實(shí)施可以包括用于執(zhí)行這種 模冪運(yùn)算的平方乘算法163。另外,為了提供更多的高效計(jì)算,平方乘算法163可以使用蒙哥 馬利乘法算法165。此外,如將在下文更詳細(xì)的描述,蒙哥馬利乘法算法165可以利用條件矢 量乘法算法167執(zhí)行平方乘算法的條件運(yùn)算。具體地,平方乘算法通過根據(jù)秘密指數(shù)d的值 執(zhí)行乘法步驟來部分地計(jì)算bd mod n;然而,在白箱密碼系統(tǒng)實(shí)施中,不向系統(tǒng)提供秘密指 數(shù)d的值。相反,本文描述的各實(shí)施例包括條件矢量乘法算法167,該算法無條件地由蒙哥馬 利乘法算法167執(zhí)行,并且使用由另一設(shè)備基于秘密指數(shù)d預(yù)計(jì)算的查找表169,以提供從平 方乘算法"去除"的條件的效果。例如,如下文的描述,條件矢量乘法算法167可以是可以使 用預(yù)計(jì)算的查找表以至少在某些方面引入條件效果的RNS乘法算法。
[0067] 在硬件設(shè)備100是向包括白箱密碼系統(tǒng)實(shí)施的其它設(shè)備提供查找表的設(shè)備的情況 下,存儲(chǔ)設(shè)備160包括用于創(chuàng)建查找表的密鑰3元組171,該密鑰3元組171包括公共指數(shù)e、私 人指數(shù)d、以及密鑰模數(shù)N。存儲(chǔ)設(shè)備170還包括用于創(chuàng)建將被其它設(shè)備使用的查找表的查找 表產(chǎn)生指令173。
[0068] 將會(huì)顯而易見的是,被描述為存儲(chǔ)在存儲(chǔ)設(shè)備160中的各種信息可以附加地或備 選地存儲(chǔ)在存儲(chǔ)器130中。在這方面,存儲(chǔ)器130還可以被視為構(gòu)成"存儲(chǔ)設(shè)備"并且存儲(chǔ)設(shè) 備160可以被視為"存儲(chǔ)器"。各種其它的布置將會(huì)是顯而易見的。此外,存儲(chǔ)器130和存儲(chǔ)設(shè) 備160兩者可以被視為"非瞬時(shí)機(jī)器可讀介質(zhì)"。本文所使用的術(shù)語"非瞬時(shí)"將被理解為排 除瞬時(shí)傳播信號(hào),但是包括包含所有形式的易失性和非易失性存儲(chǔ)器的存儲(chǔ)設(shè)備。
[0069] 盡管硬件設(shè)備100被示出為包括每個(gè)所描述的組件中的一個(gè),可以在各實(shí)施例中 復(fù)制各個(gè)組件。例如,處理器120可以包括被配置為獨(dú)立地執(zhí)行本文中描述的方法或被配置 為執(zhí)行本文中描述的方法的步驟或子例程的多個(gè)微處理器,使得多個(gè)處理器協(xié)同實(shí)現(xiàn)本文 描述的功能。在其它實(shí)施例中,諸如設(shè)備100被實(shí)施為云計(jì)算環(huán)境的那些實(shí)施例中,各組件 可以被物理地布置在各種機(jī)器中。例如,處理器120可以包括第一數(shù)據(jù)中心服務(wù)器中的第一 微處理器以及第二數(shù)據(jù)中心服務(wù)器中的第二微處理器。各種其它的布置將會(huì)是顯而易見 的。
[0070] 圖2示出用于向用戶設(shè)備提供安全內(nèi)容和對(duì)該安全內(nèi)容進(jìn)行處理的軟件應(yīng)用的系 統(tǒng)的示例。所述系統(tǒng)包括內(nèi)容服務(wù)器200、應(yīng)用服務(wù)器220、用戶設(shè)備250和252、以及數(shù)據(jù)網(wǎng) 絡(luò)240。用戶設(shè)備250和252可以經(jīng)由數(shù)據(jù)網(wǎng)絡(luò)240請(qǐng)求對(duì)內(nèi)容服務(wù)器200提供的安全內(nèi)容的 訪問。數(shù)據(jù)網(wǎng)絡(luò)240可以是提供用戶設(shè)備250和252、內(nèi)容服務(wù)器200以及應(yīng)用服務(wù)器220之間 的連接的任何數(shù)據(jù)網(wǎng)絡(luò)。用戶設(shè)備250和252可以是多個(gè)設(shè)備中的一個(gè),例如機(jī)頂盒、媒體流 傳輸器、數(shù)字視頻記錄器、平板計(jì)算機(jī)、移動(dòng)電話、膝上型計(jì)算機(jī)、便攜式媒體設(shè)備、智能手 表、臺(tái)式計(jì)算機(jī)、媒體服務(wù)器等。
[0071]針對(duì)訪問的用戶請(qǐng)求可以先獲取可用于處理內(nèi)容服務(wù)器200提供的安全內(nèi)容的軟 件應(yīng)用的下載??蓮膽?yīng)用服務(wù)器220下載軟件應(yīng)用。使用上文描述的技術(shù)并且如上文操作, 可能會(huì)混淆軟件應(yīng)用。一旦用戶設(shè)備250、252安裝軟件應(yīng)用,則用戶設(shè)備可以從內(nèi)容服務(wù)器 200下載安全內(nèi)容,并使用下載的軟件應(yīng)用來訪問安全內(nèi)容。例如,下載的軟件應(yīng)用可以對(duì) 從內(nèi)容服務(wù)器接收的加密內(nèi)容進(jìn)行解密。在其他實(shí)施例中,軟件應(yīng)用可以執(zhí)行其他安全操 作,例如,加密、數(shù)字簽名產(chǎn)生和驗(yàn)證等。
[0072]內(nèi)容服務(wù)器200可以控制向用戶設(shè)備250、252提供的對(duì)安全內(nèi)容的訪問。因此,當(dāng) 內(nèi)容服務(wù)器200接收針對(duì)安全內(nèi)容的請(qǐng)求時(shí),內(nèi)容服務(wù)器200可以向請(qǐng)求用戶設(shè)備發(fā)送安全 內(nèi)容。類似地,應(yīng)用服務(wù)器220可以控制向用戶設(shè)備250、252提供的對(duì)軟件應(yīng)用的訪問。因 此,當(dāng)應(yīng)用服務(wù)器220接收針對(duì)軟件應(yīng)用的請(qǐng)求時(shí),應(yīng)用服務(wù)器220可以向請(qǐng)求用戶設(shè)備發(fā) 送軟件應(yīng)用。在向用戶設(shè)備提供軟件應(yīng)用或安全內(nèi)容前,各服務(wù)器還可以認(rèn)證請(qǐng)求軟件應(yīng) 用或安全內(nèi)容的用戶設(shè)備。
[0073]內(nèi)容服務(wù)器200可以包括經(jīng)由一個(gè)或多個(gè)系統(tǒng)總線708互連的處理器202、存儲(chǔ)器 204、用戶接口 206、網(wǎng)絡(luò)接口 210、以及內(nèi)容存儲(chǔ)設(shè)備212。將要理解的是,圖2在一定程度上 是抽象的并且設(shè)備200的組件的實(shí)際組織可以比所示出的更為復(fù)雜。
[0074]處理器202可以是能夠執(zhí)行存儲(chǔ)在存儲(chǔ)器204或存儲(chǔ)設(shè)備212中的指令的任何硬件 設(shè)備。由此,處理器可以包括微處理器、現(xiàn)場(chǎng)可編程門陣列(FPGA)、專用集成電路(ASIC)或 其他類似的設(shè)備。
[0075] 存儲(chǔ)器204可以包括各種內(nèi)容,例如L1、L2、L3高速緩存或系統(tǒng)存儲(chǔ)器。因此,存儲(chǔ) 器204可以包括靜態(tài)隨機(jī)存取存儲(chǔ)器(SRAM)、動(dòng)態(tài)RAM(DRAM)、閃存、只讀存儲(chǔ)器(ROM)、或者 其他類似存儲(chǔ)器設(shè)備。
[0076]用戶接口 206可以包括用于使得能夠與諸如管理員的用戶進(jìn)行通信的一個(gè)或多個(gè) 設(shè)備。例如,用戶接口 206可以包括顯示器、鼠標(biāo)、以及用于接收用戶命令的鍵盤。
[0077] 網(wǎng)絡(luò)接口 210可以包括用于實(shí)現(xiàn)與其他硬件設(shè)備的通信的一個(gè)或多個(gè)設(shè)備。例如, 網(wǎng)絡(luò)接口 210可以包括配置成根據(jù)以太網(wǎng)協(xié)議進(jìn)行通信的網(wǎng)絡(luò)接口卡(NIC)。此外,網(wǎng)絡(luò)接 口 210可以實(shí)現(xiàn)用于根據(jù)TCP/IP協(xié)議的通信的TCP/IP棧。網(wǎng)絡(luò)接口 210的各種備選或附加的 硬件或配置將是顯而易見的。
[0078] 內(nèi)容存儲(chǔ)設(shè)備212可以包括一個(gè)或多個(gè)機(jī)器可讀內(nèi)容存儲(chǔ)介質(zhì),例如,只讀存儲(chǔ)器 (R0M)、隨機(jī)存取存儲(chǔ)器(RAM)、磁盤存儲(chǔ)介質(zhì)、光存儲(chǔ)介質(zhì)、閃存設(shè)備、或類似存儲(chǔ)介質(zhì)。在 各實(shí)施例中,內(nèi)容存儲(chǔ)設(shè)備212可以存儲(chǔ)要提供給用戶的內(nèi)容。
[0079]應(yīng)用服務(wù)器220包括與內(nèi)容服務(wù)器200中的元件相似的元件,并且對(duì)內(nèi)容服務(wù)器 200中的相似元件的描述適用于應(yīng)用服務(wù)器220。此外,應(yīng)用存儲(chǔ)設(shè)備232替換內(nèi)容存儲(chǔ)設(shè)備 212。此外,應(yīng)該注意的是,內(nèi)容服務(wù)器和應(yīng)用服務(wù)器可以在單個(gè)服務(wù)器上實(shí)現(xiàn)。而且,這樣 的服務(wù)器可以實(shí)現(xiàn)在分布式計(jì)算機(jī)系統(tǒng)以及云計(jì)算機(jī)系統(tǒng)上。
[0080] 在各實(shí)施例中,應(yīng)用服務(wù)器220可以具有用于每個(gè)用戶設(shè)備250和252的私鑰指數(shù), 并且使用這些值來產(chǎn)生將發(fā)送給用戶設(shè)備250和252的查找表的集合。之后,用戶設(shè)備250、 252可以利用查找表對(duì)從內(nèi)容服務(wù)器接收到的內(nèi)容解密或者對(duì)將發(fā)送給內(nèi)容服務(wù)器的消息 進(jìn)行數(shù)字簽名(從而對(duì)各個(gè)用戶設(shè)備250、252進(jìn)行認(rèn)證)。本文描述的方法和系統(tǒng)的各種其 他應(yīng)用將是顯而易見的。
[0081] 將理解的是,可以以各種方式在圖2的系統(tǒng)或類似系統(tǒng)中部署和使用模冪運(yùn)算、編 碼或數(shù)字簽名方法。例如,用戶設(shè)備250、252可以由制造商或其它經(jīng)銷商提供,并被預(yù)配置 為向內(nèi)容服務(wù)器200發(fā)送簽名消息以請(qǐng)求提供內(nèi)容。備選地,用戶設(shè)備250、252可以不完全 預(yù)配置為執(zhí)行這種操作;相反,應(yīng)用服務(wù)器220可以與用戶設(shè)備250、252通信以使這種配置 生效。例如,應(yīng)用服務(wù)器可以發(fā)送用于實(shí)施本文描述的方法的代碼指令或定義一個(gè)或多個(gè) 查找表的數(shù)據(jù)。
[0082]圖3示出用于計(jì)算模冪的方法300的示例。方法300可以由執(zhí)行平方乘算法163的處 理器(例如圖1的處理器120)執(zhí)行。將理解的是,方法300可以完成計(jì)算:
[0083] bd mod n
[0084]以用于例如用于加密或數(shù)字簽名的密碼系統(tǒng)。
[0085] 方法300開始于步驟305,并進(jìn)行到步驟310,在步驟310,處理器接收用于計(jì)算模冪 的值b、d和n。如將在下文更詳細(xì)的描述,本文描述的各種修改能夠?qū)崿F(xiàn)處理器在步驟310或 其它步驟中沒有接收到秘密指數(shù)d的值的方法300。相反,處理器可以被提供有或者通過其 他方式具有對(duì)由秘密指數(shù)d攜帶的比特?cái)?shù)目的訪問。處理器隨后在步驟315通過將索引變量 j初始化為在比特上比秘密指數(shù)d的長(zhǎng)度小2的值,來開始秘密指數(shù)d的比特的迭代。處理器 還在步驟320將工作值c初始化為等于底數(shù)值b。
[0086] 在步驟325,處理器通過對(duì)c的當(dāng)前值進(jìn)行平方并以模數(shù)N對(duì)結(jié)果進(jìn)行模運(yùn)算,來執(zhí) 行"平方"步驟。從流程圖中可以看到,對(duì)每一次迭代都執(zhí)行該步驟325,并且該步驟可以被 視為"無條件"步驟。接著,處理器通過確定秘密密鑰的第j比特是否被設(shè)置為值"1",來開始 方法300的"乘法"步驟。如果是的話,則處理器在步驟335將當(dāng)前工作值乘以底數(shù)值,并且模 N。另一方面,如果秘密密鑰的第j比特被設(shè)置為值"0",則處理器進(jìn)行到步驟340而不改變工 作值(或者等效地,在步驟337中將工作值乘以1)??梢钥吹?,僅在相應(yīng)的秘密密鑰比特被設(shè) 置為"1"時(shí)才執(zhí)行"乘法"步驟,因此其可被視為"條件"步驟。換言之,處理器有條件地將工 作值乘以底數(shù)值。
[0087] 在執(zhí)行了無條件的平方和有條件的乘法步驟之后,處理器在步驟340對(duì)索引值j進(jìn) 行遞減,并在步驟345確定附加的秘密指數(shù)比特是否保持被處理。如果j不小于零(即,d中的 附加比特保持),則方法300循環(huán)回到步驟325。否則,計(jì)算完成,處理器在步驟350返回作為 結(jié)果的最終值c,并且方法300在步驟355結(jié)束。
[0088]在各實(shí)施例中,如將在下文更詳細(xì)的解釋,步驟330、335和337被無條件執(zhí)行的單 個(gè)乘法步驟360替代。具體地,在處理器不具有對(duì)秘密指數(shù)d的訪問的白箱實(shí)施中,處理器本 身不能夠執(zhí)行步驟330。相反,本文描述的各實(shí)施例將工作值c乘以從查找表檢索到的、被另 一設(shè)備基于值d預(yù)計(jì)算的值。處理器被提供有針對(duì)秘密指數(shù)d的從位置0到k-2的每個(gè)比特的 至少一個(gè)查找表。當(dāng)秘密指數(shù)d在與查找表相對(duì)應(yīng)的比特處具有值1時(shí),查找表將提供有效 的值b(因此對(duì)應(yīng)于步驟335);類似地,當(dāng)秘密指數(shù)d在與查找表相對(duì)應(yīng)的比特處具有值0時(shí), 查找表將提供有效的值1 (因此對(duì)應(yīng)于步驟337)。
[0089]根據(jù)各實(shí)施例,值b和c可以在余數(shù)系統(tǒng)(RNS)中表示。根據(jù)RNS,整數(shù)被表示為以更 小的(互質(zhì))整數(shù)為模得到的多個(gè)不同的余數(shù)??紤]RNSS_= {nh, m2,…mn},其中, 任意兩個(gè)模數(shù)m的最大公約數(shù)是URNS模數(shù)被表示為M = 整數(shù)z € !/Ml.在 RNSS _^中由矢量史=(A, X2,表示,其中:
[0090] xi = x mod mi, 1 < i < n
[0091 ] 可以通過對(duì)其應(yīng)用中國(guó)剩余定理來實(shí)現(xiàn)對(duì)由表示的整數(shù)x的計(jì)算。
[0093]對(duì)于在RNS中表達(dá)的乘法值,蒙哥馬利乘法可以用于計(jì)算針對(duì)蒙哥馬利基數(shù)R的a* MirVod N,其通過將模數(shù)N的合適倍數(shù)添加到乘積使得其可以被R整除。這可以通過計(jì)算下 式來實(shí)現(xiàn):
[0095] 可以預(yù)計(jì)算值(-rrVod r),以在運(yùn)行時(shí)進(jìn)一步優(yōu)化蒙哥馬利乘法的執(zhí)行。應(yīng)注意, 右側(cè)計(jì)算以N為模的蒙哥馬利乘法而不實(shí)際減少模N的任何值。如此,蒙哥馬利乘法適用于 RNS設(shè)置。
[0096] 蒙哥馬利乘法的實(shí)施執(zhí)行以R為模的計(jì)算。通常希望將蒙哥馬利基數(shù)R設(shè)置為等于 RNS模數(shù)M。在這種配置中,當(dāng)用具有模數(shù)M的RNS基表示數(shù)時(shí),除以R = M的除法是不可能的 (因?yàn)樵贓/M2中M不是可逆的)。這可以通過引入具有輔助rns模數(shù)AT = 的輔 助基=(nVi, m''2,…m、]來避免,使得gccKM',M)=gcd(M/,N)=gcd(M,N) = l并且4N 〈iKif。對(duì)于執(zhí)行了除以R的除法的步驟,蒙哥馬利乘法可以隨后從#知轉(zhuǎn)換為你'
[0097]圖4示出用于在余數(shù)系統(tǒng)(RNS)中計(jì)算兩個(gè)數(shù)的乘積的方法400的示例。方法400可 以由執(zhí)行蒙哥馬利乘法算法165的處理器(例如處理器120)執(zhí)行。在各實(shí)施例中,方法400可 以被調(diào)用為執(zhí)行方法300的步驟325、335、337或360中的計(jì)算。
[0098] 方法開始于步驟405,并進(jìn)行到步驟410,在步驟410,處理器接收值A(chǔ)、B和N以計(jì)算 A*B mod N。例如,在處理器針對(duì)方法300的步驟325調(diào)用方法400的情況下,A和B兩者都可以 是來自于該方法300的工作值c。作為另一示例,在處理器針對(duì)方法300的步驟335調(diào)用方法 400的情況下,A可以來自于該方法300的工作值c,并且B可以是底數(shù)值b。在單個(gè)無條件步驟 用于乘法步驟360的情況下,A可以是工作值c,B可以是查找表訪問的結(jié)果(因此,當(dāng)查找表 被初始計(jì)算時(shí),取決于秘密指數(shù)d的相應(yīng)比特,B可以有效地是底數(shù)值b或1)。
[0099] 在步驟415,處理器選擇兩個(gè)RNS基激k到激\以用于表示值A(chǔ)、B和中間值。在一 些實(shí)施例中,RNS基激^到凝^中的一個(gè)或兩個(gè)可以被硬編碼進(jìn)算法或者被預(yù)選擇。在一 些實(shí)施例中,可以根據(jù)第一RNS基激k接收已經(jīng)是RNS形式的值A(chǔ)和B。
[0100] 在步驟420,處理器通過計(jì)算兩個(gè)RNS基中的乘積來開始執(zhí)行蒙哥馬利乘法公式的 面向非除法的方面:
[0101 ] f =:技 * 其中fi = ai*bi mod mi
[0102] f = d' 6' 其中i = Y i*t/ i mod n/ i
[0103] 其中,1 < i <n。之后,在步驟425,處理器將基級(jí)中的f =/* -計(jì)算為qi = fi*-N-imod mi。將理角軍的是,項(xiàng)_泣_1是表示(-N-imod R)的矢量。
[0104] 接著,在執(zhí)行蒙哥馬利乘法公式的面向除法的方面之前,處理器將(在基激V中表 示的)|轉(zhuǎn)換為(在基綴\中表示的)f。處理器可以根據(jù)任何方法執(zhí)行該轉(zhuǎn)換,例如,使用 中國(guó)剩余定理將|轉(zhuǎn)換為非RNS整數(shù),并接著通過用基中的每個(gè)模數(shù)m ':計(jì)算整數(shù)的 模,來將該整數(shù)轉(zhuǎn)換為基綴"N中的RNS集合。
[0105] 在步驟435,處理器通過計(jì)算下式來執(zhí)行蒙哥馬利乘法公式中的其余計(jì)算:將 c'=(廣 + * M-1 計(jì)算為= (/' + 分、.*.~、)* 饑f1 爪〇.這饑Y。
[0106] 結(jié)果P與在基中表示的A*B mod N同余。處理器在步驟440中通過例如應(yīng)用 中國(guó)剩余定理并執(zhí)行與基爾相關(guān)聯(lián)的多次模運(yùn)算,來將結(jié)果轉(zhuǎn)換回初始的基顔>N。 處理器可以隨后在步驟445返回結(jié)果芒(或者返回非RNS結(jié)果c),并進(jìn)行到步驟450。
[0107] 在各實(shí)施例中(諸如其中0 < A,B < 2N,并且ANaa'的實(shí)施例),所述輸出以2N為 界,并且可以被蒙哥馬利乘法算法400的下一次調(diào)用再利用。
[0108] 如上所述,本文描述的系統(tǒng)和方法通過參考查找表的預(yù)計(jì)算的集合中的值,來將 檢查秘密指數(shù)的比特的條件功能合并到無條件乘法語句中。返回參照?qǐng)D3,在簡(jiǎn)單情況下, 當(dāng)相應(yīng)的秘密指數(shù)d比特為"1"時(shí),查找表將返回底數(shù)值b(步驟335),當(dāng)相應(yīng)的秘密指數(shù)d比 特為"1"時(shí),將返回值"1"(步驟337)。如此,工作值c可以無條件地乘以查找表的結(jié)果。
[0109] 圖5示出用于執(zhí)行條件乘法的查找表的集合500的第一示例。查找表500均包括可 用于值b的每個(gè)RNS余數(shù)的條目(因?yàn)?,在各?shí)施例中,c將通過與它們的相應(yīng)RNS余數(shù)相乘而 乘以b或1)。在一些實(shí)施例中,諸如將在下文描述的那些備選中,將針對(duì)每個(gè)RNS模數(shù)提供不 同的查找表(由于條目的數(shù)目以及可能的相應(yīng)值將針對(duì)每個(gè)不同的模數(shù)而不同)。為了簡(jiǎn)化 圖5的初始示例,將假設(shè)表500包括基中的最大模數(shù)的每個(gè)可能余數(shù)的條目。
[0110] 第一表510指示秘密指數(shù)d的第j比特被設(shè)置為"1"的情況,則所述值將與索引值j 相同。換言之,Lj(ai)=ai mod mi。如此,第一記錄512指示針對(duì)索弓丨"0"的值為"0",第二記 錄514指示針對(duì)索引"1"的值為"1",并且第一記錄516指示針對(duì)索引"2"的值為"2"。表510可 以包括附加的條目518或更少的條目(例如,相應(yīng)的RNS模數(shù)為2)。
[0111] 第二表520指示秘密指數(shù)d的第j比特被設(shè)置為"1"的情況,則每個(gè)條目的值將為1, 不論索引如何。換言之,Lj(ai) = l。如此,條目522、524、526都指示值1。表510可以包括附加 的條目518或更少的條目(例如,相應(yīng)的RNS模數(shù)為2)。
[0112] 在各實(shí)施例中,白箱密碼系統(tǒng)實(shí)施將被提供有與圖5提供的示例相符的表的集合。 通過將工作值c的余數(shù)無條件地乘以與底數(shù)值b的余數(shù)相對(duì)應(yīng)的查找表值,可以在不知道秘 密指數(shù)d的實(shí)際值的情況下實(shí)現(xiàn)步驟330、335、337的功能。
[0113] 對(duì)于利用表500的白箱密碼系統(tǒng)實(shí)施,另一設(shè)備首先計(jì)算將被提供給白箱實(shí)施的 表。圖6示出用于產(chǎn)生查找表的集合的第一示例的方法600的示例。方法600可以由處理器 (例如執(zhí)行查找表產(chǎn)生指令173的處理器120)執(zhí)行。
[0114] 方法開始于步驟605并進(jìn)行到步驟610,在步驟610,處理器接收秘密密鑰d以及潛 在索引A的集合。例如,索引的集合可以包括各個(gè)整數(shù)值a,使得0 < i <m,其中,m是RNS模數(shù), 諸如基的最大RNS模數(shù)或者來自于查找表的集合將與之關(guān)聯(lián)的基的特定模數(shù)。
[0115] 方法600進(jìn)行到步驟615,在步驟615,處理器將查找表索引p初始化為0,并且隨后 在步驟620,處理器將新查找表L P初始化為對(duì)應(yīng)于秘密指數(shù)d的第p比特。例如,處理器可以 在A中創(chuàng)建針對(duì)每個(gè)索引的條目,并將值初始化為1、0、空值(null)、或者適合于實(shí)施的特例 的一些其它值。處理器還在步驟625將另一索引i初始化為0,以在索引的集合A中迭代。
[0116] 在步驟630,處理器確定秘密指數(shù)d的第p比特是否等于0。如果是,則處理器在步驟 635、640、645中循環(huán),并將查找表L P中的每個(gè)條目設(shè)置為等于1。否則,處理器在步驟650、 655、660中循環(huán),并將查找表"的每個(gè)條目設(shè)置為等于該條目的索引(即,LP(ai)= ai)。在查 找表中為每個(gè)條目填入值之后,處理器在步驟665中將p遞增,并隨后在步驟670通過確定p 目前是等于還是超過秘密指數(shù)d的比特長(zhǎng)度,來確定附加的查找表是否仍然要被創(chuàng)建。應(yīng)注 意,在方法300中,不考慮第k-1比特。如此,在各實(shí)施例中,作為替代,步驟670可以確定p是 大于還是等于d長(zhǎng)度減1。
[0117] 如果附加的查找表仍然要被創(chuàng)建,則方法600循環(huán)回到步驟620。否則,處理器例如 通過將表L本地地存儲(chǔ)以用于稍后使用或者通過將表L發(fā)送到白箱密碼系統(tǒng)實(shí)施,來返回表 L。然后,方法600在步驟680結(jié)束。
[0118] 圖7示出用于使用查找表執(zhí)行條件乘法的方法700的示例。方法700可以由執(zhí)行條 件矢量乘法算法167的處理器(例如處理器120)執(zhí)行。當(dāng)方法400被調(diào)用為計(jì)算平方乘方法 300的"乘法"步驟360時(shí),可以例如通過蒙哥馬利乘法方法400的步驟420來調(diào)用方法700。
[0119] 方法700開始于步驟710并進(jìn)行到步驟720,在步驟720,處理器接收RNS矢量值5和 g(與方法400中的在和g,或者茁:和京相對(duì)應(yīng);或者與方法300中的c和b相對(duì)應(yīng))以及到秘密 指數(shù)中的當(dāng)前索引(與方法300中的索引j相對(duì)應(yīng))。處理器還在步驟730例如通過創(chuàng)建與值 被初始化為〇、l、null或其它合適值的芒和g;相同的長(zhǎng)度的矢量,來初始化結(jié)果矢量彥。在 步驟740,處理器將模數(shù)索引i初始化為值0。
[0120] 處理器隨后在步驟750通過計(jì)算gi = Lj(bi)*Ci mod mi來開始計(jì)算結(jié)果矢量點(diǎn)的余 數(shù)值。在步驟760,處理器對(duì)模數(shù)索引進(jìn)行遞增,并在步驟770確定索引目前是否大于基集合 中的最大索引。如果否,則方法循環(huán)回到步驟750。否則,處理器在步驟780返回結(jié)果矢 量#,并且方法700在步驟790結(jié)束。
[0121] 考慮到上文,將清楚的是,本文描述的實(shí)施例通過無條件地將c乘以基于d預(yù)計(jì)算 的查找表的值,使得能夠在不訪問值d的情況下實(shí)現(xiàn)取決于值d的條件計(jì)算c*b。例如,在處 理器針對(duì)使得山=0的索引j執(zhí)行方法700的步驟750的情況下,查找表b將被預(yù)計(jì)算為類似 于表520。如此,Lj(bi)將返回1,并且步驟750將有效地計(jì)算l*c mod m(從而對(duì)應(yīng)于方法300 的步驟337)。類似地,在處理器針對(duì)使得dj = 1的索引j執(zhí)行方法700的步驟750的情況下,查 找表Lj將被預(yù)計(jì)算為類似于表510。如此,Lj(bi)將返回bi,并且步驟750將高效地計(jì)算b*c mod m(從而對(duì)應(yīng)于方法300的步驟335)。將理解的是,查找表500還可以被預(yù)計(jì)算以替代地 取決于值d來存儲(chǔ)合適的乘法(bi*ci mod mi或者ci mod mi),從而通過降低存儲(chǔ)效率來提高 處理效率,因?yàn)檫@樣會(huì)平方地增加查找表的大小。
[0122] 雖然上述描述使得能夠在不實(shí)際提供d值的情況下實(shí)現(xiàn)以mod N的計(jì)算,并從而 在白箱設(shè)置中提供某種程度上增加的安全性,但是可以訪問查找表的攻擊者仍然可能辨別 出秘密指數(shù)d的值。具體地,攻擊者可能推導(dǎo)出:被值"1"填充的每個(gè)表,d的相應(yīng)比特是"0", 反之為"1",從而攻擊者能夠確定秘密指數(shù)的值。如此,下面提供通過使查找表模糊來增加 實(shí)施的安全性的各種方法。
[0123] 圖8示出用于執(zhí)行條件乘法的查找表的集合800的第二示例。根據(jù)該示例,恒定值S 通過乘法被并入查找表,并且稍后使用有效逆函數(shù)從之后的表中"移除"。將理解,可以利用 加法或者備選的乘法中的運(yùn)算。例如,可以根據(jù)任何可逆函數(shù)來添加、減去或者并入恒定值 5〇
[0124] 如之前針對(duì)圖5的示例所示出和描述的,表集合800包括被平方乘算法考慮的針對(duì) 秘密指數(shù)d的每個(gè)比特的表。另外,表的值可以取決于RNS基的模數(shù)nu。如此,可以針對(duì) RNS基的每個(gè)模數(shù)提供表800的不同集合。雖然最終表被示出為對(duì)應(yīng)于第k-1比特,但是 在平方乘算法不針對(duì)第k_l比特執(zhí)行任何特定操作的各實(shí)施例中,最終表850、860實(shí)際上可 以對(duì)應(yīng)于第k-2比特。此外,還將清楚的是,在下文中,雖然圖3的平方乘方法300從k-2到0往 回迭代,但是示出的表的順序?yàn)閺?到k-1(或k-2)。在各實(shí)施例中,可以以相反順序產(chǎn)生表, 使得Lo是"最后的"表,而Lh (或Lk-2)是"第一"表。
[0125] 如圖所示,第一表Lo810、820將值1或ai(取決于do的比特值)乘以與第一表相對(duì)應(yīng) 的常數(shù)S〇,并以模數(shù)mi為模。因此,當(dāng)(!〇 = 0時(shí),利用被確定為L(zhǎng)j(ai) = 5〇mod mi的值來計(jì)算表 810。在示出的特定示例中,任意選擇值8〇 = 2,如此,每個(gè)條目的值被設(shè)置為"2"(假設(shè)nu>2)。 另一方面,當(dāng)do=l時(shí),替代地提供表820。這里,值被確定為L(zhǎng)j(ai)=5〇*ai mod mi。如圖所 示,條目822、824、826均分別具有不同的值0、2、4。
[0126] 對(duì)于第一表和最后的表之間的表Lj(其中,0〈j〈k-l),通過例如將值乘以常數(shù)5」,來 將附加的常數(shù)h并入表。之前,在該步驟可以使用任何可逆函數(shù)。另外,為了使之前的將常 數(shù)Sy并入表的效果逆向,將該常數(shù)的倒數(shù)并入值中??紤]到當(dāng)考慮k表時(shí)平方乘方法300 將通過步驟325的操作而將先前的常數(shù)8^平方,當(dāng)被因數(shù)分解為值時(shí)先前的常數(shù)心^是 Sj^mod N。因此,中間表830、840同時(shí)移除先前常數(shù),通過將項(xiàng)Sjl^mod N:并入表的 值中來將新常數(shù)并入工作值中。
[0127] 因此,當(dāng)山=0時(shí),利用被確定為1^(31) = (§丨5]二21娜)£11^)111〇£111^的值來計(jì)算 表830。在示出的特定示例830中,每個(gè)條目的值被設(shè)置為"5"(假設(shè)姐>5)。另一方面,當(dāng)山=1 時(shí),替代地提供表840。這里,值被確定為L(zhǎng)j(ai) = (SjSjl^mod. N) * aj mod m;。如圖所 示,條目842、844、846均分別具有不同的值0、5、3。
[0128] 對(duì)于最后的表U-i,沒有附加的常數(shù)被并入值中,相反,移除將被并入的最后的常 數(shù)。因此,當(dāng)dk-1=〇時(shí),利用被確定為L(zhǎng)jGi) = (Sf2mod N) mod 〇1丨的值來計(jì)算表850。 在示出的特定示例850中,每個(gè)條目的值被設(shè)置為"6"(假設(shè)nu>6)。另一方面,當(dāng)山=1時(shí),替 代地提供表860。這里,值被確定為L(zhǎng)j(ai) = (Sj^2mod * ai mod mi。如圖所示,條 目862、864、866均分別具有不同的值0、6、5。將理解,當(dāng)被實(shí)際計(jì)算時(shí),每個(gè)表可以包括附加 的條目818、828、838、848、858、868或更少的條目(例如,相應(yīng)1?吧模數(shù)為2的情況)。
[0129] 因此,將被應(yīng)用的(在最后的表之前的)每個(gè)表通過將查找表乘以(或加上、減去 等)任意常數(shù)來使值模糊。此外,(在第一表之后的)每個(gè)表通過使用逆函數(shù)從查找表值移除 或"抵消"該任意常數(shù)來使該模糊的效果無效,所述逆函數(shù)考慮i)來自用于初始地將值并入 先前表中的逆運(yùn)算,以及ii)在先前表被訪問之后對(duì)工作值執(zhí)行的臨時(shí)函數(shù)。在示出的特定 示例中,可逆函數(shù)是被平方的倒數(shù),因?yàn)閷⑼ㄟ^平方乘算法利用表。實(shí)現(xiàn)通過其它算法利用 表的修改將是顯而易見的。
[0130] 圖9示出用于產(chǎn)生查找表的集合的第二示例的方法900的示例。方法900可以被處 理器(例如執(zhí)行查找表產(chǎn)生指令173的處理器120)執(zhí)行。
[0131] 方法開始于步驟903并進(jìn)行到步驟905,在步驟905,處理器接收秘密密鑰d以及模 數(shù)的集合:處理器隨后通過步驟907、910、913和915初始化第一傳送(pass),在步驟 907、910、913和915中執(zhí)行以下操作:初始化模數(shù)索引i,初始化比特位置索引p,針對(duì)每個(gè)條 目將用于組合模數(shù)索引和比特位置索引的查找表LP,:初始化為初始值1,以及初始化表索引 a。在步驟917,處理器產(chǎn)生常數(shù)A的集合,使得A包含針對(duì)除了秘密指數(shù)d的比特之一以外 的所有比特的常數(shù)8。換言之,A中的元素的數(shù)目等于d的長(zhǎng)度減一。
[0132] 接著,處理器在步驟920通過確定當(dāng)前比特索引是否小于d長(zhǎng)度減2來產(chǎn)生用于包 括在表的條目中的值。如果是,則當(dāng)前表不是"最后的"表,并且來自A的常數(shù)將被并入值 中;在步驟923,處理器將L P>1(a)處的值乘以Sp。否則,方法跳到步驟925。
[0133] 在步驟925,處理器確定當(dāng)前比特索引是否大于0。如果是,則當(dāng)前表不是"第一" 表,并且來自A的常數(shù)將從表的值中消除。在步驟927,處理器將LP,如)處的值乘以601:, 隨后在步驟930,以N為模對(duì)LP>1(a)中的當(dāng)前值進(jìn)行模運(yùn)算。否則,方法900跳到步驟933。
[0134] 在步驟933,處理器確定秘密密鑰dP的當(dāng)前比特是否等于"1"。如果是,則處理器在 步驟933通過將L P,da)處的當(dāng)前值乘以a來將表索弓|a并入LP,da)處的值。否則,方法900跳 到步驟937。由于步驟933是實(shí)際上區(qū)分基于d中的"1"比特產(chǎn)生的表與基于d中的"0"比特產(chǎn) 生的表的步驟,因此步驟935可以被視為"區(qū)分步驟"。在步驟937,處理器以當(dāng)前模數(shù)nu對(duì) L P>1(a)處的值進(jìn)行模運(yùn)算,從而完成LP>1(a)處的值的計(jì)算。
[0135] 處理器接著在步驟940將表索引a遞增,并在步驟943確定對(duì)于表LP, i是否所有的潛 在表索引a都已經(jīng)被處理。如果a還未等于nu,則方法900循環(huán)回到步驟920,在步驟920,針對(duì) 更新的a計(jì)算表L P>1中的下一個(gè)條目。
[0136] 否則,處理器在步驟945將比特索引p遞增,并且隨后在步驟945確定留在秘密指數(shù) 中的附加的比特是否將被處理。如果P還未等于d長(zhǎng)度減1,則方法將循環(huán)回到步驟913,在步 驟913,處理器將基于新的比特索引開始創(chuàng)建當(dāng)前模數(shù)的下一個(gè)表。
[0137] 一旦處理了將被分配表的所有比特,則方法進(jìn)行到步驟950,在步驟950,處理器將 模數(shù)索引i遞增,并隨后進(jìn)行到步驟953,在步驟953,處理器確定是否還存在要被處理的附 加模數(shù)。如果i還未等于基集合的長(zhǎng)度,則方法循環(huán)回到步驟910,在步驟910,處理器將 開始針對(duì)下一個(gè)模數(shù)nu創(chuàng)建新的表集合。否則,處理器在步驟955返回產(chǎn)生的表集合(例如, 將表分布到白箱實(shí)施),并且方法900在步驟957結(jié)束。
[0138] 使用在方法900中產(chǎn)生的表實(shí)質(zhì)上等同于使用由方法600產(chǎn)生的表。例如,白箱密 碼系統(tǒng)實(shí)施可以使用由方法900產(chǎn)生的表來利用方法700來產(chǎn)生模冪,僅需要將步驟750稍 微修改為假定被訪問。換言之,步驟750被修改為訪問與當(dāng)前模數(shù)nu相關(guān)聯(lián)的查找表。
[0139] 雖然增加了安全性的附加級(jí)別,但是在能夠訪問查找表的情況下,攻擊者仍然可 能辨別出d的值。具體地,即使與"0"比特相關(guān)聯(lián)的表不再始終被提供有恒定值1(如第一示 例集合500),但是與"0"比特相關(guān)聯(lián)的那些表是輸入不變地。從示例表810、830、850中可以 看到,輸出值始終分別是"2"、"5"或"6",而表820、840、860的輸出基于輸入變化。知道了這 點(diǎn),攻擊者可能推算出秘密指數(shù)d的比特。
[0140] 圖10示出用于執(zhí)行條件乘法的查找表的集合1000的第三示例。根據(jù)該示例,輸入 索引#的恒定值和附加冪兩者通過乘法被并入查找表值,并且接著使用有效逆函數(shù)從稍后 的表中"移除"。將理解的是,可以利用加法或者備選的乘法中的運(yùn)算。例如,可以根據(jù)任意 可逆函數(shù)加上、減去或者并入恒定值8。
[0141] 如之前針對(duì)圖5和圖8的示例所示出和描述的,表集合1000包括被平方乘算法考慮 的針對(duì)秘密指數(shù)d的每個(gè)比特的表。另外,表的值可以取決于RNS基的模數(shù)nu。如此,可 以針對(duì)RNS基激 1N的每個(gè)模數(shù)提供表1000的不同集合。雖然最終表被示出為對(duì)應(yīng)于第k-1比 特,但是在平方乘算法不針對(duì)第k-1比特執(zhí)行任何特定操作的各實(shí)施例中,最終表1050、 1060實(shí)際上可以對(duì)應(yīng)于第k-2比特。此外,還將清楚的是,在下文中,雖然圖3的平方乘方法 300從k-2到0往回迭代,但是示出的表的順序?yàn)閺?到k-1(或k-2)。在各實(shí)施例中,可以以相 反順序產(chǎn)生表,使得L〇是"最后的"表,而Lh (或Lk-2)是"第一"表。
[0142] 如圖所示,第一表LolOlO、1020將值1或ai(取決于do的比特值)乘以對(duì)應(yīng)于所述表 的輸入值的冪和常數(shù)S Q,模以模數(shù)mi。從而,當(dāng)dQ = 0時(shí),使用確定為 Lj(ai)= (50 * af^modmi的值計(jì)算表1〇1〇。在所示的特定示例中,條目1〇12、1〇14、 1016分別是"0"、"2"和T (假定mi>2)。另一方面,當(dāng)dQ=l時(shí),作為替代,提供表820。這里,值 被確定為L(zhǎng)j(ai) = (5〇 * a:f。* aOmodmi。如圖所示,條目i〇22、i〇24、i〇26分別均分 別具有不同的值〇、2、2。
[0143] 對(duì)于第一表和最后的表之間的表Lj(其中,0〈j〈k-l),例如通過將值乘以輸入的冪aie U]和常數(shù)將輸入的冪afU和附加的常數(shù)~并入表。之前,在該步驟可以使用任何可逆函 數(shù)。另外,為了使之前的將常數(shù)8^和冪并入表的效果逆向,將這些值的倒數(shù)并入值中。 考慮到當(dāng)考慮k表時(shí)平方乘方法300將通過步驟325的操作而將先前的常數(shù)5^和冪 aie[H]平 方,當(dāng)被因數(shù)分解為值時(shí)先前的常數(shù)8^和冪是SgmodN和(af1產(chǎn)[W。因此,中 間表1030、1040同時(shí)移除先前常數(shù),通過將項(xiàng)O^^^mod iv) * (ar1)^-1 * f并入表 的值中來將新常數(shù)并入工作值中。
[0144] 因此,當(dāng)dj = 0時(shí),利用被確定為ii(%) = ((.¥AmodW)* (江廠1)2~一i * a?)mo:dm( 的值來計(jì)算表1030。在示出的特定示例1030中,條目的值被分別設(shè)置為0、5和5(假設(shè)mi>5)。 另一方面,當(dāng)dj = l時(shí),替代地提供表1040。這里,值被確定心(屮)=(((^p^mod /V ) * (o^1)2,.1 * af * 如圖所示,條目 1042、1044、1046均分別具有不同的值0、5、 3〇
[0145] 對(duì)于最后的表Lw,沒有附加的常數(shù)或冪被并入值中,相反,移除將被并入的最后的常 數(shù)和冪。因此,當(dāng)dk-1 = 0時(shí),利用被確定為心如)=(<^2mod iV ) * (OM-O mod 的值來計(jì) 算表1050。在示出的特定示例1050中,條目的值被分別設(shè)置為0、6和6(假設(shè)血>6)。另一方面,當(dāng)山 =1時(shí),替代地提供表1060。這里,值被確定為心(屯)=(Wi 2m〇diV_)* 2aOmod瑪。如 圖所示,條目1062、1064、1066均分別具有不同的值0、6、5。將理解,當(dāng)被實(shí)際計(jì)算時(shí),每個(gè)表 可以包括附加的條目1018、1028、1038、1048、1058、1068或更少的條目(例如,相應(yīng)RNS模數(shù) 為2的情況)。
[0146] 圖11示出用于產(chǎn)生查找表的集合的第三示例的方法1100的示例。方法1100可以被 處理器(例如執(zhí)行查找表產(chǎn)生指令173的處理器120)執(zhí)行。
[0147] 方法1100大部分與方法900類似,除了添加了一些新步驟。具體地,在在步驟917產(chǎn) 生了常數(shù)A的集合之后,處理器產(chǎn)生指數(shù)E的集合,使得E包含針對(duì)除了秘密指數(shù)d的比特之 一以外的所有比特的指數(shù)e。換言之,E中的元素的數(shù)目等于d長(zhǎng)度減一。
[0148] 另外,在步驟1123、1127、1130保留并入常數(shù)Sp和5^的步驟923、927、930,但是現(xiàn) 在被保持為在步驟1119初始化的臨時(shí)變量S。添入兩個(gè)附加的步驟1124、1131,以分別將表 索引的冪并入條目的值和從條目消除表索引的冪。具體地,針對(duì)除了每個(gè)模數(shù)的最后的表 以外的所有表執(zhí)行步驟1124,并且將表?xiàng)l目的當(dāng)前值乘以由E中的與當(dāng)前比特相對(duì)應(yīng)的指 數(shù)e確定的冪;在這里的示例中,處理器將冪議,并入表?xiàng)l目。步驟1131通過并入逆函數(shù)來消 除先前的冪(考慮平方乘算法或其它算法的效果);在這里的示例中,處理器將冪 并入表?xiàng)l目。將理解的是,對(duì)于給定的余數(shù)整數(shù)ai,模逆(modular inverse) a,-1 = (a-1 mod A〇 mod m^。步驟1131還將臨時(shí)常數(shù)5并入表?xiàng)l目。修改的方法lioo 的結(jié)果是針對(duì)每個(gè)模數(shù)m的表的集合,其將模糊常數(shù)和冪兩者并入其值中,并隨后消除這 種模糊的效果。例如,如上所述,可以通過除乘法以外的可逆數(shù)學(xué)函數(shù)來并入常數(shù)或冪。例 如,可以將常數(shù)~添加到一個(gè)表中的值中,并在下一個(gè)表中作為S p2減去。此外,方法可以使 用用于并入指數(shù)和冪的函數(shù)的組合。例如,表中可以乘以常數(shù)s P,并且在其中添加冪。作 為另一示例,第一表中可以乘以常數(shù)sP,并且后續(xù)的表中可以添加另一常數(shù)5^(同時(shí)消除 先前的常數(shù)s P)。一些實(shí)施可以不消除緊隨的表中的每個(gè)模糊項(xiàng);相反,考慮到由平方乘(或 其它算法)執(zhí)行的附加運(yùn)算,消除操作可以發(fā)生在按照順序的兩個(gè)或更多個(gè)表之前。例如, 第一表中可以乘以常數(shù)~,第二表可以僅乘以1(例如,如果d中的相應(yīng)比特是"〇"),并且第 三表可以通過乘以Sf4:來消除常數(shù)sp(考慮將在中期發(fā)生的兩個(gè)平方運(yùn)算)。此外,一些實(shí) 施可以不并入常數(shù),而是僅利用冪或另一個(gè)項(xiàng)作為模糊因子。將理解,各種模糊技術(shù)可以被 組合為使得不同的表適用不同的模糊技術(shù)。例如,在表集合內(nèi),一些表可以并入常數(shù),其它 的表可以并入冪,而另一些表可以不并入任何模糊項(xiàng)。用于實(shí)施這種備選實(shí)施例的各種技 術(shù)以及進(jìn)一步的修改將是顯而易見的。
[0149] 根據(jù)上文,各種實(shí)施例實(shí)現(xiàn)在白箱設(shè)置中的模冪的高效計(jì)算。例如,通過提供基于 與模冪計(jì)算中的項(xiàng)相對(duì)應(yīng)的秘密指數(shù)而計(jì)算出的查找表,白箱實(shí)施可以被提供有在不具有 對(duì)秘密指數(shù)的訪問的情況下計(jì)算模冪的方法。此外,通過各種模糊技術(shù),可以保護(hù)秘密指數(shù) 的值不會(huì)由于對(duì)提供的表的分析而被發(fā)現(xiàn)。從上文中,各種附加利益將是顯而易見的。
[0150] 從上述描述中可以明顯看出,本發(fā)明的各種示例性實(shí)施例可以通過硬件來實(shí)現(xiàn)。 此外,各實(shí)施例可以被實(shí)現(xiàn)為在非瞬時(shí)機(jī)器可讀存儲(chǔ)介質(zhì)(例如易失性或非易失性存儲(chǔ)器) 上存儲(chǔ)的指令,所述指令可以被讀取并通過至少一個(gè)處理器來運(yùn)行以執(zhí)行這里詳細(xì)描述的 操作。機(jī)器可讀存儲(chǔ)介質(zhì)可以包括用于以機(jī)器可讀的形式存儲(chǔ)信息的任何機(jī)制,例如個(gè)人 或膝上型計(jì)算機(jī)、服務(wù)器或其他計(jì)算設(shè)備。因此,非瞬時(shí)機(jī)器可讀存儲(chǔ)介質(zhì)排除瞬時(shí)信號(hào), 但可以包括易失性和非易失性存儲(chǔ)器,包括但不限于只讀存儲(chǔ)器(ROM)、隨機(jī)存取存儲(chǔ)器 (RAM)、磁盤存儲(chǔ)介質(zhì)、光存儲(chǔ)介質(zhì)、閃存設(shè)備和類似的存儲(chǔ)介質(zhì)。
[0151]本領(lǐng)域技術(shù)人員應(yīng)該理解的是,本文中的任意框圖表示實(shí)現(xiàn)本發(fā)明的原理的說明 性電路的概念示圖。類似地,將理解的是,任何流程圖、流程示意圖、狀態(tài)轉(zhuǎn)換圖、偽代碼等 表示可以實(shí)質(zhì)上表示在機(jī)器可讀介質(zhì)中并且因此由計(jì)算機(jī)或處理器來執(zhí)行的各種處理,而 不論這種計(jì)算機(jī)或處理器是否被顯式地示出。
[0152]雖然參照其特定方面具體描述了各實(shí)施例,可以理解的是本發(fā)明可以采用其它實(shí) 施例并且它的細(xì)節(jié)可以在各種明顯的方面進(jìn)行修改。本領(lǐng)域技術(shù)人員非常清楚,可在本發(fā) 明的精神和范圍內(nèi)實(shí)現(xiàn)改變和修改。相應(yīng)地,以上公開、描述和附圖僅僅是用于說明性的目 的,而不應(yīng)以任何形式限制僅由權(quán)利要求限定的本發(fā)明。
【主權(quán)項(xiàng)】
1. 一種編碼有指令的非瞬時(shí)機(jī)器可讀介質(zhì),所述指令由處理器執(zhí)行以執(zhí)行模冪運(yùn)算, 所述非瞬時(shí)機(jī)器可讀介質(zhì)包括: 用于迭代地計(jì)算模冪bd mod η的指令,包括: 用于求工作值c的平方的指令;以及 用于根據(jù)指數(shù)d的比特有條件地將工作值c乘以底數(shù)值b的指令,包括: 用于將所述工作值c無條件地乘以與所述底數(shù)值相關(guān)聯(lián)的查找表?xiàng)l目的指令。2. 根據(jù)權(quán)利要求1所述的非瞬時(shí)機(jī)器可讀介質(zhì),其中, 在余數(shù)系統(tǒng)RNS中表示所述工作值c和所述底數(shù)值b,并且 用于將所述工作值c無條件地乘以與所述底數(shù)值相關(guān)聯(lián)的查找表?xiàng)l目的指令包括:將 表示所述工作值c的多個(gè)工作RNS整數(shù)乘以與表示所述底數(shù)值b的多個(gè)底數(shù)RNS整數(shù)相關(guān)聯(lián) 的多個(gè)查找表?xiàng)l目。3. 根據(jù)權(quán)利要求2所述的非瞬時(shí)機(jī)器可讀介質(zhì),其中,用于將表示所述工作值c的多個(gè) 工作RNS整數(shù)乘以與表示所述底數(shù)值b的多個(gè)底數(shù)RNS整數(shù)相關(guān)聯(lián)的多個(gè)查找表?xiàng)l目的指令 包括: 用于將表示所述工作值c的所述多個(gè)工作RNS整數(shù)中的工作RNS整數(shù)乘以與表示所述底 數(shù)值b的所述多個(gè)底數(shù)RNS整數(shù)中的底數(shù)RNS整數(shù)相關(guān)聯(lián)的查找表?xiàng)l目的指令,所述查找表 條目來自與對(duì)應(yīng)于所述底數(shù)RNS整數(shù)的RNS模數(shù)相關(guān)聯(lián)的查找表。4. 根據(jù)權(quán)利要求1所述的非瞬時(shí)機(jī)器可讀介質(zhì),其中, 用于迭代地計(jì)算所述模冪的指令包括:用于在所述指數(shù)d的多個(gè)比特位置進(jìn)行迭代的 指令;以及 用于將所述工作值c無條件地乘以與所述底數(shù)值b相關(guān)聯(lián)的查找表?xiàng)l目的指令包括:用 于利用多個(gè)查找表中與當(dāng)前比特位置相關(guān)聯(lián)的查找表的指令。5. 根據(jù)權(quán)利要求1所述的非瞬時(shí)機(jī)器可讀介質(zhì),其中,用于根據(jù)指數(shù)d的比特有條件地 將工作值c乘以底數(shù)值b的指令包括:用于執(zhí)行蒙哥馬利乘法的指令,以及 用于執(zhí)行蒙哥馬利乘法的指令調(diào)用所述用于將所述工作值c無條件地乘以與所述底數(shù) 值相關(guān)聯(lián)的查找表?xiàng)l目的指令。6. 根據(jù)權(quán)利要求1所述的非瞬時(shí)機(jī)器可讀介質(zhì),還包括: 用于從另一設(shè)備接收由所述用于將所述工作值c無條件地乘以與所述底數(shù)值相關(guān)聯(lián)的 查找表?xiàng)l目的指令使用的查找表的集合的指令。7. -種編碼有指令的非瞬時(shí)機(jī)器可讀介質(zhì),所述指令由處理器執(zhí)行以產(chǎn)生用于執(zhí)行模 冪運(yùn)算的查找表,所述非瞬時(shí)機(jī)器可讀介質(zhì)包括: 用于初始化分別與秘密指數(shù)d內(nèi)的不同比特位置相對(duì)應(yīng)的多個(gè)查找表的指令; 用于產(chǎn)生用于添入所述多個(gè)查找表中的值的指令,包括: 用于當(dāng)所述秘密指數(shù)d在與查找表相關(guān)聯(lián)的比特位置處攜帶第一比特值時(shí)根據(jù)第一方 法產(chǎn)生針對(duì)所述查找表的值的指令; 用于當(dāng)所述秘密指數(shù)d在與查找表相關(guān)聯(lián)的比特位置處攜帶與第一比特值不同的第二 比特值時(shí)根據(jù)與第一方法不同的第二方法產(chǎn)生針對(duì)所述查找表的值的指令。8. 根據(jù)權(quán)利要求7所述的非瞬時(shí)機(jī)器可讀介質(zhì),其中,用于產(chǎn)生用于添入所述多個(gè)查找 表中的值的指令包括:用于模糊所產(chǎn)生的值的指令。9. 根據(jù)權(quán)利要求8所述的非瞬時(shí)機(jī)器可讀介質(zhì),其中,用于模糊所產(chǎn)生的值的指令包 括: 用于對(duì)用于添入第一查找表中的第一值執(zhí)行第一數(shù)學(xué)函數(shù)的指令;以及 用于對(duì)用于添入第二查找表中的第二值執(zhí)行第二數(shù)學(xué)函數(shù)的指令,其中,第二數(shù)學(xué)函 數(shù)是第一數(shù)學(xué)函數(shù)的有效逆函數(shù)。10. 根據(jù)權(quán)利要求9所述的非瞬時(shí)機(jī)器可讀介質(zhì),其中: 第一數(shù)學(xué)函數(shù)將模糊值并入第一值中,并且 第二數(shù)學(xué)函數(shù)將所述模糊值的模逆的平方并入第二值中。11. 根據(jù)權(quán)利要求10所述的非瞬時(shí)機(jī)器可讀介質(zhì),其中,所述模糊值包括:基于第一值 將被存儲(chǔ)在第一查找表中的位置的索引而不變的恒定值。12. 根據(jù)權(quán)利要求10所述的非瞬時(shí)機(jī)器可讀介質(zhì),其中,所述模糊值包括:第一值將被 存儲(chǔ)在所述查找表中的位置的索引被提升到恒定指數(shù)值次冪。13. 根據(jù)權(quán)利要求7所述的非瞬時(shí)機(jī)器可讀介質(zhì),其中,第一方法和第二方法共同共享 至少一個(gè)指令。14. 根據(jù)權(quán)利要求7所述的非瞬時(shí)機(jī)器可讀介質(zhì),其中, 第一方法包括用于將所述值將被存儲(chǔ)在查找表中的位置的索引并入所述值中的區(qū)分 指令;以及 第二方法不包括所述區(qū)分指令。15. 根據(jù)權(quán)利要求7所述的非瞬時(shí)機(jī)器可讀介質(zhì),其中,用于初始化分別與秘密指數(shù)d內(nèi) 的不同比特位置相對(duì)應(yīng)的多個(gè)查找表的指令包括: 用于確定將用于余數(shù)系統(tǒng)RNS中的模數(shù)M的集合的指令;以及 用于針對(duì)所述模數(shù)M的集合中的每個(gè)模數(shù)ΠΗ初始化分別與秘密指數(shù)d內(nèi)的不同比特位置 相對(duì)應(yīng)的多個(gè)查找表的指令。16. -種用于提供白箱模冪運(yùn)算的系統(tǒng),包括: 第一設(shè)備,包括第一處理器和如權(quán)利要求1所述的非瞬時(shí)機(jī)器可讀介質(zhì);以及 第二設(shè)備,包括第二處理器和如權(quán)利要求7所述的非瞬時(shí)機(jī)器可讀介質(zhì),其中,第二設(shè) 備產(chǎn)生由第一設(shè)備用來在不訪問所述秘密指數(shù)d的情況下執(zhí)行模冪運(yùn)算的多個(gè)查找表。17. -種編碼有指令的非瞬時(shí)機(jī)器可讀介質(zhì),所述指令由處理器執(zhí)行以產(chǎn)生用于執(zhí)行 模冪運(yùn)算的查找表,所述非瞬時(shí)機(jī)器可讀介質(zhì)包括: 用于初始化分別與秘密指數(shù)d的比特位置與余數(shù)系統(tǒng)RNS模數(shù)的多個(gè)配對(duì)相對(duì)應(yīng)的多 個(gè)查找表Li,j的指令; 用于當(dāng)所述秘密指數(shù)d在與第一查找表L〇,k相對(duì)應(yīng)的比特位置處的值為0時(shí)將所述多個(gè) 查找表中的第一查找表Lo,k的值設(shè)置為的指令,其中,ai是針對(duì)KNS悮數(shù)中的悮數(shù)m的潛在KNS整數(shù),6。是第一預(yù)定常數(shù),e〇是第 一預(yù)定指數(shù);以及 用于當(dāng)所述秘密指數(shù)d在與第一查找表Lo,k相對(duì)應(yīng)的比特位置處的值為1時(shí)將所述多個(gè) 查找表中的第一查找表Lo,mi的值設(shè)置為 的指令。18. 根據(jù)權(quán)利要求17所述的非瞬時(shí)機(jī)器可讀介質(zhì),還包括: 用于當(dāng)所述秘密指數(shù)d在與最后的查找表Lk-1>mi相對(duì)應(yīng)的比特位置處的值為O時(shí),將所 述多個(gè)查找表中的第一查找表Lk-1>mi的值設(shè)置為的指令,其中而是針對(duì)RNS模數(shù)中的模數(shù)Hi1的潛在RNS整數(shù),Sk-2是最后的預(yù)定常數(shù), ek-2 是最后的預(yù)定指數(shù),N是用于模冪運(yùn)算的模數(shù);以及 用于當(dāng)所述秘密指數(shù)d在與最后的查找表L1^1,mi相對(duì)應(yīng)的比特位置處的值為O時(shí)將所述 多個(gè)杳找表|+1沾靖二 太404主τ - 估4A*萌的指令。19. 根據(jù)權(quán)利要求18所述的非瞬時(shí)機(jī)器可讀介質(zhì),還包括: 用于當(dāng)所述秘密指數(shù)d在與中間查找表k,mi相對(duì)應(yīng)的比特位置處的值為0時(shí)將所述多個(gè) 查找表中的第一查找表k,mi的值設(shè)置為的指令,其中,ai是針對(duì)RNS模數(shù)πη中的模數(shù)πη的潛在RNS整數(shù),δ」-:是針對(duì)中間查找表的 先前預(yù)定常數(shù),心是針對(duì)中間查找表的當(dāng)前預(yù)定常數(shù),eg是針對(duì)中間查找表的先前預(yù)定指 數(shù),^是針對(duì)中間查找表的當(dāng)前預(yù)定指數(shù),N是用于模冪運(yùn)算的模數(shù);以及 用于當(dāng)所述秘密指數(shù)d在與中間查找表k,mi相對(duì)應(yīng)的比特位置處的值為1時(shí)將所述多個(gè) 查找表中的第一查找表k,mi的值設(shè)置為的指令。20. -種用于提供白箱模冪運(yùn)算的系統(tǒng),包括: 第一設(shè)備,包括第一處理器和如權(quán)利要求1所述的非瞬時(shí)機(jī)器可讀介質(zhì);以及 第二設(shè)備,包括第二處理器和如權(quán)利要求19所述的非瞬時(shí)機(jī)器可讀介質(zhì),其中,第二設(shè) 備產(chǎn)生由第一設(shè)備用來在不訪問所述秘密指數(shù)d的情況下執(zhí)行模冪運(yùn)算的多個(gè)查找表。
【文檔編號(hào)】G06F7/72GK105892991SQ201610087787
【公開日】2016年8月24日
【申請(qǐng)日】2016年2月16日
【發(fā)明人】喬普·威廉·波斯, 麥克爾·麥克·派德里克·皮德斯
【申請(qǐng)人】恩智浦有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
石首市| 禹州市| 鄂托克前旗| 来凤县| 嘉黎县| 南川市| 远安县| 比如县| 通山县| 大新县| 淮北市| 噶尔县| 伊春市| 富源县| 兰坪| 临邑县| 东安县| 新源县| 正阳县| 许昌县| 栾川县| 阿克| 阳原县| 卢龙县| 安阳县| 新丰县| 巴东县| 门源| 西吉县| 陈巴尔虎旗| 谷城县| 高台县| 色达县| 莫力| 建德市| 九江县| 清水县| 西华县| 肇源县| 南安市| 镇宁|