两个人的电影免费视频_国产精品久久久久久久久成人_97视频在线观看播放_久久这里只有精品777_亚洲熟女少妇二三区_4438x8成人网亚洲av_内谢国产内射夫妻免费视频_人妻精品久久久久中国字幕

防旁信道分析的架構(gòu)的制作方法

文檔序號(hào):11208968閱讀:657來(lái)源:國(guó)知局
防旁信道分析的架構(gòu)的制造方法與工藝



背景技術(shù):

旁信道分析(sca)是一種可用來(lái)觀察密碼過(guò)程(例如公鑰/私鑰加密或解密過(guò)程)的若干部分的技術(shù)。通過(guò)觀察在硬件中實(shí)施的密碼過(guò)程的運(yùn)算特性(例如運(yùn)算時(shí)序、電力消耗或電磁簽名)來(lái)進(jìn)行sca,以確定所述密碼過(guò)程的參數(shù)。可監(jiān)視進(jìn)行密碼過(guò)程的處理器,來(lái)檢測(cè)例如與密碼過(guò)程中所涉及的運(yùn)算有關(guān)的電磁脈沖。sca攻擊密碼過(guò)程分析,例如來(lái)自進(jìn)行密碼過(guò)程的處理器的電磁脈沖,以推導(dǎo)加密密鑰的內(nèi)容。具有sca攻擊的加密密鑰的確定可使得加密不安全。

通常使用公鑰/私鑰對(duì)加密或解密、rsa運(yùn)算和ecc運(yùn)算,對(duì)經(jīng)由網(wǎng)絡(luò)的通信實(shí)施兩個(gè)不同的密碼過(guò)程。rsa過(guò)程(rsa表示基礎(chǔ)算法的創(chuàng)建者羅納德·里韋斯特(ronrivest)、阿迪·沙米爾(adishamir)和倫納德·阿德?tīng)柭?leonardadleman)的縮寫)使用表示計(jì)算中所使用的指數(shù)的加密密鑰來(lái)對(duì)符號(hào)塊進(jìn)行加密或解密。為了執(zhí)行效率,進(jìn)行運(yùn)算來(lái)實(shí)施rsa過(guò)程的處理器通常經(jīng)配置以對(duì)將運(yùn)算數(shù)求平方的運(yùn)算與使運(yùn)算數(shù)相乘的運(yùn)算之間的運(yùn)算進(jìn)行分組。求平方運(yùn)算和相乘運(yùn)算由執(zhí)行rsa過(guò)程的處理器以不同方式處理。通常,求平方可在處理器內(nèi)比相乘更高效地進(jìn)行,且可使用sca來(lái)觀察運(yùn)算中的差異。對(duì)rsa過(guò)程的sca攻擊通常力圖確定何時(shí)進(jìn)行求平方或相乘運(yùn)算中的任一者,且接著使那些運(yùn)算與密碼過(guò)程相關(guān)。在rsa過(guò)程中進(jìn)行的求平方或相乘運(yùn)算的選擇對(duì)形成加密密鑰的位敏感??杀O(jiān)視進(jìn)行rsa過(guò)程的處理器來(lái)尋找若干參數(shù),例如信號(hào)時(shí)序、電力消耗或電磁簽名,來(lái)檢測(cè)求平方或相乘運(yùn)算,并推導(dǎo)導(dǎo)致所述運(yùn)算進(jìn)行的加密密鑰的位。舉例來(lái)說(shuō),參看圖1,可通過(guò)監(jiān)視處理器來(lái)檢測(cè)從進(jìn)行rsa密碼過(guò)程的處理器觀察到電磁輻射的跡線100。如果檢測(cè)到,那么可將以s或m標(biāo)注的跡線的若干部分解釋為指示處理器分別執(zhí)行了求平方(s)運(yùn)算或相乘(m)運(yùn)算。

類似于rsa過(guò)程,ecc(橢圓曲線密碼術(shù))過(guò)程使用公鑰密碼術(shù)。然而,實(shí)施ecc過(guò)程的處理器通常執(zhí)行若干加倍和相加運(yùn)算來(lái)進(jìn)行加密或解密。加倍運(yùn)算在所述處理器上通常比相加運(yùn)算更高效地執(zhí)行,且使用sca可觀察所述差異。eec過(guò)程執(zhí)行中的加倍或相加運(yùn)算的選擇常常對(duì)加密密鑰的位敏感。ecc過(guò)程上的sca攻擊通常力圖確定何時(shí)進(jìn)行加倍或相加運(yùn)算中的任一者,且接著使那些運(yùn)算與ecc過(guò)程以及形成加密密鑰的位有關(guān)??杀O(jiān)視進(jìn)行ecc過(guò)程的處理器來(lái)尋找若干參數(shù),例如信號(hào)時(shí)序、電力消耗或電磁簽名,來(lái)檢測(cè)加倍或相加運(yùn)算,并推導(dǎo)與正進(jìn)行的運(yùn)算有關(guān)的加密密鑰的位。



技術(shù)實(shí)現(xiàn)要素:

實(shí)例實(shí)施方案提供一種用于實(shí)施密碼過(guò)程的設(shè)備,其包括:第一運(yùn)算模塊,其經(jīng)配置以執(zhí)行第一運(yùn)算或第二運(yùn)算中的一者,所述第一運(yùn)算不同于所述第二運(yùn)算;第二運(yùn)算模塊,其經(jīng)配置以執(zhí)行所述第一運(yùn)算或所述第二運(yùn)算中的另一者;以及控制模塊,其以通信方式耦合到所述第一操作模塊和所述第二運(yùn)算模塊,且經(jīng)配置以將第一信息提供到第一操作模塊或第二運(yùn)算模塊中的一者,使得在密碼過(guò)程期間,所述第一操作或所述第二運(yùn)算中的至少一者至少執(zhí)行一次,以產(chǎn)生不相關(guān)數(shù)據(jù)。

另一實(shí)例實(shí)施方案提供一種用于實(shí)施密碼過(guò)程的方法,所述方法包括:確定第一運(yùn)算或第二運(yùn)算中的選定一者來(lái)接收第一信息,以執(zhí)行所述第一運(yùn)算或所述第二運(yùn)算中的相應(yīng)一者,使得在密碼過(guò)程期間,所述第一運(yùn)算或所述第二運(yùn)算中的至少一者至少執(zhí)行一次以產(chǎn)生不相關(guān)數(shù)據(jù);使用所述第一信息來(lái)執(zhí)行第一運(yùn)算或第二運(yùn)算中的選定一者;以及與第一運(yùn)算或第二運(yùn)算中的選定一者同時(shí)執(zhí)行第一運(yùn)算或第二運(yùn)算中的另一者。

另一實(shí)例實(shí)施方案提供一種包括指令的非暫時(shí)性機(jī)器可讀媒體,所述指令用于實(shí)施密碼過(guò)程,且其經(jīng)配置以致使機(jī)器:確定第一運(yùn)算或第二運(yùn)算中的選定一者來(lái)接收第一信息,以執(zhí)行所述第一運(yùn)算或所述第二運(yùn)算中的相應(yīng)一個(gè),使得在所述密碼過(guò)程期間,第一運(yùn)算或第二運(yùn)算中的至少一者至少執(zhí)行一次,以產(chǎn)生不相關(guān)數(shù)據(jù);使用所述第一信息來(lái)執(zhí)行第一運(yùn)算或第二運(yùn)算中的選定一者;且與第一運(yùn)算或第二運(yùn)算中的選定一者同時(shí)執(zhí)行第一運(yùn)算或第二運(yùn)算中的另一者。

另一實(shí)例實(shí)施方案提供一種用于實(shí)施密碼過(guò)程的設(shè)備,所述方法包括:用于確定第一運(yùn)算或第二運(yùn)算中的選定一者來(lái)接收第一信息,以執(zhí)行所述第一運(yùn)算或所述第二運(yùn)算中的相應(yīng)一者,使得在密碼過(guò)程期間,所述第一運(yùn)算或所述第二運(yùn)算中的至少一者至少執(zhí)行一次以產(chǎn)生不相關(guān)數(shù)據(jù)的裝置;用于使用所述第一信息來(lái)執(zhí)行第一運(yùn)算或第二運(yùn)算中的選定一者的裝置;以及用于與第一運(yùn)算或第二運(yùn)算中的選定一者同時(shí)執(zhí)行第一運(yùn)算或第二運(yùn)算中的另一者的裝置。

附圖說(shuō)明

圖1是旁信道分析期間的處理器活動(dòng)的跡線;

圖2是計(jì)算機(jī)系統(tǒng)的框圖;

圖3是說(shuō)明用于防旁信道分析的實(shí)例過(guò)程的流的過(guò)程流程圖;

圖4是用于防旁信道分析的實(shí)例過(guò)程的流程圖;

圖5是用于防旁信道分析的另一實(shí)例過(guò)程的流程圖;

圖6是用于防旁信道分析的另一實(shí)例過(guò)程的流程圖;

圖7是用于防旁信道分析的另一實(shí)例過(guò)程的流程圖;

圖8是圖2中所示的計(jì)算機(jī)系統(tǒng)的功能框圖;以及

圖9是用于防旁信道分析的另一實(shí)例過(guò)程的流程圖。

具體實(shí)施方式

呈現(xiàn)用于實(shí)施密碼過(guò)程的分布式技術(shù)。此類技術(shù)中的一或多者的一些實(shí)施方案包含對(duì)有效數(shù)據(jù)和不相關(guān)數(shù)據(jù)兩者并行執(zhí)行運(yùn)算,以幫助防止基于加密密鑰內(nèi)容來(lái)辨別所述運(yùn)算。有效數(shù)據(jù)是指輸入到密碼過(guò)程中,且根據(jù)用于實(shí)施密碼過(guò)程來(lái)操縱(例如經(jīng)加密/解密)以產(chǎn)生所要的、預(yù)期或有效結(jié)果的算法的數(shù)據(jù)。不相關(guān)數(shù)據(jù)是指輸入到產(chǎn)生不相關(guān)的中間結(jié)果或并不促進(jìn)產(chǎn)生最終所要、預(yù)期或有效結(jié)果的運(yùn)算中并由所述運(yùn)算產(chǎn)生的數(shù)據(jù)。有效數(shù)據(jù)可用以形成所述不相關(guān)數(shù)據(jù),例如通過(guò)使用產(chǎn)生并不促成獲得最終有效結(jié)果的結(jié)果的運(yùn)算中的有效數(shù)據(jù)。還可使用任意數(shù)據(jù)或任意數(shù)據(jù)源來(lái)形成不相關(guān)數(shù)據(jù),或可與非任意或計(jì)劃的數(shù)據(jù)一起形成。可提供控制實(shí)體,其準(zhǔn)許至少兩個(gè)中央處理單元(cpu)中的每一者在密碼過(guò)程期間的不同時(shí)間存取有效數(shù)據(jù)或不相關(guān)數(shù)據(jù),取決于加密密鑰內(nèi)容。一個(gè)cpu可存取有效或不相關(guān)數(shù)據(jù),而另一cpu可在密碼過(guò)程的給定重復(fù)循環(huán)中存取有效或不相關(guān)數(shù)據(jù)。舉例來(lái)說(shuō),cpu在至少一些重復(fù)中并行操作,一個(gè)cpu具有有效數(shù)據(jù),且一個(gè)cpu具有不相關(guān)數(shù)據(jù)。

由cpu中的每一者執(zhí)行的運(yùn)算可相同或不同,且可或可不在密碼過(guò)程的執(zhí)行期間變化。cpu所執(zhí)行的運(yùn)算可包含求平方和相乘,或加倍和相加,且可基于正執(zhí)行的密碼過(guò)程的類型來(lái)選擇。舉例來(lái)說(shuō),一個(gè)cpu可在密碼過(guò)程的一部分或全部期間執(zhí)行求平方運(yùn)算,而另一cpu可執(zhí)行同時(shí)相乘運(yùn)算。同時(shí)意味著所述運(yùn)算在密碼過(guò)程的相同循環(huán)或重復(fù)中執(zhí)行,不管所述運(yùn)算是否具有時(shí)間重疊。執(zhí)行求平方運(yùn)算和相乘運(yùn)算的時(shí)間可至少部分地重疊,例如至少部分地并行執(zhí)行。

所述cpu中的每一者可在密碼過(guò)程的執(zhí)行期間執(zhí)行多于一個(gè)類型的運(yùn)算。舉例來(lái)說(shuō),可控制第一cpu來(lái)在密碼過(guò)程的一些重復(fù)期間執(zhí)行求平方運(yùn)算,且控制第一cpu來(lái)在其它重復(fù)期間執(zhí)行相乘運(yùn)算。對(duì)哪一cpu在密碼過(guò)程期間的給定時(shí)間執(zhí)行哪一運(yùn)算的控制的實(shí)施方案是內(nèi)部過(guò)程。所述控制經(jīng)配置以選擇哪一cpu執(zhí)行哪一運(yùn)算,且確保根據(jù)適當(dāng)?shù)倪\(yùn)算(例如提供到執(zhí)行適當(dāng)運(yùn)算的適當(dāng)cpu)來(lái)處理有效數(shù)據(jù),以實(shí)施用于所述密碼過(guò)程的算法。所述控制優(yōu)選關(guān)于sca現(xiàn)象比相乘或求平方運(yùn)算小若干數(shù)量級(jí)。因此,sca可示出進(jìn)行相同或不同類型的運(yùn)算的不同cpu,但不一定示出哪一cpu正對(duì)有效數(shù)據(jù)進(jìn)行操作。通過(guò)此技術(shù),sca可準(zhǔn)許在不同cpu之間區(qū)分運(yùn)算,然而,加密密鑰的確定對(duì)區(qū)分cpu運(yùn)算不敏感。

將運(yùn)算指派給一或多個(gè)cpu可基于多種基礎(chǔ)中的一或多者來(lái)進(jìn)行。舉例來(lái)說(shuō),可使用變?yōu)榭捎糜趯?shí)施密碼過(guò)程的前兩個(gè)cpu,其中一個(gè)cpu被指派來(lái)執(zhí)行一個(gè)運(yùn)算,例如相乘,且另一cpu被指派來(lái)執(zhí)行相同或不同運(yùn)算,例如相乘或求平方??苫谡?jīng)配置以高效地執(zhí)行所述運(yùn)算來(lái)為cpu指派運(yùn)算。舉例來(lái)說(shuō),cpu可實(shí)施為浮點(diǎn)處理器,且可被指派在此類處理器上更高效地執(zhí)行的運(yùn)算??筛鶕?jù)cpu所位于的系統(tǒng),來(lái)在軟件中編程運(yùn)算對(duì)cpu的指派。舉例來(lái)說(shuō),對(duì)其中將實(shí)施分布式密碼過(guò)程的計(jì)算機(jī)系統(tǒng)的了解可用以配置軟件來(lái)將運(yùn)算指派給計(jì)算機(jī)系統(tǒng)中的某些cpu?;蛘呋蛄硗?,用以實(shí)施分布式密碼過(guò)程的軟件可查詢計(jì)算機(jī)系統(tǒng),以確定計(jì)算機(jī)系統(tǒng)的配置,且基于查詢結(jié)果來(lái)為運(yùn)算的指派選擇cpu。可提供控制來(lái)改變?cè)诿艽a過(guò)程的執(zhí)行期間的不同部分或重復(fù)中正由給定cpu執(zhí)行的運(yùn)算。所述控制可在多種基礎(chǔ)上操作,包含針對(duì)cpu運(yùn)算使用隨機(jī)產(chǎn)生的和/或預(yù)設(shè)的改變。所述控制跟蹤在其上正處理有效數(shù)據(jù)的cpu,以確保獲得有效的最終結(jié)果。

