本發(fā)明涉及電子計(jì)算設(shè)備、環(huán)編碼設(shè)備、環(huán)解碼設(shè)備、表計(jì)算設(shè)備、電子計(jì)算方法、計(jì)算機(jī)程序以及計(jì)算機(jī)可讀介質(zhì)。
背景技術(shù):
在白盒密碼術(shù)和更一般地軟件混淆中,常常對(duì)已編碼值而不是明文值執(zhí)行計(jì)算。如果對(duì)已編碼值而不是對(duì)明文值本身執(zhí)行計(jì)算,則已混淆軟件的逆向工程是更難的。
在編碼之后,不再能使用計(jì)算機(jī)的內(nèi)置原語(yǔ)來(lái)執(zhí)行規(guī)則運(yùn)算,例如加法或乘法。已編碼值的簡(jiǎn)單加法正常地不導(dǎo)致值的加法的編碼。這也適用于乘法。有公式:對(duì)于大多數(shù)x和y而言,e(x)+e(y)≠e(x+y);e指代編碼函數(shù)。
此問(wèn)題的解決方案是引入加法(a)和乘法(m)表。該表取兩個(gè)已編碼值作為輸入并產(chǎn)生已編碼值作為輸出,其對(duì)應(yīng)于加法或乘法運(yùn)算的編碼。可以將該表定義為:a(e(x),e(y))=e(x+y);m(e(x),e(y))=e(xy)。這些表允許直接地對(duì)已編碼值執(zhí)行算術(shù)。
使用表的已混淆加法和乘法遭受至少兩個(gè)缺點(diǎn)的影響。首先,表可以變得相當(dāng)大。如果將x和y表示為l比特,每個(gè)表需要22ll比特。
其次,這樣的大的表在軟件中可以被容易地找到。更壞的是,表可能仍被標(biāo)識(shí)為加法或乘法運(yùn)算,即使其被編碼;例如,通過(guò)在編碼中保留的這些函數(shù)的性質(zhì)。例如,乘法表滿足m(e(0),e(x))=e(0)。攻擊者可以使用此性質(zhì)和類似性質(zhì)來(lái)猜測(cè)該表表示哪個(gè)運(yùn)算。
技術(shù)實(shí)現(xiàn)要素:
具有用于執(zhí)行混淆算術(shù)的改善方式將是有利的。提供了如在權(quán)利要求中定義的計(jì)算設(shè)備。
本發(fā)明人發(fā)現(xiàn)在某些情況下可以使用單個(gè)表來(lái)執(zhí)行對(duì)已編碼值的乘法和加法,而不必將多個(gè)值編碼成單個(gè)已編碼值。由于同一表被用于加法和乘法,所以在逆向工程期間將難以看到是執(zhí)行了加法還是乘法。當(dāng)從外部看時(shí),由于加法和乘法看起來(lái)是相同的運(yùn)算,所以本發(fā)明人將這種方法稱為“同構(gòu)混淆”。即使攻擊者能夠找到所使用的表,并且即使他能夠以某種方式計(jì)算出其作為增量表的函數(shù),但是他仍將不會(huì)知道是執(zhí)行了加法還是乘法運(yùn)算。表作用于整數(shù)列表的元素的方式對(duì)于加法和乘法而言將不同,然而這可以使用傳統(tǒng)混淆來(lái)容易地隱藏。
另外,所使用的單個(gè)表也小于在背景技術(shù)中所討論的表:需要大約2ll比特。即使僅使用加法,混淆加法所需的表也小于在背景技術(shù)中提出的表。本發(fā)明適用于許多不同交換環(huán)r,但并不是每個(gè)環(huán)都允許編碼為整數(shù)列表。交換環(huán)是數(shù)學(xué)概念,其包括許多不同的常見(jiàn)的數(shù)學(xué)結(jié)構(gòu),例如取數(shù)為模的整數(shù)
例如,可以將環(huán)元素編碼為兩個(gè)整數(shù)(a,b)。可以使用將已編碼環(huán)元素映射到已編碼環(huán)元素加增量值的增量表直接地對(duì)編碼執(zhí)行算術(shù)。例如,如果uc-ud=ua-ub+1,則該表可以將(a,b)映射到(c,d)。通過(guò)增量表的重復(fù)應(yīng)用來(lái)執(zhí)行加法和乘法兩者。
使用增量表來(lái)執(zhí)行加法和乘法兩者改善了混淆,因?yàn)榭梢詫⑾嗤谋碛糜诩臃ê统朔?,并且減小大小,因?yàn)樵隽窟\(yùn)算是一元而不是二元的;即,表可以作用于單個(gè)環(huán)元素而不是兩個(gè)環(huán)元素。然而,期望進(jìn)一步減小增量表的大小。
本發(fā)明人發(fā)現(xiàn)可以通過(guò)對(duì)基元素的指數(shù)施加限制并通過(guò)對(duì)表示環(huán)元素的整數(shù)列表中的整數(shù)的蘊(yùn)涵來(lái)進(jìn)一步減小增量表。特別地,可以使整數(shù)列表中的整數(shù)之間的差局限于特定允許差列表。此列表的大小小于基環(huán)元素(或者基環(huán)元素中的一個(gè),如果存在超過(guò)一個(gè)的話)的階數(shù)。
如在本文中將更全面地討論的,存在許多其它可能性和變體。在任何給定實(shí)施方式中許多變體中的哪一個(gè)變體已被選擇對(duì)于攻擊者而言通常將是未知的。
所述計(jì)算設(shè)備是電子設(shè)備,并且可以是移動(dòng)電子設(shè)備,例如移動(dòng)電話、機(jī)頂盒、計(jì)算機(jī)、智能卡等。
如本文中所述的混淆算術(shù)可以在大范圍的實(shí)際應(yīng)用中應(yīng)用。這樣的實(shí)際應(yīng)用可以包括在私有硬件上運(yùn)行的安全應(yīng)用,例如銀行應(yīng)用等,其中要預(yù)防逆向工程。其它應(yīng)用包括其中要預(yù)防數(shù)據(jù)的無(wú)意泄露的應(yīng)用。如果程序被哄騙釋放私有數(shù)據(jù),如果泄露的數(shù)據(jù)已被編碼,則這不那么令人擔(dān)心。還可以將混淆算術(shù)應(yīng)用于運(yùn)行應(yīng)用的服務(wù)器。如果用戶以編碼形式發(fā)送和接收數(shù)據(jù),則增加隱私性。
根據(jù)本發(fā)明的方法可以作為計(jì)算機(jī)實(shí)現(xiàn)方法在計(jì)算機(jī)上實(shí)現(xiàn)、或者在專用硬件中實(shí)現(xiàn)、或以兩者的組合的方式實(shí)現(xiàn)。用于根據(jù)本發(fā)明的方法的可執(zhí)行代碼或其部分可以存儲(chǔ)在計(jì)算機(jī)程序產(chǎn)品上。計(jì)算機(jī)程序產(chǎn)品的示例包括存儲(chǔ)器設(shè)備、光學(xué)存儲(chǔ)設(shè)備、集成電路、服務(wù)器、在線軟件等。優(yōu)選地,計(jì)算機(jī)程序產(chǎn)品包括存儲(chǔ)在計(jì)算機(jī)可讀介質(zhì)上以便當(dāng)所述程序產(chǎn)品在計(jì)算機(jī)上執(zhí)行時(shí)執(zhí)行根據(jù)本發(fā)明的方法的非臨時(shí)程序代碼部件。
在優(yōu)選實(shí)施例中,計(jì)算機(jī)程序包括適合于當(dāng)計(jì)算機(jī)程序在計(jì)算機(jī)上運(yùn)行時(shí)執(zhí)行根據(jù)本發(fā)明的方法的所有步驟的計(jì)算機(jī)程序代碼部件。優(yōu)選地,在計(jì)算機(jī)可讀介質(zhì)上體現(xiàn)計(jì)算機(jī)程序。
附圖說(shuō)明
根據(jù)下文所述實(shí)施例,本發(fā)明的這些及其它目的是顯而易見(jiàn)的,并且將參考下述實(shí)施例來(lái)闡述本發(fā)明的這些及其它方面。在所述附圖中:
圖1a示意性地示出了計(jì)算設(shè)備100的實(shí)施例的示例,
圖1b示意性地示出了環(huán)加法單元130的實(shí)施例的示例,
圖1c示意性地示出了環(huán)乘法單元140的實(shí)施例的示例,
圖2示意性地示出了計(jì)算設(shè)備101的實(shí)施例的示例,
圖3示意性地示出了用于計(jì)算用于在計(jì)算設(shè)備中使用的增量表的表計(jì)算設(shè)備200的實(shí)施例的示例,
圖4示意性地示出了用于執(zhí)行混淆算術(shù)的計(jì)算方法300的實(shí)施例的示例,
圖5示意性地示出了加法方法400的實(shí)施例的示例,
圖6示意性地示出了乘法方法500的實(shí)施例的示例,
圖7a示出了根據(jù)實(shí)施例的具有包括計(jì)算機(jī)程序的可寫部分的計(jì)算機(jī)可讀介質(zhì),
圖7b示出了根據(jù)實(shí)施例的處理器系統(tǒng)的示意性表示。
在不同圖中具有相同參考標(biāo)號(hào)的項(xiàng)目具有相同的結(jié)構(gòu)特征和相同的功能,或者是相同的信號(hào)。在已解釋了這樣的項(xiàng)目的功能和/或結(jié)構(gòu)的情況下,在詳細(xì)描述中不需要其重復(fù)說(shuō)明。
圖1中的參考標(biāo)號(hào)列表:
100計(jì)算設(shè)備
110被布置成存儲(chǔ)增量表的存儲(chǔ)裝置
120環(huán)求反單元
130環(huán)補(bǔ)充單元
140環(huán)乘法單元
150操作數(shù)存儲(chǔ)庫(kù)
160解碼單元
170編碼單元
172被布置成存儲(chǔ)編碼表的存儲(chǔ)裝置。
具體實(shí)施方式
雖然本發(fā)明可以有許多不同形式的實(shí)施例,但在圖中示出且將在本文中詳細(xì)地描述一個(gè)或多個(gè)特定實(shí)施例,并且應(yīng)理解的是應(yīng)將本公開(kāi)內(nèi)容視為本發(fā)明的原理的示例且其并不意圖使本發(fā)明局限于所示和所述的特定實(shí)施例。
在下文中,為了便于理解,在操作中描述實(shí)施例的元件。然而,將顯而易見(jiàn)的是,相應(yīng)元件被布置成執(zhí)行被描述為由其執(zhí)行的功能。
實(shí)施例允許使用同一表來(lái)執(zhí)行乘法和加法運(yùn)算。下面,首先討論計(jì)算設(shè)備的實(shí)施例的許多可能架構(gòu)。接下來(lái),討論用以執(zhí)行混淆算術(shù)的許多替換方式。
圖1示意性地示出了計(jì)算設(shè)備100的實(shí)施例的示例。計(jì)算設(shè)備100是用于在有限交換環(huán)中執(zhí)行混淆算術(shù)的電子設(shè)備。交換環(huán)的許多示例是已知的。下面針對(duì)兩個(gè)這樣的環(huán)給出示例:取數(shù)為模的整數(shù)
環(huán)的元素被稱為環(huán)元素。關(guān)于環(huán)元素,定義加法和乘法,后者稱為環(huán)加法和環(huán)乘法。
如果需要的話,可以用任何適當(dāng)形式來(lái)表示環(huán)元素。例如,可以將
整數(shù)列表包括至少兩個(gè)整數(shù),并且將環(huán)元素編碼,使得環(huán)元素等于基環(huán)元素的冪的線性組合,其中,冪具有由整數(shù)列表確定的指數(shù)。例如,整數(shù)列表(a1,a2)可以將環(huán)元素a編碼,使得環(huán)元素等于冪的線性組合,例如使用基環(huán)元素u的
指數(shù)之間的差被包括在允許差列表中。如果指數(shù)本身在整數(shù)列表中,則整數(shù)列表的第一整數(shù)(例如,a1)和整數(shù)列表的第二整數(shù)(例如,a2)被包括在允許差列表中。另一方面這不是必需的。例如,整數(shù)列表(a1,a2)還可以映射到
整數(shù)列表具有至少兩個(gè)元素。如事實(shí)證明的,如果整數(shù)列表較短,則加法和乘法運(yùn)算要求較少的步驟。因此,在實(shí)施例中,整數(shù)列表總是具有兩個(gè)元素。在主要描述中,我們將假設(shè)整數(shù)列表是整數(shù)對(duì),然而,提供了具有多于兩個(gè)元素的整數(shù)列表的示例。
作為示例,整數(shù)列表(a1,a2)可以映射到環(huán)元素
可以將允許差列表視為
在實(shí)施例中,整數(shù)列表中的整數(shù)是非負(fù)的。這簡(jiǎn)化了計(jì)算,但并不是必需的。此外,在實(shí)施例中,對(duì)整數(shù)列表中的整數(shù)取基元素的階數(shù)的模。基元素u的階數(shù)是最小整數(shù)k,使得uk=1。例如通過(guò)執(zhí)行取模k運(yùn)算來(lái)使整數(shù)列表中的值保持在范圍[0,k-1]中是方便的。
計(jì)算設(shè)備100可以包括操作數(shù)存儲(chǔ)庫(kù)150。操作數(shù)被作為整數(shù)列表存儲(chǔ)在操作數(shù)存儲(chǔ)庫(kù)150中??梢詫?duì)存儲(chǔ)在操作數(shù)存儲(chǔ)庫(kù)150中的操作數(shù)執(zhí)行算術(shù)。可以將所述算術(shù)的結(jié)果存儲(chǔ)在操作數(shù)存儲(chǔ)庫(kù)150中,其中,所述結(jié)果可以在新運(yùn)算中使用,或者可以輸出到不同設(shè)備等。
可以用若干不同方式來(lái)表示整數(shù)列表,例如操作數(shù)存儲(chǔ)庫(kù)150中的操作數(shù)??梢詫⒄麛?shù)列表表示為整數(shù)的列表,例如陣列。例如,整數(shù)列表的第一整數(shù)與整數(shù)列表的第二整數(shù)之間的算術(shù)差被包括在允許差列表中。例如,采取具有兩個(gè)元素的整數(shù)列表的優(yōu)選情況,可以將整數(shù)列表表示為有序列表(k1,k2),使得k1-k2∈a。在該示例中,參數(shù)k1和k2兩者可以是被選模k(即,取基環(huán)元素的階數(shù)為模)。這并不是嚴(yán)格必需的,參數(shù)可以是任何整數(shù),在這種情況下,可以將該要求實(shí)現(xiàn)為例如(k1-k2)modk∈a。
作為另一示例,可以通過(guò)從允許差列表中選擇整數(shù)列表中的整數(shù)中的一個(gè)整數(shù)來(lái)表示增量列表。例如,此表示可以采取整數(shù)列表(k1,k2),其中,例如k2被包括在允許差列表中,可以對(duì)其它一個(gè)或者多個(gè)整數(shù)取基環(huán)元素u的階數(shù)k為模。允許差列表可以明顯小于該階數(shù),在此表示中,可以要求較少的比特來(lái)表示的a元素,因此降低了空間要求。在實(shí)施例中,要求是允許差列表a的成員的整數(shù)列表中的整數(shù)處于固定位置,例如第一或第二位置。但是后者不是必需的;該位置可以作為另一混淆度量而改變。
計(jì)算設(shè)備100包括被布置成存儲(chǔ)針對(duì)增量環(huán)元素定義的增量表t的存儲(chǔ)裝置110。增量表將輸入環(huán)元素映射到對(duì)輸出環(huán)元素進(jìn)行編碼的輸出整數(shù)列表,使得輸出環(huán)元素等于增量環(huán)元素與輸入環(huán)元素進(jìn)行環(huán)相加。在實(shí)施例中,將輸入環(huán)元素表示為整數(shù)列表。這樣,表t將整數(shù)列表映射到整數(shù)列表;兩者都是根據(jù)同一編碼的,例如同一映射。然而,存在其中在替換編碼中將輸入環(huán)元素表示為整數(shù)列表的實(shí)施例。在任何情況下,用數(shù)字形式來(lái)表示輸入環(huán)元素,允許表將輸入環(huán)元素映射到輸出環(huán)元素。
增量表的輸出整數(shù)列表滿足這樣的要求,即:輸出整數(shù)列表表示的輸出環(huán)元素等于基環(huán)元素(u)的冪的線性組合,其中,冪具有由輸出整數(shù)列表確定的指數(shù),第一指數(shù)(l1)與第二指數(shù)(l2)之間的差被包括在允許差列表(a)中。這將稱為有限差要求。在實(shí)施例中,有限差要求轉(zhuǎn)換成對(duì)整數(shù)列表的整數(shù)的要求,例如,整數(shù)列表中的整數(shù)的函數(shù)被包括在允許差列表中。
表可以以某種格式列出輸入環(huán)元素以及關(guān)聯(lián)輸出整數(shù)列表。還可以通過(guò)省略輸入環(huán)并僅列出輸出整數(shù)列表來(lái)在存儲(chǔ)裝置中表示表。例如,這可以在用規(guī)范格式來(lái)表示輸入環(huán)的情況下完成。
例如,假設(shè)示例編碼,可以用表t將輸入環(huán)元素
不需要在表中表示輸入整數(shù)列表的所有可能組合,因?yàn)樵S多整數(shù)列表并不根據(jù)有限差要求表示環(huán)元素。
增量表比在背景技術(shù)中描述的表小得多。后者采取兩個(gè)輸入,例如用以產(chǎn)生已編碼輸出的兩個(gè)已編碼數(shù)。然而,表t僅采取一個(gè)已編碼輸出來(lái)產(chǎn)生一個(gè)已編碼輸出;增量環(huán)元素是固定的。假設(shè)編碼采取類似的空間量,t的輸入空間被減小大約至平方根。這是顯著的大小改善。
僅用增量表,計(jì)算設(shè)備可以以混淆方式表示環(huán)元素,并且可以將增量元素與這樣的已編碼環(huán)元素相加。這可以例如用來(lái)實(shí)現(xiàn)計(jì)數(shù)器。
在實(shí)施例中,計(jì)算設(shè)備100包括環(huán)加法單元130和環(huán)乘法單元140。計(jì)算設(shè)備100還可以包括環(huán)求反單元120。在實(shí)施例中,環(huán)乘法單元140可以使用加法單元130來(lái)執(zhí)行加法;加法單元130可以使用求反單元120。這已在圖1中用單元120、130和140之間的線指示。然而,各單元可以被重復(fù);例如,加法單元130可以完成其自己的求反,并且乘法單元140可以完成其自己的加法。求反也稱為“符號(hào)的改變”。
求反單元120可以接收對(duì)求反輸入環(huán)元素a進(jìn)行編碼的求反輸入整數(shù)列表(a1,a2)。求反單元120被布置成確定對(duì)求反輸出環(huán)元素b進(jìn)行編碼的求反輸出整數(shù)列表(b1,b2)。求反輸出環(huán)元素是求反輸入環(huán)元素的負(fù)數(shù),例如求反輸出環(huán)元素等于用于加法的中性環(huán)元素(0)減求反輸入環(huán)元素。因此b=-a。
在實(shí)施例中,求反單元可以通過(guò)對(duì)求反輸入整數(shù)列表改變次序來(lái)計(jì)算輸出整數(shù)列表。使用示例編碼,
在實(shí)施例中,求反單元可以通過(guò)將常數(shù)與整數(shù)列表的每個(gè)整數(shù)相加來(lái)計(jì)算輸出整數(shù)。例如,在使用整數(shù)m、使得um=-1的在示例編碼中;例如,輸出整數(shù)列表可以是(a1+m,a2+m)。
在實(shí)施例中,求反單元包括求反表。求反表被配置成接收對(duì)求反輸入環(huán)元素a進(jìn)行編碼的求反輸入整數(shù)列表((a1,a2)),并產(chǎn)生對(duì)求反輸出環(huán)元素b進(jìn)行編碼的求反輸出整數(shù)列表((b1,b2)),使得b=-a。求反表并不是非常大的,因?yàn)槠涫且辉?,此外,求反表是僅需要包含用于滿足對(duì)整數(shù)列表的有限差要求的輸入的求反輸出整數(shù)列表。在加法和乘法運(yùn)算期間以相同方式使用求反表。
環(huán)加法單元130被布置成接收對(duì)第一加法輸入環(huán)元素進(jìn)行編碼的第一加法輸入整數(shù)列表(a1,a2)和對(duì)第二加法輸入環(huán)元素進(jìn)行編碼的第二加法輸入整數(shù)列表(b1,b2)。例如,環(huán)加法單元130可以從操作數(shù)存儲(chǔ)庫(kù)150接收兩個(gè)操作數(shù)。環(huán)加法單元130被布置成通過(guò)對(duì)根據(jù)第一和第二加法輸入整數(shù)列表確定的環(huán)元素應(yīng)用增量表來(lái)確定對(duì)加法輸出環(huán)元素進(jìn)行編碼的加法輸出整數(shù)列表,加法輸出環(huán)元素等于第一加法輸入環(huán)元素和第二加法輸入環(huán)元素的環(huán)加法。
在實(shí)施例中,整數(shù)列表到特定環(huán)元素的映射包括多個(gè)子映射,每個(gè)子映射與整數(shù)列表的整數(shù)相關(guān)聯(lián),子映射將整數(shù)映射到環(huán)元素。映射是應(yīng)用于關(guān)聯(lián)整數(shù)的子映射的線性組合,例如,和(sum)。子映射可以將基元素提高至由關(guān)聯(lián)整數(shù)確定的冪。例如,在示例編碼中,可以將(a1,a2)說(shuō)成是子映射
圖1b圖示出加法單元130的實(shí)施例。加法單元130接收第一加法輸入整數(shù)列表131以及第二加法輸入整數(shù)列表132。加法單元130包括中間加法單元134,其被布置成重復(fù)地將從第二加法輸入整數(shù)列表132的整數(shù)獲得的環(huán)元素與第一加法輸入環(huán)元素相加。例如,中間加法單元134可以向被初始化成第一整數(shù)列表元素的中間和133做加法。加法涉及到來(lái)自存儲(chǔ)裝置110的增量表的應(yīng)用。
環(huán)乘法單元140被配置成接收對(duì)第一乘法輸入環(huán)元素進(jìn)行編碼的第一乘法輸入整數(shù)列表(r1,r2)和對(duì)第二乘法輸入環(huán)元素進(jìn)行編碼的第二乘法輸入整數(shù)列表(s1,s2)。例如,乘法單元140可以從操作數(shù)存儲(chǔ)庫(kù)150接收兩個(gè)操作數(shù)。環(huán)乘法單元140被布置成通過(guò)對(duì)根據(jù)第一和第二乘法輸入整數(shù)列表確定的環(huán)元素應(yīng)用增量表來(lái)確定對(duì)乘法輸出環(huán)元素進(jìn)行編碼的乘法輸出整數(shù)列表,乘法輸出環(huán)元素等于第一乘法輸入環(huán)元素和第二乘法輸入環(huán)元素的環(huán)乘法。
圖1c示出了乘法單元140的可能實(shí)施例。乘法單元140接收第一乘法輸入整數(shù)列表141和第二乘法輸入整數(shù)列表142。乘法單元140包括中間乘法單元144,其被布置成根據(jù)第一和第二乘法輸入整數(shù)列表141、142來(lái)確定第一中間乘法整數(shù)列表145(t1,t2)和第二中間乘法整數(shù)列表146(u1,u2),其分別地對(duì)第一和第二中間乘法環(huán)元素進(jìn)行編碼。乘法單元140被布置成通過(guò)環(huán)加法單元130將第一中間乘法整數(shù)列表145和第二中間乘法整數(shù)列表146相加。確定中間整數(shù)列表可以涉及到對(duì)整數(shù)列表中的整數(shù)的算術(shù)運(yùn)算,但是不要求增量表。
計(jì)算設(shè)備100可選地包括用于將交換環(huán)的環(huán)元素編碼為整數(shù)列表的環(huán)編碼單元170以及用于將整數(shù)列表(a,b)解碼成交換環(huán)的環(huán)元素(x)的環(huán)解碼單元160。編碼單元170和/或解碼單元160可以不存在,例如當(dāng)計(jì)算設(shè)備100接收已編碼輸入和/或在已編碼輸出中報(bào)告時(shí)。可以將編碼單元170和/或解碼單元160實(shí)現(xiàn)為獨(dú)立單元,例如作為編碼設(shè)備和/或解碼設(shè)備160。
環(huán)編碼單元170可以包括被布置成存儲(chǔ)針對(duì)基環(huán)元素(u)定義的編碼表的存儲(chǔ)裝置172,所述編碼表將環(huán)元素(x)映射到整數(shù)列表((a,b)),使得環(huán)元素等于基環(huán)元素的冪的線性組合(x=ua-ub),其中,冪具有由整數(shù)列表確定的指數(shù)。編碼單元170可以將已編碼環(huán)元素存儲(chǔ)在算子存儲(chǔ)庫(kù)150中。編碼單元170允許系統(tǒng)用明文信息進(jìn)行工作。
編碼表將環(huán)元素(x)映射到整數(shù)列表((a,b)),使得環(huán)元素等于基環(huán)元素的冪的線性組合(x=ua-ub),其中,冪具有由整數(shù)列表確定的指數(shù),第一指數(shù)(a1)與第二指數(shù)(a2)之間的差被包括在允許差列表(a)中,并且其中,允許差列表的大小小于階數(shù)(k)。
環(huán)解碼單元160被布置成針對(duì)一個(gè)或多個(gè)基環(huán)元素(u)確定環(huán)元素(x),使得環(huán)元素等于一個(gè)或多個(gè)基環(huán)元素的冪的線性組合(x=ua-ub),其中,冪具有由整數(shù)列表確定的指數(shù)。例如,解碼單元160可以包括存儲(chǔ)將整數(shù)列表映射到環(huán)元素的解碼表的存儲(chǔ)庫(kù)。例如,解碼單元160可以包括用以計(jì)算冪及其線性組合的計(jì)算單元。
解碼表只需要映射滿足有限差要求的整數(shù)列表,使得解碼表具有比需要映射所有可能差的解碼表的更小的大小。
許多有趣的實(shí)施例省略編碼單元170和解碼單元160中的一者或兩者。例如,計(jì)算設(shè)備100可以被配置成通過(guò)計(jì)算機(jī)網(wǎng)絡(luò)(例如互聯(lián)網(wǎng))來(lái)接收已編碼信息?;煜?jì)算設(shè)備100在其上面運(yùn)行的系統(tǒng)的所有者(例如執(zhí)行混淆計(jì)算軟件的計(jì)算機(jī))可能不知道用于輸入信息的編碼,也不知道由系統(tǒng)100輸出(例如通過(guò)計(jì)算機(jī)網(wǎng)絡(luò)發(fā)送回)的信息。因此,即使計(jì)算是在云中執(zhí)行的,信息的所有者也具有某些這樣的保證,即:他信息是安全的。使用密碼術(shù)(例如加密)對(duì)采取編碼形式的信息進(jìn)行操作通常是不可能的。即使如在背景技術(shù)中概述的那樣使用表系統(tǒng),這也要求雙重的表。
通常,計(jì)算設(shè)備100包括微處理器(未示出),其執(zhí)行存儲(chǔ)在設(shè)備100處的適當(dāng)軟件;例如,該軟件可能已被下載和/或存儲(chǔ)在對(duì)應(yīng)的存儲(chǔ)器中,例如,諸如ram之類的易失性存儲(chǔ)器或諸如閃存(未示出)之類的非易失性存儲(chǔ)器。替換地,設(shè)備100可以完全或部分地用可編程邏輯(例如作為現(xiàn)場(chǎng)可編程門陣列(fpga))實(shí)現(xiàn)。設(shè)備100可以完全地或部分地實(shí)現(xiàn)為所謂的專用集成電路(asic),即針對(duì)其特定用途而自定義的集成電路(ic)。
在實(shí)施例中,電子計(jì)算設(shè)備包括被布置成執(zhí)行對(duì)應(yīng)單元的功能的環(huán)加法電路和環(huán)乘法電路。計(jì)算設(shè)備還可以包括求反電路。電路可以是例如通過(guò)用硬件描述語(yǔ)言(諸如verilog和vhdl)來(lái)描述功能而獲得的集成電路,諸如cmos。電路可以是處理器電路和存儲(chǔ)電路,所述處理器電路執(zhí)行在存儲(chǔ)電路中以電子方式表示的指令。電路還可以是fpga、asic等。
可以將表存儲(chǔ)庫(kù)110和操作數(shù)存儲(chǔ)庫(kù)150實(shí)現(xiàn)為電子存儲(chǔ)裝置,例如存儲(chǔ)器。兩個(gè)存儲(chǔ)庫(kù)可以是同一存儲(chǔ)器的一部分,但是它們也可以是不同的存儲(chǔ)器。表存儲(chǔ)庫(kù)110可以是易失性、不可寫的,例如rom或一寫多讀(worm)存儲(chǔ)器。操作數(shù)存儲(chǔ)庫(kù)150可以是易失性或非易失性可寫存儲(chǔ)器,例如閃存或ram。
圖2示意性地示出了計(jì)算設(shè)備101的實(shí)施例的示例。計(jì)算設(shè)備101是計(jì)算設(shè)備100的細(xì)化。在實(shí)施例中,計(jì)算設(shè)備101包括多個(gè)環(huán)加法單元、多個(gè)環(huán)乘法單元以及可選地多個(gè)求反單元。例如,圖2示出了三個(gè)乘法單元1401.1、140.2和140.3,以及兩個(gè)加法單元130.1和130.2。這些單元可以分別具有與單元140和130相同的設(shè)計(jì)。乘法和加法單元占用相對(duì)少的空間,例如當(dāng)用軟件實(shí)現(xiàn)時(shí),這些單元需要不多于幾百個(gè)低級(jí)計(jì)算機(jī)指令。特別地,可以將加法和/或乘法單元的拷貝用于在計(jì)算機(jī)程序中需要的每個(gè)乘法或加法。這允許傳統(tǒng)混淆技術(shù)。作為示例,圖2示出了可以如何使用混淆算術(shù)來(lái)計(jì)算多項(xiàng)式ax2+bx+c。
多個(gè)算術(shù)單元(例如,加法、乘法、求反)的運(yùn)算可以按照其數(shù)據(jù)相關(guān)性允許的任何順序排序。例如,可以在130.1之前的任何點(diǎn)處在排序140.1、140.2、130.1和130.2中插入運(yùn)算140.3。此外,可以將后續(xù)乘法或加法的排序顛倒。因此,可以用許多方式按照用于軟件程序的線性排序而轉(zhuǎn)換類似于圖2的圖。將單元嚴(yán)格地分離是不需要的;可以將用于第一單元的指令與用于另一單元的指令散置。
圖3示意性地示出了用于計(jì)算用于在計(jì)算設(shè)備中使用的增量表的表計(jì)算設(shè)備200的實(shí)施例的示例。在類似于計(jì)算設(shè)備100的設(shè)備中可以使用增量表??梢詫⒃撛隽勘泶鎯?chǔ)在非臨時(shí)存儲(chǔ)設(shè)備(例如,硬盤、非易失性存儲(chǔ)器芯片等)上。表計(jì)算設(shè)備200包括被布置成構(gòu)造增量表的表創(chuàng)建單元210。例如,表創(chuàng)建單元可以被布置成:
-重復(fù)地選擇輸入環(huán)元素,例如x,
-確定輸出環(huán)元素,其等于增量環(huán)元素環(huán)與輸入環(huán)元素進(jìn)行環(huán)相加。例如,如果增量值是1,則y=x+1。
-確定用于輸出環(huán)元素的輸出整數(shù)列表編碼。例如,表計(jì)算設(shè)備200可以包括類似于編碼單元170的編碼單元。
-向?qū)⑤斎氕h(huán)元素映射到滿足有限差要求的輸出整數(shù)列表的增量表添加條目。
可以執(zhí)行這些步驟直至所有環(huán)元素已被映射到整數(shù)列表為止。在某些實(shí)施例中,可以跳過(guò)元素,構(gòu)建部分增量表;例如,其可以從某些環(huán)元素將不會(huì)發(fā)生的上下文已知。
給定環(huán)r、潛在基環(huán)元素u、編碼(例如示例編碼)和整數(shù)列表長(zhǎng)度(例如2),可以如下面給定的那樣生成解碼表。使k為u的階數(shù)。
-例如通過(guò)生成所述整數(shù)列表長(zhǎng)度、具有模k整數(shù)的所有整數(shù)列表來(lái)生成滿足有限差要求的所有整數(shù)列表,并且整數(shù)列表的第一整數(shù)和輸出整數(shù)列表的整數(shù)被包括在允許差列表a中。
例如,針對(duì)長(zhǎng)度二的整數(shù)列表,可以使用以下示例算法:針對(duì)從0至(k-1)的k1;針對(duì)a中的所有d;生成(k1,k1+dmodk)。例如,針對(duì)可生成的差列表a={0,1,4,5,902,903,906},生成:(0,0),(0,1),(0,4),...,(1,1),(1,5),...等。在本示例,差列表可以與環(huán)z907、u=10、k=151一起使用。
-針對(duì)每個(gè)生成的整數(shù)列表計(jì)算由該整數(shù)列表編碼的環(huán)元素,并且向?qū)⒄麛?shù)列表關(guān)聯(lián)到解碼的解碼表添加條目。例如,繼續(xù)上述示例,可以計(jì)算1511-1515mod907=76。因此,解碼表可以接收(1,5)解碼成76的條目。
雖然解碼可以使用解碼表或者可以不使用解碼表,這樣的表也是有用的,因?yàn)榭梢岳缤ㄟ^(guò)將用于環(huán)元素的表分類而從解碼表生成編碼表。環(huán)元素具有多個(gè)編碼是可以發(fā)生的。例如,在用于任何a的示例編碼中可以將環(huán)元素0(用于加法的中性元素)表示為(a,a)??梢詮谋砣コ@樣的多個(gè)編碼,例如通過(guò)刪除用于給定環(huán)元素的多個(gè)條目中的除1之外的全部項(xiàng);或者通過(guò)留下表中的多個(gè)編碼并使用編碼表來(lái)編碼成多個(gè)條目中的隨機(jī)的一個(gè)條目。
構(gòu)造解碼或編碼表還可以用來(lái)找出環(huán)元素u是否是基環(huán)元素。如果構(gòu)造編碼表失敗,則由于證明了某些環(huán)元素不具有編碼,所以u(píng)不是基環(huán)元素。
下面,呈現(xiàn)了編碼、增量表、環(huán)加法方法和環(huán)乘法方法的許多實(shí)施例。可以針對(duì)這些實(shí)施例中的任何一個(gè)實(shí)施例配置計(jì)算設(shè)備100的求反、加法和乘法單元。所有示例適用于任何交換環(huán),特別是
下面,首先給出其中參數(shù)局限于落在允許差列表中的示例編碼的描述。存在許多類型的編碼,其共同地具有的是:可以將環(huán)元素表示為整數(shù)列表。這些整數(shù)不是環(huán)元素,例如,即使環(huán)不是整數(shù)環(huán)(例如多項(xiàng)式環(huán)),然后仍然可以將元素表示為整數(shù)列表。所使用的編碼、給定整數(shù)列表如何映射到環(huán)元素被稱為編碼。通常,整數(shù)列表將總是具有相同的長(zhǎng)度,然而這并不是必需的。一般地,由于編碼允許更多類型的整數(shù)列表,例如更長(zhǎng)的列表,所以可以用不同方式將給定環(huán)元素編碼為整數(shù)列表變得更有可能。給定具有基環(huán)元素u的交換環(huán)r,使得針對(duì)某些整數(shù)a1和a2,可以將r的任何元素a寫為
增量表t在加法和乘法運(yùn)算兩者中起到重要作用。增量表映射輸入環(huán)元素,在這種情況下可以將輸入環(huán)元素表示為整數(shù)列表。例如,給定表示輸入環(huán)元素
下面描述運(yùn)算:求反、加法以及乘法。
求反。給定表示求反輸入環(huán)元素
加法。為了將對(duì)第一加法輸入環(huán)元素
環(huán)元素c可以是第一加法輸入環(huán)元素a加上根據(jù)第二加法輸入整數(shù)列表(特別是第二加法輸入整數(shù)列表的第一整數(shù))確定的冪次的基元素u。在本示例中,我們可以具有
通過(guò)將增量表第一次應(yīng)用于環(huán)元素
因此,加法單元已獲得中間相加環(huán)元素
在本示例中,可以通過(guò)將增量表第二次應(yīng)用于根據(jù)中間加法整數(shù)列表和第二加法輸入整數(shù)列表確定的環(huán)元素來(lái)確定加法輸出整數(shù)列表。這可以包括計(jì)算中間加法環(huán)元素c與負(fù)的、被自乘至根據(jù)第二加法輸入整數(shù)列表(例如第二加法輸入整數(shù)列表b2的第二整數(shù))確定的冪次的基元素的和
從整數(shù)列表表示中的環(huán)元素(在這種情況下從c)減去
乘法。為了將對(duì)第一乘法輸入環(huán)元素
因此,為了將表示為整數(shù)列表的兩個(gè)環(huán)元素相乘,可以將其變換成可以被相加以獲得乘法的答案的兩個(gè)新整數(shù)列表。加法可以如上所述地完成。例如,乘法單元可以計(jì)算中間整數(shù)列表并將其發(fā)送到乘法單元。例如,第一中間乘法整數(shù)列表的第一整數(shù)t1可以包括第一乘法輸入整數(shù)列表的第一整數(shù)r1加第二乘法輸入整數(shù)列表的第一整數(shù)s1,并且第一中間乘法整數(shù)列表的第二整數(shù)t2可以包括第一乘法輸入整數(shù)列表的第一整數(shù)r1加第二乘法輸入整數(shù)列表的第二整數(shù)s2,t1=r1+s1,t2=r1+s2;第二中間乘法整數(shù)列表的第一整數(shù)u1可以包括第一乘法輸入整數(shù)列表的第二整數(shù)r2加第二乘法輸入整數(shù)列表的第二整數(shù)s2,并且第二中間乘法整數(shù)列表的第二整數(shù)u2可以包括第一乘法輸入整數(shù)列表的第二整數(shù)r2加第二乘法輸入整數(shù)列表的第一整數(shù)s1,u1=r2+s2,u2=r2+s1。
在實(shí)施例中,例如,在剛剛公開(kāi)的示例中,對(duì)整數(shù)列表執(zhí)行算術(shù),不需要將環(huán)元素計(jì)算為某些自然表示中的環(huán)元素。現(xiàn)在討論許多變體。變體中的許多變體是獨(dú)立的,例如可以將變體編碼與變體組合以執(zhí)行加法。
通過(guò)混淆算術(shù),當(dāng)在整數(shù)列表中執(zhí)行計(jì)算時(shí),例如對(duì)應(yīng)于
增量值。增量值不需要是1。存在使用不同增量值的至少兩個(gè)方式。首先,可以將等式
可以將針對(duì)示例編碼舉例說(shuō)明的原理應(yīng)用于許多替換編碼。第一替換編碼是使用編碼
可以針對(duì)
整數(shù)列表中的整數(shù)的數(shù)目。在到目前為止討論的示例中,整數(shù)列表中的元素的數(shù)目總是兩個(gè)。此數(shù)目具有如下優(yōu)點(diǎn),即:其減少了計(jì)算步驟的數(shù)目。另一方面,允許整數(shù)列表中的更多元素?cái)U(kuò)展了允許混淆的環(huán)的數(shù)目。下面的示例考慮每個(gè)列表三個(gè)整數(shù),但是更多整數(shù)是可能的,并且類似地工作。
考慮分別地對(duì)元素
如果整數(shù)列表(a1,a2,a3)滿足兩個(gè)特定數(shù)目的列表具有允許差列表中的差,例如a1-a2∈a1,則
下面給出用于允許負(fù)和/或正混淆的環(huán)的示例和如何找到允許差列表。環(huán)r可以是用于模數(shù)n的整數(shù)環(huán)
使r為具有可混算術(shù)和基數(shù)u的環(huán),并且使k=order(u)。如果存在
可以數(shù)學(xué)證明如果r是環(huán),使得um=-1,則r和-r總是等價(jià)的。
此等價(jià)關(guān)系引入了對(duì)
我們提供以下示例:
使
[0]
[1;3;11;16;21;23;28;30;35;40;48;50]
[2;5;6;9;19;22;29;32;42;45;46;49]
[4;7;10;12;13;18;33;38;39;41;44;47]
[8;14;15;20;24;25;26;27;31;36;37;43]
[17;34]
可以通過(guò)從每個(gè)類選擇至少一個(gè)元素獲得允許差集合(例如,a={0,1,2,4,8,17})。
使
[0]
[13;26;39;52;65;78;91;104;117;130;143;156;169;182]
[1;8;64;73;84;87;108;111;122;131;187;194]
[2;16;21;27;49;67;128;146;168;174;179;193]
[4;32;42;54;61;97;98;134;141;153;163;191]
[3;47;72;83;112;123;148;192]
[6;29;51;94;101;144;166;189]
[7;12;58;93;102;137;183;188]
[9;14;24;79;116;171;181;186]
[18;28;37;48;147;158;167;177]
[36;56;74;96;99;121;139;159]
[5;25;40;70;125;155;170;190]
[10;50;55;80;115;140;145;185]
[20;35;85;95;100;110;160;175]
[11;69;76;90;105;119;126;184]
[15;22;43;57;138;152;173;180]
[30;44;81;86;109;114;151;165]
[23;33;60;88;107;135;162;172]
[19;46;66;75;120;129;149;176]
[38;45;63;92;103;132;150;157]
[17;53;62;68;77;82;113;118;127;133;142;178]
[31;34;41;59;71;89;106;124;136;154;161;164]
再次地,可以通過(guò)從每個(gè)等價(jià)類選擇至少一個(gè)元素來(lái)獲得允許差集合。選擇可以是隨機(jī)的。
使
[0]
±[1;3;8;16;18;30;31;32;33;43;53;56;62;75;78;79;101;102;113;116;124;126;128;140;149]
±[4;9;12;15;28;44;45;47;55;57;66;67;69;71;81;83;92;99;112;114;115;127;137;138]
±[5;6;7;21;26;29;34;40;41;51;54;61;63;64;74;86;91;93;103;105;109;129;131;132;134;141]
要注意,等價(jià)類具有對(duì)稱性,其被用來(lái)以簡(jiǎn)略形式指代類。
使
[0]
±[1;23;25;27;42;49;94]
±[2;34;54;55;57;67;74;83;93;95]
±[3;11;39;47;82;90]
[4;16;24;48;52;76;84;96]
[8;44;56;92]
±[9;19;31;38;41;70;78]
[12;20;28;72;80;88]
±[13;14;21;29;37;65;85]
[32;40;60;68]
[36;64]
[50]
可以證明在域中,給定r,我們有:(ur-1)us對(duì)于
這還意味著給定域以及通過(guò)從每個(gè)等價(jià)類恰好選擇一個(gè)元素而獲得的允許差列表和長(zhǎng)度2的整數(shù)列表給出了每個(gè)域元素的唯一表示。通過(guò)從每個(gè)等價(jià)類選擇更多元素,環(huán)元素獲得多個(gè)表示。
下面概括許多示例并給出附加示例。針對(duì)多項(xiàng)式環(huán),上文給出了基環(huán)元素和發(fā)生器的細(xì)節(jié)。要注意
如從上文的表還可以看到的,可以通過(guò)用混淆算術(shù)生成環(huán)并計(jì)算等價(jià)類來(lái)獲得具有各種大小的允許差列表的環(huán)。
具有較小的允許差列表具有如下優(yōu)點(diǎn),即:這減小了增量表的大小。在實(shí)施例中,如果冪不具有滿足有限差要求的指數(shù)(例如,所述指數(shù)由整數(shù)列表確定,對(duì)于所述指數(shù)的差在允許差列表(a)中,并且其中,允許差列表的大小小于階數(shù)(k)),則增量表不將輸入整數(shù)列表所表示的輸入環(huán)元素映射為基環(huán)元素(u)的冪的線性組合
通過(guò)搜索更多環(huán),可以將允許差列表的大小選擇為相對(duì)于階數(shù)k而言是小的??梢酝ㄟ^(guò)選擇每個(gè)等價(jià)類的僅一個(gè)元素來(lái)在大小方面減小允許差列表;可以通過(guò)選擇每個(gè)等價(jià)類的多于一個(gè)元素在大小方面擴(kuò)展允許差列表。如果允許差列表的大小小于階數(shù)的50%、更優(yōu)選地小于階數(shù)的20%、甚至更優(yōu)選地小于階數(shù)的10%、甚至更優(yōu)選地小于階數(shù)的5%,則是優(yōu)選的。在域中的唯一表示的情況下,期望的是c/k小于0.5、0.2、0.1和0.05。
通過(guò)選擇每個(gè)等價(jià)類的僅一個(gè)元素,獲得的是
圖4示意性地示出了在交換環(huán)
-存儲(chǔ)305針對(duì)增量環(huán)元素(1;ut)定義的增量表(t),增量表將輸入環(huán)元素
所述方法還可以包括環(huán)相加:
-接收310對(duì)第一加法輸入環(huán)元素進(jìn)行編碼的第一加法輸入整數(shù)列表((a1,a2))和對(duì)第二加法輸入環(huán)元素進(jìn)行編碼的第二加法輸入整數(shù)列表((b1,b2)),
-通過(guò)對(duì)根據(jù)第一和第二加法輸入整數(shù)列表確定的環(huán)元素應(yīng)用增量表來(lái)確定320對(duì)加法輸出環(huán)元素進(jìn)行編碼的加法輸出整數(shù)列表,加法輸出環(huán)元素等于第一加法輸入環(huán)元素和第二加法輸入環(huán)元素的環(huán)加法。
所述方法還可以包括環(huán)乘法:
-接收330對(duì)第一乘法輸入環(huán)元素進(jìn)行編碼的第一乘法輸入整數(shù)列表((r1,r2))和對(duì)第二乘法輸入環(huán)元素進(jìn)行編碼的第二乘法輸入整數(shù)列表((s1,s2)),
-通過(guò)對(duì)根據(jù)第一和第二乘法輸入整數(shù)列表確定的環(huán)元素應(yīng)用增量表來(lái)確定340對(duì)乘法輸出環(huán)元素進(jìn)行編碼的乘法輸出整數(shù)列表,乘法輸出環(huán)元素等于第一乘法輸入環(huán)元素和第二乘法輸入環(huán)元素的環(huán)乘法。
圖5示意性地示出了可以在設(shè)備100中或者在方法300中等使用的加法方法400的實(shí)施例的示例。本示例使用示例編碼。本方法可以適應(yīng)于其它編碼。本文中所述的所有變體可以被應(yīng)用;本示例使用增量值1,并且通過(guò)對(duì)
方法400包括接收加法操作數(shù)410。這可以包括接收410第一加法輸入整數(shù)列表,例如(a1,a2),并接收420第二加法輸入整數(shù)列表,例如(b1,b2)。
加法輸入整數(shù)列表每個(gè)將環(huán)元素編碼,使得環(huán)元素等于基環(huán)元素的冪的線性組合,基環(huán)元素在環(huán)中具有階數(shù),其中,冪具有由整數(shù)列表確定的指數(shù)。指數(shù)滿足第一指數(shù)與第二指數(shù)之間的差被包括在允許差列表中的要求。
方法400還包括確定420中間加法整數(shù)列表,例如(c1,c2)。例如,這可以包括將增量表應(yīng)用于根據(jù)第一和第二加法輸入整數(shù)列表確定的環(huán)元素。特別地,可以將增量表應(yīng)用于整數(shù)列表,整數(shù)中的元素是從輸入整數(shù)列表中的元素導(dǎo)出的。表的輸出滿足要求。例如,確定420可以包括將增量表應(yīng)用422于(a1-b1,a2-b1),例如獲得(d1,d2);并且將根據(jù)第二加法輸入整數(shù)列表確定的整數(shù)b1與從第一次應(yīng)用得到的整數(shù)列表中的整數(shù)相加,例如(c1,c2)=(d1+b1,d2+b1)。
方法400還包括通過(guò)將增量表第二次應(yīng)用于根據(jù)中間加法整數(shù)列表和第二加法輸入整數(shù)列表確定的環(huán)元素來(lái)確定430加法輸出整數(shù)列表。針對(duì)更長(zhǎng)的整數(shù)列表,這可以涉及到附加的增量表應(yīng)用。例如,這可以包括對(duì)中間加法整數(shù)列表求反431,例如改變順序成為(c2,c1)。應(yīng)用432增量表以及加法434與應(yīng)用422和加法424相同,只是除了用中間整數(shù)列表(c2,c1)替換加法輸入整數(shù)列表(a1,a2)并用b2替換b1之外。最后,對(duì)434的結(jié)果求反453以獲得混淆加法的結(jié)果。
如果作為負(fù)混淆的替代,如在這里一樣使用正混淆,則可以省略求反431、435。
圖6示意性地示出了可以在設(shè)備100中或者在方法300中等使用的乘法方法500的實(shí)施例的示例。本示例使用與方法400相同的編碼和增量表。如針對(duì)加法一樣,乘法的輸入和輸出滿足要求。
方法500包括接收乘法操作數(shù)510。這可以包括接收510第一乘法輸入整數(shù)列表,例如(r1,r2),并接收514第二乘法輸入整數(shù)列表(s1,s2)。
方法500還包括確定520第一和第二中間乘法整數(shù)列表。例如,520可以包括確定522第一中間乘法整數(shù)列表并確定524第二中間乘法整數(shù)列表。這些可以例如被分別地選擇為(s1+r1,s1+r2)和(s2+r2,s2+r1),但是存在其它選擇。乘法通過(guò)在加法方法400中將這些數(shù)相加而繼續(xù)。
要注意,僅在應(yīng)用422和應(yīng)用432中使用表,而在方法400和500中的其它地方不使用。加法和乘法兩者使用相同的表,并且兩者將表使用相同次數(shù)(2)。其它操作包括對(duì)整數(shù)列表中的整數(shù)的小的算術(shù)運(yùn)算,例如取基環(huán)元素的階數(shù)為模。如對(duì)于本領(lǐng)域的技術(shù)人員而言將顯而易見(jiàn)的,可以有執(zhí)行本方法的許多不同方式。例如,可改變步驟的順序或者可并行地執(zhí)行某些步驟。此外,在各步驟之間可插入其它方法步驟。插入的步驟可表示諸如本文所述的方法的細(xì)化,或者可與本方法無(wú)關(guān)。此外,給定步驟可能在開(kāi)始下一步驟之前并未完全結(jié)束。
根據(jù)實(shí)施例的方法可以使用軟件來(lái)執(zhí)行,該軟件包括用于促使處理器系統(tǒng)執(zhí)行方法300、400和500中的任何一項(xiàng)的指令。軟件可以僅包括由系統(tǒng)的特定子實(shí)體所采取的那些步驟。軟件可以被存儲(chǔ)在適當(dāng)存儲(chǔ)介質(zhì)中,諸如硬盤、軟盤、存儲(chǔ)器等。軟件可以作為信號(hào)沿著電線或以無(wú)線方式或使用數(shù)據(jù)網(wǎng)絡(luò)(例如,互聯(lián)網(wǎng))發(fā)送??梢允沟迷撥浖捎糜谙螺d和/或用于在服務(wù)器上的遠(yuǎn)程使用。方法可以使用被布置成將可編程邏輯(例如,現(xiàn)場(chǎng)可編程門陣列(fpga))配置成執(zhí)行所述方法的比特流來(lái)執(zhí)行。
將認(rèn)識(shí)到的是實(shí)施例還擴(kuò)展至適合于將實(shí)施例付諸實(shí)踐的計(jì)算機(jī)程序,特別是在載體上或載體中的計(jì)算機(jī)程序。該程序可以是源代碼、目標(biāo)代碼、代碼中間源和目標(biāo)代碼(諸如部分編譯形式)的形式,或者是適合于在實(shí)現(xiàn)根據(jù)實(shí)施例的方法時(shí)使用的任何其它形式。涉及計(jì)算機(jī)程序產(chǎn)品的實(shí)施例包括對(duì)應(yīng)于所闡述方法中的至少一個(gè)方法的處理步驟中的每個(gè)處理步驟的計(jì)算機(jī)可執(zhí)行指令??梢詫⑦@些指令再分成子例程和/或存儲(chǔ)在可被靜態(tài)地或動(dòng)態(tài)地鏈接的一個(gè)或多個(gè)文件中。涉及計(jì)算機(jī)程序產(chǎn)品的另一實(shí)施例包括對(duì)應(yīng)所闡述的系統(tǒng)和/或產(chǎn)品中的至少一項(xiàng)的裝置中的每個(gè)裝置的計(jì)算機(jī)可執(zhí)行指令。
圖7a示出了具有包括計(jì)算機(jī)程序1020的可寫部分1010的計(jì)算機(jī)可讀介質(zhì)1000,計(jì)算機(jī)程序1020包括用于促使處理器系統(tǒng)執(zhí)行根據(jù)實(shí)施例的用于執(zhí)行混淆算術(shù)的計(jì)算方法的指令??蓪懖糠挚梢员徊贾贸捎糜诙啻螌懟蛘哂糜趦H一次寫??梢栽谟?jì)算機(jī)可讀介質(zhì)1000上作為物理標(biāo)記或者借助于計(jì)算機(jī)可讀介質(zhì)1000的磁化來(lái)體現(xiàn)計(jì)算機(jī)程序1020。然而,也可設(shè)想任何其它適當(dāng)實(shí)施例。此外,將認(rèn)識(shí)到的是,雖然計(jì)算機(jī)可讀介質(zhì)1000在這里被示為光盤,但計(jì)算機(jī)可讀介質(zhì)1000可以是任何適當(dāng)?shù)挠?jì)算機(jī)可讀介質(zhì),諸如硬盤、固態(tài)存儲(chǔ)器、閃速存儲(chǔ)器等,并且可以是不可記錄或可記錄的。計(jì)算機(jī)程序1020包括用于促使處理器系統(tǒng)執(zhí)行用于執(zhí)行混淆算術(shù)的所述計(jì)算方法的指令。
計(jì)算機(jī)可讀介質(zhì)(例如,計(jì)算機(jī)可讀介質(zhì)1000)可以包括增量表和/或解碼表和/或編碼表。
圖7b示出了根據(jù)實(shí)施例的處理器系統(tǒng)1100的示意性表示。處理器系統(tǒng)包括一個(gè)或多個(gè)集成電路1110。在圖7b中示意性地示出了一個(gè)或多個(gè)集成電路1110的架構(gòu)。電路1110包括處理單元1120(例如cpu),以用于運(yùn)行計(jì)算機(jī)程序組件以執(zhí)行根據(jù)實(shí)施例的方法和/或?qū)崿F(xiàn)其模塊或單元。電路1110包括用于存儲(chǔ)編程代碼、數(shù)據(jù)等的存儲(chǔ)器1122。存儲(chǔ)器1122的一部分可以是只讀的。電路1110可以包括通信元件1126,例如天線、連接器或兩者等。電路1110可以包括用于執(zhí)行在方法中定義的處理的一部分或全部的專用集成電路1124。處理器1120、存儲(chǔ)器1122、專用ic1124和通信元件1126可以經(jīng)由互連1130(例如總線)相互連接。處理器系統(tǒng)1110可以被布置成用于分別使用天線和/或連接器的接觸式和/或無(wú)接觸式通信。
應(yīng)注意的是,上述實(shí)施例舉例說(shuō)明而不是限制本發(fā)明,并且本領(lǐng)域的技術(shù)人員將能夠設(shè)計(jì)許多替換實(shí)施例。
在權(quán)利要求中,不應(yīng)將放入括號(hào)之間的任何參考標(biāo)號(hào)理解為限制權(quán)利要求。動(dòng)詞“包括”及其變化的使用并不排除在權(quán)利要求中敘述的那些之外的元件或步驟的存在。在元件前面的冠詞“一”或“一個(gè)”不排除多個(gè)這樣的元件的存在??山柚诎ㄈ舾刹煌约敖柚谶m當(dāng)編程的計(jì)算機(jī)來(lái)實(shí)現(xiàn)本發(fā)明。在枚舉若干裝置的設(shè)備權(quán)利要求中,可用硬件的同一項(xiàng)來(lái)體現(xiàn)這些裝置中的若干裝置。在相互不同的從屬權(quán)利要求中敘述某些措施的僅有事實(shí)并不指示這些措施的組合不能被有利地使用。在權(quán)利要求中,括號(hào)中的提及指的是實(shí)施例的圖中的參考符號(hào)或?qū)嵤├墓?,因此增加?quán)利要求的可理解性。這些提及并不是窮舉的,并且不應(yīng)理解為限制權(quán)利要求。