使用查找表的模冪運(yùn)算的制作方法
【專利摘要】各種實(shí)施例涉及對數(shù)據(jù)進(jìn)行編碼的方法和相關(guān)裝置以及非暫時(shí)性機(jī)器可讀存儲(chǔ)媒體,包含:確定待取冪的值b的多個(gè)因子;從查找表檢索與所述多個(gè)因子相關(guān)聯(lián)的多個(gè)查找表項(xiàng);計(jì)算所述多個(gè)查找表項(xiàng)的乘積;以及使用加密密鑰模數(shù)N來計(jì)算所述乘積的留數(shù),以產(chǎn)生取冪值s。
【專利說明】使用查找表的模幕運(yùn)算
[0001] 相關(guān)申請交叉引用
[0002] 本申請案是2014年12月23日遞交的第14/580,963號美國專利申請案的部分繼續(xù) 申請案,所述部分繼續(xù)申請案的全部掲示內(nèi)容出于各種目的特此W引用的方式并入本文 中。
技術(shù)領(lǐng)域
[0003] 本文中所掲示的各種實(shí)施例大體上設(shè)及數(shù)據(jù)編碼和數(shù)字簽名,并且更具體來說但 非排他地設(shè)及用于基于RSA的數(shù)字簽名方案的編碼。
【背景技術(shù)】
[0004] 數(shù)字簽名方案通常在對消息進(jìn)行簽名之前對數(shù)據(jù)應(yīng)用編碼過程W確保數(shù)據(jù)符合 預(yù)先選擇的字母表,所述方案應(yīng)用于所述預(yù)先選擇的字母表。例如,使用密鑰3元組<N,e,d〉 的標(biāo)準(zhǔn)RSA算法首先將每個(gè)符號轉(zhuǎn)換成在0和N之間的對應(yīng)值。其它編碼方案可W用于輸入 值的不同集合W實(shí)現(xiàn)利用輸入值集合中的值的各種數(shù)學(xué)特性的簽名方案。
[0005] 在編碼之后,將編碼值用于產(chǎn)生簽名W用于發(fā)送。RSA等一些加密算法利用模幕運(yùn) 算函數(shù)來產(chǎn)生此簽名。作為實(shí)例,RSA使用私有密鑰對沛,(1〉通過計(jì)算bd mod N來處理編碼 值b"RSA隨后將使用公共密鑰對沛,6〉通過首先計(jì)算s6 mod N來驗(yàn)證簽名值S。隨后將解碼 函數(shù)應(yīng)用到結(jié)果值W檢索原始值。
【發(fā)明內(nèi)容】
[0006] 各種實(shí)施例的簡要概述在下文呈現(xiàn)。在W下概述中可W做出一些簡化和省略,所 述概述意圖突出且引入各種實(shí)施例的一些方面,但不限制本發(fā)明的范圍。足W允許本領(lǐng)域 普通技術(shù)人員產(chǎn)生且使用發(fā)明性概念的優(yōu)選實(shí)施例的詳細(xì)描述將跟隨在稍后的章節(jié)中。
[0007] 本文中所描述的各種實(shí)施例設(shè)及一種用于執(zhí)行模幕運(yùn)算的裝置,包含:存儲(chǔ)器,其 被配置成存儲(chǔ)查找表;W及與存儲(chǔ)器通信的處理器,所述處理器被配置成:確定待取幕的值 b的多個(gè)因子;從查找表檢索與多個(gè)因子相關(guān)聯(lián)的多個(gè)查找表項(xiàng);計(jì)算多個(gè)查找表項(xiàng)的乘 積;W及使用加密密鑰模數(shù)N來計(jì)算乘積的留數(shù),W產(chǎn)生取幕值S。
[000引本文中所描述的各種實(shí)施例設(shè)及一種用于執(zhí)行模幕運(yùn)算的方法,包含:確定待取 幕的值b的多個(gè)因子;從查找表檢索與多個(gè)因子相關(guān)聯(lián)的多個(gè)查找表項(xiàng);計(jì)算多個(gè)查找表項(xiàng) 的乘積;W及使用加密密鑰模數(shù)N來計(jì)算乘積的留數(shù)W產(chǎn)生取幕值S。
[0009] 本文中描述各種實(shí)施例,其中用于確定待取幕的值b的多個(gè)因子的指令包含:用于 通過從因子集合S識(shí)別多個(gè)因子W表示值h來對值h進(jìn)行編碼的指令。
[0010] 本文中描述各種實(shí)施例,其中:用于確定待取幕的值b的多個(gè)因子的指令包含:用 于確定對應(yīng)地與因子集合S中的多個(gè)因子相關(guān)聯(lián)的多個(gè)索引的指令;W及用于檢索與多個(gè) 因子相關(guān)聯(lián)的多個(gè)查找表項(xiàng)的指令包含:用于從查找表中對應(yīng)地由多個(gè)索引指示的位置檢 索多個(gè)查找表項(xiàng)的指令。
[0011] 各種實(shí)施例另外包含:用于計(jì)算將被數(shù)字簽名的消息m的摘要h的指令;用于對摘 要h進(jìn)行編碼W產(chǎn)生待取幕的值b的指令;W及用于將消息m和取幕值S作為數(shù)字簽名發(fā)送到 網(wǎng)絡(luò)裝置的指令。
[0012] 各種實(shí)施例另外包含:用于從網(wǎng)絡(luò)裝置接收查找表的指令;W及用于存儲(chǔ)查找表 W用于隨后通過用于檢索多個(gè)查找表項(xiàng)的指令來獲取的指令
[0013] 本文中描述各種實(shí)施例,其中多個(gè)因子是屬于預(yù)先確定的因子集合S的多個(gè)質(zhì)數(shù)。
[0014] 各種實(shí)施例另外包含用于對值h進(jìn)行編碼W產(chǎn)生待取幕的值b的指令,包含:用于 迭代值h的位位置的指令;用于在設(shè)定在值hi中在位置i處的位時(shí),將與在因子的集合S內(nèi)的 位位置i相對應(yīng)的因子Si包含在編碼值b中的指令。
[0015] 本文中所描述的各種實(shí)施例設(shè)及一種用由處理器執(zhí)行的指令編碼W用于產(chǎn)生用 于執(zhí)行模幕運(yùn)算的查找表的非暫時(shí)性機(jī)器可讀媒體,所述非暫時(shí)性機(jī)器可讀媒體包含:用 于確定與編碼算法相關(guān)聯(lián)的因子集合S的指令;用于基于因子集合S的對應(yīng)的因子、秘密指 數(shù)dW及加密密鑰模數(shù)N來計(jì)算多個(gè)模幕的指令;用于將多個(gè)模幕存儲(chǔ)在查找表中的指令; W及用于將查找表發(fā)送到至少一個(gè)用戶裝置的指令。
[0016] 本文中所描述的各種實(shí)施例設(shè)及一種用于產(chǎn)生用于執(zhí)行模幕運(yùn)算的查找表的裝 置,所述裝置包含:網(wǎng)絡(luò)接口;存儲(chǔ)器;W及與網(wǎng)絡(luò)接口和存儲(chǔ)器通信的處理器,所述處理器 被配置成:確定與編碼算法相關(guān)聯(lián)的因子集合S;基于因子集合S的對應(yīng)的因子、秘密指數(shù)d W及加密密鑰模數(shù)N來計(jì)算多個(gè)模幕;將多個(gè)模幕存儲(chǔ)在查找表中;W及經(jīng)由網(wǎng)絡(luò)接口將查 找表發(fā)送到至少一個(gè)用戶裝置。
[0017] 本文中所描述的各種實(shí)施例設(shè)及一種用于產(chǎn)生用于執(zhí)行模幕運(yùn)算的查找表的方 法,所述方法包含:確定與編碼算法相關(guān)聯(lián)的因子集合S;基于因子集合S的對應(yīng)的因子、秘 密指數(shù)dW及加密密鑰模數(shù)N來計(jì)算多個(gè)模幕;將多個(gè)模幕存儲(chǔ)在查找表中;W及將查找表 發(fā)送到至少一個(gè)用戶裝置。
[0018] 各種實(shí)施例另外包含用于產(chǎn)生加密密鑰的指令,所述加密密鑰包含秘密指數(shù)d、公 共指數(shù)eW及加密密鑰模數(shù)N。
[0019] 本文中描述各種實(shí)施例,其中因子集合S是有序集合,由此因子集合S的個(gè)別的因 子Si與對應(yīng)的索引i相關(guān)聯(lián);用于將多個(gè)模幕存儲(chǔ)在查找表中的指令包含:用于將多個(gè)模幕 中的某一模幕存儲(chǔ)在與索引i相關(guān)聯(lián)的查找表中的指令,所述索引與因子si相關(guān)聯(lián),所述模 幕運(yùn)算基于所述因子。
[0020] 各種實(shí)施例另外包含用于參與數(shù)字簽名方案的指令,包含:用于從至少一個(gè)用戶 裝置接收消息m和簽名S的指令;用于使用公共指數(shù)e和加密密鑰模數(shù)N來計(jì)算簽名S的模幕 W產(chǎn)生第一整數(shù)b的指令;用于對第一整數(shù)b進(jìn)行解碼W產(chǎn)生第二整數(shù)a的指令;用于計(jì)算消 息m的摘要h的指令;W及用于通過比較摘要h與第二整數(shù)a來驗(yàn)證消息m的指令。
[0021 ]本文中描述各種實(shí)施例,其中用于參與數(shù)字簽名方案的指令包含:用于驗(yàn)證第一 整數(shù)b屬于編碼域V的指令,所述編碼域基于因子集合S而被確定。
[0022]本文中所描述的各種實(shí)施例設(shè)及一種用指令編碼W用于對值h進(jìn)行編碼的非暫時(shí) 性機(jī)器可讀媒體,所述非暫時(shí)性機(jī)器可讀媒體包含:用于確定將用于對值h進(jìn)行編碼的因子 集合S的指令,其中所述因子集合包含與值h中對應(yīng)的數(shù)字位置相關(guān)聯(lián)的多個(gè)子集;用于從 因子集合S選擇多個(gè)因子的指令,包含:用于從與數(shù)字位置相關(guān)聯(lián)的多個(gè)子集選擇子集的指 令,w及用于基于值h中在與選定子集相關(guān)聯(lián)的數(shù)字位置處的數(shù)字值而從選定子集選擇因 子的指令;W及用于計(jì)算多個(gè)因子的乘積W產(chǎn)生編碼值的指令。
[0023] 本文中所描述的各種實(shí)施例設(shè)及一種用于對值h進(jìn)行編碼的裝置,包含:存儲(chǔ)器; W及與存儲(chǔ)器通信的處理器,所述處理器被配置成:確定將用于對值h進(jìn)行編碼的因子集合 S,其中所述因子集合包含與值h中對應(yīng)的數(shù)字位置相關(guān)聯(lián)的多個(gè)子集;從因子集合S選擇多 個(gè)因子,包含:從與數(shù)字位置相關(guān)聯(lián)的多個(gè)子集選擇子集,且基于值h中在與選定子集相關(guān) 聯(lián)的數(shù)字位置處的數(shù)字值而從選定子集選擇因子;W及計(jì)算多個(gè)因子的乘積W產(chǎn)生編碼 值。
[0024] 本文中所描述的各種實(shí)施例設(shè)及一種用于對值h進(jìn)行編碼的方法,所述方法包含: 確定將用于對值h進(jìn)行編碼的因子集合S,其中所述因子集合包含與值h中對應(yīng)的數(shù)字位置 相關(guān)聯(lián)的多個(gè)子集;從因子集合S選擇多個(gè)因子,包含:從與數(shù)字位置相關(guān)聯(lián)的多個(gè)子集選 擇子集,W及基于值h中在與選定子集相關(guān)聯(lián)的數(shù)字位置處的數(shù)字值而從選定子集選擇因 子;W及計(jì)算多個(gè)因子的乘積W產(chǎn)生編碼值。
[0025] 各種實(shí)施例另外包含:用于將值h轉(zhuǎn)換成r進(jìn)制表示,其中多個(gè)子集具有等于基數(shù)r 的對應(yīng)的長度,且數(shù)字位置與值h的r進(jìn)制數(shù)相對應(yīng)。
[0026] 本文中描述各種實(shí)施例,其中因子集合S包含質(zhì)數(shù)幕的集合,所述質(zhì)數(shù)幕的集合包 含至少一個(gè)非質(zhì)數(shù)。
[0027] 本文中描述各種實(shí)施例,其中:因子集合S是有序集合,由此在因子集合S內(nèi)的因子 對應(yīng)地與索引相關(guān)聯(lián);用于從與數(shù)字位置相關(guān)聯(lián)的多個(gè)子集選擇子集的指令包含:用于將 值h的基數(shù)r乘W與數(shù)字位置相對應(yīng)的第一索引iW獲得第二索引j的指令;且用于基于值h 中在與選定子集相關(guān)聯(lián)的數(shù)字位置處的數(shù)字值而從選定子集選擇因子的指令包含:用于將 值h中的位于與第一索引i相對應(yīng)的數(shù)字位置處的數(shù)字與第二索引j相加的指令,W及用于 在因子集合S內(nèi)檢索與第二索引j相對應(yīng)的因子的指令。
[0028] 各種實(shí)施例另外包含:用于計(jì)算值hW作為將被數(shù)字簽名的消息m的摘要的指令; 用于計(jì)算簽名sW作為編碼值的模幕的指令;W及用于將消息m和簽名S發(fā)送到另一裝置的 指令。
[0029] 各種實(shí)施例另外包含用于執(zhí)行編碼值的模幕運(yùn)算的指令,包含:用于從先前存儲(chǔ) 的查找表檢索多個(gè)項(xiàng)的指令,W及用于計(jì)算所述多個(gè)項(xiàng)的乘積的指令。
[0030] 各種實(shí)施例另外包含用于從網(wǎng)絡(luò)服務(wù)器接收查找表和存儲(chǔ)查找表的指令。
[0031] 本文中所描述的各種實(shí)施例設(shè)及一種用指令編碼W用于對值h進(jìn)行編碼的非暫時(shí) 性機(jī)器可讀媒體,所述非暫時(shí)性機(jī)器可讀媒體包含:用于確定將用于對值h進(jìn)行編碼的因子 集合S和權(quán)重W的指令;用于從因子集合S選擇W因子的集合TW表示值h的指令;W及用于計(jì) 算集合T的乘積W產(chǎn)生編碼值的指令。
[0032] 本文中所描述的各種實(shí)施例設(shè)及一種用于對值h進(jìn)行編碼的裝置,包含:存儲(chǔ)器; W及與存儲(chǔ)器通信的處理器,所述處理器被配置成:確定將用于對值h進(jìn)行編碼的因子集合 S和權(quán)重W;從因子集合S選擇W因子的集合TW表示值h;W及計(jì)算集合T的乘積W產(chǎn)生編碼 值。
[0033] 本文中所描述的各種實(shí)施例設(shè)及一種用于對值h進(jìn)行編碼的方法,包含:確定將用 于對值h進(jìn)行編碼的因子集合S和權(quán)重W;從因子集合S選擇W因子的集合TW表示值h;W及計(jì) 算集合τ的乘積W產(chǎn)生編碼值。
[0034] 本文中描述各種實(shí)施例,其中用于從因子集合S選擇W因子的集合TW表示值h的指 令包含:用于對值h應(yīng)用不排名函數(shù)W將在因子集合S內(nèi)位于與值h相對應(yīng)的排名處的W子集 識(shí)別為選定集合T的指令。
[0035] 本文中描述各種實(shí)施例,其中用于應(yīng)用不排名函數(shù)的指令包含:用于基于值h從多 個(gè)可能的不排名函數(shù)選擇所述不排名函數(shù)的指令。
[0036] 本文中描述各種實(shí)施例,其中因子集合S包含質(zhì)數(shù)幕的集合。
[0037] 各種實(shí)施例另外包含:用于計(jì)算值hW作為將被數(shù)字簽名的消息m的摘要的指令; 用于計(jì)算簽名sW作為編碼值的模幕的指令;W及用于將消息m和簽名S發(fā)送到另一裝置的 指令。
[0038] 各種實(shí)施例另外包含用于執(zhí)行編碼值的模幕運(yùn)算的指令,包含:用于從先前存儲(chǔ) 的查找表檢索多個(gè)項(xiàng)的指令,W及用于計(jì)算所述多個(gè)項(xiàng)的乘積的指令。
[0039] 本文中所描述的各種實(shí)施例設(shè)及一種用由處理器執(zhí)行的指令編碼W用于產(chǎn)生用 于執(zhí)行模幕運(yùn)算的查找表的非暫時(shí)性機(jī)器可讀媒體,所述非暫時(shí)性機(jī)器可讀媒體包含:用 于確定與編碼算法相關(guān)聯(lián)的因子集合S的指令;用于確定因子集合S的基礎(chǔ)因子集合S'W用 于產(chǎn)生查找表的指令;用于基于基礎(chǔ)因子集合S'的對應(yīng)的因子、秘密指數(shù)dW及加密密鑰模 數(shù)N來計(jì)算多個(gè)模幕的指令;用于將多個(gè)模幕存儲(chǔ)在查找表中的指令;W及用于將查找表發(fā) 送到至少一個(gè)用戶裝置的指令。
[0040] 本文中所描述的各種實(shí)施例設(shè)及一種用于產(chǎn)生用于執(zhí)行模幕運(yùn)算的查找表的裝 置,所述裝置包含:網(wǎng)絡(luò)接口;存儲(chǔ)器;W及與網(wǎng)絡(luò)接口和存儲(chǔ)器通信的處理器,所述處理器 被配置成:確定與編碼算法相關(guān)聯(lián)的因子集合S;確定因子集合S的基礎(chǔ)因子集合S ' W用于 產(chǎn)生查找表;基于基礎(chǔ)因子集合S'的對應(yīng)的因子、秘密指數(shù)dW及加密密鑰模數(shù)N來計(jì)算多 個(gè)模幕;將多個(gè)模幕存儲(chǔ)在查找表中;W及經(jīng)由網(wǎng)絡(luò)接口將查找表發(fā)送到至少一個(gè)用戶裝 置。
[0041] 本文中所描述的各種實(shí)施例設(shè)及一種用于產(chǎn)生用于執(zhí)行模幕的查找表的方法,所 述方法包含:確定與編碼算法相關(guān)聯(lián)的因子集合S;確定因子集合S的基礎(chǔ)因子集合S'W用 于產(chǎn)生查找表;基于基礎(chǔ)因子集合S'的對應(yīng)的因子、秘密指數(shù)dW及加密密鑰模數(shù)N來計(jì)算 多個(gè)模幕;將多個(gè)模幕存儲(chǔ)在查找表中;W及將查找表發(fā)送到至少一個(gè)用戶裝置。
[0042] 本文中描述各種實(shí)施例,其中:因子集合S包含質(zhì)數(shù)幕的集合,且基礎(chǔ)因子集合S' 包含質(zhì)數(shù)的集合,集合S的質(zhì)數(shù)幕由所述質(zhì)數(shù)的集合構(gòu)造。
[0043] 各種實(shí)施例另外包含用于參與數(shù)字簽名方案的指令,包含:用于從至少一個(gè)用戶 裝置接收消息m和簽名S的指令;用于使用公共指數(shù)e和加密密鑰模數(shù)N來計(jì)算簽名S的模幕 W產(chǎn)生第一整數(shù)b的指令;用于對第一整數(shù)b進(jìn)行解碼W產(chǎn)生第二整數(shù)a的指令;用于計(jì)算消 息m的摘要h的指令;W及用于通過比較摘要h與第二整數(shù)a來驗(yàn)證消息m的指令。
[0044] 本文中描述各種實(shí)施例,其中用于對第一整數(shù)b進(jìn)行解碼W產(chǎn)生第二整數(shù)a的指令 包含:用于識(shí)別用于對第一整數(shù)b進(jìn)行編碼的因子集合S的指令;用于從因子集合S識(shí)別包含 于第一整數(shù)b中的多個(gè)因子的指令;用于識(shí)別與多個(gè)因子中的對應(yīng)因子相對應(yīng)的多個(gè)索引 的指令;用于從多個(gè)索引得到多個(gè)項(xiàng)的指令;W及用于計(jì)算多個(gè)項(xiàng)的總和W產(chǎn)生第二整數(shù)a 的指令。
[0045] 本文中描述各種實(shí)施例,其中用于從多個(gè)索引得到多個(gè)項(xiàng)的指令包含:用于識(shí)別 多個(gè)索引的多個(gè)序列識(shí)別符的指令,由此當(dāng)對多個(gè)索引進(jìn)行排序時(shí),序列識(shí)別符記錄相對 應(yīng)的索引在多個(gè)索引內(nèi)的位置;用于基于多個(gè)索引和基數(shù)r計(jì)算多個(gè)留數(shù)的指令;用于基于 將基數(shù)r升高到與多個(gè)序列識(shí)別符相對應(yīng)的幕來計(jì)算多個(gè)幕的指令;W及用于通過計(jì)算多 個(gè)留數(shù)對應(yīng)地與多個(gè)幕的乘積來計(jì)算多個(gè)項(xiàng)的指令。
[0046] 本文描述各種實(shí)施例,其中用于對第一整數(shù)b進(jìn)行解碼W產(chǎn)生第二整數(shù)a的指令包 含:用于識(shí)別用于對第一整數(shù)b進(jìn)行編碼的因子集合S和權(quán)重W的指令;用于從因子集合S識(shí) 別包含于第一整數(shù)b中的多個(gè)因子T的指令;用于對多個(gè)因子T應(yīng)用排名函數(shù)W將多個(gè)因子T 在因子集合S內(nèi)的排名識(shí)別為第二整數(shù)a的指令。
[0047] 本文描述另外各種系統(tǒng),其中上述方法、裝置或非暫時(shí)性媒體中的一個(gè)或多個(gè)彼 此結(jié)合而操作。例如,此系統(tǒng)可W包含一種用于產(chǎn)生模幕或?qū)χ颠M(jìn)行編碼的方法、裝置或非 暫時(shí)性媒體,所述方法、裝置或非暫時(shí)性媒體結(jié)合用于產(chǎn)生查找表、驗(yàn)證模幕或?qū)χ颠M(jìn)行解 碼的一種方法、裝置或非暫時(shí)性媒體而操作。
【附圖說明】
[0048] 為了更好的理解各種實(shí)施例,參考附圖,其中:
[0049] 圖1示出用于實(shí)施本文中描述的編碼和簽名方案的硬件系統(tǒng)的實(shí)例;
[0050] 圖2示出用于將安全內(nèi)容給用戶裝置且提供處理所述安全內(nèi)容的軟件應(yīng)用程序的 系統(tǒng)的實(shí)例;
[0051] 圖3示出用于對消息進(jìn)行數(shù)字簽名的方法的實(shí)例;
[0052] 圖4示出用于驗(yàn)證數(shù)字簽名的方法的實(shí)例;
[0053] 圖5示出用于產(chǎn)生查找表的方法的實(shí)例;
[0054] 圖6示出編碼方法的第一實(shí)例;
[0055] 圖7示出解碼方法的第一實(shí)例;
[0056] 圖8示出編碼方法的第二實(shí)例;
[0057] 圖9示出解碼方法的第二實(shí)例;
[0化引圖10示出編碼方法的第Ξ實(shí)例;W及
[0059] 圖11示出解碼方法的第Ξ實(shí)例。
[0060] 為了便于理解,相同參考標(biāo)號已經(jīng)用于表示具有基本上相同或類似結(jié)構(gòu)或基本上 相同或類似功能的元件。
【具體實(shí)施方式】
[0061] 本文中所呈現(xiàn)的描述和圖式示出了各種原理。應(yīng)了解,本領(lǐng)域的技術(shù)人員將能夠 設(shè)計(jì)各種布置,盡管本文中未明確地描述或示出所述布置,但所述布置體現(xiàn)運(yùn)些原理且包 含于本發(fā)明的范圍內(nèi)。如本文中所使用,術(shù)語"或"是指非排他的或(即,和/或),除非另外指 明(例如,巧則"或者"或在替代方案中")。另外,本文中所描述的各種實(shí)施例未必是相互排 斥的,并且可W組合W產(chǎn)生并入有本文中描述的原理的另外實(shí)施例。
[0062] 鑒于加密的不斷增長的情況和應(yīng)用,例如在不可信平臺(tái)上的應(yīng)用,最近的努力已 致力于"白箱密碼術(shù)"的概念,其中加密方案被研發(fā)成安全的,甚至當(dāng)加密實(shí)施方案遭遇到 攻擊者時(shí)也是如此。白箱密碼術(shù)設(shè)及通過工程改造 w在不可信平臺(tái)上執(zhí)行的加密算法的軟 件實(shí)施方案的設(shè)計(jì)和分析。確切地說,運(yùn)是其中特定裝置的用戶可W解密消息(用秘密密 鑰)的情境,所述消息通過用戶的公共密鑰加密,但是無法提取或得到足夠的信息來恢復(fù)此 秘密密鑰。此外,假定在運(yùn)類實(shí)施方案中用戶可W是攻擊者:例如,攻擊者已經(jīng)完全獲取軟 件實(shí)施方案,可W在任何時(shí)間暫停、更改和恢復(fù)軟件實(shí)施方案的執(zhí)行。
[0063] 舉例來說,在數(shù)字權(quán)限管理系統(tǒng)中,希望向內(nèi)容消費(fèi)者提供容易地認(rèn)證他們自身 作為被授權(quán)獲取內(nèi)容的一方的能力。然而,還希望防止內(nèi)容消費(fèi)者出于向其它方提供對僅 授權(quán)給原始內(nèi)容消費(fèi)者的相同內(nèi)容的獲取的目的而與那些其它方分享憑證。
[0064] 此情境的一個(gè)白箱方法是向內(nèi)容消費(fèi)者提供使用私有密鑰d來對消息進(jìn)行數(shù)字簽 名的能力,所述私有密鑰被分配給內(nèi)容消費(fèi)者而不實(shí)際上將私有密鑰d給予內(nèi)容消費(fèi)者。為 此,可實(shí)際上基于私有密鑰d向內(nèi)容消費(fèi)者提供預(yù)先計(jì)算的取幕值的查找表。舉例來說,在 各種系統(tǒng)中,查找表可W通過例如中屯、數(shù)字權(quán)限管理服務(wù)器提供給內(nèi)容消費(fèi)者,所述中屯、 數(shù)字權(quán)限管理服務(wù)器用于向服務(wù)于受保護(hù)內(nèi)容的一個(gè)或多個(gè)媒體服務(wù)器認(rèn)證內(nèi)容消費(fèi)者。 內(nèi)容消費(fèi)者可隨后使用此查找表來計(jì)算數(shù)字簽名,盡管他們并不知曉他們的私有密鑰d的 值。期望的是,基于運(yùn)些努力而簡化方案并且減少貢獻(xiàn)于執(zhí)行的資源,例如,減小查找表的 大小。
[0065] 應(yīng)了解,盡管本文中描述的各種實(shí)例是在的數(shù)字簽名方案的情形下解釋,但是本 文中所描述的各種方面可適用于數(shù)據(jù)加密方案,其中數(shù)據(jù)用公共密鑰加密并且使用私有密 鑰檢索。
[0066] 圖1示出用于實(shí)施本文中描述的編碼和簽名方案或查找表產(chǎn)生方案的硬件系統(tǒng) 100的實(shí)例。硬件系統(tǒng)100可W對應(yīng)于可W參與數(shù)字簽名方案的幾乎任何裝置,舉例來說,個(gè) 人計(jì)算機(jī)、膝上型計(jì)算機(jī)、平板計(jì)算機(jī)、移動(dòng)通信裝置、服務(wù)器、刀片、智能卡、近場通信 (NFC)裝置,或其它裝置。舉例來說,硬件系統(tǒng)可對應(yīng)于用于接收和呈現(xiàn)數(shù)字內(nèi)容的機(jī)頂盒, 或用于提供數(shù)字內(nèi)容的服務(wù)器。本文中描述的方法的各種應(yīng)用將是顯而易見的,例如,數(shù)字 權(quán)限管理(DRM)、銀行應(yīng)用W及例如移動(dòng)電話和電視機(jī)機(jī)頂盒等裝置中的一般保護(hù)加密密 鑰。
[0067] 如圖所示,裝置100包含經(jīng)由一個(gè)或多個(gè)系統(tǒng)總線110互連的處理器120、存儲(chǔ)器 130、用戶接口 140、網(wǎng)絡(luò)接口 150W及存儲(chǔ)裝置160。應(yīng)理解,在一些方面中,圖1構(gòu)成抽象圖 并且裝置100的組件的實(shí)際組織可能比所示更加復(fù)雜。
[0068] 處理器120可W是能夠執(zhí)行存儲(chǔ)在存儲(chǔ)器130或存儲(chǔ)裝置150中的指令的任何硬件 裝置。因此,處理器可W包含微處理器、現(xiàn)場可編程口陣列(FPGA)、專用集成電路(ASIC)或 其它類似裝置。
[0069] 存儲(chǔ)器130可W包含各種存儲(chǔ)器,例如,L1、L2或L3高速緩沖存儲(chǔ)器或系統(tǒng)存儲(chǔ)器。 因此,存儲(chǔ)器130可W包含靜態(tài)隨機(jī)存取存儲(chǔ)器(SRAM)、動(dòng)態(tài)RAM(DRAM)、快閃存儲(chǔ)器、只讀 存儲(chǔ)器(ROM),或其它類似存儲(chǔ)器裝置。
[0070] 用戶接口 140可W包含用于使得能夠與例如管理員等用戶通信的一個(gè)或多個(gè)裝 置。舉例來說,用戶接口 140可W包含用于接收用戶命令的顯示器、鼠標(biāo)和鍵盤。在一些實(shí)施 例中,用戶接口 140可W包含可經(jīng)由網(wǎng)絡(luò)接口 150呈現(xiàn)給遠(yuǎn)端終端的命令行界面或圖形用戶 界面。
[0071] 網(wǎng)絡(luò)接口 150可w包含用于使得能夠與其它硬件裝置通信的一個(gè)或多個(gè)裝置。舉 例來說,網(wǎng)絡(luò)接口 150可W包含網(wǎng)絡(luò)接口卡(NIC),所述網(wǎng)絡(luò)接口卡被配置成根據(jù)W太網(wǎng)協(xié) 議通信。另外,網(wǎng)絡(luò)接口 150可實(shí)施TCP/IP找W用于根據(jù)TCP/IP協(xié)議通信。用于網(wǎng)絡(luò)接口 150 的各種替代的或另外的硬件或配置將是顯而易見的。
[0072] 存儲(chǔ)裝置160可W包含一個(gè)或多個(gè)機(jī)器可讀存儲(chǔ)媒體,例如只讀存儲(chǔ)器(ROM)、隨 機(jī)存取存儲(chǔ)器(RAM)、磁盤存儲(chǔ)媒體、光學(xué)存儲(chǔ)媒體、快閃存儲(chǔ)器裝置或類似存儲(chǔ)媒體。在各 種實(shí)施例中,存儲(chǔ)裝置160可存儲(chǔ)用于由處理器120執(zhí)行的指令,或者可W存儲(chǔ)數(shù)據(jù),處理器 120可W對所述數(shù)據(jù)進(jìn)行操作。
[0073] 舉例來說,在硬件裝置100實(shí)施用戶裝置的情況下,存儲(chǔ)裝置160包含數(shù)字簽名算 法,所述數(shù)字簽名算法用于產(chǎn)生用于驗(yàn)證硬件裝置或其用戶的身份標(biāo)識(shí)的數(shù)字簽名或用于 驗(yàn)證從其它裝置接收的數(shù)字簽名。為了支持?jǐn)?shù)字簽名算法162,存儲(chǔ)裝置160還包含編碼或 解碼算法164和模幕算法166。如將在下文中借助于各種實(shí)例更詳細(xì)地理解和解釋,編碼算 法164將初始值轉(zhuǎn)換成屬于一個(gè)集合,模幕算法166在所述集合上操作,而解碼算法164將此 編碼集合中的值轉(zhuǎn)換回到原始集合(例如整數(shù)的集合等)中的值。模幕算法166使用升高到 秘密指數(shù)d或公共指數(shù)e(取決于簽名是對應(yīng)地被計(jì)算還是被驗(yàn)證)的幕的編碼值的加密密 鑰模數(shù)N來計(jì)算相當(dāng)于留數(shù)的模幕。在遵循白箱密碼術(shù)方法的各種實(shí)施例中,模幕算法166 并不獲取秘密指數(shù)d,并且實(shí)際上存儲(chǔ)裝置160包含查找表168,所述查找表可W由模幕算法 166用于執(zhí)行如在W下不同實(shí)例中描述的其功能。
[0074] 在硬件裝置100實(shí)施內(nèi)容服務(wù)器或其它服務(wù)器W用于分配查找表的情況下,存儲(chǔ) 裝置包含查找表產(chǎn)生指令172。運(yùn)些指令172可利用密鑰(包含秘密指數(shù),d)和用于形成編碼 域V的因子集合S來預(yù)先計(jì)算因子的模幕,使得裝置不獲取秘密指數(shù)d,然而可使用預(yù)先計(jì)算 的模幕來構(gòu)造屬于編碼域V的任何編碼值的模幕。在一些此類實(shí)施例中,裝置100也可W產(chǎn) 生密鑰或因子集合,并且因此,存儲(chǔ)裝置160可存儲(chǔ)密鑰產(chǎn)生指令174或因子集合產(chǎn)生指令 176。應(yīng)了解,在一些實(shí)施例中,加密密鑰或因子集合對于每個(gè)用戶可W是唯一的,對于所有 用戶或其某一組合可W是恒定的。此外,在一些實(shí)施例中,內(nèi)容服務(wù)器或其它服務(wù)器也可W 參與數(shù)字簽名方案(例如,驗(yàn)證查找表先前被發(fā)送到的裝置的身份標(biāo)識(shí)),并且因此還可包 含數(shù)字簽名算法162、編碼/解碼算法164和模幕算法166。
[0075] 將顯而易見的是,描述為存儲(chǔ)在存儲(chǔ)裝置160中的各種信息可另外或替代地存儲(chǔ) 在存儲(chǔ)器130中。在運(yùn)方面中,存儲(chǔ)器130也可W被視為構(gòu)成"存儲(chǔ)裝置"并且存儲(chǔ)裝置160可 被視為"存儲(chǔ)器"。各種其它布置將是顯而易見的。此外,存儲(chǔ)器130和存儲(chǔ)裝置160可都被視 作"非暫時(shí)性機(jī)器可讀媒體"。如本文中所使用,術(shù)語"非暫時(shí)性"將被理解為不包括暫時(shí)信 號但是包含所有形式的存儲(chǔ)裝置,包含易失性存儲(chǔ)器和非易失性存儲(chǔ)器運(yùn)兩者。
[0076] 盡管硬件裝置100示出為包含每個(gè)所描述的組件中的一個(gè)組件,但是各種組件可 W在各種實(shí)施例中復(fù)制。舉例來說,處理器120可W包含多個(gè)微處理器,所述微處理器被配 置成獨(dú)立地執(zhí)行本文中所描述的方法或被配置成執(zhí)行本文中所描述的方法的步驟或子例 程,使得多個(gè)處理器協(xié)作W實(shí)現(xiàn)本文中描述的功能性。在其它實(shí)施例中,例如在其中裝置 100在云計(jì)算環(huán)境中實(shí)施的那些實(shí)施例中,各種組件可物理地位于不同機(jī)器中。舉例來說, 處理器120可W包含在第一數(shù)據(jù)中屯、服務(wù)器中的第一微處理器W及在第二數(shù)據(jù)中屯、服務(wù)器 中的第二微處理器。各種另外的布置將是顯而易見的。
[0077] 圖2示出用于將安全內(nèi)容提供給用戶裝置且提供處理所述安全內(nèi)容的軟件應(yīng)用程 序的系統(tǒng)的實(shí)例。所述系統(tǒng)包含內(nèi)容服務(wù)器200、應(yīng)用程序服務(wù)器220、用戶裝置250J52W 及數(shù)據(jù)網(wǎng)絡(luò)240。用戶裝置250、252可請求經(jīng)由數(shù)據(jù)網(wǎng)絡(luò)240獲取由內(nèi)容服務(wù)器200提供的安 全內(nèi)容。數(shù)據(jù)網(wǎng)絡(luò)可W是提供用戶裝置250、252與內(nèi)容服務(wù)器200和應(yīng)用程序服務(wù)器220之 間的連接性的任何數(shù)據(jù)網(wǎng)絡(luò)。用戶裝置250、252可W是多個(gè)裝置中的一個(gè)裝置,例如,機(jī)頂 盒、流媒體播放器、數(shù)字視頻錄像機(jī)、平板計(jì)算機(jī)、移動(dòng)電話、膝上型計(jì)算機(jī)、便攜式媒體裝 置、智能手表、桌上型計(jì)算機(jī)、媒體服務(wù)器等。
[0078] 針對獲取的用戶請求可能首先需要下載可用于處理由內(nèi)容服務(wù)器200提供的安全 內(nèi)容的軟件應(yīng)用程序。軟件應(yīng)用程序可W從應(yīng)用程序服務(wù)器220下載。軟件應(yīng)用程序可W使 用上文所描述的技術(shù)隱藏并且如上文所描述而操作。一旦用戶裝置250、252安裝軟件應(yīng)用 程序,用戶裝置隨后就可W從內(nèi)容服務(wù)器200下載安全內(nèi)容并且使用所下載的軟件應(yīng)用程 序獲取安全內(nèi)容。舉例來說,所下載的軟件應(yīng)用程序可執(zhí)行對從內(nèi)容服務(wù)器接收的加密內(nèi) 容的解密。在其它實(shí)施例中,軟件應(yīng)用程序可執(zhí)行其它安全操作,例如,加密、數(shù)字簽名產(chǎn)生 和驗(yàn)證等。
[0079] 內(nèi)容服務(wù)器200可控制對提供給用戶裝置250、252的安全內(nèi)容的獲取。因此,當(dāng)內(nèi) 容服務(wù)器200接收針對安全內(nèi)容的請求時(shí),內(nèi)容服務(wù)器200可將安全內(nèi)容發(fā)送到請求用戶裝 置。同樣地,應(yīng)用程序服務(wù)器220可控制對提供給用戶裝置250、252的軟件應(yīng)用程序的獲取。 因此,當(dāng)內(nèi)容服務(wù)器220接收針對軟件應(yīng)用程序的請求時(shí),應(yīng)用程序服務(wù)器220可將軟件應(yīng) 用程序發(fā)送到請求用戶裝置。在將軟件應(yīng)用程序或安全內(nèi)容提供給用戶裝置之前,請求軟 件應(yīng)用程序或安全內(nèi)容的用戶裝置也可W通過對應(yīng)的服務(wù)器來認(rèn)證。
[0080] 內(nèi)容服務(wù)器200可W包含經(jīng)由一個(gè)或多個(gè)系統(tǒng)總線208互連的處理器202、存儲(chǔ)器 204、用戶接口206、網(wǎng)絡(luò)接口210W及內(nèi)容存儲(chǔ)裝置212。應(yīng)理解,在一些方面中,圖2構(gòu)成抽 象圖并且裝置200的組件的實(shí)際組織可能比所示更加復(fù)雜。
[0081] 處理器202可W是能夠執(zhí)行存儲(chǔ)在存儲(chǔ)器204或存儲(chǔ)裝置212中的指令的任何硬件 裝置。因此,處理器可W包含微處理器、現(xiàn)場可編程口陣列(FPGA)、專用集成電路(ASIC)或 其它類似裝置。
[0082] 存儲(chǔ)器204可W包含各種存儲(chǔ)器,例如,L1、L2或L3高速緩沖存儲(chǔ)器或系統(tǒng)存儲(chǔ)器。 因此,存儲(chǔ)器204可W包含靜態(tài)隨機(jī)存取存儲(chǔ)器(SRAM)、動(dòng)態(tài)RAM(DRAM)、快閃存儲(chǔ)器、只讀 存儲(chǔ)器(ROM),或其它類似存儲(chǔ)器裝置。
[0083] 用戶接口 206可W包含用于使得能夠與例如管理員等用戶通信的一個(gè)或多個(gè)裝 置。舉例來說,用戶接口 206可W包含用于接收用戶命令的顯示器、鼠標(biāo)和鍵盤。
[0084] 網(wǎng)絡(luò)接口 210可W包含用于使得能夠與其它硬件裝置通信的一個(gè)或多個(gè)裝置。舉 例來說,網(wǎng)絡(luò)接口 210可W包含網(wǎng)絡(luò)接口卡(NIC),所述網(wǎng)絡(luò)接口卡被配置成根據(jù)W太網(wǎng)協(xié) 議通信。另外,網(wǎng)絡(luò)接口 210可實(shí)施TCP/IP找W用于根據(jù)TCP/IP協(xié)議通信。用于網(wǎng)絡(luò)接口 210 的各種替代的或另外的硬件或配置將是顯而易見的。
[0085] 內(nèi)容存儲(chǔ)裝置212可W包含一個(gè)或多個(gè)機(jī)器可讀內(nèi)容存儲(chǔ)媒體,例如只讀存儲(chǔ)器 (ROM)、隨機(jī)存取存儲(chǔ)器(RAM)、磁盤存儲(chǔ)媒體、光學(xué)存儲(chǔ)媒體、快閃存儲(chǔ)器裝置或類似存儲(chǔ) 媒體。在各種實(shí)施例中,內(nèi)容存儲(chǔ)裝置212可存儲(chǔ)將提供給用戶的內(nèi)容。
[0086] 應(yīng)用程序服務(wù)器220包含如同在內(nèi)容服務(wù)器200中的那些的元件,并且內(nèi)容服務(wù)器 200中的相同的元件的描述適用于應(yīng)用程序服務(wù)器220。并且,內(nèi)容存儲(chǔ)裝置722被應(yīng)用程序 存儲(chǔ)裝置232代替。此外,應(yīng)注意,內(nèi)容服務(wù)器和應(yīng)用程序服務(wù)器可W在單一服務(wù)器上實(shí)施。 并且,此類服務(wù)器可W在分布式計(jì)算機(jī)系統(tǒng)上實(shí)施W及在上云計(jì)算機(jī)系統(tǒng)上實(shí)施。
[0087] 如應(yīng)理解,本文中描述的模幕、編碼或數(shù)字簽名方法可W在圖2的系統(tǒng)或類似系統(tǒng) 內(nèi)W各種方式部署和利用。舉例來說,用戶裝置250、252可由制造商或其它賣方提供,所述 用戶裝置被預(yù)配置成將已簽名的消息發(fā)送到內(nèi)容服務(wù)器200W請求內(nèi)容的提供。替代地,用 戶裝置250、252可能未完全針對此類操作預(yù)配置;實(shí)際上,應(yīng)用程序服務(wù)器220可與用戶裝 置250、252通信W實(shí)現(xiàn)此類配置。舉例來說,應(yīng)用程序服務(wù)器可發(fā)送代碼指令W用于實(shí)施本 文中所描述的方法或限定一個(gè)或多個(gè)查找表的數(shù)據(jù)。
[0088] 圖3示出用于對消息進(jìn)行數(shù)字簽名的方法300的實(shí)例。方法300可對應(yīng)于圖1的數(shù)字 簽名算法162。舉例來說,在裝置請求內(nèi)容提供的實(shí)施例中,裝置可執(zhí)行例如方法300等方法 W對請求消息進(jìn)行數(shù)字簽名來證明請求者的身份標(biāo)識(shí)。用于執(zhí)行例如方法300等數(shù)字簽名 方法的各種替代情況將是顯而易見的。
[0089] 方法在步驟305中開始并且前進(jìn)到步驟310,在步驟310中,裝置計(jì)算待簽名的消息 m的摘要h。舉例來說,消息可W是請求將內(nèi)容提供給裝置的請求消息。摘要可根據(jù)例如將哈 希函數(shù)應(yīng)用到整個(gè)消息化(m))的任何方法計(jì)算。替代地,在一些實(shí)施例中,完全的非摘要方 法可W用于數(shù)字簽名,在此情況下可省略步驟310。
[0090] 接下來,在步驟315中,裝置將摘要(或其它值化編碼到編碼域V中,在所述編碼域 內(nèi)W下模幕步驟被配置成操作。確切地說,根據(jù)各種實(shí)施例,編碼域V是基于預(yù)先選擇的因 子集合S限定或產(chǎn)生的。因子集合S可W例如是質(zhì)數(shù)的集合、質(zhì)數(shù)幕的集合、相對于彼此互質(zhì) 的數(shù)的集合或整數(shù)的任意集合。鑒于本發(fā)明,因子集合S的選擇之間的各種權(quán)衡將是顯而易 見的。舉例來說,質(zhì)數(shù)的集合可提供與非互質(zhì)的任意整數(shù)的集合相比對"誤檢"簽名驗(yàn)證的 更大的防御,但是也可能需要較大查找表W預(yù)先計(jì)算和存儲(chǔ)。給定此因子集合S,編碼域可 被定義為可構(gòu)造為S中的因子的乘積的任何整數(shù)。
[0091]
[0092] 其中N是加密密鑰的模數(shù)。舉例來說,給定因子集合5={2,3,5},可^示出50£¥, 因?yàn)?0 = 21巧2。另一方面,70并不落入此實(shí)例編碼域V內(nèi),因?yàn)槠滟|(zhì)數(shù)因子中的一個(gè)質(zhì)數(shù)因 子,7,既不是S的元素也不是S中的元素的因子。針對步驟315可利用各種編碼算法W實(shí)現(xiàn)值 he至到編碼值bev的轉(zhuǎn)換。在下文中將相對于圖6、8和10更詳細(xì)地描述各種實(shí)例編碼方 法。
[0093] 在步驟320中,裝置識(shí)別編碼值b的在因子集合S內(nèi)的£西子,使得
[0094]
[0095] 舉例來說,給定編碼值b,裝置可利用試除法來識(shí)別S中的哪些因子是b的因子。在 其它實(shí)施例中,例如,其中在步驟315中編碼算法在S中選擇因子的實(shí)施例,因子可能已經(jīng)提 供于步驟320中。舉例來說,編碼算法可向前共享選定因子W用于方法300的剩余步驟中。替 代地,在一些實(shí)施例中,編碼和模幕算法可組合,使得當(dāng)因子被選擇用于原始值時(shí),它們被 取模幕(例如,完全通過計(jì)算或參考查找表)并且隨后僅組合成乘積。
[0096] 接下來,在步驟325中,裝置計(jì)算簽名S作為編碼值的模幕。在裝置獲取秘密指數(shù)d 的情況下,裝置可將模幕完全計(jì)算為,
[0097]
[0098] 換句話說,所述裝置可計(jì)算b的因子集合S中的每個(gè)因子的模幕并且隨后計(jì)算運(yùn)些 所得值的乘積。替代地,在裝置不具有秘密指數(shù)d的值且實(shí)際上具有S中的每個(gè)因子的模幕 的預(yù)先計(jì)算的查找表的情況下,裝置可實(shí)際上計(jì)算對應(yīng)于編碼值6的£因子的查找表項(xiàng)的乘 積。舉例來說,給定查找表L和索引函數(shù)t(x),所述索引函數(shù)針對因子X返回在因子集合S內(nèi) 的因子的索引(或簡單地給定C因子的索引),裝置可將模幕計(jì)算為
[0099]
[0100] 在已經(jīng)計(jì)算簽名S之后,裝置隨后將簽名S連同消息m-起發(fā)送到接收方,例如,在 內(nèi)容請求的情況下,發(fā)送到內(nèi)容服務(wù)器。在步驟335中方法300隨后前進(jìn)到結(jié)束。
[0101] 在接收消息和簽名對之后,接收方裝置可前進(jìn)W驗(yàn)證簽名。舉例來說,在接收方裝 置是內(nèi)容服務(wù)器的情況下,服務(wù)器可驗(yàn)證簽名并且僅當(dāng)簽名經(jīng)過驗(yàn)證才開始服務(wù)于內(nèi)容。 用于簽名驗(yàn)證的各種其它情況和結(jié)果將是顯而易見的。
[0102] 圖4示出用于驗(yàn)證數(shù)字簽名的方法400的實(shí)例。方法300可對應(yīng)于圖1的數(shù)字簽名算 法162。方法400可結(jié)合方法300(或與其類似的方法)操作,并且為了實(shí)現(xiàn)此類互補(bǔ)操作,運(yùn) 兩種方法可用關(guān)于因子集合S、編碼域V、編碼/解碼算法對(它們自身可W是互補(bǔ)算法)、哈 希函數(shù)或加密密鑰的公共元素<e,N〉的先驗(yàn)協(xié)定實(shí)施。
[0103] 方法400在步驟405中開始并且前進(jìn)到步驟410,在步驟410中,裝置從發(fā)送裝置接 收消息和簽名。舉例來說,簽名S可通過執(zhí)行方法300或其類似方法的發(fā)送裝置產(chǎn)生且發(fā)送 到裝置。接下來,在步驟415中,裝置計(jì)算簽名的模幕W產(chǎn)生編碼值b。如將理解,當(dāng)通過方法 300計(jì)算的簽名S再次用于模幕運(yùn)算但是具有公共指數(shù)e而不是私有指數(shù)加寸,將恢復(fù)原始的 預(yù)先模幕值b(只要指數(shù)d和e是匹配的對)。在步驟415中模幕可根據(jù)任何方法計(jì)算,例如,簡 單明了的數(shù)學(xué)計(jì)算、簽名的質(zhì)數(shù)因子的模幕的計(jì)算,或甚至參考基于用于所有小于N的質(zhì)數(shù) 的公共指數(shù)e而用模幕預(yù)先計(jì)算的單獨(dú)的查找表。
[0104] 在步驟420中,裝置確定恢復(fù)值b是否屬于編碼域V。舉例來說,裝置可使用試除法 確定是否可W使用來自因子集合S的因子構(gòu)造值b。如果恢復(fù)值b并不屬于編碼域V,那么方 法400前進(jìn)到步驟445,其中裝置確定簽名被確定為未驗(yàn)證的。否則的話,方法400前進(jìn)到步 驟425。
[0105] 在步驟425中,裝置使用解碼算法對整數(shù)b進(jìn)行解碼W產(chǎn)生整數(shù)a。如同方法300的 編碼步驟315-樣,解碼步驟425可實(shí)際上利用任何方法來將編碼值bev轉(zhuǎn)換成未經(jīng)編碼值 a巨置,所述方法補(bǔ)充用于形成簽名S的編碼方法使得
[0106] 解碼(編碼(χ))=χ。
[0107] 在下文中將相對于圖7、9和11更詳細(xì)地描述解碼方法的各種實(shí)例。
[0108] 在步驟430中,裝置計(jì)算消息m的摘要W產(chǎn)生值h。如同方法300的摘要步驟310 - 樣,摘要函數(shù)可實(shí)際上是任何函數(shù),例如預(yù)先選擇且同意的哈希函數(shù)。替代地,在不計(jì)算摘 要的情況下,消息m可被視為值h。在步驟435中,裝置確定恢復(fù)值a是否匹配摘要值h。如果不 匹配,那么方法前進(jìn)到步驟445,其中裝置確定簽名無法驗(yàn)證。否則的話,方法前進(jìn)到步驟 440,其中裝置確定簽名被驗(yàn)證并且接受消息對為真實(shí)的(例如,響應(yīng)于包含于消息中的請 求而前進(jìn))。在步驟440或445中作出關(guān)于驗(yàn)證的確定之后,在步驟450中方法前進(jìn)到結(jié)束。
[0109] 圖5示出用于產(chǎn)生待用于例如方法300等數(shù)字簽名產(chǎn)生方法中的查找表的方法500 的實(shí)例。用于產(chǎn)生用于例如方法400等數(shù)字簽名驗(yàn)證方法中的查找表的各種修改將是顯而 易見的。方法500可對應(yīng)于圖1的查找表產(chǎn)生指令172。在各種實(shí)施例中,方法500可基于將由 方法300或400使用的各種值產(chǎn)生查找表。舉例來說,方法500可具有加密密鑰<6,(1,齡、因子 集合S、編碼域V、編碼/解碼方法對等。
[0110] 方法500在步驟505中開始并且前進(jìn)到步驟510,其中裝置確定因子集合S,所述因 子集合將用于數(shù)字簽名方案中并且查找表基于所述因子集合。在一些實(shí)施例中,此步驟可 替代地確定因子集合的子集S',查找表基于所述子集。具體來說,在集合S內(nèi)的一些因子自 身是集合S中的其它因子的乘積的情況下,運(yùn)些因子可從查找表中省略,因?yàn)樗鼈兛蒞簡單 地由較小因子重構(gòu)。舉例來說,在一些實(shí)施例中,集合S可包含非質(zhì)數(shù)的因子??紤]S={2,3, 4,5,7}的情況。在構(gòu)造查找表時(shí),裝置可實(shí)際上利用子集S'= {2,3,5,7},因?yàn)?可由2(4 = 22)構(gòu)造,使得查找表項(xiàng)4潛在地冗余。在其它實(shí)施例中,裝置仍可在查找表中包含此類冗余 項(xiàng)。應(yīng)了解移除此類冗余項(xiàng)引起查找表大小與計(jì)算效率之間的權(quán)衡。
[0111] 在又一替代實(shí)施例中,查找表可基于集合S'產(chǎn)生,集合S'包含不是S的成員的一個(gè) 或多個(gè)元素。舉例來說,考慮5={22,32,24,52,7 2} = {4,9,16,25,49}的情況。雖然查找表可 W基于具有5個(gè)元素的S產(chǎn)生,但是查找表可替代地基于S'= {2,3,5,7}通過4個(gè)元素產(chǎn)生。 任一表可用于精確地計(jì)算模幕。在運(yùn)兩個(gè)實(shí)施例中,S'可被稱為因子集合S的基礎(chǔ)因子集 厶 1=1 〇
[0112] 出于簡潔起見,如本文參考查找表產(chǎn)生所使用,選擇作為查找表的基礎(chǔ)的集合將 被稱作S,而不管此集合是全因子集合還是其子集。用于實(shí)現(xiàn)基于因子的子集的查找表的計(jì) 算的各種修改將是顯而易見的。
[0113] 在步驟515中,裝置通過輸入因子集合S中的每個(gè)元素來初始化新查找表。隨后,在 步驟520中,裝置將索引初始化到0的起始值。隨后,在步驟525中,裝置設(shè)定當(dāng)前查找表項(xiàng)的 值。具體來說,裝置使用秘密指數(shù)d和加密密鑰模數(shù)N來計(jì)算S中的第i個(gè)元素的模幕。裝置隨 后將查找表的第i項(xiàng)L[i]設(shè)定成等于所計(jì)算的值。隨后,在步驟530中,裝置使索引i遞增。
[0114] 在步驟535中,裝置確定S中的最后一個(gè)因子是否已經(jīng)得到處理,產(chǎn)生完整的查找 表。舉例來說,裝置可確定i現(xiàn)在是否等于(或在某種程度上大于)S的長度。如果不是,那么 方法500循環(huán)回到步驟525,在步驟525中可W計(jì)算下一個(gè)查找表項(xiàng)。否則的話,方法500前進(jìn) 到步驟540,其中裝置將查找表L發(fā)送到一個(gè)或多個(gè)裝置W用于執(zhí)行模幕運(yùn)算,作為例如方 法300等數(shù)字簽名方法的一部分。方法500隨后在步驟545中前進(jìn)到結(jié)束。
[0115] 如上文所指出,本文中描述的模幕方案可W結(jié)合各種編碼和解碼方法使用。根據(jù) 第一實(shí)例,給定X位整數(shù),編碼函數(shù)可計(jì)算B平滑輸出(用于適當(dāng)?shù)剡x擇的最大質(zhì)數(shù)B)。根據(jù) 此實(shí)例,集合S被選擇為至多B個(gè)質(zhì)數(shù)的有序子集:
[Om] 8={3^其中3邊質(zhì)數(shù),31《8,且31<3巧要;[<^
[0117]第一實(shí)例編碼函數(shù)可隨后針對2進(jìn)制表示的X位整數(shù)h定義為
[011 引
[0119] 因此,取決于h的位表示,第一實(shí)例編碼方法計(jì)算至多B個(gè)質(zhì)數(shù)的子集的乘積。解碼 函數(shù)的第一實(shí)例可隨后被定義為
[0120]
[0121] 因此,第一實(shí)例解碼方法確定S中的哪些因子包含于編碼值中并且基于所識(shí)別的 因子設(shè)定位。在一些實(shí)施例中,可W選擇B的值,使得S中的因子的乘積并不超過將結(jié)合編碼 值的隨后的模幕使用的加密模數(shù)N。
[0122] 作為第一實(shí)例的替代方案,相同編碼和解碼方法可W用于不同因子集合。舉例來 說,集合S可實(shí)際上被定義為質(zhì)數(shù)幕的集合:
[0123]
[0124] 集合S可隨后受限于由S的前K《|S|個(gè)元素 Si組成的子集S,其中so<s^...< SK-1。此特定集合將在下文中被稱為"質(zhì)數(shù)平方幕"因子集合。
[0125] 圖6示出編碼方法600的此第一實(shí)例的實(shí)例實(shí)施方案。此方法可對應(yīng)于圖1的編碼 算法164并且可W在步驟315中被稱作數(shù)字簽名產(chǎn)生方法300。替代地,編碼方法600可W用 于在本文中描述的數(shù)字簽名或模幕方法之外的各種其它情況。
[0126] 方法在步驟605中開始并且前進(jìn)到步驟610,在步驟610中,裝置將待編碼的值h轉(zhuǎn) 換成二進(jìn)制表示。替代地,在各種實(shí)施例中,整數(shù)h可能已經(jīng)W二進(jìn)制形式表示并且不需要 進(jìn)一步轉(zhuǎn)換;在此類實(shí)施例中,可W省略步驟610。
[0127] 接下來,在步驟615中,裝置可確定待用于編碼的因子集合S。舉例來說,因子集合S 可通過硬編碼到方法600中、從存儲(chǔ)器檢索,或從例如內(nèi)容服務(wù)器等另一裝置接收而預(yù)先確 定。舉例來說,根據(jù)例如上文所述的一個(gè)方案的質(zhì)數(shù)幕方案,因子集合S可W是前X個(gè)質(zhì)數(shù)的 集合或前X個(gè)質(zhì)數(shù)幕的集合。用作因子集合S的各種替代的集合將是顯而易見的。在步驟620 中,裝置隨后初始化編碼值b和當(dāng)前索引i。
[0128] 在進(jìn)入方法600的循環(huán)后,裝置將一個(gè)項(xiàng)并入到工作編碼值b中。如圖所示,b的當(dāng) 前值(初始化為1)乘W-個(gè)因子,所述因子對應(yīng)于升高到整數(shù)h的在對應(yīng)于當(dāng)前索引的位位 置處的二進(jìn)制數(shù)字(即,位)的幕的當(dāng)前索引。換句話說,當(dāng)當(dāng)前位是'1'時(shí),對應(yīng)于位位置的 S中的因子并入到工作編碼值中;否則的話,編碼值并不基于當(dāng)前位位置改變。基于整數(shù)h修 改編碼值的各種替代方式將是顯而易見的。舉例來說,通過使S的大小加倍,每個(gè)位位置可 與兩個(gè)可能的因子相關(guān)聯(lián):當(dāng)h[i]是0時(shí)待并入的因子S21和當(dāng)h[i]是1時(shí)待并入的因子 S2i+l〇
[0129] 在考慮當(dāng)前位位置和可能地更新編碼值b之后,在步驟630中裝置使索引遞增。接 下來,在步驟635中,裝置確定方法600是否已經(jīng)處理整數(shù)h中的最后一個(gè)位。舉例來說,裝置 可確定當(dāng)前索引現(xiàn)在是否等于(或在某種程度上大于化中的位數(shù)。如果不是,那么方法600 循環(huán)回到步驟625W考慮下一個(gè)位位置。否則的話,方法600前進(jìn)W在步驟640中將編碼值b 返回到請求方法,例如,數(shù)字簽名產(chǎn)生方法300。方法隨后在步驟645中前進(jìn)到結(jié)束。
[0130] 圖7示出解碼方法700的第一實(shí)例的實(shí)例實(shí)施方案。此方法可對應(yīng)于圖1的解碼算 法164并且可W在步驟425中被稱作數(shù)字簽名驗(yàn)證方法400。替代地,解碼方法700可W用于 在本文中描述的數(shù)字簽名或模幕方法之外的各種其它情況。
[0131] 方法700在步驟705中開始并且前進(jìn)到步驟710,在步驟710中裝置確定用于對待解 碼的值b進(jìn)行編碼的因子集合S。舉例來說,在實(shí)施方法700W結(jié)合實(shí)例編碼方法600操作的 情況下,集合S可被預(yù)配置W供使用。隨后,在步驟715中,裝置初始化索引i和工作解碼值a。 接下來,在步驟720中,裝置確定S的第i個(gè)元素是否是編碼值b的因子,例如,通過試除法。如 果不是,那么方法先前跳到步驟730。否則的話,方法前進(jìn)到步驟725,其中裝置將工作解碼 值a的位設(shè)定成對應(yīng)于S捆子。舉例來說,如圖所示,裝置簡單地將21加到工作值。
[0132] 在考慮S的第i個(gè)因子之后,在步驟730中裝置使i遞增。隨后,在步驟730中,裝置確 定是否已經(jīng)考慮了 S中的所有因子。舉例來說,裝置可確定i是否等于(或在某種程度上大 于)S中的因子的數(shù)目。如果不是,那么方法循環(huán)回到步驟720W考慮下一個(gè)因子。否則的話, 解碼完成并且在步驟740中方法700將解碼值a返回到請求者,例如,方法400等數(shù)字簽名驗(yàn) 證方法。方法隨后在步驟745中前進(jìn)到結(jié)束。
[0133] 根據(jù)第二實(shí)例,待編碼的整數(shù)Wr進(jìn)制表示呈現(xiàn)為
[0134]
[0135] 其中r進(jìn)制數(shù)的數(shù)值nr可W從編碼寬度η確定為
[0136]
[0137] 第二實(shí)例編碼方法還選擇足夠長度的因子集合S,使得編碼值的每個(gè)r進(jìn)制數(shù)可分 配有對于該數(shù)字位置唯一的任何r個(gè)因子。舉例來說,在能夠?qū)?2個(gè)十六進(jìn)制數(shù)進(jìn)行編碼的 16進(jìn)制實(shí)施方案中,因子集合S被選擇為具有至少512個(gè)因子(即,16個(gè)因子用于32個(gè)位中的 每一個(gè)位)。給定此集合,第二實(shí)例編碼方法可被定義為
[013 引
[0139] 因此,因子集合S包含用于每個(gè)數(shù)字位置并且用于待編碼的值中的每個(gè)數(shù)字位置 的因子的子集、對應(yīng)于數(shù)字值的因子選自適當(dāng)子集W用于包含在編碼乘積中。
[0140] 給定B平滑整數(shù),
[0141]
[0142] 其中0<U〇<. . .<Un[r]-l<K,對應(yīng)的解碼函數(shù)可被定義為
[0143]
[0144] 換句話說,為了對a的第一r進(jìn)制數(shù)字進(jìn)行編碼,編碼方法挑選序列so,si,. . .,sr-i 中的第ao個(gè)元素,隨后挑選序列Sr,Sr+l,. . .,S2r-沖的第ai個(gè)元素等等。對于待編碼的每個(gè) 數(shù)字,第二實(shí)例使用S中的r個(gè)額外因子。對η位整數(shù)進(jìn)行編碼因此使用K = nrr個(gè)因子S。在V 存在于編碼域V中的情況下解碼是可能的,
[0145]
[0146] 對于上文定義為質(zhì)數(shù)-平方-幕的集合的因子集合SW及給定模數(shù)大小和B,最大編 碼寬度可通過最大η確定,使得
[0147]
[0148] 舉例來說,對于1024位模數(shù)Ν,表1示出了針對各種基數(shù)r可實(shí)現(xiàn)的的最大寬度(限 于2的幕);且隨后示出了用于編碼寬度η的參數(shù)的實(shí)例選擇,旨在使查找表L中的項(xiàng)k的數(shù)目 降到最小。應(yīng)注意最小k可通過可W對給定寬度進(jìn)行編碼的最小基數(shù)獲得。
[0149]
[0150] 圖8示出編碼方法800的第二實(shí)例的實(shí)例實(shí)施例。此方法可對應(yīng)于圖1的編碼算法 164并且可W在步驟315中被稱作數(shù)字簽名產(chǎn)生方法300。替代地,編碼方法800可W用于在 本文中描述的數(shù)字簽名或模幕方法之外的各種其它情況。
[0151] 方法800在步驟805中開始并且前進(jìn)到步驟810,在步驟810中裝置將待編碼整數(shù)轉(zhuǎn) 換成r進(jìn)制表示(其中基數(shù)r是待用于編碼的預(yù)配置基數(shù))。隨后,在步驟815中,裝置確定待 使用的因子集合S。同樣,此集合S可被預(yù)配置W用于編碼。舉例來說,所述基數(shù)和因子集合 可從內(nèi)容服務(wù)器接收并且存儲(chǔ)W用于稍后使用。在步驟820中,所述裝置隨后初始化索引i 和工作編碼值b。
[0152] 在步驟825中,所述裝置將來自S的適當(dāng)因子并入到工作編碼值b中。舉例來說,如 圖所示,裝置首先識(shí)別適當(dāng)索引為ir+hi,并且用對應(yīng)于此索引的S中的元素乘W工作值。因 此在運(yùn)個(gè)計(jì)算出的索引(ir)中的第一項(xiàng)在對應(yīng)于當(dāng)前數(shù)字位置的S的子集的開始處設(shè)定索 引,并且第二項(xiàng)化1)將索引移動(dòng)到對應(yīng)于在該數(shù)字位置處的h的值的此子集內(nèi)的位置。各種 修改將是顯而易見的。舉例來說,在一些實(shí)施例中,可針對每個(gè)數(shù)字位置從s移除一個(gè)因子, 并且數(shù)字值0可能導(dǎo)致沒有來自對應(yīng)子集的因子并入到b中,其方式類似于上文相對于方法 600所說明和示出的(其中二進(jìn)制0導(dǎo)致對應(yīng)的因子沒有并入到工作值中)。實(shí)現(xiàn)運(yùn)種和其它 變化的編碼和解碼方法的各種修改將是顯而易見的。
[0153] 在步驟825中的工作值b的修改之后,在步驟830中裝置使索引遞增。隨后,在步驟 835中,裝置確定是否已經(jīng)考慮h中的所有數(shù)字部分。舉例來說,裝置可確定i是否等于(或在 某種程度上大于化中的r進(jìn)制數(shù)的數(shù)目。如果不是,那么方法800循環(huán)回到步驟825W考慮下 一個(gè)數(shù)字位置。否則的話,方法800前進(jìn)W在步驟840中將編碼值b返回到請求方法,例如,數(shù) 字簽名產(chǎn)生方法300。方法隨后在步驟845中前進(jìn)到結(jié)束。
[0154] 圖9示出解碼方法900的第二實(shí)例的實(shí)例實(shí)施例。此方法可對應(yīng)于圖1的解碼算法 164,并且可W在步驟425中被稱作數(shù)字簽名驗(yàn)證方法400。替代地,解碼方法900可W用于在 本文中描述的數(shù)字簽名或模幕方法之外的各種其它情況。
[0155] 方法900在步驟905中開始并且前進(jìn)到步驟910,在步驟910中裝置確定用于對待解 碼的值b進(jìn)行編碼的因子集合S。舉例來說,在實(shí)施方法900W結(jié)合實(shí)例編碼方法800操作的 情況下,集合S(連同基數(shù)r一起)可被預(yù)配置W供使用。在步驟915中,裝置確定作為編碼值 的因子的因子Su<=S的集合,例如,通過試除法。在步驟920中,所述裝置隨后初始化索引i 和工作解碼值a。
[0156] 在步驟925中,裝置在全因子集合S內(nèi)確定Su中的第i個(gè)因子的索引m。舉例來說,對 于因子集合5={2,3,4,5,6,7,8,9,10巧0因子子集5。={4,5,10},當(dāng)1 = 0,1^ = 2時(shí)第一次執(zhí) 行步驟925,因?yàn)镾u[0] = 4且1(4)=2(即,4是0索引集合S中的第二因子)。在確定索引之后, 裝置相應(yīng)地修改工作值曰。具體來說,如圖所示,項(xiàng)(m mod r)ri被加到a的當(dāng)前值。
[0157] 在步驟930中修改工作值之后,在步驟935中,裝置使索引i遞增。隨后,在步驟940 中,裝置確定是否已經(jīng)考慮了Su中的所有因子。舉例來說,裝置可確定i是否等于(或在某種 程度上大于)Su中的因子的數(shù)目。如果不是,那么方法循環(huán)回到步驟925W考慮下一個(gè)因子。 否則的話,解碼完成并且在步驟945中方法900將解碼值a返回到請求者,例如,方法400等數(shù) 字簽名驗(yàn)證方法。方法隨后在步驟950中前進(jìn)到結(jié)束。
[0158] 根據(jù)第Ξ實(shí)例,編碼和解碼函數(shù)僅考慮規(guī)定權(quán)重W的因子的子集。換句話說,待編 碼的每個(gè)可能的值h與具有大小W的唯一集合TcS相關(guān)聯(lián)。因此,此第Ξ實(shí)例考慮來自Sk 的所有可能的W子集的集合U,即,具有來自Sk的W個(gè)元素的所有集合T。解碼和編碼函數(shù)對應(yīng) 地利用排名和不排名函數(shù)。如將理解,對于質(zhì)數(shù)-平方-幕集合,排名函數(shù)R:U 一 2/2?給定 的W子集將返回該子集在集合中的排名,a = R(T)。逆函數(shù),即不排名函數(shù)一U廟 排名a處返回W子集,T = ri(a)。實(shí)際上任何排名和不排名函數(shù)可W結(jié)合此第Ξ實(shí)例使用,例 如在W下各項(xiàng)中所描述的那些函數(shù)巧Arndt,用于程序員的算法-構(gòu)想、算法和源代碼 (Algorithms for programmers-ideas , algorithms and source code)? 2004; 民.1.1^乂63古、六.5}131111巧化.六(116111311,用于獲得數(shù)字簽名和公共密匙加密系統(tǒng)的方法(八 method for obtaining digital signatures and public-key cryptosystems),ACM 21 通訊(1978),120 到 126 頁;Gordon Royle,組合計(jì)數(shù):理論和實(shí)踐(Combinatorial enumerationjheoi'y and practice) ,2004; 1^及〇61'1';!_〇1^ Stolee,組合和排列的排名和不 排名(Ranking and unranking of combinations and permutations),可在http :// comput曰tion曰Icombin曰torics.wordpress.com/2012/09/lO/r曰nking-曰nd-unr曰nking-of- combinations-and-pe;rmu1:ations/獲得,2012年9月訪問的;其全部掲示內(nèi)容在此出于各種 目的W引用的方式并入本文中。
[0159]根據(jù)第Ξ實(shí)例,通過選擇最大因子值B和設(shè)置參數(shù)K(當(dāng)因子集合S是上文所述的質(zhì) 數(shù)-平方-幕因子時(shí))和W來對系統(tǒng)進(jìn)行初始化,使得
[0167]解碼函數(shù)可W被定義為 [016 引解碼(v)=R({u0,...,Uw-i})。
[0169] 此解碼可僅在V存在于編碼域V中的情況下是可能的,使得
[0170]
[0171] 雖然編碼寬度η將至少部分取決于選定的排名和不排名函數(shù),但是最大編碼寬度 可確定為
[0172]
[0173] 使得參數(shù)Κ和W滿足在選擇運(yùn)些參數(shù)時(shí)將滿足的上述約束。舉例來說,對于1024位 模數(shù),表2示出了針對128或256的編碼寬度W的參數(shù)Κ和W的實(shí)例選擇,旨在使查找表L中項(xiàng)k 的數(shù)目降到最小。對于運(yùn)些寬度,大小的增益與第二實(shí)例相比大致是2的因子。
[0174]
[0175]在第Ξ實(shí)例的各種替代實(shí)施例中,所述方法可通過W下操作來改變:考慮針對滿 足選擇約束的所有可能的對的參數(shù)化j,Wj)的所有可能的排名函數(shù)化U],w山,并且將每個(gè)排 名函數(shù)用于單獨(dú)的排名區(qū)間。第一排名函數(shù)用于區(qū)間
[0181] 針對1024位模數(shù)N,此方法可提供具有僅k = 48的128位編碼寬度和具有僅k = 238 的256位編碼寬度。
[0182] 圖10示出編碼方法1000的第Ξ實(shí)例的實(shí)例實(shí)施例。此方法可對應(yīng)于圖1的編碼算 法164并且可W在步驟315中被稱作數(shù)字簽名產(chǎn)生方法300。替代地,編碼方法1000可W用于 在本文中描述的數(shù)字簽名或模幕方法之外的各種其它情況。
[0183] 方法1000在步驟1005中開始并且前進(jìn)到步驟1010,在步驟1010中裝置確定將用于 對值h進(jìn)行編碼的因子集合T。具體來說,裝置將不排名函數(shù)應(yīng)用到值h,W檢索集合T。在一 些實(shí)施例中,例如如上文所述在多個(gè)不排名函數(shù)被視作具有參數(shù)K和W的不同組合的情況下 的那些實(shí)施例中,此步驟還可包含針對所述值h選擇適當(dāng)?shù)牟慌琶瘮?shù)。
[0184] 在步驟1015中,所述裝置隨后初始化索引i和工作編碼值b。在步驟1020中,裝置將 來自T的因子并入到工作編碼值中,方法是用T的第i個(gè)元素乘W當(dāng)前值b。在步驟1025中,裝 置隨后使索引i遞增。
[0185] 隨后,裝置確定是否已經(jīng)考慮T中的所有因子。舉例來說,裝置可確定i是否等于 (或在某種程度上大于)T中的元素的數(shù)目。如果不是,那么方法1000循環(huán)回到步驟1020W并 入下一個(gè)因子。否則的話,方法1000前進(jìn)W在步驟1035中將編碼值b返回到請求方法,例如, 數(shù)字簽名產(chǎn)生方法300。方法隨后在步驟1040中前進(jìn)到結(jié)束。
[0186] 圖11示出解碼方法1100的第Ξ實(shí)例的實(shí)例實(shí)施例。此方法可對應(yīng)于圖1的解碼算 法164并且可W在步驟425中被稱作數(shù)字簽名驗(yàn)證方法400。替代地,解碼方法1100可W用于 在本文中描述的數(shù)字簽名或模幕方法之外的各種其它情況。
[0187] 方法在步驟1105中開始并且前進(jìn)到步驟1110,在步驟1110中裝置確定用于對待解 碼的值b進(jìn)行編碼的因子集合S。舉例來說,在實(shí)施方法1100W結(jié)合實(shí)例編碼方法1000操作 的情況下,集合S(連同排名函數(shù)一起)可被預(yù)配置W供使用。隨后,在步驟1115中,裝置從S 中識(shí)別作為編碼值b的因子的W個(gè)元素(即,W子集T)。舉例來說,裝置可使用試除法作出此確 定。
[0188] 在確定集合T之后,裝置執(zhí)行排名函數(shù)W識(shí)別集合T在集合S內(nèi)的排名a。在多個(gè)排 名/不排名函數(shù)對可W取決于原始值使用并且與不同參數(shù)K和W相關(guān)聯(lián)的替代實(shí)施例中,此 步驟可W包含選擇適當(dāng)?shù)呐琶瘮?shù)。舉例來說,編碼裝置可將適當(dāng)排名函數(shù)的識(shí)別符轉(zhuǎn)發(fā) 到解碼裝置W基于最初選擇的不排名函數(shù)而使用。在一些此類實(shí)施例中,此信息也可W影 響步驟1110和1115,因?yàn)椴煌档摩蓪?dǎo)致使用不同集合S而不同值的w可導(dǎo)致識(shí)別不同長 度的集合T。在其它此類實(shí)施例中,裝置可基于S中的作為b的因子的因子的數(shù)目推斷所述 值,逐漸增大S的大小直至所有因子被定位(因此產(chǎn)生K和W的值)。
[0189] 如上文所指出,由排名函數(shù)所返回的排名a也是解碼值。因此,在應(yīng)用排名函數(shù)之 后,解碼完成并且在步驟1125中方法1100將解碼值a返回到請求者,例如,方法400等數(shù)字簽 名驗(yàn)證方法。在步驟1130中方法隨后前進(jìn)到結(jié)束。
[0190] 根據(jù)上述內(nèi)容,各種實(shí)施例實(shí)現(xiàn)編碼和模幕運(yùn)算(例如,W產(chǎn)生數(shù)字簽名)而不獲 取秘密指數(shù)d。舉例來說,通過提供包含待取模幕的值的因子的模幕的預(yù)先計(jì)算的查找表, 白箱實(shí)施方案仍然可計(jì)算模幕而不獲取秘密指數(shù)d。另外,本文中描述的各種編碼和解碼算 法對(及其變化)提供允許例如計(jì)算較小查找表的其它改進(jìn)。鑒于上述內(nèi)容各種另外的益處 將是顯而易見的。
[0191] 從上述描述中應(yīng)該顯而易見的是,本發(fā)明的各種實(shí)施例可W在硬件中實(shí)施。此外, 各種實(shí)施例可W實(shí)施為存儲(chǔ)在非暫時(shí)性機(jī)器可讀存儲(chǔ)媒體(例如,易失性存儲(chǔ)器或非易失 性存儲(chǔ)器)上的指令,所述指令可W由至少一個(gè)處理器讀取和執(zhí)行W執(zhí)行本文中詳細(xì)地描 述的操作。機(jī)器可讀存儲(chǔ)媒體可W包含用于W機(jī)器可讀形式存儲(chǔ)信息的任何機(jī)構(gòu),例如,個(gè) 人計(jì)算機(jī)或膝上型計(jì)算機(jī)、服務(wù)器或其它計(jì)算裝置。因此,非暫時(shí)性機(jī)器可讀存儲(chǔ)媒體不包 括暫時(shí)信號,但是可W包含易失性存儲(chǔ)器和非易失性存儲(chǔ)器,包含但不限于只讀存儲(chǔ)器 (ROM)、隨機(jī)存取存儲(chǔ)器(RAM)、磁盤存儲(chǔ)媒體、光學(xué)存儲(chǔ)媒體、快閃存儲(chǔ)器裝置和類似存儲(chǔ) 媒體。
[0192] 本領(lǐng)域的技術(shù)人員應(yīng)了解,本文中的任何框圖表示體現(xiàn)本發(fā)明的原理的說明性電 路的概念視圖。類似地,應(yīng)了解,任何流程圖表、流程圖、狀態(tài)遷移圖、偽碼等等表示各種過 程,所述過程可基本上呈現(xiàn)在機(jī)器可讀媒體中并且因此由計(jì)算機(jī)或處理器執(zhí)行,無論此類 計(jì)算機(jī)或處理器是否明確地示出。
[0193] 雖然已經(jīng)特定參考各種實(shí)施例的某些方面詳細(xì)地描述了各種實(shí)施例,但是應(yīng)理 解,本發(fā)明可容納其它實(shí)施例并且其細(xì)節(jié)能夠在各種顯而易見的方面中進(jìn)行修改。如本領(lǐng) 域的技術(shù)人員顯而易見的,可W實(shí)現(xiàn)變化和修改同時(shí)保持在本發(fā)明的精神和范圍內(nèi)。因此, 上述掲示內(nèi)容、描述和圖式僅出于說明性目的并且并不W任何方式限制本發(fā)明,本發(fā)明僅 由權(quán)利要求書限定。
【主權(quán)項(xiàng)】
1. 一種用于執(zhí)行模冪運(yùn)算的方法,其特征在于,所述方法包括: 確定待取冪的值b的多個(gè)因子; 從查找表檢索與所述多個(gè)因子相關(guān)聯(lián)的多個(gè)查找表項(xiàng); 計(jì)算所述多個(gè)查找表項(xiàng)的乘積;以及 使用加密密鑰模數(shù)N來計(jì)算所述乘積的留數(shù)以產(chǎn)生取冪值s。2. 根據(jù)權(quán)利要求1所述的方法,其特征在于,所述確定待取冪的值b的多個(gè)因子包括: 通過從因子集合S識(shí)別所述多個(gè)因子來表示值h,對所述值h進(jìn)行編碼。3. 根據(jù)權(quán)利要求1所述的方法,其特征在于: 所述確定待取冪的值b的多個(gè)因子包括:確定對應(yīng)地與因子集合S中的所述多個(gè)因子相 關(guān)聯(lián)的多個(gè)索弓丨;以及 所述檢索與所述多個(gè)因子相關(guān)聯(lián)的多個(gè)查找表項(xiàng)包括:從所述查找表中對應(yīng)地由所述 多個(gè)索引指示的位置檢索所述多個(gè)查找表項(xiàng)。4. 根據(jù)權(quán)利要求1所述的方法,其特征在于,進(jìn)一步包括: 計(jì)算將被數(shù)字簽名的消息m的摘要h; 對所述摘要h進(jìn)行編碼以產(chǎn)生待取冪的所述值b;以及 將所述消息m和取冪值s作為數(shù)字簽名發(fā)送到網(wǎng)絡(luò)裝置。5. 根據(jù)權(quán)利要求1所述的方法,其特征在于,進(jìn)一步包括: 從網(wǎng)絡(luò)裝置接收所述查找表;以及 存儲(chǔ)所述查找表以用于隨后通過所述檢索多個(gè)查找表項(xiàng)來獲取。6. 根據(jù)權(quán)利要求1所述的方法,其特征在于,所述多個(gè)因子是屬于預(yù)先確定的因子集合 S的多個(gè)質(zhì)數(shù)。7. 根據(jù)權(quán)利要求1所述的方法,其特征在于,進(jìn)一步包括對值h編碼以產(chǎn)生待取冪的所 述值b,包括: 迭代所述值h的位位置; 當(dāng)設(shè)定在所述值lu中在位置i處的位時(shí),將與在因子的集合S內(nèi)的位位置i相對應(yīng)的因子 si包含在所述編碼值b中。8. -種用于執(zhí)行模冪運(yùn)算的裝置,其特征在于,包括: 存儲(chǔ)器,其被配置成存儲(chǔ)查找表;以及 與所述存儲(chǔ)器通信的處理器,所述處理器被配置成: 確定待取冪的值b的多個(gè)因子; 從所述查找表檢索與所述多個(gè)因子相關(guān)聯(lián)的多個(gè)查找表項(xiàng); 計(jì)算所述多個(gè)查找表項(xiàng)的乘積;以及 使用加密密鑰模數(shù)N來計(jì)算所述乘積的留數(shù)以產(chǎn)生取冪值s。9. 根據(jù)權(quán)利要求8所述的裝置,其特征在于,在確定待取冪的值b的多個(gè)因子時(shí),所述處 理器被配置成: 通過從因子集合S識(shí)別所述多個(gè)因子來表示值h,而對所述值h進(jìn)行編碼。10. 根據(jù)權(quán)利要求8所述的裝置,其特征在于: 在確定待取冪的值b的多個(gè)因子時(shí),所述處理器被配置成確定對應(yīng)地與因子集合S中的 所述多個(gè)因子相關(guān)聯(lián)的多個(gè)索引;以及 在檢索與所述多個(gè)因子相關(guān)聯(lián)的多個(gè)查找表項(xiàng)時(shí),所述處理器被配置成從所述查找表 中對應(yīng)地由所述多個(gè)索引指示的位置檢索所述多個(gè)查找表項(xiàng)。11. 根據(jù)權(quán)利要求8所述的裝置,其特征在于,進(jìn)一步包括與所述處理器通信的網(wǎng)絡(luò)接 口,其中所述處理器被配置成: 計(jì)算將被數(shù)字簽名的消息m的摘要h; 對所述摘要h編碼以產(chǎn)生待取冪的所述值b;以及 經(jīng)由所述網(wǎng)絡(luò)接口將所述消息m和取冪值s作為數(shù)字簽名發(fā)送到網(wǎng)絡(luò)裝置。12. 根據(jù)權(quán)利要求8所述的裝置,其特征在于,進(jìn)一步包括與所述處理器通信的網(wǎng)絡(luò)接 口,其中所述處理器被配置成: 經(jīng)由所述網(wǎng)絡(luò)接口從網(wǎng)絡(luò)裝置接收所述查找表;以及 存儲(chǔ)所述查找表以用于隨后通過所述檢索多個(gè)查找表項(xiàng)來獲取。13. 根據(jù)權(quán)利要求8所述的裝置,其特征在于,所述多個(gè)因子是屬于預(yù)先確定的因子集 合S的多個(gè)質(zhì)數(shù)。14. 根據(jù)權(quán)利要求8所述的裝置,其特征在于,所述處理器進(jìn)一步被配置成對值h進(jìn)行編 碼以產(chǎn)生待取冪的所述值b,包括: 迭代所述值h的位位置; 當(dāng)設(shè)定在所述值lu中在位置i處的位時(shí),將與在因子的集合S內(nèi)的位位置i相對應(yīng)的因子 si包含在所述編碼值b中。15. -種產(chǎn)生用于執(zhí)行模冪運(yùn)算的查找表的方法,其特征在于,所述方法包括: 確定與編碼算法相關(guān)聯(lián)的因子集合S; 基于所述因子集合S各自的因子、秘密指數(shù)d以及加密密鑰模數(shù)N計(jì)算多個(gè)模冪; 將所述多個(gè)模冪存儲(chǔ)在查找表中;以及 將所述查找表發(fā)送到至少一個(gè)用戶裝置。16. 根據(jù)權(quán)利要求15所述的方法,其特征在于,進(jìn)一步包括產(chǎn)生加密密鑰,所述加密密 鑰包含所述秘密指數(shù)d、公共指數(shù)e以及所述加密密鑰模數(shù)N。17. 根據(jù)權(quán)利要求15所述的方法,其特征在于: 所述因子集合S是有序集合,由此所述因子集合S的個(gè)別的因子Sl與對應(yīng)的索引i相關(guān) 聯(lián);以及 所述將所述多個(gè)模冪存儲(chǔ)在查找表中包括:將所述多個(gè)模冪中的某一模冪存儲(chǔ)在與索 弓li相關(guān)聯(lián)的所述查找表中,所述索引與所述因子81相關(guān)聯(lián),所述模冪基于所述因子。18. 根據(jù)權(quán)利要求15所述的方法,其特征在于,進(jìn)一步包括參與數(shù)字簽名方案,包括: 從所述至少一個(gè)用戶裝置接收消息m和簽名s; 使用公共指數(shù)e和所述加密密鑰模數(shù)N來計(jì)算所述簽名s的模冪,以產(chǎn)生第一整數(shù)b; 對所述第一整數(shù)b進(jìn)行解碼,以產(chǎn)生第二整數(shù)a; 計(jì)算所述消息m的摘要h;以及 通過比較所述摘要h與所述第二整數(shù)a,驗(yàn)證所述消息m。19. 根據(jù)權(quán)利要求15所述的方法,其特征在于,所述參與數(shù)字簽名方案包括: 驗(yàn)證所述第一整數(shù)b屬于編碼域V,所述編碼域基于所述因子集合S而被確定。
【文檔編號】H04L9/32GK106059769SQ201610210324
【公開日】2016年10月26日
【申請日】2016年4月6日 公開號201610210324.7, CN 106059769 A, CN 106059769A, CN 201610210324, CN-A-106059769, CN106059769 A, CN106059769A, CN201610210324, CN201610210324.7
【發(fā)明人】喬普·威廉·波斯, 麥克爾·麥克·派德里克·皮德斯
【申請人】恩智浦有限公司