可將運(yùn)算指派給多于一個(gè)cpu,以利用并行執(zhí)行或多任務(wù)能力。將運(yùn)算指派給一或多個(gè)cpu準(zhǔn)許實(shí)現(xiàn)某些設(shè)計(jì)目標(biāo)時(shí)的顯著靈活性,例如運(yùn)算的同步、不同能力的cpu質(zhì)檢的負(fù)載平衡,以及可輔助實(shí)施高效且遮蔽分布式密碼過(guò)程的其它準(zhǔn)則。

可在密碼過(guò)程的一些重復(fù)中或每一重復(fù)中,將有效數(shù)據(jù)提供到一或多個(gè)cpu。歸因于將對(duì)有效數(shù)據(jù)執(zhí)行的運(yùn)算,哪一cpu接收有效數(shù)據(jù)由加密密鑰的值確定。如果加密密鑰的值需要求平方運(yùn)算,那么所述有效數(shù)據(jù)被引導(dǎo)到對(duì)指派給求平方運(yùn)算的cpu。如果加密密鑰的值需要相乘運(yùn)算,那么所述有效數(shù)據(jù)被引導(dǎo)到指派給相乘運(yùn)算的cpu。并不對(duì)有效數(shù)據(jù)進(jìn)行運(yùn)算的cpu可對(duì)不相關(guān)數(shù)據(jù)進(jìn)行運(yùn)算?;蛘呋蛄硗?,兩個(gè)cpu可同時(shí)對(duì)有效數(shù)據(jù)進(jìn)行運(yùn)算,或可同時(shí)對(duì)不相關(guān)數(shù)據(jù)進(jìn)行運(yùn)算。對(duì)有效數(shù)據(jù)或?qū)Σ幌嚓P(guān)數(shù)據(jù)進(jìn)行的運(yùn)算的結(jié)果可適當(dāng)?shù)卮鎯?chǔ)或丟棄。舉例來(lái)說(shuō),對(duì)有效數(shù)據(jù)進(jìn)行的運(yùn)算的結(jié)果可用于覆寫用作另一運(yùn)算中的運(yùn)算數(shù)的不相關(guān)數(shù)據(jù)。有效數(shù)據(jù)結(jié)果可存儲(chǔ)在為有效數(shù)據(jù)保留的指定位置,或先前保持不相關(guān)數(shù)據(jù)的位置。密碼過(guò)程的給定重復(fù)中的運(yùn)算可針對(duì)相應(yīng)運(yùn)算數(shù)僅使用有效數(shù)據(jù),僅不相關(guān)數(shù)據(jù)或有效與不相關(guān)數(shù)據(jù)的組合。舉例來(lái)說(shuō),密碼過(guò)程可包含一或多個(gè)不相關(guān)的重復(fù),其中此類重復(fù)中的運(yùn)算的結(jié)果不用以促成獲得最終的有效結(jié)果。在此實(shí)例中,用于不相關(guān)的重復(fù)的運(yùn)算數(shù)可為有效或不相關(guān)數(shù)據(jù)。所述密碼過(guò)程可包含比預(yù)期多的重復(fù),且因此促成將加密密鑰從被執(zhí)行的運(yùn)算解離。在一些重復(fù)中,一或多個(gè)cpu可不執(zhí)行運(yùn)算,或可執(zhí)行不用于密碼過(guò)程中的運(yùn)算,例如在密碼過(guò)程需要求平方和相乘運(yùn)算時(shí)執(zhí)行相加。

所述控制實(shí)體可引導(dǎo)將在何處獲得或提供有效數(shù)據(jù)以及在何處獲得或提供不相關(guān)數(shù)據(jù),例如哪一cpu接收哪些數(shù)據(jù),且結(jié)果存儲(chǔ)在何處。在每一cpu進(jìn)行分布式密碼過(guò)程的一些重復(fù)中或每一重復(fù)中的單個(gè)不可中斷的運(yùn)算的情況下,根據(jù)加密密鑰的內(nèi)容,相對(duì)于正執(zhí)行的運(yùn)算的觀察結(jié)果,遮蔽旁信道現(xiàn)象。不可中斷的運(yùn)算是指可獨(dú)立于其它運(yùn)算執(zhí)行的低等級(jí)運(yùn)算,例如相乘運(yùn)算或求平方運(yùn)算。

用于進(jìn)行分布式密碼過(guò)程的實(shí)例設(shè)備包含多個(gè)cpu,使得運(yùn)算可在cpu之間劃分??蓪⑻幚砥鞫x為包含一或多個(gè)cpu。舉例來(lái)說(shuō),處理器可在具有一或多個(gè)cpu的一或多個(gè)集成電路芯片上的硬件中實(shí)施?;蛘呋蛄硗?,處理器可虛擬地實(shí)施以包含一或多個(gè)cpu,例如通過(guò)配置將被視為且作為單個(gè)處理單元操作的一或多個(gè)cpu。還可使用多個(gè)處理器,其中的每一者可包含一或多個(gè)cpu,來(lái)實(shí)施分布式技術(shù)??蔀橐换蚨鄠€(gè)cpu或處理器指派某些運(yùn)算來(lái)在密碼過(guò)程期間執(zhí)行。舉例來(lái)說(shuō),可為一或多個(gè)cpu或處理器指派求平方運(yùn)算,而可為一或多個(gè)其它c(diǎn)pu或處理器指派相乘運(yùn)算。當(dāng)密碼過(guò)程需要求平方運(yùn)算時(shí),指派給求平方運(yùn)算的一或多個(gè)cpu或處理器執(zhí)行求平方運(yùn)算。類似地,需要密碼過(guò)程的相乘運(yùn)算由指派給相乘運(yùn)算的一或多個(gè)cpu或處理器執(zhí)行。然而,指派給不被要求來(lái)執(zhí)行所指派的運(yùn)算從而根據(jù)密碼過(guò)程來(lái)促進(jìn)有效最終結(jié)果的產(chǎn)生的給定運(yùn)算的一或多個(gè)cpu或處理器仍可對(duì)有效數(shù)據(jù)或?qū)Σ幌嚓P(guān)數(shù)據(jù)執(zhí)行所指派的運(yùn)算。密碼過(guò)程中所涉及的cpu或處理器可在密碼過(guò)程的每一循環(huán)中進(jìn)行運(yùn)算,不管cpu還是處理器正對(duì)有效密碼數(shù)據(jù)進(jìn)行運(yùn)算??煽刂芻pu或處理器來(lái)避免在密碼過(guò)程的一或多個(gè)循環(huán)中進(jìn)行運(yùn)算。

實(shí)例設(shè)備可包含一或多個(gè)處理器,其中每一處理器可包含一或多個(gè)cpu,其經(jīng)配置以對(duì)有效密碼數(shù)據(jù)或不相關(guān)數(shù)據(jù)進(jìn)行運(yùn)算。選擇給定處理器來(lái)根據(jù)加密密鑰的值,在密碼過(guò)程期間對(duì)有效密碼數(shù)據(jù)進(jìn)行運(yùn)算。舉例來(lái)說(shuō),當(dāng)在密碼過(guò)程期間處理的加密密鑰的位值指示應(yīng)發(fā)生相乘時(shí),有效密碼數(shù)據(jù)被引導(dǎo)到提供相乘運(yùn)算的處理器(或處理器被引導(dǎo)到有效密碼數(shù)據(jù))。同時(shí),負(fù)責(zé)求平方運(yùn)算的另一處理器具備(或被引導(dǎo)到)用作求平方運(yùn)算的運(yùn)算數(shù)的有效數(shù)據(jù)或不相關(guān)數(shù)據(jù)。有效相乘運(yùn)算和不相關(guān)求平方運(yùn)算可同時(shí)發(fā)生。

根據(jù)實(shí)例實(shí)施方案,在密碼過(guò)程的給定循環(huán)或重復(fù)中,根據(jù)加密密鑰的值,將有效數(shù)據(jù)提供到被指派了所要運(yùn)算的適當(dāng)處理器,或由所述處理器存取。還/或者將有效數(shù)據(jù)或不相關(guān)數(shù)據(jù)提供到被指派了相同或不同運(yùn)算的另一處理器或由所述處理器存取??墒褂弥赶蚍謩e包含有效密碼數(shù)據(jù)或包含不相關(guān)數(shù)據(jù)的存儲(chǔ)器位置的指針,將有效數(shù)據(jù)或不相關(guān)數(shù)據(jù)提供到既定處理器。舉例來(lái)說(shuō),指向有效數(shù)據(jù)的指針可維持并提供到適當(dāng)?shù)奶幚砥?,以?zhǔn)許存取有效數(shù)據(jù)。適當(dāng)?shù)奶幚砥髯x取所述指針,并存取所述指針?biāo)赶虻拇鎯?chǔ)器位置,以獲得有效數(shù)據(jù)。指向不相關(guān)數(shù)據(jù)的指針可維持并提供到既定處理器,以存取所述不相關(guān)數(shù)據(jù)。通過(guò)在密碼過(guò)程期間將所述指針提供到適當(dāng)?shù)奶幚砥鳎行?shù)據(jù)和/或不相關(guān)數(shù)據(jù)可在所涉及的處理器之間有效地切換?;蛘呋蛄硗猓绻概山o給定處理器的運(yùn)算改變,指向有效數(shù)據(jù)和/或不相關(guān)數(shù)據(jù)的指針也可改變,以準(zhǔn)許有效或不相關(guān)數(shù)據(jù)在運(yùn)算之間切換,即使不在處理器之間切換也是如此。

有效數(shù)據(jù)和/或不相關(guān)數(shù)據(jù)在處理器之間的切換可根據(jù)若干配置來(lái)實(shí)現(xiàn)。舉例來(lái)說(shuō),可使用指向存儲(chǔ)器位置的指針,如上文所論述。或者或另外,有效數(shù)據(jù)和/或不相關(guān)數(shù)據(jù)可由處理器存儲(chǔ)或存儲(chǔ)在所述處理器中,以準(zhǔn)許所述處理器直接存取數(shù)據(jù)或?qū)⑺鰯?shù)據(jù)供給到另一處理器。舉例來(lái)說(shuō),所述處理器可彼此交換有效數(shù)據(jù)和不相關(guān)數(shù)據(jù)。所述數(shù)據(jù)也可或者存儲(chǔ)在可由若干處理器存取和/或可準(zhǔn)許若干處理器同時(shí)存取所述數(shù)據(jù)的多端口存儲(chǔ)器中??蔀槎喽丝诖鎯?chǔ)器維持針對(duì)有效數(shù)據(jù)和不相關(guān)數(shù)據(jù)的指針或地址,以向處理器提供對(duì)所要數(shù)據(jù)的存取權(quán)。使用指針來(lái)識(shí)別存儲(chǔ)器位置和/或用以對(duì)有效數(shù)據(jù)執(zhí)行運(yùn)算的處理器可準(zhǔn)許使用展現(xiàn)相對(duì)較小可觀察的占用面積的相對(duì)簡(jiǎn)單的機(jī)制來(lái)使有效數(shù)據(jù)在處理器之間切換。觀察時(shí)序、電力或電磁參數(shù)來(lái)檢測(cè)有效數(shù)據(jù)在處理器之間的切換比觀察此類參數(shù)來(lái)檢測(cè)處理器執(zhí)行求平方還是相乘運(yùn)算顯著更難。

根據(jù)一些實(shí)例,負(fù)責(zé)相應(yīng)運(yùn)算的不同組的處理器耦合到多端口存儲(chǔ)器。負(fù)責(zé)密碼過(guò)程中的相應(yīng)運(yùn)算的每一處理器或每一組處理器可存取所述存儲(chǔ)器以獲得運(yùn)算數(shù),并將結(jié)果寫入到相同存儲(chǔ)器。由于多個(gè)處理器可同時(shí)存取同一多端口存儲(chǔ)器,因此來(lái)自根據(jù)密碼過(guò)程進(jìn)行的運(yùn)算的中間結(jié)果可由不同處理器同時(shí)存取和運(yùn)算。多端口存儲(chǔ)器因此可用作輔助密碼過(guò)程跨多個(gè)處理器的分布以及在處理器之間切換數(shù)據(jù)的工具。

根據(jù)一些實(shí)例,有效或不相關(guān)數(shù)據(jù)可用作分布式密碼過(guò)程期間的運(yùn)算數(shù)和/或中間結(jié)果。舉例來(lái)說(shuō),一或多個(gè)處理器可具備有效或不相關(guān)數(shù)據(jù)作為輸入,并對(duì)數(shù)據(jù)進(jìn)行運(yùn)算以產(chǎn)生結(jié)果,其接著用作密碼過(guò)程的后續(xù)循環(huán)或重復(fù)中的運(yùn)算數(shù)。可使用有效或不相關(guān)數(shù)據(jù)來(lái)初始化運(yùn)算數(shù),對(duì)其進(jìn)行運(yùn)算以產(chǎn)生有效或不相關(guān)結(jié)果,接著將其用作下一循環(huán)或重復(fù)中的運(yùn)算數(shù)。因此可運(yùn)載有效或不相關(guān)數(shù)據(jù)一起通過(guò)密碼過(guò)程,且經(jīng)協(xié)調(diào)使得在觀察有效或不相關(guān)數(shù)據(jù)時(shí)不清楚哪個(gè)是哪個(gè)。舉例來(lái)說(shuō),可在特定存儲(chǔ)器位置提供有效或不相關(guān)數(shù)據(jù),且涉及有效或不相關(guān)數(shù)據(jù)的存儲(chǔ)器交互可大約在同一時(shí)間出現(xiàn)。觀察存儲(chǔ)器交互以區(qū)分有效和不相關(guān)數(shù)據(jù)的嘗試因此可受妨礙,因?yàn)榭赡懿磺宄瑫r(shí)存儲(chǔ)器交互中的哪一者是針對(duì)有效或不相關(guān)數(shù)據(jù)。在用于不是既定對(duì)有效結(jié)果進(jìn)行運(yùn)算或產(chǎn)生有效結(jié)果的運(yùn)算之后,可丟棄所述有效或不相關(guān)數(shù)據(jù)?;蛘?,使用有效或不相關(guān)數(shù)據(jù)的運(yùn)算的結(jié)果可存儲(chǔ)在多端口存儲(chǔ)器中,以準(zhǔn)許進(jìn)行后續(xù)運(yùn)算的處理器對(duì)所述結(jié)果的存取。另外或替代地,可在每一循環(huán)或重復(fù)中新提供有效或不相關(guān)數(shù)據(jù),作為用于運(yùn)算的運(yùn)算數(shù)。在一些情況下,在密碼過(guò)程開(kāi)頭或期間提供有效或不相關(guān)數(shù)據(jù)可導(dǎo)致混淆產(chǎn)生有效數(shù)據(jù)的運(yùn)算的區(qū)別性特征。

