本發(fā)明大體來說涉及密碼編譯過程,且更明確地說涉及基于RSA的過程。
背景技術(shù):
:非對稱密碼術(shù),也被稱作公共密鑰密碼術(shù),是指代需要兩個單獨密鑰的密碼編譯過程的密碼術(shù)的子集。使用一個密鑰(稱為私用密鑰)來對消息進行解密和簽名。使用另一密鑰(稱為公共密鑰)來對消息進行加密且驗證消息簽名。如其名稱所表明,私用密鑰由單一實體私密地持有,而公共密鑰通常發(fā)布給許多不同實體。假設(shè)Alice是擁有私用密鑰的實體,且Bob是具有公共密鑰的副本的任何實體。歸功于此不對稱設(shè)置,任何實體可將機密消息發(fā)送給Alice,但只有她可以對機密消息進行解密。并且,如果Alice對消息進行簽名,那么任何實體可通過使用Alice的公共密鑰檢驗所述簽名來檢查所述消息未被篡改。如果此檢驗成功,那么其還意味著Alice確實對消息進行了簽名,因為對于所述公共密鑰,只有她的私用密鑰可產(chǎn)生有效簽名(此過程被稱為抗抵賴性)。一種眾所周知的不對稱密碼編譯過程為RSA。假設(shè)表示整數(shù)的集合{1,2,...,N-1},且N=pq是相等大小的兩個質(zhì)數(shù)的乘積。N稱為RSA模數(shù)。RSA公共密鑰為對<N,e>,其中e通常在集合{3,17,216+1}中選擇。對應(yīng)的RSA私用密鑰為對<N,d>,其中d被計算使得對于任何整數(shù)我們擁有MedmodN=M。為計算d,Alice首先計算尤拉商數(shù)函數(shù)隨后計算d作為e模的乘法逆元素,即在此設(shè)置階段之后,加密和解密操作較為簡單。在RSA中,明文消息由整數(shù)表示。為使用Alice的密鑰對所述消息進行加密,Bob計算C=MemodN其產(chǎn)生密文C。當(dāng)Alice接收此消息時,她使用她的私用密鑰執(zhí)行逆運算,也就是說,M=CdmodN以上運算通常在電子裝置中實施。我們關(guān)注用于使用Alice的私用密鑰對消息進行簽名或解密的過程和裝置。除了執(zhí)行簽名或解密的這些操作外,這些過程和裝置還可用于保護私用密鑰的機密性以防我們將稱為Marvin的惡意攻擊者試圖竊聽或篡改Alice與Bob之間的通信。如果Marvin設(shè)法在未得到Alice的同意的情況下對消息進行簽名或解密,那么Marvin的攻擊成功。大多數(shù)嚴(yán)重的攻擊是Marvin成功地從裝置自身提取Alice的私用密鑰的攻擊。存在許多用于嘗試此攻擊的已知的方法。舉例來說,Marvin可觀察裝置的功率消耗或電磁發(fā)送,且使用側(cè)通道分析提取私用密鑰的位。Marvin還可操縱裝置,改變操作條件或篡改裝置的基本組件使得裝置輸出其存儲器內(nèi)容的一部分。此可在(例如)以下情況下發(fā)生:在裝置輸出所述消息時,含有經(jīng)解密消息的地址的指針被損壞而指向存儲器中的隨機地址。如果此地址在含有Alice的私用密鑰的存儲器區(qū)內(nèi),則所述攻擊成功。應(yīng)注意,Marvin并不需要猜測私用密鑰的所有位才可以成功。部分密鑰暴露攻擊允許攻擊者從對密鑰位的僅部分了解恢復(fù)整個私用密鑰。首先,其是眾所周知的,使得當(dāng)公共密鑰指數(shù)e為小時,RSA系統(tǒng)泄漏對應(yīng)私用密鑰指數(shù)d的最高有效位的一半;參看DanBoneh的“對于RSA密碼系統(tǒng)的20年攻擊(TwentyyearsofattacksontheRSAcryptosystem)”,AMS通告,第203-213頁,1999年2月。在另一論文中,Boneh等人論證以下理論,闡述Marvin可從最低有效位的僅一分?jǐn)?shù)檢索完全私用密鑰指數(shù),只要對應(yīng)公共密鑰為小,參看DanBoneh等人的“在給定RSA私用密鑰的位的小分?jǐn)?shù)的情況下暴露RSA私用密鑰(ExposinganRSAprivatekeygivenasmallfractionofitsbits)”,(K.Ohta和D.Pei編),第1514卷,1998年,25-34頁。Boneh等人的理論是:假設(shè)<N,d>是私密RSA密鑰,其中N為n位長。給定/n/4/最低有效位d,Marvin可以時間線性在elog2e中重建全部d?;谝陨侠碚摰墓粼贛arvin知道d的n/4最低有效位的情況下奏效。相反,在Marvin知道除這些n/4最低有效位外的所有位的情況下,我們可示出類似結(jié)果。存在此攻擊的許多其它變型。還存在多種已知對策來應(yīng)對這些攻擊。一個此類對策為秘密共享,也被稱作多方計算。在該方法中,私用密鑰d拆分成均獨立使用的若干秘密部分d1、d2、……、dk。每一密鑰在加密文本的解密之后產(chǎn)生中間消息,且這些中間消息隨后組合在一起以獲得原始透明文本消息。此過程使得每一私用密鑰共享并不揭示關(guān)于原始私用密鑰的任何信息,且以相同方式,每一中間消息并不揭露關(guān)于原始透明文本消息的任何信息。圖1示出秘密共享概念。在圖1中,每一指數(shù)運算其中=1,2,3可并行且由單獨實體進行以減小攻擊者獲得所有秘密共享的訪問權(quán)的機率。秘密共享通常利用私密指數(shù)d的另一特性,其為:存在可用于解密密文的無限多的等效私密指數(shù)d′。假設(shè)k∈N以及依據(jù)尤拉的理論,我們得到modN=1,且因此在對稱密碼術(shù)中,實施秘密共享的常見方式是將對稱密鑰拆分為進行異或運算的若干部分,所述若干部分逐位相加在一起以還原原始密鑰??赏ㄟ^用規(guī)律整數(shù)加法替代異或運算而與RSA一起使用相同方法。RSA私用密鑰可隨后拆分為k個部分如下:使用這些共享的解密完成如下。首先單獨地使用每一密鑰部分解密密文以產(chǎn)生中間消息Mi,其中1≤i≤k。隨后將所有消息相乘在一起以獲得原始密文消息。我們得到M1=Cd1+modNM2=Cd2+modN...Mk=Cdk+modNM=M1·M2...MkmodN]]>如之前所提到,在圖1中示出所述方法。將私用密鑰拆分為多個部分增加了攻擊者必須猜測的位的數(shù)目。此外,取決于攻擊設(shè)定,秘密共享可使攻擊者的任務(wù)變得困難得多乃至無法實現(xiàn)。為防止部分密鑰暴露,已知技術(shù)是通過應(yīng)用尤拉的理論擴展私密指數(shù)的大小。舉例來說,假設(shè)r為64位隨機整數(shù)。所述想法在于將秘密共享不直接應(yīng)用到d,而是應(yīng)用到我們因此得到以下作為私用密鑰的秘密共享技術(shù)實現(xiàn)要素:盡管所附權(quán)利要求書針對特征的特定組合,但應(yīng)理解,本發(fā)明的范圍還包括任何新穎特征或本文中所公開的特征的新穎組合。在單獨實施例的上下文中描述的特征也可以組合地提供于單個實施例中。相反,為了簡潔起見,在單個實施例的上下文中所描述的多種特征也可以單獨地或以任何合適的子組合形式提供。此簡要概述并不希望限制本發(fā)明的范圍,而是強調(diào)一些特征且介紹本發(fā)明的各個方面。各種示例性實施例涉及在處理器中執(zhí)行密碼編譯過程,包括:在具有私用密鑰d的RSA過程中,將d拆分為k個共享,使得1≤i≤k,其中N為RSA模數(shù),且為尤拉商數(shù)函數(shù),且被提供文本C,確定文本M,使得其中1≤i≤k使得M以按順序執(zhí)行的k模冪計算,使得其中1≤i≤k且其中M1=M以及C=Mk+1。各種示例性實施例涉及一種用于發(fā)送消息M的裝置,包括:存儲器;與存儲器通信的處理器,所述處理器被配置成:執(zhí)行密碼編譯過程,包括具有拆分成k個共享的私用密鑰d的RSA過程,使得:1≤i≤k,其中N為RSA模數(shù),且為尤拉商數(shù)函數(shù);以及確定所述消息M在被提供文本C之后,能夠通過計算其中1≤i≤k,使得M以按順序執(zhí)行的k模冪計算,使得其中1≤i≤k且其中M1=M以及C=Mk+1。附圖說明為促進對本發(fā)明的理解,可參考附圖,其中:圖1為示出現(xiàn)有技術(shù)過程的圖;圖2為示出本發(fā)明的一實施例的圖;圖3為示出另一示意性實施例的圖。具體實施方式論述用于在各種應(yīng)用中拆分私用密鑰指數(shù)的有利的過程。此過程利用模乘代替加法將指數(shù)共享組合在一起。此過程利用應(yīng)用到密文消息的連續(xù)模冪。RSA私用密鑰拆分為k個部分如下:使用這些秘密共享,我們得到在圖2中針對私用密鑰的三個共享分解來示出此方法。在以下論述中,為簡單起見,我們采用私用密鑰的兩個共享分解,即或所公開的過程具有抵抗例如之前論述的部分密鑰暴露攻擊的內(nèi)建式阻力。這些攻擊需要Marvin知道d=dmod2n/4或給定d,猜測k使得在前一情況中,即使Marvin可恢復(fù)和的所有位,他也無法在不知道秘密的的情況下檢索d。在后一情況下,檢索k的成本平均為可使其充分大以致使攻擊不可行。舉例來說,如果Marvin必須進行平均來說超過264個猜測,那么進行n位第一共享和48位第二共享就足夠(此時e=216+1)來防范此攻擊。此僅給出針對1024位模數(shù)5%的共享開銷,以及針對2048位模數(shù)2%的共享開銷。相比之下,背景中論述的秘密共享方法不能抵抗部分密鑰暴露攻擊。兩個必須至少n/4位長來防范此先前論述的攻擊。否則一方可從他的共享檢索原始私用密鑰指數(shù)。這意味著,在無進一步保護的情況下,先前論述的方法具有針對1024位和2048位模數(shù)RSA兩者的至少1/4(即,25%)的共享開銷。因此,所公開的過程允許安全且更有效的秘密共享。所公開的過程需要較少存儲器來將共享重組在一起。實際上,如果兩個共享由相同裝置計算,那么裝置僅必須計算且接著丟棄C并計算在先前使用的過程中,必須保持中間消息用于稍后重組,且因此需要另外一個n位緩沖器,這對于低端裝置來說可能是非常顯著的問題。最后,所公開的過程與任何標(biāo)準(zhǔn)RSA庫一起且針對相同參數(shù)長度工作。更確切地說,假定針對某一最大模數(shù)長度n,Alice僅能夠訪問提供稱為RSADECRYPT()的接口的簡單裝置。這足以供Alice實施所公開的共享方法,但對于先前使用的方法來說是不夠的。對于后者,Alice還需要簡單裝置并不提供的模乘接口。并且,即使此接口確實存在,所公開的過程仍具有提供對于部分密鑰暴露的防范的優(yōu)點,即使對于裝置所支持的最大密鑰長度也如此。利用先前使用的后臺過程,Alice將可以選擇減小最大密鑰大小以允許使用如較早解釋的經(jīng)擴展密鑰d′,或使用具有高得多的共享開銷的更大共享。我們描述若干示意性實施例過程。在第一過程中,Alice使用提供常見RSA解密接口的裝置,如下文在過程1中詳述。我們假定這些裝置以某一安全方式存儲私用密鑰,且此密鑰在某一設(shè)置階段期間饋送到所述裝置。如果Alice具有若干此類裝置,那么她可應(yīng)用所公開的過程,如下。我們假定她具有兩個此類裝置。首先,她將她的私用密鑰指數(shù)d拆分為兩個部分和如等式(2)中所指示。她以密鑰將第一裝置初始化且將此裝置給予她的最好的朋友Alix,Alix承諾不向除Alice以外的任何人給予對裝置的訪問權(quán)。隨后她以密鑰將她的第二裝置初始化。每當(dāng)她得到經(jīng)加密消息C,她就拜訪她的朋友Alix,使用第一裝置解密所述消息以產(chǎn)生第一中間消息X,且接著使用她自身的裝置來解密X且產(chǎn)生原始明文消息M。Alice的所有裝置不需要為相同的。在第二情境中,Alice將具有單一強大裝置和若干輕量裝置。這些裝置通常較便宜且電力方面較友好,但解密消息的速度慢的多。Alice可以類似方式實施本發(fā)明,同時仍實現(xiàn)高總體性能。為實現(xiàn)此目標(biāo),她將僅產(chǎn)生針對輕量裝置的小共享(例如,64位共享),且針對她自身的較強大裝置計算剩余共享,如等式(3)給定。因為由輕量裝置處理的密鑰短得多,所以對總體性能的影響較小,盡管這些裝置不太強大。并且,即使有人將盜竊Alice的裝置,他們將不能夠在不與Alice最好的朋友協(xié)作的情況下解密指向Alice的消息。在較特定情境中,在智能電網(wǎng)設(shè)置或物聯(lián)網(wǎng)中,可存在以網(wǎng)狀網(wǎng)絡(luò)連接的產(chǎn)生組合測量值的若干傳感器。期望最終測量值由完整網(wǎng)絡(luò)自身簽名。為保護所述密鑰,可將小共享給予傳感器中的每一個傳感器,且接著將更大的共享給予例如網(wǎng)絡(luò)集線器。隨后,更大的裝置(即,具有適當(dāng)處理能力的裝置)將從網(wǎng)絡(luò)收集個別測量值且將其組合以產(chǎn)生最終經(jīng)加密測量值。在第三實施例中,所有共享在單一裝置中處理。此裝置模仿與前兩個實施例中相同的操作,只是所有部分存儲在相同裝置中,且所述裝置調(diào)用RSADecrypt接口若干次來解密單一消息。此準(zhǔn)許對于實施攻擊的較好防范。參看下文的過程2。解密步驟不需要全部在相同函數(shù)中按順序發(fā)生。解密步驟可在不同函數(shù)中進行,且在程序的不同階段處進行以較好地隱藏密鑰共享。在第四實施例中,單一裝置在如過程3中解密密文消息之前自動計算新共享。此方法增加上一共享的計算所需要的小開銷,但此總體上可忽略。此方法使側(cè)通道分析變得困難得多,因為所有新解密使用新密鑰位,且攻擊者無法使用部分密鑰暴露攻擊來減小他的工作負(fù)荷。此方法允許使用等于基本整數(shù)庫所支持的最大密鑰長度的密鑰長度。函數(shù)RSADecryptRndShare可由共享的數(shù)目k參數(shù)化以產(chǎn)生隨機共享的位長度m(例如,k=2,m=64)。每當(dāng)RSA在電子裝置中、在通信協(xié)議中等使用時,所公開的過程可適用。所述過程確切地說適合于其中密鑰較多暴露且密鑰位較容易被提取的應(yīng)用領(lǐng)域,例如軟件密碼編譯庫或白盒實施方案。所公開的過程可用于解密會話密鑰,所述會話密鑰可以是可用于例如DES、3DES、AES等塊算法的解密的對稱密鑰。在其它應(yīng)用中,所公開的過程可用于驗證抗抵賴性上下文中的簽名。此外,如所提到,所公開的過程可存儲在非暫時性機器可讀存儲裝置或移動電話、智能卡、智能電話、計算機、上網(wǎng)本或筆記本、機頂盒或其它裝置中。圖3示出用于提供用戶裝置安全內(nèi)容和處理所述安全內(nèi)容的軟件應(yīng)用的系統(tǒng)的例子。所述系統(tǒng)包括內(nèi)容服務(wù)器300、應(yīng)用服務(wù)器320、用戶裝置350、352,以及數(shù)據(jù)網(wǎng)絡(luò)340。用戶裝置350、352可請求經(jīng)由數(shù)據(jù)網(wǎng)絡(luò)340訪問由內(nèi)容服務(wù)器300提供的安全內(nèi)容。數(shù)據(jù)網(wǎng)絡(luò)可以是提供用戶裝置350、352與內(nèi)容服務(wù)器300和應(yīng)用服務(wù)器320之間的連接性的任何數(shù)據(jù)網(wǎng)絡(luò)。用戶裝置350、352可以是(例如)機頂盒、媒體等浮電纜、數(shù)字視頻記錄器、平板計算機、移動電話、膝上型計算機、便攜式媒體裝置、智能手表、臺式計算機、媒體服務(wù)器等多個裝置中的一個裝置。用戶的請求訪問可首先需要下載可用于處理由內(nèi)容服務(wù)器300提供的安全內(nèi)容的軟件應(yīng)用。所述軟件應(yīng)用可從應(yīng)用服務(wù)器320下載。軟件應(yīng)用可使用上文描述的技術(shù)來遮蔽以及如上文描述而操作。一旦用戶裝置350、352安裝了軟件應(yīng)用,用戶裝置接著就可從內(nèi)容服務(wù)器300下載安全內(nèi)容,且使用所下載的軟件應(yīng)用訪問所述安全內(nèi)容。舉例來說,所下載的軟件應(yīng)用可執(zhí)行從內(nèi)容服務(wù)器接收的經(jīng)加密內(nèi)容的解密。在其它實施例中,軟件應(yīng)用可執(zhí)行其它安全操作,例如加密、數(shù)字簽名產(chǎn)生和檢驗等。內(nèi)容服務(wù)器300可控制對提供到用戶裝置350、352的安全內(nèi)容的訪問。因此,當(dāng)內(nèi)容服務(wù)器300接收對于安全內(nèi)容的請求時,內(nèi)容服務(wù)器300可將安全內(nèi)容發(fā)送到請求的用戶裝置。同樣,應(yīng)用服務(wù)器320可控制對提供到用戶裝置350、352的軟件應(yīng)用的訪問。因此,當(dāng)內(nèi)容服務(wù)器320接收對于軟件應(yīng)用的請求時,應(yīng)用服務(wù)器320可將軟件應(yīng)用發(fā)送到請求的用戶裝置。請求軟件應(yīng)用或安全內(nèi)容的用戶裝置還可在將軟件應(yīng)用或安全內(nèi)容提供到用戶裝置之前由相應(yīng)服務(wù)器驗證。內(nèi)容服務(wù)器300可包括經(jīng)由一個或多個系統(tǒng)總線308互連的處理器302、存儲器304、用戶接口306、網(wǎng)絡(luò)接口310和內(nèi)容存儲裝置312。將理解,圖3在一些方面中構(gòu)成抽象圖,且裝置300的組件的實際組織可比所示出的更復(fù)雜。處理器302可以是能夠執(zhí)行存儲在存儲器304或存儲裝置312中的指令的任何硬件裝置。由此,處理器可包括微處理器、現(xiàn)場可編程門陣列(FPGA)、專用集成電路(ASIC)或其它類似裝置。存儲器304可包括各種存儲器,例如L1、L2或L3高速緩沖存儲器或系統(tǒng)存儲器。由此,存儲器304可包括靜態(tài)隨機存取存儲器(SRAM)、動態(tài)RAM(DRAM)、快閃存儲器、只讀存儲器(ROM)或其它類似的存儲器裝置。用戶接口306可包括用于實現(xiàn)與例如管理員等用戶的通信的一個或多個裝置。舉例來說,用戶接口306可包括顯示器、鼠標(biāo)和用于接收用戶命令的鍵盤。網(wǎng)絡(luò)接口310可包括一個或多個裝置以實現(xiàn)與其它硬件裝置通信。舉例來說,網(wǎng)絡(luò)接口310可包括網(wǎng)絡(luò)接口卡(NIC),其被配置成根據(jù)以太網(wǎng)協(xié)議通信。另外,網(wǎng)絡(luò)接口310可實施TCP/IP堆棧以用于根據(jù)TCP/IP協(xié)議通信。用于網(wǎng)絡(luò)接口310的各種替代的或另外的硬件或配置將是顯而易見的。內(nèi)容存儲裝置312可包括一個或多個機器可讀內(nèi)容存儲媒體,例如只讀存儲器(ROM)、隨機存取存儲器(RAM)、磁盤存儲媒體、光學(xué)存儲媒體、快閃存儲器裝置或類似存儲媒體。在各種實施例中,內(nèi)容存儲裝置312可存儲將提供給用戶的內(nèi)容。應(yīng)用服務(wù)器320包括與在內(nèi)容服務(wù)器300中的元件類似的元件,并且內(nèi)容服務(wù)器300中的類似的元件的描述適用于應(yīng)用服務(wù)器320。另外,應(yīng)注意,內(nèi)容服務(wù)器和應(yīng)用服務(wù)器可以在單個服務(wù)器上實施。并且,此類服務(wù)器可以在分布式計算機系統(tǒng)上實施以及在上云計算機系統(tǒng)上實施。如將理解,本文中描述的模冪、編碼或數(shù)字簽名方法可以在圖3的系統(tǒng)或類似系統(tǒng)內(nèi)以各種方式部署和利用。舉例來說,用戶裝置350、352可由制造商或其它賣方提供,所述用戶裝置被預(yù)配置成將經(jīng)簽名的消息發(fā)送到內(nèi)容服務(wù)器300以請求內(nèi)容的提供??商鎿Q的是,用戶裝置350、352可能不完全預(yù)配置以用于此運算;實際上,應(yīng)用服務(wù)器320可與用戶裝置350、352通信以實現(xiàn)此配置。舉例來說,應(yīng)用服務(wù)器可發(fā)送代碼指令以用于實施本文中所描述的方法或限定一個或多個查找表的數(shù)據(jù)。在另外的實施例中,已接收我們的所公開過程的實施例的上文提及的下載的(一個或多個)裝置接著可使用私用密鑰真實地對消息或文件進行簽名或可驗證各種交易。所公開的過程的實施例可見于支付卡、支付相關(guān)軟件、安全訪問、停車訪問、交通訪問和支付、以及銀行、軟件和數(shù)字媒體(電影、音樂等)發(fā)送,以及移動電話上的安全應(yīng)用??捎欣卦诎缀忻艽a編譯應(yīng)用中采用所公開的過程。但其也可用于灰盒或黑盒應(yīng)用中。還可有利地使用所公開的過程來對抗側(cè)通道攻擊。參考特定示意性例子描述各種示意性實施例。選擇示意性例子來輔助本領(lǐng)域的一般技術(shù)人員形成對各種實施例的清晰理解且實踐所述各種實施例。然而,可被建構(gòu)成具有所述實施例中的一個或多個實施例的系統(tǒng)、結(jié)構(gòu)和裝置的范圍,以及可根據(jù)所述實施例中的一個或多個實施例實施的方法的范圍決不限于已經(jīng)呈現(xiàn)的特定示意性例子。相反,如相關(guān)領(lǐng)域的一般技術(shù)人員基于此描述將容易認(rèn)識到,可根據(jù)所述各種實施例實施許多其它配置、布置和方法。在已使用例如頂部、底部、上部、下部等位置名稱描述本發(fā)明的程度上,應(yīng)了解,那些名稱是參看對應(yīng)圖式而給定,且如果裝置的定向在制造或操作期間改變,那么可改為應(yīng)用其它位置關(guān)系。如上文所描述,出于清楚起見(而非限制)描述那些位置關(guān)系。已相對于特定實施例且參看特定圖式描述本發(fā)明,但本發(fā)明不限于此,而是僅由權(quán)利要求書陳述。所描述的圖式僅是示意性的,而非限制性。在圖式中,出于示意性目的,各種元件的大小可被夸示且未按特定比例繪制。希望本發(fā)明涵蓋組件及其操作模式的相關(guān)容差和特性的微不足道的變化。希望涵蓋本發(fā)明的不完全實踐。在本發(fā)明的示出書和權(quán)利要求書中使用術(shù)語“包括”時,并不排除其它要素或步驟。在參考單數(shù)名詞使用不定冠詞或定冠詞(例如“一”或“所述”)時,除非以其它方式特定地陳述,否則此包括所述名詞的復(fù)數(shù)形式。因此,術(shù)語“包括”不應(yīng)解釋為限于其后所列的項目;其并不排除其它要素或步驟,且因此表達“包括項目A和B的裝置”的范圍不應(yīng)限于僅由組件A和B組成的裝置。此表達表示,相對于本發(fā)明,裝置的唯一相關(guān)組件是A和B。當(dāng)前第1頁1 2 3