可提供控制實(shí)體,例如調(diào)度程序,來(lái)控制有效數(shù)據(jù)在不同處理器之間的切換,和/或引導(dǎo)哪一(哪些)處理器執(zhí)行哪一運(yùn)算。中間數(shù)據(jù)的處理指派給所述控制實(shí)體在密碼過(guò)程中的每個(gè)階段處的一或多個(gè)處理器??刂茖?shí)體可跟蹤哪一(哪些)處理器正對(duì)有效數(shù)據(jù)執(zhí)行運(yùn)算,和/或哪一(哪些)處理器正對(duì)任意數(shù)據(jù)執(zhí)行運(yùn)算。所述控制實(shí)體可控制將由一或多個(gè)處理器執(zhí)行的運(yùn)算的選擇。所述控制實(shí)體可跟蹤哪一運(yùn)算正由哪一(哪些)處理器執(zhí)行,并使用所跟蹤的數(shù)據(jù)來(lái)確定有效數(shù)據(jù)最終結(jié)果的位置。有效數(shù)據(jù)運(yùn)算導(dǎo)致獲得所要的加密/解密輸出,同時(shí)可丟棄使用所述任意數(shù)據(jù)獲得的結(jié)果??蓪?duì)密碼過(guò)程中的一或多個(gè)cpu獲取部分實(shí)施所述控制實(shí)體,或可對(duì)不參與密碼過(guò)程的一或多個(gè)單獨(dú)cpu實(shí)施所述控制實(shí)體。所述控制實(shí)體可實(shí)施為指針控制器,使得指向有效數(shù)據(jù)的指針傳遞到適當(dāng)?shù)奶幚砥???墒褂妙愃婆渲脕?lái)控制指向任意數(shù)據(jù)的指針供在給定不可中斷的運(yùn)算中不對(duì)有效數(shù)據(jù)進(jìn)行運(yùn)算的處理器使用。針對(duì)有效數(shù)據(jù)或任意數(shù)據(jù)的指針可指定多端口存儲(chǔ)器中可由所述處理器存取的位置。特定多端口存儲(chǔ)器位置可在整個(gè)密碼過(guò)程中保持中間有效數(shù)據(jù)。

本文所提供的技術(shù)和實(shí)施方案大體上涉及對(duì)抗用以發(fā)現(xiàn)加密組件的旁信道分析技術(shù),且更具體地說(shuō),涉及分割和混淆加密運(yùn)算來(lái)對(duì)抗旁信道分析技術(shù)的多處理器方法。本文所論述的技術(shù)可用以混淆或抵抗旁信道分析,旁信道分析可能原本用來(lái)在密碼過(guò)程執(zhí)行期間觀察密碼數(shù)據(jù)。舉例來(lái)說(shuō),密碼過(guò)程分布在兩個(gè)或更多個(gè)cpu之間,其中每一cpu分別并行執(zhí)行不可中斷的運(yùn)算,任一者對(duì)有效密碼數(shù)據(jù),或?qū)Σ幌嚓P(guān)數(shù)據(jù)。不可中斷的運(yùn)算可為單個(gè)類型的運(yùn)算的實(shí)例,例如單個(gè)相乘或單個(gè)求平方運(yùn)算。觀察到的與時(shí)序、電力或電磁輸出有關(guān)的旁信道參數(shù)可看起來(lái)在有效密碼數(shù)據(jù)與不相關(guān)數(shù)據(jù)之間不可區(qū)分。

參看圖2,計(jì)算機(jī)系統(tǒng)200包含多核心處理器210、無(wú)線接口225、控制實(shí)體240、網(wǎng)絡(luò)接口265和非暫時(shí)性存儲(chǔ)器260。計(jì)算機(jī)系統(tǒng)200經(jīng)配置以對(duì)輸入和輸出密碼信號(hào)進(jìn)行操作。舉例來(lái)說(shuō),計(jì)算機(jī)系統(tǒng)200可經(jīng)由無(wú)線或有線網(wǎng)絡(luò)連接接收經(jīng)加密的數(shù)據(jù),并對(duì)所述經(jīng)加密的數(shù)據(jù)進(jìn)行解密來(lái)恢復(fù)原始數(shù)據(jù)。類似地,計(jì)算機(jī)系統(tǒng)200可對(duì)原始數(shù)據(jù)進(jìn)行運(yùn)算,以產(chǎn)生經(jīng)加密的數(shù)據(jù),來(lái)經(jīng)由無(wú)線或有線網(wǎng)絡(luò)連接進(jìn)行傳輸。處理器210、無(wú)線接口225、存儲(chǔ)器260和網(wǎng)絡(luò)接口265通過(guò)總線215彼此連接。控制實(shí)體240連接到多核心處理器210,以準(zhǔn)許雙向信令。多核心處理器210包含若干中央處理單元(cpu)210-a、210-b、210-c和210-d,其可共享資源,且獨(dú)立和/或并行操作。存儲(chǔ)器260是供多核心處理器210中的cpu210-a到210-d使用的共享存儲(chǔ)器??蓪⒋鎯?chǔ)器260實(shí)施為多端口存儲(chǔ)器,其具有可由不同cpu210-a到210-d共同存取的存儲(chǔ)器位置??偩€215經(jīng)配置以支持多個(gè)cpu210-a到210-d以及多個(gè)存儲(chǔ)器260,以及多端口存儲(chǔ)器。舉例來(lái)說(shuō),總線215可經(jīng)配置以具有額外的線來(lái)連接到存儲(chǔ)器260中的柵極,以為cpu210-a到210-d中的不同者激活端口。

無(wú)線接口225包含無(wú)線接收器、發(fā)射器、收發(fā)器和/或其它元件,其使計(jì)算機(jī)系統(tǒng)200能夠使用與一或多個(gè)無(wú)線廣域網(wǎng)(wwan)系統(tǒng)、無(wú)線局域網(wǎng)(wlan)和/或可用以發(fā)送和/或接收數(shù)據(jù)的其它類型的無(wú)線通信協(xié)議相關(guān)聯(lián)的無(wú)線通信協(xié)議來(lái)發(fā)送和/或接收數(shù)據(jù)。無(wú)線接口225通過(guò)線232連接到天線234以用于將通信發(fā)送到經(jīng)配置以使用無(wú)線通信協(xié)議通信的裝置,或從所述裝置接收通信。

網(wǎng)絡(luò)接口265經(jīng)配置以將計(jì)算機(jī)系統(tǒng)200連接到一或多個(gè)有線網(wǎng)絡(luò)連接。網(wǎng)絡(luò)接口265經(jīng)配置以準(zhǔn)許計(jì)算機(jī)系統(tǒng)200經(jīng)由一或多個(gè)有線數(shù)據(jù)連接發(fā)射和接收數(shù)據(jù)。

多核心處理器210可為智能裝置,例如由高通、公司或制作或設(shè)計(jì)的個(gè)人計(jì)算機(jī)處理器、微控制器、專用集成電路(asic),或任何其它類型的多處理裝置。多核心處理器210可實(shí)施為物理上獨(dú)立的cpu210-a到210-d,或在同一物理封裝中具有兩個(gè)或更多個(gè)cpu210-a到210-d。另外,cpu210-a到210-d無(wú)需位于同一地理位置,而是可分布在廣域網(wǎng)或局域網(wǎng)(wan或lan)上。

存儲(chǔ)器260是可包含隨機(jī)存取存儲(chǔ)器(ram)、只讀存儲(chǔ)器(rom)或其組合的非暫時(shí)性存儲(chǔ)裝置。存儲(chǔ)器260經(jīng)配置以存儲(chǔ)含有用于控制多核心處理器210以執(zhí)行本文中所描述功能的指令的處理器可讀、處理器可執(zhí)行軟件代碼(盡管所述描述可解讀所述軟件執(zhí)行所述功能)。所述軟件可通過(guò)經(jīng)由網(wǎng)絡(luò)連接下載,從磁盤上載,從圖像提取或使用任何其它類型的數(shù)據(jù)傳送技術(shù)加載而加載到存儲(chǔ)器260。另外,軟件可并非可直接執(zhí)行的(例如,要求在執(zhí)行之前進(jìn)行編譯)。

存儲(chǔ)器260中的軟件經(jīng)配置以使多核心處理器210能夠執(zhí)行各種動(dòng)作,包含抵抗sca攻擊,如本文所述。所述軟件還可在cpu210-a到210-d中的一或多者上執(zhí)行,個(gè)別地或在分布式基礎(chǔ)上。cpu210-a到210-d的分布式運(yùn)算可由cpu210-a到210-d中的一或多者或由控制實(shí)體240控制。

盡管將控制實(shí)體240示出為與多核心處理器210分離,但其可在cpu210-a到210-d中的一或多者上實(shí)施,或部分或完全與多核心處理器210分離。另外,控制實(shí)體240可實(shí)施為計(jì)算機(jī)系統(tǒng)200的遠(yuǎn)程組件??刂茖?shí)體240可在cpu210-a到210-d中的兩個(gè)或更多個(gè)上作為并行過(guò)程或作為經(jīng)協(xié)調(diào)的控制來(lái)實(shí)施。舉例來(lái)說(shuō),控制實(shí)體240可在其上實(shí)施所述控制實(shí)體以控制過(guò)程流的cpu之間接收或發(fā)送信號(hào)。作為另一實(shí)例,控制實(shí)體240可在多于一個(gè)cpu上獨(dú)立執(zhí)行,其中所述過(guò)程流由cpu所接收到的指示密碼過(guò)程的執(zhí)行的信號(hào)控制。舉例來(lái)說(shuō),一旦密碼過(guò)程的重復(fù)已在兩個(gè)cpu上完成,cpu就可彼此發(fā)信號(hào)通知,通過(guò)在每一cpu上獨(dú)立地執(zhí)行控制實(shí)體240來(lái)讀取所述信號(hào)。這樣實(shí)施的控制實(shí)體240可接著致使cpu針對(duì)密碼過(guò)程的接下來(lái)的重復(fù)使用適當(dāng)?shù)倪\(yùn)算數(shù),例如通過(guò)指向?qū)⒂蒫pu使用的有效數(shù)據(jù)或不相關(guān)數(shù)據(jù)。

控制實(shí)體240可集成到cpu210-a到210-d中的單個(gè)或若干個(gè)cpu中,以提供對(duì)在cpu210-a到210-d中的多于一個(gè)上執(zhí)行的軟件應(yīng)用程序的控制或管理。另外或替代地,對(duì)分布式軟件應(yīng)用程序的分布式控制或管理可由控制實(shí)體240提供,其可實(shí)施為可管理對(duì)cpu210-a到210-d中的一或多者或存儲(chǔ)器260的控制的單獨(dú)核、cpu、微控制器,或任何其它控制裝置。cpu210-a到210-d中的至少兩個(gè)用以在共享或分布式基礎(chǔ)上實(shí)施密碼運(yùn)算,且對(duì)密碼運(yùn)算如何共享或分布的控制可由cpu210-a到210-d中的一或多者或由作為單獨(dú)控制裝置的控制實(shí)體240提供。

參看圖3,過(guò)程流程300說(shuō)明密碼過(guò)程的實(shí)例。過(guò)程流300示出針對(duì)rsa算法進(jìn)行以處理通信c的并行運(yùn)算310、320,其中n為模數(shù),且d為秘密指數(shù)或私鑰。在過(guò)程流300執(zhí)行的計(jì)算是根據(jù)用于執(zhí)行rsa密碼過(guò)程的以下算法。

在以上算法中,l是私鑰或秘密指數(shù)d的長(zhǎng)度,r是有效中間結(jié)果,且sig是最終結(jié)果,通信c是作為密碼運(yùn)算的標(biāo)的的消息,所述密碼運(yùn)算可為例如加密或解密。模數(shù)n通常結(jié)合公鑰或私鑰提供,例如結(jié)合秘密指數(shù)d。秘密指數(shù)d是用于密碼過(guò)程中的私鑰,且保持保密以確保密碼過(guò)程的完整性。秘密指數(shù)d表示為具有例如位等分量值的向量。每一位可由其在秘密指數(shù)d中的位置識(shí)別,例如表示為從最高有效位到最低有效位排序的位dl-1、dl-2、...d1、d0。根據(jù)所述算法,將有效中間結(jié)果r初始化到1。隨著每一重復(fù)來(lái)對(duì)有效中間結(jié)果r求平方,作為(r2modn)計(jì)算的一部分。如果秘密指數(shù)d的當(dāng)前位是1,那么在(r2modn)計(jì)算之后,還通過(guò)在(r*cmodn)計(jì)算中倍增來(lái)修改有效中間結(jié)果r。如果秘密指數(shù)d的當(dāng)前位不等于1,那么為所述算法的重復(fù)跳過(guò)相乘運(yùn)算。

上方算法的實(shí)施方案通常調(diào)用若干求平方和相乘運(yùn)算。過(guò)程流300說(shuō)明求平方運(yùn)算310正由一或多個(gè)cpu執(zhí)行,其可結(jié)合cpu210-a到210-d中的任一者實(shí)施。相乘運(yùn)算320可由一或多個(gè)cpu執(zhí)行,其還可結(jié)合不同時(shí)進(jìn)行求平方運(yùn)算310的cpu210-a到210-d中的任一者實(shí)施。舉例來(lái)說(shuō),通過(guò)使求平方和相乘的運(yùn)算交錯(cuò),在單個(gè)cpu上實(shí)施求平方運(yùn)算310和相乘運(yùn)算320也是可能的。

根據(jù)過(guò)程流300,控制實(shí)體,例如控制實(shí)體240,接收秘密指數(shù)d,且控制有效中間數(shù)據(jù)r在用以實(shí)施密碼過(guò)程的可用cpu之間的切換。將通信c和模數(shù)n,完全或部分地,提供到進(jìn)行求平方運(yùn)算310和相乘運(yùn)算320的cpu中的每一者。初始化有效中間結(jié)果r,其保持有效中間數(shù)據(jù),如不相關(guān)中間結(jié)果r′一樣,其充當(dāng)不相關(guān)中間結(jié)果的占位符。舉例來(lái)說(shuō),將有效中間結(jié)果r初始化到1??蓪⒉幌嚓P(guān)中間結(jié)果r′初始化到任意值,包含如所提供來(lái)初始化有效中間結(jié)果r的相同值。使用秘密指數(shù)d的分量來(lái)開(kāi)始通過(guò)rsa算法的重復(fù)。最初,將秘密指數(shù)d的第一分量確定為1。由于將有效中間結(jié)果r初始化到1,因此最初不需要實(shí)施求平方運(yùn)算310,因?yàn)榧俣ㄍㄟ^(guò)對(duì)1求平方來(lái)獲得1。對(duì)有效中間結(jié)果r執(zhí)行的第一運(yùn)算因此為初始相乘運(yùn)算321,表示為m。將不相關(guān)中間結(jié)果r′作為運(yùn)算數(shù)提供到初始求平方運(yùn)算311,其表示為s′。

名稱s和m用以指示對(duì)有效中間結(jié)果r的相應(yīng)求平方或相乘運(yùn)算。名稱s′和m′用以指示對(duì)不相關(guān)中間結(jié)果r′的相應(yīng)求平方或相乘運(yùn)算。一致地應(yīng)用這些名稱來(lái)指代過(guò)程流300期間的結(jié)果和運(yùn)算。舉例來(lái)說(shuō),使用不相關(guān)中間結(jié)果r′作為運(yùn)算數(shù)的相乘運(yùn)算表示為m′,且相乘運(yùn)算的結(jié)果存儲(chǔ)在不相關(guān)中間結(jié)果r′中。因此通過(guò)應(yīng)用于求平方運(yùn)算s′或相乘運(yùn)算m′來(lái)更新不相關(guān)中間結(jié)果r′,而通過(guò)應(yīng)用于求平方運(yùn)算s或相乘運(yùn)算m來(lái)類似地更新有效中間結(jié)果r。使用這些名稱,表示為s′的初始求平方運(yùn)算311更新不相關(guān)中間結(jié)果r′,而表示為m的初始相乘運(yùn)算321更新有效中間結(jié)果r。在此配置中,執(zhí)行求平方和相乘運(yùn)算兩者,盡管對(duì)于有效或不相關(guān)數(shù)據(jù)執(zhí)行一個(gè)運(yùn)算來(lái)獲得不相關(guān)結(jié)果,且對(duì)于有效數(shù)據(jù)執(zhí)行一個(gè)運(yùn)算來(lái)獲得有效結(jié)果。

無(wú)需對(duì)于過(guò)程流300中描繪的密碼過(guò)程的每一重復(fù)都更新不相關(guān)的中間結(jié)果r′。舉例來(lái)說(shuō),可在密碼過(guò)程的每一重復(fù)中,將新的有效或不相關(guān)值指派給不相關(guān)中間結(jié)果r′。在此情形中,可在所述運(yùn)算的執(zhí)行之后丟棄執(zhí)行求平方運(yùn)算s′或相乘運(yùn)算m′的結(jié)果,而不是用以更新不相關(guān)中間結(jié)果r′。

在中初始運(yùn)算之后的重復(fù)中,有效中間結(jié)果r經(jīng)受表示為s的求平方運(yùn)算312,其產(chǎn)生經(jīng)更新的有效中間結(jié)果r。并行地,不相關(guān)中間結(jié)果r′經(jīng)受表示為m′的相乘運(yùn)算322,其產(chǎn)生經(jīng)更新的不相關(guān)中間結(jié)果r′。因此,在第二重復(fù)中,進(jìn)行求平方運(yùn)算310的cpu指向有效中間結(jié)果r作為運(yùn)算數(shù),且執(zhí)行表示為s的求平方運(yùn)算312來(lái)更新有效中間結(jié)果r。進(jìn)行相乘運(yùn)算320的cpu指向不相關(guān)中間結(jié)果r′作為運(yùn)算數(shù)(其可為有效中間結(jié)果r),且執(zhí)行表示為m′的相乘運(yùn)算322。用箭頭332來(lái)說(shuō)明使cpu指向有效中間結(jié)果r或不相關(guān)中間結(jié)果r′的改變。使用有效中間結(jié)果r作為運(yùn)算數(shù)而進(jìn)行的運(yùn)算的結(jié)果存儲(chǔ)在有效中間結(jié)果r中。另外,丟棄使用不相關(guān)中間結(jié)果r′作為運(yùn)算數(shù)進(jìn)行的運(yùn)算的結(jié)果,或?qū)⑵浯鎯?chǔ)在不相關(guān)中間結(jié)果r′中。因此,可通過(guò)所應(yīng)用的運(yùn)算來(lái)更新相應(yīng)的有效和不相關(guān)中間結(jié)果r和r′,且通過(guò)密碼過(guò)程的每一重復(fù)來(lái)運(yùn)載。

使用此布置,相應(yīng)的有效和不相關(guān)中間結(jié)果r和r′在進(jìn)行相應(yīng)的求平方運(yùn)算310和相乘運(yùn)算320的cpu之間切換。中間結(jié)果在cpu之間的切換,以箭頭330說(shuō)明,可根據(jù)各種技術(shù)來(lái)實(shí)現(xiàn)。舉例來(lái)說(shuō),圖2中所示的控制實(shí)體240使用指針來(lái)控制相應(yīng)的有效和不相關(guān)中間結(jié)果r和r′在cpu之間的切換。有效和不相關(guān)中間結(jié)果r和r′無(wú)需為不同值,且因此在此實(shí)例中無(wú)需切換。舉例來(lái)說(shuō),進(jìn)行相應(yīng)求平方運(yùn)算310和相乘運(yùn)算320的cpu可各自使用有效中間結(jié)果r作為運(yùn)算數(shù)。由適當(dāng)?shù)腸pu執(zhí)行的產(chǎn)生有效或所要結(jié)果的運(yùn)算的結(jié)果維持在有效中間結(jié)果r中,而其它結(jié)果是不相關(guān)的,且可丟棄或存儲(chǔ)在不相關(guān)中間結(jié)果r′中。

控制實(shí)體240使執(zhí)行求平方運(yùn)算312的cpu指向有效中間結(jié)果r,同時(shí)還使執(zhí)行相乘運(yùn)算322的cpu指向不相關(guān)中間結(jié)果r′(其可為與有效中間結(jié)果r相同的位置)。此配置可使用不同的存儲(chǔ)技術(shù)來(lái)在適當(dāng)?shù)那笃椒竭\(yùn)算310或相乘運(yùn)算320之后,準(zhǔn)許相應(yīng)的有效和不相關(guān)中間結(jié)果r和r′的快速指針調(diào)整、檢索和存儲(chǔ)。舉例來(lái)說(shuō),控制實(shí)體240可控制對(duì)兩個(gè)不同存儲(chǔ)位置的存取,一個(gè)針對(duì)有效中間結(jié)果r,且另一個(gè)針對(duì)不相關(guān)中間結(jié)果r′??刂茖?shí)體240接著可使適當(dāng)?shù)腸pu指向有效中間結(jié)果r或不相關(guān)中間結(jié)果r′,以獲得用于有效數(shù)據(jù)運(yùn)算(s或m)的運(yùn)算數(shù),或獲得用于不相關(guān)數(shù)據(jù)運(yùn)算(s′或m′)的運(yùn)算數(shù)。舉例來(lái)說(shuō),相應(yīng)的有效和不相關(guān)中間結(jié)果r和r′的存儲(chǔ)位置可位于多端口存儲(chǔ)器中,其可實(shí)施為存儲(chǔ)器260(圖2),以準(zhǔn)許多個(gè)cpu潛在地同時(shí)存取??刂茖?shí)體240可將多端口存儲(chǔ)器中的地址提供給適當(dāng)?shù)腸pu,以準(zhǔn)許對(duì)相應(yīng)的有效和不相關(guān)中間結(jié)果r和r′的存取。另外或替代地,控制實(shí)體240可將相應(yīng)的有效和不相關(guān)中間結(jié)果r和r′加載到用于cpu的本地存儲(chǔ)器中,根據(jù)相應(yīng)cpu將對(duì)有效數(shù)據(jù)還是對(duì)不相關(guān)數(shù)據(jù)(其可從有效數(shù)據(jù)獲得)進(jìn)行運(yùn)算。許多其它切換方案是可用且可能的,只要可為適當(dāng)?shù)挠行笃椒交蛳喑诉\(yùn)算存取有效中間結(jié)果r,使得最后可獲得正確的有效結(jié)果即可。

在一些重復(fù)中,當(dāng)應(yīng)用求平方和/或相乘運(yùn)算時(shí),跟蹤有效中間結(jié)果r和不相關(guān)中間結(jié)果r′中的一者或兩者,使得可通過(guò)參考有效中間結(jié)果r來(lái)獲得正確的結(jié)果。另外或替代地,在密碼過(guò)程的一些重復(fù)中,跟蹤有效中間結(jié)果r,且不跟蹤不相關(guān)中間結(jié)果r′。在此情況下,當(dāng)用作運(yùn)算數(shù)時(shí),不相關(guān)中間結(jié)果r′可為有效數(shù)據(jù)、任意數(shù)據(jù)或計(jì)劃的數(shù)據(jù)。不相關(guān)中間結(jié)果r′的內(nèi)容或值對(duì)于獲得密碼過(guò)程的有效最終結(jié)果來(lái)說(shuō)是不重要的。在一些配置中,無(wú)需存儲(chǔ)不相關(guān)中間結(jié)果,這可避免額外的存儲(chǔ)器運(yùn)算。在此情況下,可在控制實(shí)體240的指導(dǎo)下產(chǎn)生不相關(guān)中間結(jié)果r′,例如通過(guò)發(fā)指令給適當(dāng)?shù)腸pu來(lái)獲得或產(chǎn)生用于不相關(guān)中間結(jié)果r′的有效或不相關(guān)數(shù)據(jù)。在其它情況下,控制實(shí)體240可致使有效中間結(jié)果r和不相關(guān)中間結(jié)果r′兩者將存儲(chǔ)并檢索和跟蹤,使得相對(duì)于作用中cpu所進(jìn)行的運(yùn)算,有效數(shù)據(jù)和不相關(guān)數(shù)據(jù)的管理之間存在極少區(qū)別或無(wú)區(qū)別。

根據(jù)另一實(shí)例,在所應(yīng)用的求平方和相乘運(yùn)算期間,不跟蹤有效中間結(jié)果r。在此情況下,使用秘密指數(shù)d的分量的值來(lái)將適當(dāng)?shù)腸pu引導(dǎo)到作為運(yùn)算數(shù)的有效中間結(jié)果r,或?qū)⒂行е虚g結(jié)果r引導(dǎo)到適當(dāng)?shù)腸pu,且將有效中間結(jié)果r的最終值用作密碼過(guò)程的所要結(jié)果。另外或替代地,如果有效中間結(jié)果r的存儲(chǔ)位置在密碼過(guò)程期間改變,例如通過(guò)與不相關(guān)中間結(jié)果r′切換,那么可通過(guò)跟蹤存儲(chǔ)位置改變,或通過(guò)查閱秘密指數(shù)d的分量值序列以確定有效中間結(jié)果r的最終位置,來(lái)確定有效中間結(jié)果r的最終位置。

隨著將求平方運(yùn)算310和相乘運(yùn)算320在密碼過(guò)程期間繼續(xù)應(yīng)用于作為運(yùn)算數(shù)的有效中間結(jié)果r和不相關(guān)中間結(jié)果r′兩者以獲得有效中間結(jié)果r和不相關(guān)中間結(jié)果r′作為結(jié)果,sca在有效與不相關(guān)運(yùn)算之間可檢測(cè)到極少區(qū)別或無(wú)區(qū)別。隨著以過(guò)程流300所描繪的密碼過(guò)程來(lái)實(shí)施,對(duì)于每一重復(fù)或循環(huán)執(zhí)行求平方運(yùn)算和相乘運(yùn)算兩者,使得無(wú)法基于sca來(lái)容易地區(qū)分秘密指數(shù)d的值??刂茖?shí)體所240進(jìn)行的在適當(dāng)?shù)腸pu之間有效中間結(jié)果r和不相關(guān)中間結(jié)果r′的運(yùn)算在使用sca來(lái)檢測(cè)方面比求平方和相乘運(yùn)算顯著更難。舉例來(lái)說(shuō),此類切換運(yùn)算的sca可產(chǎn)生可觀察的現(xiàn)象,其比求平方和/或相乘運(yùn)算所產(chǎn)生的現(xiàn)象小若干數(shù)量級(jí)。切換運(yùn)算在過(guò)程流300中已發(fā)生的確定因此使用sca非常困難,且正在對(duì)有效或不相關(guān)數(shù)據(jù)求平方還是相乘的確定同樣地非常困難。因此,根據(jù)過(guò)程流300進(jìn)行的密碼運(yùn)算非常難以與秘密指數(shù)d的分量值關(guān)聯(lián),因?yàn)槊恳幌鄳?yīng)cpu對(duì)于每一重復(fù)執(zhí)行求平方或相乘運(yùn)算中的任一者。秘密指數(shù)d的值因此對(duì)于過(guò)程流300所描繪的配置高度遮蔽,因?yàn)楸O(jiān)視任何單個(gè)cpu將示出一系列求平方運(yùn)算或一系列相乘運(yùn)算,且所監(jiān)視的運(yùn)算作為有效還是不相關(guān)的運(yùn)算數(shù)或結(jié)果將不清楚。如下文較詳細(xì)論述,給定cpu所執(zhí)行的運(yùn)算可改變,且對(duì)有效數(shù)據(jù)的參考可與所述運(yùn)算改變協(xié)調(diào)地改變。在此類配置中,秘密指數(shù)d的值持續(xù)高度遮蔽,因?yàn)楸O(jiān)視任何單個(gè)cpu將示出從秘密指數(shù)d的值解離的求平方或相乘運(yùn)算。

如過(guò)程流300中所說(shuō)明,求平方運(yùn)算310和相乘運(yùn)算320繼續(xù)對(duì)有效數(shù)據(jù)和不相關(guān)數(shù)據(jù)兩者使用,而控制實(shí)體240按需要切換有效中間結(jié)果r,以獲得有效計(jì)算和有效最終結(jié)果。箭頭330說(shuō)明有效中間結(jié)果r何時(shí)切換到適當(dāng)?shù)腸pu,以應(yīng)用求平方運(yùn)算310或相乘運(yùn)算320。將有效中間結(jié)果r切換到適當(dāng)?shù)腸pu與秘密指數(shù)d的當(dāng)前分量值一致。舉例來(lái)說(shuō),根據(jù)上文所述的rsa算法,每當(dāng)秘密指數(shù)d的當(dāng)前分量(位)是1時(shí),初求平方運(yùn)算之外,還執(zhí)行相乘運(yùn)算,因此將有效中間結(jié)果r切換到相乘運(yùn)算320,如用對(duì)應(yīng)箭頭330指示。當(dāng)秘密指數(shù)d的當(dāng)前分量(位)是0時(shí),對(duì)有效中間結(jié)果r執(zhí)行至少兩個(gè)連續(xù)求平方運(yùn)算310,因?yàn)樘^(guò)相乘運(yùn)算320。因此,雖然可存在對(duì)有效中間結(jié)果r的多個(gè)連續(xù)求平方運(yùn)算310,但存在至多單個(gè)連續(xù)相乘運(yùn)算320。在過(guò)程流300中說(shuō)明的密碼過(guò)程的結(jié)論處,一旦已經(jīng)使用所有適當(dāng)應(yīng)用的求平方運(yùn)算310和相乘運(yùn)算320,有效中間結(jié)果r就保持最終有效結(jié)果,其指派給結(jié)果sig,其表示經(jīng)加密或解密的通信。

現(xiàn)參看圖4,流程圖400說(shuō)明用于分布式密碼運(yùn)算的過(guò)程。流程圖400中所說(shuō)明的過(guò)程可在計(jì)算機(jī)系統(tǒng)200(圖2)上實(shí)施,且以獲得秘密指數(shù)d、通信c和模數(shù)n開(kāi)始,如框410中所示。

初始化有效中間結(jié)果r、不相關(guān)中間結(jié)果r′,以及秘密指數(shù)d的分量di,如框412中所說(shuō)明。將分量di初始化到秘密指數(shù)d的最高有效位,作為加密/解密過(guò)程的開(kāi)始點(diǎn)。將有效中間結(jié)果r的初始值設(shè)定成1,而將可與用于有效中間結(jié)果r任意值相同的任意值用作不相關(guān)中間結(jié)果r′的初始值。

框414說(shuō)明cpu1初始化到第一運(yùn)算op_a(其為求平方運(yùn)算),且指向有效中間結(jié)果r。另外,框414說(shuō)明cpu2初始化到第一運(yùn)算op_b(其為相乘運(yùn)算),且指向不相關(guān)中間結(jié)果r′。cpu1和cpu2可各自實(shí)施為多核心處理器210,或?qū)嵤閏pu210-a到210-d(圖2)中的一或多者。cpu1和cpu2可經(jīng)配置以同時(shí)執(zhí)行運(yùn)算,和/或可實(shí)施為cpu210-a到210-d中的一或多者來(lái)在非按時(shí)序重疊配置中執(zhí)行運(yùn)算,意味著cpu1和cpu2可各自輪流實(shí)施為cpu210-a到210-d中的一或多者。流程圖410中所說(shuō)明的過(guò)程可經(jīng)配置以例如使op_a為相乘運(yùn)算,且使op_b為求平方運(yùn)算,在此情況下,cpu1將初始化以指向不相關(guān)中間結(jié)果r′,且cpu2將初始化以指向有效中間結(jié)果r。

框414說(shuō)明密碼過(guò)程期間,用于cpu1和cpu2的參數(shù)的設(shè)定或復(fù)位。舉例來(lái)說(shuō),控制實(shí)體240(圖2)可最初或在密碼過(guò)程期間,為cpu1或cpu2中的一者指定op_a和有效中間結(jié)果r,且為cpu1或cpu2中的另一者指定op_b和不相關(guān)中間結(jié)果r′??刂茖?shí)體240可設(shè)定指針來(lái)控制cpu1和cpu2中的哪一者指向有效中間結(jié)果r,且哪一者指向不相關(guān)中間結(jié)果r′。以此方式,op_a作為求平方運(yùn)算,例如求平方運(yùn)算310(圖3),在密碼過(guò)程的重復(fù)的開(kāi)頭,使用有效中間結(jié)果r作為運(yùn)算數(shù),且op_b作為相乘運(yùn)算,例如運(yùn)算320(圖3)使用不相關(guān)中間結(jié)果r′作為運(yùn)算數(shù)。

在cpu1最初設(shè)定成執(zhí)行op_a且指向有效中間結(jié)果r,且cpu2最初設(shè)定成執(zhí)行op_b且指向不相關(guān)中間結(jié)果r′的情況下,致使cpu1對(duì)有效中間結(jié)果r執(zhí)行op_a,且致使cpu2執(zhí)行op_b,如框416中所說(shuō)明。在初始循環(huán)或重復(fù)中,op_a是求平方運(yùn)算,其在cpu1上執(zhí)行r2modn的計(jì)算,且op_b是相乘運(yùn)算,其在cpu2上執(zhí)行r′*cmodn。因此,cpu1使用有效中間結(jié)果r作為運(yùn)算數(shù),而cpu2使用不相關(guān)中間結(jié)果r′作為運(yùn)算數(shù)。

作為以流程圖400說(shuō)明的密碼過(guò)程的一部分,評(píng)估秘密指數(shù)d的分量di,例如正被檢查的當(dāng)前位,以確定其是否等于1,如決策框418中所說(shuō)明。如果秘密指數(shù)d的分量不等于1,那么密碼過(guò)程進(jìn)行到下一重復(fù),如由來(lái)自決策框418的通往決策框428的否分支說(shuō)明,其檢查循環(huán)退出。如果秘密指數(shù)d的當(dāng)前分量di等于1,那么密碼過(guò)程進(jìn)行到確定op_a如果指派給cpu1,如決策框420中所示。如果op_a(模數(shù)求平方)指派給cpu1,如由決策框420的是分支指示,那么cpu1設(shè)定成指向不相關(guān)中間結(jié)果r′,且cpu2設(shè)定成指向有效中間結(jié)果r,如框424中所說(shuō)明。如果op_a不指派給cpu1,如由決策框420的否分支所說(shuō)明,那么cpu1設(shè)定成指向有效中間結(jié)果r,且cpu2設(shè)定成指向不相關(guān)中間結(jié)果r′,如框422中所說(shuō)明。決策框420因此說(shuō)明有效中間結(jié)果r到執(zhí)行相乘運(yùn)算的cpu的切換。密碼過(guò)程可經(jīng)配置以在由決策框420表示的步驟中檢查op_a是否指派給cpu1,或op_b是否指派給cpu2,其中基于所述結(jié)果,相應(yīng)的cpu指向適當(dāng)?shù)挠行е虚g結(jié)果r或不相關(guān)中間結(jié)果r′。

框420、422和424說(shuō)明有效中間結(jié)果r與不相關(guān)中間結(jié)果r′之間的參考的切換,cpu基于此來(lái)執(zhí)行其運(yùn)算。切換過(guò)程可例如由控制實(shí)體240實(shí)施,所述控制實(shí)體提供指向cpu1或cpu2的指針來(lái)按需要參考有效中間結(jié)果r或不相關(guān)中間結(jié)果r′??刂茖?shí)體240可識(shí)別cpu1和cpu2中的哪一者正進(jìn)行op_b或相乘,且因此向用于所述運(yùn)算的適當(dāng)cpu提供指向有效中間結(jié)果r的指針??刂茖?shí)體240可識(shí)別cpu1和cpu2中的哪一者正進(jìn)行op_a或求平方,且因此向用于所述運(yùn)算的適當(dāng)cpu提供指向不相關(guān)中間結(jié)果r′的指針??刂茖?shí)體240可經(jīng)配置以將指向有效中間結(jié)果r的指針提供給cpu1和cpu2兩者,使得兩個(gè)cpu均將有效數(shù)據(jù)更新作為運(yùn)算數(shù)???26說(shuō)明cpu1和cpu2正進(jìn)行op_a或op_b,無(wú)論控制實(shí)體240將哪個(gè)運(yùn)算指派給相應(yīng)的cpu。通過(guò)此方法,適當(dāng)?shù)腸pu使用不相關(guān)中間結(jié)果r′作為運(yùn)算數(shù)來(lái)執(zhí)行op_a或(r′)2modn,且另一cpu使用有效中間結(jié)果r來(lái)執(zhí)行op_b或r*cmodn。根據(jù)這些運(yùn)算,根據(jù)分量di的值將適當(dāng)?shù)倪\(yùn)算應(yīng)用于適當(dāng)?shù)倪\(yùn)算數(shù),與哪一cpu進(jìn)行哪一運(yùn)算無(wú)關(guān)。op_a和/或op_b也可/或者兩者均使用有效中間結(jié)果r作為運(yùn)算數(shù),其在op_a的此情況下為不相關(guān)運(yùn)算數(shù),且產(chǎn)生不相關(guān)結(jié)果。

流程圖400中所說(shuō)明的密碼過(guò)程在處理秘密指數(shù)d的最后一個(gè)分量di時(shí)結(jié)束,如以決策框428具備是分支來(lái)說(shuō)明,所述是分支響應(yīng)于最后一個(gè)分量di是否已經(jīng)處理的測(cè)試而導(dǎo)致所述過(guò)程的結(jié)束。通常,對(duì)于rsa密碼過(guò)程,將處理的秘密指數(shù)d的最后一個(gè)分量di是最低有效位。如果秘密指數(shù)d的進(jìn)一步分量di保持將被處理,那么選擇秘密指數(shù)d的下一分量di來(lái)處理,如以決策框428的引向框430的否分支所說(shuō)明。框430說(shuō)明選擇秘密指數(shù)d的下一分量di來(lái)為密碼過(guò)程設(shè)置算法的下一重復(fù)。

作為流程圖400中所說(shuō)明的密碼過(guò)程的另一重復(fù)的設(shè)置的一部分,做出關(guān)于指派給cpu1和cpu2的運(yùn)算是否應(yīng)切換的確定。以決策框432來(lái)說(shuō)明此確定,其中否分支通往用于密碼過(guò)程的另一重復(fù)的框416,且是分支通往決策框434,以檢查哪一cpu正執(zhí)行哪一運(yùn)算。

是否切換正由cpu1和cpu2執(zhí)行的運(yùn)算的決策可由控制實(shí)體240執(zhí)行。所述決策可基于各種準(zhǔn)則,包含用于切換指派給cpu的運(yùn)算的預(yù)定或隨機(jī)時(shí)序,用于切換的預(yù)定或隨機(jī)序列或用于切換的事件驅(qū)動(dòng)的觸發(fā),僅舉幾種可能性。預(yù)定或隨機(jī)時(shí)序可用以分別以某些周期性時(shí)間間隔或以隨機(jī)長(zhǎng)度時(shí)間間隔提供切換應(yīng)發(fā)生的指示,與密碼過(guò)程的循環(huán)或重復(fù)相比,所述間隔可較短、相同或較長(zhǎng)。可使用預(yù)定或隨機(jī)序列來(lái)提供切換應(yīng)分別以某些重復(fù)或以隨機(jī)重復(fù)發(fā)生??稍谀骋皇录耐ㄖ?,即刻使用事件驅(qū)動(dòng)的觸發(fā)來(lái)提供應(yīng)發(fā)生切換的指示,例如通過(guò)cpu1或cpu2執(zhí)行指令、trap報(bào)文或中斷。在一些情況下,使用cpu1和/或cpu2而不是控制實(shí)體240來(lái)做出何時(shí)應(yīng)在cpu之間切換運(yùn)算的確定。

一旦做出應(yīng)切換運(yùn)算的確定,就檢查cpu1或op_a,以確定它們是否指派給彼此,如決策框434中所說(shuō)明。所述過(guò)程還可經(jīng)配置以檢查cpu2或op_b,以確定它們是否指派給彼此。如果op_a不指派給cpu1,如以決策框434的否分支所說(shuō)明,那么將op_a指派給cpu1,cpu1指向有效中間結(jié)果r,且將op_b指派給cpu2,其指向不相關(guān)中間結(jié)果r′,如在框414中所說(shuō)明。如果op_a當(dāng)前指派給cpu1,那么所述運(yùn)算在cpu之間切換,使得op_b指派給cpu1,其指向不相關(guān)中間結(jié)果r′,且op_a指派給cpu2,其指向有效中間結(jié)果r,如在框436中所說(shuō)明。在將運(yùn)算指派給cpu之后,密碼過(guò)程通過(guò)cpu1或cpu2中所指派的一者繼續(xù)來(lái)執(zhí)行op_a或op_b,如框416中所說(shuō)明。對(duì)于密碼過(guò)程的此部分,運(yùn)算向cpu的指派復(fù)位,如cpu向有效中間結(jié)果r或不相關(guān)中間結(jié)果r′的指針指派那樣。

不管運(yùn)算向cpu的指派如何,在密碼過(guò)程的每一重復(fù)的第一運(yùn)算中,有效中間結(jié)果r用作op_a或求平方運(yùn)算的運(yùn)算數(shù),且不相關(guān)中間結(jié)果r′用作op_b或相乘運(yùn)算的運(yùn)算數(shù)。此外,在密碼過(guò)程的二級(jí)條件性運(yùn)算(例如,如果di為1)中,有效中間結(jié)果r用作op_b或相乘運(yùn)算的運(yùn)算數(shù),且不相關(guān)中間結(jié)果r′用作op_a或求平方運(yùn)算的運(yùn)算數(shù)。類似于cpu切換為指向運(yùn)算數(shù),運(yùn)算在cpu之間的切換產(chǎn)生sca事件,其比求平方或相乘運(yùn)算的sca事件小若干數(shù)量級(jí)。因此,與檢測(cè)求平方或相乘運(yùn)算相比,使用sca來(lái)檢測(cè)切換運(yùn)算相對(duì)來(lái)說(shuō)非常困難。

盡管流程圖400說(shuō)明在密碼過(guò)程的每一重復(fù)期間是否使運(yùn)算在cpu之間切換一次的確定,但其它實(shí)施方案是可能的。舉例來(lái)說(shuō),可在每一重復(fù)中進(jìn)行此切換確定若干次,例如在決策框420中所說(shuō)明的確定之前,或在每次執(zhí)行op_a和/或op_b之前或之后。另外或替代地,可在一些重復(fù)期間做出切換確定,且在其它重復(fù)期間,不做出切換確定。舉例來(lái)說(shuō),可設(shè)定或復(fù)位旗標(biāo),來(lái)指示應(yīng)在哪一(哪些)重復(fù)中做出切換確定。因此,可用比其重復(fù)出現(xiàn)的頻率小、相同或大的頻率來(lái)執(zhí)行切換和/或切換確定。

現(xiàn)參看圖5,流程圖500說(shuō)明用于分布式密碼運(yùn)算的過(guò)程。流程圖500中所說(shuō)明的過(guò)程可在計(jì)算機(jī)系統(tǒng)200(圖2)上實(shí)施,且以獲得秘密指數(shù)d、通信c和模數(shù)n開(kāi)始,如框510中所示。

框512說(shuō)明密碼過(guò)程的變量初始化,具有有效中間結(jié)果r和不相關(guān)中間結(jié)果r′的初始化,以及分量di的值的初始化,其表示秘密指數(shù)d的第一分量值。在圖5中說(shuō)明的過(guò)程中,將秘密指數(shù)d的最高有效位用作加密/解密過(guò)程的開(kāi)始點(diǎn)。將有效中間結(jié)果r的初始值設(shè)定成1,而將可與用于有效中間結(jié)果r任意值相同的任意值用作不相關(guān)中間結(jié)果r′的初始值。

用指針來(lái)參考有效中間結(jié)果r作為r2modn運(yùn)算的運(yùn)算數(shù),且用指針來(lái)參考不相關(guān)中間結(jié)果r′作為r′*cmodn運(yùn)算的運(yùn)算數(shù),如框514中所說(shuō)明。用于有效中間結(jié)果r和不相關(guān)中間結(jié)果r′的指針可經(jīng)配置以指向相同存儲(chǔ)器位置,例如有效中間結(jié)果r的存儲(chǔ)器位置。密碼過(guò)程的在框514中所說(shuō)明的部分使用以參考有效中間結(jié)果r和不相關(guān)中間結(jié)果r′的指針復(fù)位。舉例來(lái)說(shuō),控制實(shí)體240設(shè)定指針,使得有效中間結(jié)果r指向?qū)?zhí)行求平方運(yùn)算的cpu,且使得不相關(guān)中間結(jié)果r′指向?qū)?zhí)行相乘運(yùn)算的cpu。以此方式,求平方運(yùn)算,例如求平方運(yùn)算310(圖3),在密碼過(guò)程的重復(fù)的開(kāi)頭,使用有效中間結(jié)果r作為運(yùn)算數(shù),且相乘運(yùn)算,例如相乘運(yùn)算320(圖3)使用不相關(guān)中間結(jié)果r′作為運(yùn)算數(shù)。

在有效中間結(jié)果r和不相關(guān)中間結(jié)果r′設(shè)定成適當(dāng)值的情況下,執(zhí)行求平方和相乘運(yùn)算,如框516中所說(shuō)明。模數(shù)求平方運(yùn)算r2modn在cpu1上執(zhí)行,而模數(shù)相乘運(yùn)算r′*cmodn在cpu2上執(zhí)行。cpu1和cpu2各自在流程圖500中所說(shuō)明的整個(gè)過(guò)程中執(zhí)行相同的相應(yīng)求平方和相乘運(yùn)算。如框516中示出,cpu1使用有效中間結(jié)果r作為運(yùn)算數(shù),而cpu2使用不相關(guān)中間結(jié)果r′作為運(yùn)算數(shù)。

如決策框518中所描繪,評(píng)估秘密指數(shù)d的分量di,例如正被檢查的當(dāng)前位,來(lái)確定其是否等于1。如果秘密指數(shù)d的分量di不等于1,那么密碼過(guò)程進(jìn)行到下一重復(fù),如由來(lái)自決策框518的通往決策框524的否分支說(shuō)明,其說(shuō)明循環(huán)退出的確定。如果秘密指數(shù)d的當(dāng)前分量等于1,那么密碼過(guò)程進(jìn)行到相乘步驟,如以來(lái)自決策框518的通往框520的是分支所說(shuō)明。

框520說(shuō)明參考在有效中間結(jié)果r與不相關(guān)中間結(jié)果r′之間的切換。舉例來(lái)說(shuō),控制實(shí)體240向cpu1提供指針指向參考不相關(guān)中間結(jié)果r′作為運(yùn)算數(shù),且向cpu2提供指針指向參考有效中間結(jié)果作為運(yùn)算數(shù)。用于有效中間結(jié)果r和不相關(guān)中間結(jié)果r′的指針可經(jīng)配置以指向相同存儲(chǔ)器位置,例如有效中間結(jié)果r的存儲(chǔ)器位置???22說(shuō)明用其相應(yīng)的運(yùn)算數(shù)進(jìn)行其相應(yīng)求平方和相乘運(yùn)算的cpu1和cpu2。在cpu1上執(zhí)行的求平方運(yùn)算的結(jié)果存儲(chǔ)在不相關(guān)中間結(jié)果r′中,且在cpu上執(zhí)行的相乘運(yùn)算的結(jié)果存儲(chǔ)在有效中間結(jié)果r中?;蛘撸赾pu1上執(zhí)行的求平方運(yùn)算的結(jié)果可丟棄。使用此方法,cpu1使用不相關(guān)中間結(jié)果r′作為運(yùn)算數(shù)來(lái)執(zhí)行求平方運(yùn)算(r′)2modn,且cpu2使用有效中間結(jié)果r來(lái)執(zhí)行相乘運(yùn)算r*cmodn。根據(jù)這些運(yùn)算,cpu1和cpu2分別在一致基礎(chǔ)上執(zhí)行求平方和相乘運(yùn)算,不管它們正作用于有效還是不相關(guān)數(shù)據(jù)。

當(dāng)處理了秘密指數(shù)d的最后一個(gè)分量時(shí),密碼過(guò)程結(jié)束,如以決策框524具備是分支來(lái)說(shuō)明,所述是分支響應(yīng)于是否已經(jīng)處理了最后一個(gè)分量di的測(cè)試而通往所述過(guò)程的結(jié)束。通常,對(duì)于rsa密碼過(guò)程,將處理的秘密指數(shù)d的最后一個(gè)分量是最低有效位。如果秘密指數(shù)d的進(jìn)一步分量di保持將被處理,那么選擇秘密指數(shù)d的下一分量di來(lái)處理,如以決策框524的引向框526的否分支所說(shuō)明。秘密指數(shù)d的下一分量di的選擇為密碼過(guò)程設(shè)定所述算法的下一重復(fù),如由引向框514的框526所說(shuō)明。框514說(shuō)明指針復(fù)位,使得有效中間結(jié)果r可再次供cpu1在求平方運(yùn)算中使用,且不相關(guān)中間結(jié)果r′可再次供cpu2在相乘運(yùn)算中使用。

根據(jù)其它實(shí)例,兩個(gè)或更多個(gè)cpu可相對(duì)于不同運(yùn)算(例如求平方和相乘)而同步。舉例來(lái)說(shuō),與在另一cpu上執(zhí)行的相乘運(yùn)算相比,實(shí)施求平方運(yùn)算的cpu可在較短或較長(zhǎng)時(shí)間范圍內(nèi)執(zhí)行那些運(yùn)算中的每一者。在cpu經(jīng)配置以實(shí)施分布式算法的情況下,可使cpu同步,以準(zhǔn)許運(yùn)算繼續(xù)同時(shí)或并行進(jìn)行。根據(jù)一些實(shí)施例,填補(bǔ)指令(例如nop(無(wú)運(yùn)算)指令)可通過(guò)完成比同時(shí)執(zhí)行不同的所指派運(yùn)算的對(duì)應(yīng)cpu快地執(zhí)行所指派的運(yùn)算的cpu執(zhí)行。以此方式,cpu可因兩者均被引起而同步,以花費(fèi)大約相同的時(shí)間量來(lái)執(zhí)行不同運(yùn)算。

現(xiàn)參看圖6,流程圖600說(shuō)明用于分布式密碼運(yùn)算的另一實(shí)例過(guò)程。流程圖600中所說(shuō)明的過(guò)程可在計(jì)算機(jī)系統(tǒng)200(圖2)上實(shí)施,且決策、運(yùn)算執(zhí)行指派和運(yùn)算數(shù)指派可由控制實(shí)體240,或由多核心處理器210,或由cpu210-a到210-d中的一或多者來(lái)實(shí)施。流程圖600中所說(shuō)明的過(guò)程實(shí)例以cpu1和cpu2中的每一者獲得秘密指數(shù)d、密碼c、模數(shù)n以及有效中間結(jié)果r和不相關(guān)中間結(jié)果r′的地址開(kāi)始,如框610和660中所說(shuō)明。密碼c是作為密碼操作(例如加密、簽名或解密)的標(biāo)的消息。模數(shù)n通常結(jié)合公鑰或私鑰,例如結(jié)合秘密指數(shù)d提供。秘密指數(shù)d是用于密碼過(guò)程中的私鑰,且保持保密以確保密碼過(guò)程的完整性。秘密指數(shù)d還提供參數(shù)l,其反映以秘密指數(shù)d的位數(shù)來(lái)計(jì)的長(zhǎng)度??梢灾羔樞问教峁┯行е虚g結(jié)果r和不相關(guān)中間結(jié)果r′的地址,且可將其設(shè)定成相同值,例如有效中間結(jié)果r的地址。不相關(guān)中間結(jié)果r′的地址還可提供作為任意值,或指代任意的存儲(chǔ)器位置。

框612和662說(shuō)明用于密碼過(guò)程的變量的初始化。將有效中間結(jié)果r和不相關(guān)中間結(jié)果r′兩者初始化到值c。將表示秘密指數(shù)d的位串表示中的索引的循環(huán)計(jì)數(shù)器ⅰ初始化到值l-1。在此實(shí)例中,將秘密指數(shù)d的最高有效位用作加密/解密過(guò)程的開(kāi)始點(diǎn)??山?gòu)替代算法,其將從秘密指數(shù)d的最低有效位開(kāi)始,在此情況下,循環(huán)計(jì)數(shù)器ⅰ將初始化到0,且在所述過(guò)程期間遞增。

框614和664說(shuō)明運(yùn)算向相應(yīng)cpu的指派,以及指針向相應(yīng)運(yùn)算數(shù)的提供。框614說(shuō)明cpu1正被指派運(yùn)算op_a,其在此實(shí)例中為模數(shù)求平方運(yùn)算。并且,cpu1具備指向有效中間結(jié)果r的指針或地址。框664說(shuō)明cpu2正被指派運(yùn)算op_b,其在此實(shí)例中為模數(shù)相乘運(yùn)算。并且,cpu2具備指向不相關(guān)中間結(jié)果r′的指針或地址。

框616和665說(shuō)明cpu1和cpu2執(zhí)行所指派的運(yùn)算。如下文更詳細(xì)地描述,在框616處,可指派cpu1來(lái)對(duì)分別對(duì)有效中間結(jié)果r或不相關(guān)中間結(jié)果r′執(zhí)行op_a或op_b。在框665處,可指派cpu2來(lái)分別對(duì)不相關(guān)中間結(jié)果r′或有效中間結(jié)果r執(zhí)行op_a或op_b。op_a所執(zhí)行的模數(shù)求平方運(yùn)算是r2modn,而op_b所執(zhí)行的模數(shù)相乘運(yùn)算是r′*cmodn。使cpu1和cpu2初始化以分別執(zhí)行op_a和op_b,但可經(jīng)配置以改變正執(zhí)行的運(yùn)算,如下文所述。使cpu1初始化以使用有效中間結(jié)果r作為運(yùn)算數(shù),且初始化cpu2以使用不相關(guān)中間結(jié)果r′作為運(yùn)算數(shù)。cpu1和cpu2兩者可經(jīng)配置以總是使用有效數(shù)據(jù)作為運(yùn)算數(shù),例如有效中間結(jié)果r所參考的值。在此實(shí)例中,對(duì)不相關(guān)的有效數(shù)據(jù)執(zhí)行的運(yùn)算的結(jié)果可丟棄,或存儲(chǔ)在不相關(guān)中間結(jié)果r′中。對(duì)相關(guān)、既定或所要的有效數(shù)據(jù)執(zhí)行的運(yùn)算的結(jié)果存儲(chǔ)在有效中間結(jié)果r中。cpu1和cpu2可各自表示一或多個(gè)cpu,包含多核cpu、多核處理器、物理上不同的處理器芯片、gpu(圖形處理單元)和專用處理器或處理器核心的組合,或多個(gè)cpu的任何其它配置。

因?yàn)橹概山ocpu1和cpu2的運(yùn)算如框616和665中所說(shuō)明來(lái)執(zhí)行,因此可任選地實(shí)施同步運(yùn)算來(lái)確保cpu1與cpu2之間的同步。舉例來(lái)說(shuō),如果cpu1所執(zhí)行的模數(shù)求平方運(yùn)算比cpu2所執(zhí)行的模數(shù)相乘運(yùn)算早結(jié)束,那么進(jìn)行所述模數(shù)求平方運(yùn)算的cpu1可經(jīng)配置以執(zhí)行額外的非運(yùn)算(nop),直到在cpu2上執(zhí)行的模數(shù)相乘運(yùn)算結(jié)束為止?;蛘?,可將cpu1放入輪詢循環(huán)中,其等待cpu2的完成相乘運(yùn)算的指示。對(duì)cpu1或cpu2中的任一者的運(yùn)算可比其它c(diǎn)pu早或晚結(jié)束,使得同步補(bǔ)償可應(yīng)用于cpu1或cpu2中的任一者或兩者。另外,可實(shí)施其它形式的同步,例如通過(guò)加速或減緩cpu執(zhí)行,或通過(guò)在概率性基礎(chǔ)上確定運(yùn)算執(zhí)行時(shí)間,或準(zhǔn)許cpu1和cpu2的同步維持密碼過(guò)程的分量在給定循環(huán)或重復(fù)中的同時(shí)執(zhí)行的任何其它形式。可將所述同步應(yīng)用于執(zhí)行求平方運(yùn)算或相乘運(yùn)算的多個(gè)cpu,例如通過(guò)使用或添加較多cpu來(lái)執(zhí)行預(yù)期或?qū)嶋H上的確比其它運(yùn)算花費(fèi)更長(zhǎng)的時(shí)間來(lái)執(zhí)行的運(yùn)算。

所述過(guò)程通過(guò)測(cè)試秘密指數(shù)d的分量di(例如正被檢查的當(dāng)前位)來(lái)繼續(xù),以確定分量di等于1還是0,如決策框620和670中所說(shuō)明。如果秘密指數(shù)d的分量di等于0,那么密碼過(guò)程進(jìn)行到下一重復(fù),如由來(lái)自決策框620和670的通往相應(yīng)決策框618和668的0分支所說(shuō)明。如果秘密指數(shù)d的分量di等于1,那么密碼過(guò)程進(jìn)行到相乘步驟,如由來(lái)自決策框620和670的通往相應(yīng)決策框622和672的1分支所說(shuō)明。

決策框622和672說(shuō)明是否指派來(lái)cpu1執(zhí)行op_a且是否指派cpu2來(lái)執(zhí)行op_b的相應(yīng)確定。如果指派cpu1來(lái)執(zhí)行op_a,如由來(lái)自決策框622的是分支指示,那么cpu1具備對(duì)作為到op_a的運(yùn)算數(shù)的不相關(guān)中間結(jié)果r′的存取權(quán),如框624中所說(shuō)明。否則,將cpu1理解為被指派來(lái)執(zhí)行op_b,如由來(lái)自決策框622的否分支指示,且具備對(duì)作為到op_b的運(yùn)算數(shù)的有效中間結(jié)果r的存取權(quán),如在框626中所說(shuō)明。如果指派cpu2來(lái)執(zhí)行op_b,如由來(lái)自決策框672的是分支指示,那么cpu2具備對(duì)作為到op_b的運(yùn)算數(shù)的有效中間結(jié)果r的存取權(quán),如框674中所說(shuō)明。否則,將cpu2理解為被指派來(lái)執(zhí)行op_a,如由來(lái)自決策框672的否分支指示,且具備對(duì)作為到op_a的運(yùn)算數(shù)的不相關(guān)中間結(jié)果r′的存取權(quán),如框676中所說(shuō)明。

框628和678說(shuō)明cpu1和cpu2執(zhí)行所指派的運(yùn)算。如下文更詳細(xì)地描述,在框628處,可指派cpu1來(lái)對(duì)分別對(duì)有效中間結(jié)果r或不相關(guān)中間結(jié)果r′執(zhí)行op_a或op_b。在框678處,可指派cpu2來(lái)分別對(duì)不相關(guān)中間結(jié)果r′或有效中間結(jié)果r執(zhí)行op_a或op_b。op_a所執(zhí)行的模數(shù)求平方運(yùn)算是r2modn,而op_b所執(zhí)行的模數(shù)相乘運(yùn)算是r′*cmodn。對(duì)于決策框622和672中所說(shuō)明的測(cè)試,可確定被指派給cpu1和cpu2來(lái)執(zhí)行的運(yùn)算,且可為適當(dāng)?shù)腸pu指派適當(dāng)?shù)倪\(yùn)算數(shù),以確保當(dāng)框628和678中說(shuō)明的運(yùn)算的執(zhí)行發(fā)生時(shí),對(duì)有效數(shù)據(jù)發(fā)生模數(shù)相乘。

隨著指派給cpu1和cpu2的運(yùn)算如框628和678中所說(shuō)明而執(zhí)行,同步運(yùn)算,例如上文所論述的那些運(yùn)算中的任一者,可再次任選地實(shí)施,以確保cpu1與cpu2之間的同步。cpu1與cpu2之間的同步可意味著(且可經(jīng)實(shí)施以使得)分別指派的運(yùn)算同時(shí)或在不同時(shí)間開(kāi)始執(zhí)行。同步可意味著(且可經(jīng)配置以使得)運(yùn)算在密碼過(guò)程的循環(huán)或重復(fù)內(nèi)不重疊,至少部分地重疊,或完全重疊。

一旦執(zhí)行框628和678中所說(shuō)明的運(yùn)算,就做出循環(huán)退出確定,如以決策框618和668說(shuō)明。決策框618和678說(shuō)明循環(huán)計(jì)數(shù)器ⅰ正遞減并測(cè)試,以確定是否應(yīng)退出所述循環(huán)。如果由于正遞減,ⅰ小于零,那么流程圖600中所說(shuō)明的過(guò)程結(jié)束。通常,對(duì)于rsa密碼過(guò)程,將處理的秘密指數(shù)d的最后一個(gè)分量是最低有效位。否則,如果ⅰ的遞減的值大于或等于0,那么密碼過(guò)程如所說(shuō)明繼續(xù),其中來(lái)自決策框618和668的如此標(biāo)記的分支通往相應(yīng)的決策框630和680。

如決策框630、680中所說(shuō)明,做出是否切換指派給cpu1和cpu2來(lái)執(zhí)行的運(yùn)算的相應(yīng)確定。可在上文相對(duì)于決策框432(圖4)所論述的相同基礎(chǔ)中的一或多者上做出是否在cpu1與cpu2之間切換運(yùn)算的確定。如果做出不切換運(yùn)算的確定,如由決策框630、680的否分支指示,那么所述過(guò)程以cpu1和cpu2執(zhí)行所指派的運(yùn)算繼續(xù),如分別在框616、665中所說(shuō)明。如果做出切換運(yùn)算的確定,如由決策框630、680的是分支指示,那么做出相應(yīng)確定來(lái)確定是否指派cpu1來(lái)執(zhí)行op_a,以及是否指派cpu2來(lái)執(zhí)行op_b,如決策框632、682中所說(shuō)明。

如果確定指派cpu1來(lái)執(zhí)行,如以來(lái)自決策框632的是分支所說(shuō)明,那么指派cpu1來(lái)執(zhí)行op_b,且cpu1具備對(duì)不相關(guān)中間結(jié)果r′的存取權(quán),如框634中所說(shuō)明。類似地,如果確定指派cpu2來(lái)執(zhí)行op_b,如以來(lái)自決策框682的是分支所說(shuō)明,那么指派cpu2來(lái)執(zhí)行op_a,且cpu2具備對(duì)有效中間結(jié)果r的存取權(quán),如框684中所說(shuō)明。一旦做出指派給cpu1和cpu2來(lái)執(zhí)行的運(yùn)算的改變,cpu1和cpu2就執(zhí)行其所指派的運(yùn)算,如從框634、684到達(dá)的框616、665中所說(shuō)明。

如果確定指派cpu1來(lái)執(zhí)行op_b,如以來(lái)自決策框632的否分支所說(shuō)明,那么指派cpu1來(lái)執(zhí)行op_a,且cpu1具備對(duì)有效中間結(jié)果r的存取權(quán),如以來(lái)自決策框632的針對(duì)框614的否分支所說(shuō)明。類似地,如果確定指派cpu2來(lái)執(zhí)行op_a,如以來(lái)自決策框682的否分支所說(shuō)明,那么指派cpu2來(lái)執(zhí)行op_b,且cpu2具備對(duì)不相關(guān)中間結(jié)果r′的存取權(quán),如以來(lái)自決策框682的針對(duì)框664的否分支所說(shuō)明。如上文相對(duì)于流程圖400(圖4)中所說(shuō)明的過(guò)程所論述,改變運(yùn)算的指派以供cpu1或cpu2執(zhí)行可在流程圖600中所說(shuō)明的密碼過(guò)程的每一循環(huán)或重復(fù)中實(shí)施零次、一次或若干次。

現(xiàn)參看圖7,流程圖700說(shuō)明用于分布式密碼運(yùn)算的另一實(shí)例過(guò)程。流程圖700中所說(shuō)明的過(guò)程可在計(jì)算機(jī)系統(tǒng)200(圖2)上實(shí)施,且決策、運(yùn)算執(zhí)行指派和運(yùn)算數(shù)指派可由控制實(shí)體240,或由多核心處理器210,或由cpu210-a到210-d中的一或多者來(lái)實(shí)施。cpu1和cpu2中的每一者獲得秘密指數(shù)d、密碼c、模數(shù)n以及有效中間結(jié)果r和不相關(guān)中間結(jié)果r′的地址,如框710和760中所說(shuō)明。密碼c是作為密碼操作(例如加密、簽名或解密)的標(biāo)的消息。模數(shù)n通常結(jié)合公鑰或私鑰,例如結(jié)合秘密指數(shù)d提供。秘密指數(shù)d是用于密碼過(guò)程中的私鑰,且保持保密以確保密碼過(guò)程的完整性。秘密指數(shù)d還提供參數(shù)l,其反映以秘密指數(shù)d的位數(shù)來(lái)計(jì)的長(zhǎng)度??梢灾羔樞问教峁┯行е虚g結(jié)果r和不相關(guān)中間結(jié)果r′的地址,且可將其設(shè)定成相同值,例如有效中間結(jié)果r的地址。不相關(guān)中間結(jié)果r′的地址還可提供作為任意值,或指代任意的存儲(chǔ)器位置。

框712和762說(shuō)明用于密碼過(guò)程的變量的初始化。將有效中間結(jié)果r和不相關(guān)中間結(jié)果r′兩者初始化到值c。還將表示秘密指數(shù)d的位串表示中的索引的循環(huán)計(jì)數(shù)器ⅰ初始化到值l-1。在此實(shí)例中,將秘密指數(shù)d的最高有效位用作加密/解密過(guò)程的開(kāi)始點(diǎn)??山?gòu)替代算法,其將從秘密指數(shù)d的最低有效位開(kāi)始,在此情況下,循環(huán)計(jì)數(shù)器ⅰ將初始化到0,且在每一過(guò)程重復(fù)期間遞增。

框714和764說(shuō)明密碼過(guò)程的一部分,其分別參考有效中間結(jié)果r以及不相關(guān)中間結(jié)果r′。框714中所說(shuō)明的密碼過(guò)程的所述部分致使被命名為指針1的指針變量設(shè)定成有效中間結(jié)果r的地址???64說(shuō)明將被命名為指針2的指針變量設(shè)定為不相關(guān)中間結(jié)果r′的地址。由于框714和764在流程圖700中所說(shuō)明的重復(fù)環(huán)內(nèi)部,因此對(duì)于每一重復(fù),使指針(指針1和指針2)復(fù)位到有效中間結(jié)果r和不相關(guān)中間結(jié)果r′的相應(yīng)地址。以此方式,在密碼過(guò)程的重復(fù)的開(kāi)頭,求平方運(yùn)算,例如求平方運(yùn)算310(圖3),使用有效中間結(jié)果r作為運(yùn)算數(shù)。在密碼過(guò)程的重復(fù)的開(kāi)頭,相乘運(yùn)算,例如相乘運(yùn)算320(圖3),使用不相關(guān)中間結(jié)果r′作為運(yùn)算數(shù)。

在有效中間結(jié)果r和不相關(guān)中間結(jié)果r′分別由指針1和指針2參考的情況下,對(duì)cpu1和cpu2中的相應(yīng)一者執(zhí)行求平方和相乘運(yùn)算,如框716和766中所說(shuō)明。在框716中執(zhí)行的求平方運(yùn)算是r2modn,且對(duì)cpu1執(zhí)行,而在框766中執(zhí)行的相乘運(yùn)算是r′*cmodn,且在cpu2上執(zhí)行。cpu1和cpu2各自在流程圖700中所說(shuō)明的整個(gè)過(guò)程中執(zhí)行相同的相應(yīng)求平方和相乘運(yùn)算。在框716中,cpu1使用有效中間結(jié)果r作為運(yùn)算數(shù),而在框766中,cpu2使用不相關(guān)中間結(jié)果r′作為運(yùn)算數(shù)。cpu1和cpu2可各自表示一或多個(gè)cpu,包含多核cpu、多核處理器、物理上不同的處理器芯片、gpu(圖形處理單元)和專用處理器或處理器核心的組合,或多個(gè)cpu的任何其它配置。

當(dāng)如框716和766中所說(shuō)明執(zhí)行求平方和相乘運(yùn)算時(shí),任選地實(shí)施同步運(yùn)算來(lái)確保cpu1與cpu2之間的同步??上鄬?duì)于以流程圖600(圖6)說(shuō)明并描述的運(yùn)算,如上文所論述來(lái)定義同步。

評(píng)估秘密指數(shù)d的分量di,例如正被檢查的當(dāng)前位,以確定分量di是否等于1或0,如決策框720和770中所說(shuō)明。如果秘密指數(shù)d的分量等于0,那么密碼過(guò)程進(jìn)行到下一重復(fù),如由來(lái)自決策框720和770的通往相應(yīng)決策框718和768的0分支所說(shuō)明。如果秘密指數(shù)d的當(dāng)前分量等于1,那么密碼過(guò)程進(jìn)行到相乘步驟,如由來(lái)自決策框720和770的通往相應(yīng)決策框722和772的1分支所說(shuō)明。

框722和772說(shuō)明參考在有效中間結(jié)果r與不相關(guān)中間結(jié)果r′之間的切換。在框722中,將cpu1所使用的指針1設(shè)定成參考不相關(guān)中間結(jié)果r′,作為求平方步驟的運(yùn)算數(shù)。在框772中,cpu2所使用的指針2設(shè)定成參考有效中間結(jié)果r,作為相乘步驟的運(yùn)算數(shù)。cpu1使用指針1所參考的不相關(guān)中間結(jié)果r′來(lái)進(jìn)行求平方步驟,如框724中所說(shuō)明。cpu2使用指針2所參考的有效中間結(jié)果r來(lái)進(jìn)行相乘步驟,如框774中所說(shuō)明。因此,當(dāng)di為1時(shí),cpu1使用不相關(guān)中間結(jié)果r′作為運(yùn)算數(shù)來(lái)執(zhí)行模數(shù)求平方運(yùn)算(r′)2modn,且cpu2使用有效中間結(jié)果r來(lái)執(zhí)行模數(shù)相乘運(yùn)算r*cmodn。根據(jù)這些運(yùn)算,cpu1和cpu2分別在一致基礎(chǔ)上執(zhí)行求平方和相乘運(yùn)算,不管它們正作用于有效還是不相關(guān)數(shù)據(jù)。

當(dāng)如框724和774中所說(shuō)明執(zhí)行相應(yīng)的求平方和相乘運(yùn)算時(shí),再次實(shí)施同步運(yùn)算來(lái)確保cpu1與cpu2之間的同步。舉例來(lái)說(shuō),如果在框774中實(shí)施的相乘運(yùn)算比在框724中實(shí)施的求平方運(yùn)算早結(jié)束,那么進(jìn)行所述相乘運(yùn)算的cpu2可經(jīng)配置以執(zhí)行額外的非運(yùn)算(nop),直到在cpu1上執(zhí)行的求平方運(yùn)算結(jié)束為止?;蛘?,可將cpu2放入輪詢循環(huán)中,其等待cpu1的完成求平方運(yùn)算的指示。對(duì)cpu1或cpu2中的任一者的運(yùn)算可比其它c(diǎn)pu早或晚結(jié)束,使得同步補(bǔ)償可應(yīng)用于cpu1或cpu2中的任一者或兩者。另外,可實(shí)施其它形式的同步,如上文更詳細(xì)地論述。

一旦執(zhí)行在框724和774中說(shuō)明的運(yùn)算,就在決策框718和768處做出循環(huán)退出確定。決策框718和768說(shuō)明循環(huán)計(jì)數(shù)器ⅰ正遞減并測(cè)試,以確定是否應(yīng)退出所述循環(huán)。如果由于正遞減,ⅰ小于零(<0),那么流程圖700中說(shuō)明的密碼過(guò)程結(jié)束。通常,對(duì)于rsa密碼過(guò)程,將處理的秘密指數(shù)d的最后一個(gè)分量是最低有效位。如果ⅰ的遞減值大于或等于零(>=0),那么密碼過(guò)程繼續(xù)另一重復(fù),如由來(lái)自決策框718和768的通往相應(yīng)框714和764的如此標(biāo)記的分支指示。

可修改流程圖400、500、600和/或700中所說(shuō)明的過(guò)程,例如通過(guò)相加、刪除、組合和/或改變步驟或過(guò)程。舉例來(lái)說(shuō),無(wú)需使用所描述的指針來(lái)參考有效中間結(jié)果r和不相關(guān)中間結(jié)果r′。舉例來(lái)說(shuō),可使用其它參考技術(shù),例如將運(yùn)算數(shù)存儲(chǔ)在適當(dāng)?shù)腸pu中。另外,無(wú)需維持對(duì)不相關(guān)中間結(jié)果r′的參考,因?yàn)槿我鈹?shù)據(jù)可用作替代運(yùn)算數(shù),所述任意數(shù)據(jù)可來(lái)源于任意資源。此外,不相關(guān)中間結(jié)果r′的專門定制的值可用于各種目的,例如有助于混淆求平方或相乘運(yùn)算。其它修改是可能的。

流程圖400、500、600和700是針對(duì)經(jīng)實(shí)施來(lái)實(shí)現(xiàn)使用rsa算法的密碼過(guò)程的運(yùn)算。舉例來(lái)說(shuō),流程圖400、500、600和700說(shuō)明以某一序列應(yīng)用來(lái)根據(jù)rsa算法對(duì)通信/密碼c進(jìn)行加密/解密的求平方和相乘運(yùn)算。然而,本文所論述的技術(shù)適用于其它密碼過(guò)程,包含ecc(橢圓曲線密碼術(shù))算法,其使用類似于rsa過(guò)程的公鑰密碼術(shù)。ecc過(guò)程通常執(zhí)行若干加倍和相加運(yùn)算來(lái)進(jìn)行加密或解密,其對(duì)應(yīng)于在rsa算法中所使用的求平方和相乘運(yùn)算。對(duì)rsa過(guò)程的sca攻擊通常力圖確定何時(shí)進(jìn)行加倍或相加運(yùn)算中的任一者,且接著使那些運(yùn)算與形成加密密鑰的位相關(guān)。如同rsa算法,ecc算法使用本發(fā)明的架構(gòu)和技術(shù)所提供的分布式方法,其中與形成加密密鑰的位有關(guān)的運(yùn)算劃分在cpu之間。一或多個(gè)cpu因此負(fù)責(zé)加倍運(yùn)算,而一或多個(gè)cpu負(fù)責(zé)相加運(yùn)算。加倍運(yùn)算和相加運(yùn)算各自由單獨(dú)的cpu在ecc算法的每一重復(fù)中執(zhí)行,其中對(duì)不相關(guān)數(shù)據(jù)執(zhí)行加倍運(yùn)算或相加運(yùn)算中的任一者。如同上述rsa算法,對(duì)旁信道信號(hào)的分析揭露一系列加倍運(yùn)算和相加運(yùn)算,且因此掩蓋了運(yùn)算相對(duì)于加密密鑰的任何差異。類似于上文所述的rsa算法,ecc算法的分布式cpu實(shí)施方案包含在相應(yīng)加倍或相加運(yùn)算之后的同步點(diǎn)。如同rsa算法,實(shí)施ecc算法的分布式cpu的同步有助于在sca攻擊中混淆加密密鑰的內(nèi)容。舉例來(lái)說(shuō),當(dāng)分布式cpu同步時(shí),可使基于時(shí)序的sca攻擊不大可能成功。

盡管流程圖400、500、600和/或700描述使用cpu1和cpu2的密碼過(guò)程的運(yùn)算,但其它變化是可能的和預(yù)期的。舉例來(lái)說(shuō),cpu1和/或cpu2可由若干cpu組成,例如可用對(duì)稱多核處理器、芯片多處理器、異構(gòu)多核(例如cpu加圖形處理單元(gpu),或一般來(lái)說(shuō)cpu加加速器)以及cpu群集來(lái)實(shí)施。一般來(lái)說(shuō),cpu是控制和存儲(chǔ)組件的個(gè)別集合,其可包含控制器、多用途存儲(chǔ)寄存器、輸入/輸出部分以及算術(shù)邏輯單元。因此,可使用分布式架構(gòu)或應(yīng)用程序,其中可指令多個(gè)cpu來(lái)在rsa算法的情況下,計(jì)算求平方或相乘運(yùn)算中的一些或全部,或在ecc算法的情況下,計(jì)算加倍或相加運(yùn)算中的一些或全部。

參看圖8,計(jì)算機(jī)系統(tǒng)200(圖2)的實(shí)例實(shí)施方案包含系統(tǒng)配置800,其包含cpu模塊810、cpu模塊820、控制器模塊830和存儲(chǔ)器模塊840。cpu模塊810和cpu模塊820可各自實(shí)施為多核處理器,例如處理器210,或可各自實(shí)施為一或多個(gè)個(gè)別cpu,例如cpu210-a到210-d中的一或多者??刂破髂K830可實(shí)施為控制實(shí)體240,且可實(shí)施為多核處理器210上或cpu210-a到210-d中的一或多者上的過(guò)程或算法。存儲(chǔ)器模塊840可實(shí)施為存儲(chǔ)器260。

cpu模塊810能夠進(jìn)行若干運(yùn)算,包含運(yùn)算812(op_a)和運(yùn)算814(op_b)。cpu模塊820還能夠進(jìn)行若干運(yùn)算,包含運(yùn)算822(op_a)和運(yùn)算824(op_b)。運(yùn)算812可為與運(yùn)算822相同的類型,且運(yùn)算814可為與運(yùn)算824相同的類型。cpu模塊810和cpu模塊820通信連接到控制器模塊830,其能夠選擇不同的運(yùn)算來(lái)在cpu模塊810和模塊cpu820中執(zhí)行??刂破髂K830可因此致使運(yùn)算812或運(yùn)算814被選擇來(lái)在cpu模塊810中執(zhí)行。同樣地,控制器模塊830可致使運(yùn)算822或運(yùn)算824被選擇來(lái)在cpu模塊820中執(zhí)行。

存儲(chǔ)器模塊840包含位置842,其用以存儲(chǔ)例如有效中間數(shù)據(jù)r。存儲(chǔ)器模塊840還包含位置844,其用以存儲(chǔ)例如不相關(guān)的中間數(shù)據(jù)r′。存儲(chǔ)器模塊840通信連接到cpu模塊810和cpu模塊820,其準(zhǔn)許cpu模塊810、820中的任一者或兩者檢索數(shù)據(jù)并將其存儲(chǔ)在位置842、844??刂破髂K830還可通信連接到存儲(chǔ)器模塊840(以虛線示出),且可例如使用指針來(lái)參考位置842、844。

控制器模塊830包含指針832(ptr1)和指針834(ptr2),其用以參考存儲(chǔ)器模塊840中的位置842、844。指針832、834可實(shí)施為多核處理器210中或存儲(chǔ)器260(圖2)中的存儲(chǔ)器位置。控制器模塊830將輸入提供到cpu模塊810,以選擇運(yùn)算812或運(yùn)算814來(lái)執(zhí)行??刂破髂K830也將輸入提供到cpu模塊822,以選擇運(yùn)算822或運(yùn)算824來(lái)執(zhí)行。cpu模塊810上的相應(yīng)運(yùn)算812、814以及cpu模塊820上的相應(yīng)運(yùn)算822、824的選擇可在密碼過(guò)程開(kāi)始時(shí)執(zhí)行一次,或可在密碼過(guò)程期間執(zhí)行多次。舉例來(lái)說(shuō),cpu模塊820上的選定運(yùn)算822、824可在密碼過(guò)程的執(zhí)行期間改變??刂破髂K830還將指針832或指針834提供到cpu模塊810或cpu模塊820,以準(zhǔn)許cpu模塊810、820參考并存取存儲(chǔ)器模塊840中的位置842、844??刂破髂K830可基于cpu模塊810正執(zhí)行哪一運(yùn)算812、814,以及cpu模塊820正執(zhí)行哪一運(yùn)算822、824,來(lái)確定指針832、834中的哪些將提供到哪一cpu模塊810、820。控制器模塊830可因此致使分布式rsa或ecc算法在系統(tǒng)配置800上執(zhí)行,其中每一cpu在算法的執(zhí)行期間進(jìn)行單個(gè)類型的運(yùn)算,且用于所述運(yùn)算的運(yùn)算數(shù)在有效數(shù)據(jù)與不相關(guān)數(shù)據(jù)之間切換。此算法實(shí)例在圖5和7中說(shuō)明。另外,控制器模塊830可致使cpu切換算法執(zhí)行期間正執(zhí)行的運(yùn)算的類型,且可切換用于所述運(yùn)算中的運(yùn)算數(shù),以用有效數(shù)據(jù)來(lái)適當(dāng)?shù)貓?zhí)行所述算法,來(lái)實(shí)現(xiàn)有效結(jié)果。此算法實(shí)例在圖4和6中說(shuō)明。

參看圖9,進(jìn)一步參看圖1到8,說(shuō)明用于執(zhí)行分布式密碼過(guò)程的過(guò)程900。然而,過(guò)程900僅為實(shí)例并且無(wú)限制性??衫缤ㄟ^(guò)添加、移除、重新布置、組合、同時(shí)執(zhí)行多個(gè)階段和/或?qū)蝹€(gè)階段分裂為多個(gè)階段來(lái)更改過(guò)程900。

在階段910,過(guò)程900包含基于加密密鑰d的至少一部分來(lái)確定第一運(yùn)算812、822或第二運(yùn)算814、824中的選定一者,以使用第一運(yùn)算數(shù),例如有效中間結(jié)果r,來(lái)執(zhí)行第一運(yùn)算812、822或第二運(yùn)算814、824中的相應(yīng)一者,所述第二運(yùn)算814、824不同于第一運(yùn)算812、822。

在階段912,過(guò)程900包含使用第一運(yùn)算數(shù),例如有效中間結(jié)果r,來(lái)執(zhí)行第一運(yùn)算812、822或第二運(yùn)算814、824中的選定一者。在階段914,過(guò)程900包含使用第二運(yùn)算數(shù),例如不相關(guān)中間結(jié)果r′,來(lái)執(zhí)行第一運(yùn)算812、822或第二運(yùn)算814、824中的另一者。

與求平方和相乘運(yùn)算(群集中的數(shù)千個(gè)指令)相比,控制實(shí)體240所產(chǎn)生的旁信道信號(hào)是微弱的(單個(gè)或原子指令等級(jí))。相應(yīng)旁信道信號(hào)中的差異可為一對(duì)數(shù)量級(jí),因此有助于將私鑰從密碼運(yùn)算解離。本文所論述的技術(shù)可應(yīng)用與加密優(yōu)化,類似于多進(jìn)制、滑動(dòng)窗、crt和蒙哥馬利(montgomery)倍增,其具有相同的預(yù)期性能和改進(jìn)的安全性。電力消耗可大約為已知的單個(gè)cpu實(shí)施方案的電力消耗的雙倍,是許多運(yùn)算總體的兩倍(約一半的運(yùn)算是在不相關(guān)或假數(shù)據(jù)上)。然而,所揭示的架構(gòu)和技術(shù)的性能度量可有利地與例如在單個(gè)cpu上實(shí)施的已知密碼過(guò)程的性能度量進(jìn)行比較,例如大約相同。因此,可實(shí)現(xiàn)關(guān)于旁信道分析的改進(jìn)的安全性,而不使性能降級(jí)。

取決于應(yīng)用,可通過(guò)各種裝置來(lái)實(shí)施本文中所描述的方法。舉例來(lái)說(shuō),這些方法可在硬件、固件、軟件或其任何組合中實(shí)施。對(duì)于硬件實(shí)施方案,處理單元可實(shí)施于一或多個(gè)專用集成電路(asic)、數(shù)字信號(hào)處理器(dsp)、數(shù)字信號(hào)處理裝置(dspd)、可編程邏輯裝置(pld)、現(xiàn)場(chǎng)可編程門陣列(fpga)、處理器、控制器、微控制器、微處理器、電子裝置、經(jīng)設(shè)計(jì)以執(zhí)行本文中所描述功能的其它電子單元,或其組合內(nèi)。

對(duì)于固件和/或軟件實(shí)施方案,可用執(zhí)行本文中所描述的功能的模塊(例如,程序、函數(shù)等等)來(lái)實(shí)施所述方法。在實(shí)施本文所描述的方法時(shí),可使用有形地體現(xiàn)指令的任何機(jī)器可讀媒體。舉例來(lái)說(shuō),軟件代碼可存儲(chǔ)在存儲(chǔ)器中,并且由處理器單元執(zhí)行。存儲(chǔ)器可實(shí)施在處理器單元內(nèi)或處理器單元外部。如本文中所使用術(shù)語(yǔ)“存儲(chǔ)器”是指任何類型的長(zhǎng)期、短期、易失性、非易失性或其它存儲(chǔ)器,且并不限于任何特定類型的存儲(chǔ)器或特定數(shù)目的存儲(chǔ)器或特定類型的媒體。有形媒體包含機(jī)器可讀媒體的一或多個(gè)物理物品,例如隨機(jī)存取存儲(chǔ)器、磁性存儲(chǔ)裝置、光學(xué)存儲(chǔ)媒體等等。

如果以固件和/或軟件實(shí)施,那么可將所述功能作為一或多個(gè)指令或代碼存儲(chǔ)在計(jì)算機(jī)可讀媒體上。實(shí)例包含用數(shù)據(jù)結(jié)構(gòu)編碼的計(jì)算機(jī)可讀媒體和用計(jì)算機(jī)程序編碼的計(jì)算機(jī)可讀媒體。計(jì)算機(jī)可讀媒體包含物理計(jì)算機(jī)存儲(chǔ)媒體。存儲(chǔ)媒體可為可由計(jì)算機(jī)存取的任何可用的媒體。借助于實(shí)例而非限制,此種計(jì)算機(jī)可讀媒體可包括ram、rom、eeprom、cd-rom或其它光盤存儲(chǔ)器,磁盤存儲(chǔ)器或其它磁性存儲(chǔ)裝置,或任何其它可用于存儲(chǔ)呈指令或數(shù)據(jù)結(jié)構(gòu)形式的所要程序代碼且可由計(jì)算機(jī)接入的媒體;如本文中所使用,磁盤和光盤包含壓縮光盤(cd)、激光光盤、光學(xué)光盤、數(shù)字多功能光盤(dvd),軟性磁盤和藍(lán)光光盤,其中磁盤通常以磁性方式再現(xiàn)數(shù)據(jù),而光盤用激光以光學(xué)方式再現(xiàn)數(shù)據(jù)。以上各項(xiàng)的組合也包含在計(jì)算機(jī)可讀媒體的范圍內(nèi)。此些媒體還提供可為機(jī)器可讀的非暫時(shí)性媒體的實(shí)例,且其中計(jì)算機(jī)為可從此些非暫時(shí)性媒體讀取的機(jī)器的實(shí)例。

上文所論述的方法、系統(tǒng)和裝置是實(shí)例。在適當(dāng)時(shí),各種配置可省略、取代或添加各種程序或組件。舉例來(lái)說(shuō),在替代性配置中,可以不同于所描述的順來(lái)執(zhí)行方法,和/或可添加、省略和/或組合各種階段。并且,可以各種其它配置來(lái)組合想對(duì)于某些配置所描述的特征。可以類似方式組合配置的不同方面和元件。并且,技術(shù)發(fā)展,且因此元件中的許多是實(shí)例,且并不限制本發(fā)明或所附權(quán)利要求的范圍。

當(dāng)前第1頁(yè)1 2 
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
慈溪市| 泸定县| 绥江县| 田林县| 全南县| 岳阳市| 焦作市| 望城县| 无极县| 易门县| 宜良县| 南华县| 个旧市| 汉中市| 册亨县| 马关县| 涟水县| 确山县| 安义县| 井冈山市| 德江县| 财经| 固镇县| 湘乡市| 德昌县| 平顶山市| 澜沧| 苏州市| 长武县| 古蔺县| 房产| 墨江| 同心县| 沁水县| 苏尼特右旗| 台北市| 北川| 汨罗市| 阿瓦提县| 青龙| 阿巴嘎旗|