本發(fā)明涉及電子計(jì)算設(shè)備、環(huán)編碼設(shè)備、環(huán)解碼設(shè)備、表演算方法、電子計(jì)算方法、計(jì)算機(jī)程序以及計(jì)算機(jī)可讀介質(zhì)。
背景技術(shù):
:在白箱密碼術(shù)中以及更一般地在軟件混淆(obfuscation)中,通常在編碼值而非明文值上執(zhí)行演算。如果在編碼的值而非在明文值自身上執(zhí)行演算,混淆的軟件的逆向工程更加困難。在編碼之后,像加法或乘法那樣的常規(guī)運(yùn)算可能不再使用計(jì)算機(jī)內(nèi)置本原執(zhí)行。編碼值的簡(jiǎn)單相加在正常情況下并不導(dǎo)致這些值的相加的編碼。這同樣適用于乘法。在公式中,對(duì)于大多數(shù)x和y,;E表示編碼函數(shù)。此問(wèn)題的解決方案是引入加法(A)和乘法(M)表。所述表把兩個(gè)編碼值當(dāng)作輸入,并且產(chǎn)生一個(gè)編碼值作為對(duì)應(yīng)于加法或乘法運(yùn)算的編碼的輸出。所述表可以被定義為:。這些表允許直接在編碼值上執(zhí)行算術(shù)。使用表的混淆加法和乘法遭受至少兩個(gè)缺陷。首先,所述表可能變得相當(dāng)大。如果x和y被表示為l位,每個(gè)表需要22ll位。其次,這樣的大表可能在軟件中容易被發(fā)現(xiàn)。更壞的是,這些表可能仍然被標(biāo)識(shí)為加法或乘法運(yùn)算,即使它們被編碼了;例如憑借在編碼中保留的這些函數(shù)的屬性。例如,乘法表滿足。攻擊者可以使用此屬性和類(lèi)似屬性來(lái)猜測(cè)所述表表示哪種運(yùn)算。技術(shù)實(shí)現(xiàn)要素:將會(huì)有利的是,具有一種執(zhí)行混淆算術(shù)的改進(jìn)的方式。提供了如權(quán)利要求1中限定的一種計(jì)算設(shè)備。發(fā)明人發(fā)現(xiàn),在某些情況下,在編碼值上的乘法和加法可以使用單個(gè)表執(zhí)行,而不必將多個(gè)值編碼成單個(gè)編碼值。因?yàn)橄嗤谋肀挥糜诩臃ê统朔ǎ栽谀嫦蚬こ唐陂g將難以領(lǐng)會(huì)是加法還是乘法被執(zhí)行。因?yàn)閺耐獠坑^看時(shí)加法和乘法表現(xiàn)為相同的運(yùn)算,所以發(fā)明人把這個(gè)方法叫做“同質(zhì)(homogeneous)混淆”。即使攻擊者能夠發(fā)現(xiàn)使用的表,并且即使他能夠以某種方式算出其作為增量表的功能,他仍然不會(huì)知曉是加法還是乘法運(yùn)算被執(zhí)行。該表作用于整數(shù)列表的元素的方式對(duì)加法和乘法而言是不同的,然而這可以容易使用諸如代碼混淆、白箱實(shí)現(xiàn)方式等之類(lèi)的傳統(tǒng)混淆來(lái)隱藏。此外,使用的單個(gè)表也小于在
背景技術(shù):
中所討論的表:需要大約2ll位。即使只使用加法,混淆加法所需的表小于
背景技術(shù):
中所建議的表。本發(fā)明適用于許多不同的交換環(huán)R,盡管不是每個(gè)和每一個(gè)環(huán)都允許作為整數(shù)列表編碼。交換環(huán)是一種數(shù)學(xué)概念,其包括許多不同的常見(jiàn)數(shù)學(xué)結(jié)構(gòu),例如整數(shù)模某數(shù)字()或者多項(xiàng)式模某數(shù)字和某多項(xiàng)式()。域是交換環(huán)的特殊情況。如本文將會(huì)描述,技術(shù)人員可以驗(yàn)證給定的環(huán)是否允許混淆。例如,環(huán)元素可以被編碼為兩個(gè)整數(shù)(a,b)。可以使用增量表在該編碼上直接執(zhí)行算術(shù),該增量表將編碼的環(huán)元素映射到該編碼的環(huán)元素加增量值。例如,該表將(a,b)映射到(c,d),如果。加法和乘法二者都通過(guò)增量表的反復(fù)應(yīng)用而執(zhí)行。如本文將會(huì)更充分地討論的,存在許多其他可能性和變形。典型地對(duì)攻擊者而言將未知的是,在任意給定的實(shí)現(xiàn)方式中選擇了許多個(gè)變形中的哪一種。所述計(jì)算設(shè)備是電子設(shè)備并可以是移動(dòng)電子設(shè)備,例如移動(dòng)電話、機(jī)頂盒、計(jì)算機(jī)、智能卡等。如本文所描述的混淆算術(shù)可以應(yīng)用于范圍廣泛的實(shí)際應(yīng)用中。這樣的實(shí)際應(yīng)用包括運(yùn)行在私有硬件上的安全應(yīng)用,例如銀行業(yè)應(yīng)用等,在所述安全應(yīng)用中逆向工程將被防止。其他應(yīng)用包括其中將要防止數(shù)據(jù)的無(wú)意泄露的應(yīng)用。如果程序被誘騙釋放私有數(shù)據(jù),那么若泄露的數(shù)據(jù)被編碼的話,這不用太過(guò)擔(dān)憂?;煜阈g(shù)也可以應(yīng)用于運(yùn)行應(yīng)用的服務(wù)器。如果用戶以編碼形式發(fā)送和接收數(shù)據(jù),則私密性增強(qiáng)。一種依照本發(fā)明的方法可以作為計(jì)算機(jī)實(shí)現(xiàn)的方法在計(jì)算機(jī)上或在專(zhuān)用硬件中或在二者的組合中實(shí)現(xiàn)。用于依照本發(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ì)上的非臨時(shí)性程序代碼構(gòu)件,以用于在所述程序產(chǎn)品在計(jì)算機(jī)上執(zhí)行時(shí)執(zhí)行依照本發(fā)明的方法。在一個(gè)優(yōu)選實(shí)施例中,計(jì)算機(jī)程序包括適于當(dāng)該計(jì)算機(jī)程序在計(jì)算機(jī)上運(yùn)行時(shí)執(zhí)行依照本發(fā)明的方法的所有步驟的計(jì)算機(jī)程序代碼構(gòu)件。優(yōu)選地,計(jì)算機(jī)程序體現(xiàn)在計(jì)算機(jī)可讀介質(zhì)上。附圖說(shuō)明本發(fā)明的這些和其他方面根據(jù)下文描述的實(shí)施例而是清楚明白的并且將參照這些實(shí)施例進(jìn)行闡述。在附圖中:圖1a示意性示出計(jì)算設(shè)備100的實(shí)施例的一個(gè)示例,圖1b示意性示出環(huán)加法單元130的實(shí)施例的一個(gè)示例,圖1c示意性示出環(huán)乘法單元140的實(shí)施例的一個(gè)示例,圖2示意性示出計(jì)算設(shè)備101的實(shí)施例的一個(gè)示例,圖3示意性示出用于演算用在計(jì)算設(shè)備中的增量表的表演算設(shè)備200的實(shí)施例的一個(gè)示例,圖4示意性示出用于執(zhí)行混淆算術(shù)的計(jì)算方法30的實(shí)施例的一個(gè)示例,圖5示意性示出加法方法400的實(shí)施例的一個(gè)示例,圖6示意性示出乘法方法500的實(shí)施例的一個(gè)示例,圖7a示出具有包括依照一個(gè)實(shí)施例的計(jì)算機(jī)程序的可寫(xiě)部分的計(jì)算機(jī)可讀介質(zhì),圖7b示出依照一個(gè)實(shí)施例的處理器系統(tǒng)的示意性表示。不同圖中具有相同參考數(shù)字的項(xiàng)目具有相同的結(jié)構(gòu)特征或相同的功能,或者是相同的信號(hào)。在這樣的項(xiàng)目的功能和/或結(jié)構(gòu)已被解釋的情況下,在詳細(xì)描述中沒(méi)有必要其進(jìn)行重復(fù)解釋。具體實(shí)施方式盡管本發(fā)明可受許多不同形式的實(shí)施例的影響,但是在附圖中示出了一個(gè)或更多具體實(shí)施例并且將在本文中對(duì)其進(jìn)行詳細(xì)描述,應(yīng)當(dāng)理解的是,本公開(kāi)內(nèi)容應(yīng)被視為例示本發(fā)明的原理,而不旨在將本發(fā)明限于所示出和描述的具體實(shí)施例。在下文中,為了理解,在操作中描述了實(shí)施例的元件。然而,將會(huì)顯然的是,相應(yīng)的元件被布置成執(zhí)行被描述為它們所執(zhí)行的功能。所述電子計(jì)算設(shè)備使用出奇小的表執(zhí)行高效的算術(shù)。而且,在混淆算術(shù)的領(lǐng)域中,如果通過(guò)表執(zhí)行運(yùn)算,被認(rèn)為是有利的,因?yàn)檫@樣的運(yùn)算容易進(jìn)一步進(jìn)行混淆,例如使用傳統(tǒng)的白箱技術(shù)(參見(jiàn),例如Chow等人的“White-boxcryptographyandanAESimplementation”)。因而,有必要使用表來(lái)表達(dá)算術(shù)運(yùn)算。實(shí)施例使用比現(xiàn)有技術(shù)中所用的表更小的表實(shí)現(xiàn)加法。即使沒(méi)有諸如白箱密碼術(shù)之類(lèi)的附加混淆,電子計(jì)算設(shè)備也有助于混淆。如本文所示出,存在可以實(shí)現(xiàn)編碼和增量表的許多方式。在任意特定實(shí)施例中使用哪一種編碼是攻擊者未知的,并且因而使得觀察到的計(jì)算更難解釋。實(shí)施例允許使用相同的表執(zhí)行乘法和加法運(yùn)算。這進(jìn)一步添加到混淆,因?yàn)楦鶕?jù)使用增量表的事實(shí),可以不再確定執(zhí)行了什么操作。下面,首先討論計(jì)算設(shè)備的實(shí)施例的若干可能的架構(gòu)。接下來(lái),討論執(zhí)行混淆算術(shù)的若干可替換方式。圖1示意性示出計(jì)算設(shè)備100的實(shí)施例的一個(gè)示例。計(jì)算設(shè)備100是用于在有限交換環(huán)中執(zhí)行混淆算術(shù)的電子設(shè)備。交換環(huán)的許多示例是已知的。下面給出了兩種這樣的環(huán)的示例:整數(shù)模某數(shù)字()或者多項(xiàng)式模某數(shù)字和某多項(xiàng)式()。其他實(shí)施例可以使用其他交換環(huán)。環(huán)的元素被稱為環(huán)元素。在環(huán)元素上,定義了加法和乘法,后者被稱為環(huán)加法和環(huán)乘法。環(huán)元素可以以任何適當(dāng)?shù)男问奖硎?,如果該形式是所需要的話。例如,的元素可以表示為整?shù);的元素可以表示為多項(xiàng)式。然而,在計(jì)算設(shè)備100中,環(huán)元素被表示為整數(shù)列表。例如,環(huán)元素α在計(jì)算設(shè)備100中可以由列表(a1,a2)表示。后者甚至適用于非整數(shù)環(huán),比如多項(xiàng)式環(huán)。整數(shù)列表依照環(huán)元素與整數(shù)列表之間的某種映射對(duì)環(huán)元素進(jìn)行編碼;給定任一環(huán)元素,存在至少一個(gè)表示該環(huán)元素的整數(shù)列表,并且給定任一整數(shù)列表,存在恰好一個(gè)它表示的環(huán)元素。在實(shí)施例中,任何環(huán)元素都可以表示為整數(shù)列表。整數(shù)列表具有至少兩個(gè)元素。事實(shí)證明,如果整數(shù)列表更短,則加法和乘法運(yùn)算需要更少的步驟。相應(yīng)地,在一個(gè)實(shí)施例中,整數(shù)列表總是具有兩個(gè)元素。在主要描述中,我們將假設(shè)整數(shù)列表是整數(shù)對(duì),然而提供了具有多于兩個(gè)元素的整數(shù)列表的示例。作為一個(gè)示例,(a1,a2)可以映射到環(huán)元素(),其中u是一種特殊的環(huán)元素,被稱為基礎(chǔ)環(huán)元素。下面討論許多變形,包括使用多個(gè)基礎(chǔ)元素。然而,在主要的討論中,作為“示例編碼”,我們將假設(shè)給定的整數(shù)列表(a1,a2)映射到環(huán)元素()。在一個(gè)實(shí)施例中,整數(shù)列表中的整數(shù)是非負(fù)的。這簡(jiǎn)化了演算,但不是必需的。而且,在一個(gè)實(shí)施例中,整數(shù)列表中的整數(shù)以對(duì)基礎(chǔ)元素的次數(shù)取模來(lái)取得。基礎(chǔ)元素u的次數(shù)是使得uk=1的最小整數(shù)k。方便的是,例如通過(guò)執(zhí)行模k運(yùn)算,使整理列表中的值保持在[0,k-1]的范圍之中。計(jì)算設(shè)備100可以包括運(yùn)算數(shù)存儲(chǔ)裝置150。運(yùn)算數(shù)被作為整數(shù)列表存儲(chǔ)在運(yùn)算數(shù)存儲(chǔ)裝置150中??梢栽诖鎯?chǔ)在運(yùn)算數(shù)存儲(chǔ)裝置150中的運(yùn)算數(shù)上執(zhí)行算術(shù)。所述算術(shù)的結(jié)果可以存儲(chǔ)在運(yùn)算數(shù)存儲(chǔ)裝置150中,其中它們可以用在新的運(yùn)算中,或者可以被輸出給不同的設(shè)備,等等。計(jì)算設(shè)備100包括布置成存儲(chǔ)針對(duì)增量環(huán)元素定義的增量表T的存儲(chǔ)庫(kù)110。該增量表將輸入環(huán)元素映射到對(duì)輸出環(huán)元素編碼的輸出整數(shù)列表,使得輸出環(huán)元素等于增量環(huán)元素環(huán)加(ring-added)到輸入環(huán)元素。在一個(gè)實(shí)施例中,輸入環(huán)元素被表示為整數(shù)列表。以此方式,表T將整數(shù)列表映射到整數(shù)列表;二者依照相同的編碼,例如相同的映射。然而,存在其中輸入環(huán)元素在可替換的編碼中被表示為整數(shù)列表的實(shí)施例。在任何情況下,輸入環(huán)元素以數(shù)字形式表示,允許表將輸入環(huán)元素映射到輸出環(huán)元素。表可以以某種格式列出輸入環(huán)元素,連同關(guān)聯(lián)的輸出整數(shù)列表。該表在存儲(chǔ)庫(kù)中也可以通過(guò)省略輸入環(huán)而僅列出輸出整數(shù)列表來(lái)表示。例如,這可以在輸入環(huán)以規(guī)范格式表示的情況下進(jìn)行。例如,假設(shè)示例編碼,輸入環(huán)元素可以通過(guò)表T映射到輸出整數(shù)列表。在此情況下,輸入環(huán)元素可以表示為整數(shù)列表,使得我們可以有。后者對(duì)輸出環(huán)元素進(jìn)行編碼。輸出環(huán)元素等于增量環(huán)元素環(huán)加到輸入環(huán)元素。例如,如果增量環(huán)元素為1,那么l=k+1。在一個(gè)實(shí)施例中,增量元素可以是1,然而這不是必要的。例如,使用示例編碼,增量元素可以被選擇為ut,對(duì)于t的某個(gè)值,例如0<=t<次數(shù)(u)的任何值。增量表比
背景技術(shù):
中描述的表小得多。后者表采取兩個(gè)輸入,例如兩個(gè)編碼數(shù)字以產(chǎn)生編碼輸出。然而,表T僅采取一個(gè)編碼輸入以產(chǎn)生一個(gè)編碼輸出;增量環(huán)元素是固定的。假設(shè)所述編碼采取類(lèi)似量的空間,T的輸入空間被減小至平方根周?chē)?。這是顯著的尺寸改進(jìn)。計(jì)算設(shè)備100包括環(huán)加法單元130和環(huán)乘法單元140。計(jì)算設(shè)備100還可以包括環(huán)取反單元120。在一個(gè)實(shí)施例中,環(huán)乘法單元140可以使用加法單元130執(zhí)行加法;加法單元130可以使用取反單元120。這在圖1中已經(jīng)通過(guò)單元120、130和140之間的線指示。然而,單元可以復(fù)制;例如,加法單元130可以進(jìn)行它自己的取反,并且乘法140可以進(jìn)行它自己的加法。取反也被稱為“符號(hào)改變”。取反單元120可以接收對(duì)取反輸入環(huán)元素a編碼的取反輸入整數(shù)列表(a1,a2)。取反單元120被布置成確定對(duì)取反輸出環(huán)元素b編碼的取反輸出整數(shù)列表(b1,b2)。取反輸出環(huán)元素是取反輸入環(huán)元素的負(fù)值,例如,取反輸出環(huán)元素等于用于加法的中性環(huán)元素(0)減去取反輸入環(huán)元素。因而,b=-a。在一個(gè)實(shí)施例中,取反單元可以通過(guò)置換取反輸入整數(shù)列表來(lái)演算輸出整數(shù)列表。使用示例編碼,,輸出整數(shù)列表可以是(a2,a1)。通過(guò)置換取反可以通過(guò)改變?cè)乇粡闹凶x取的地址而在代碼中高效地實(shí)現(xiàn),并且它不必改變存儲(chǔ)器中的實(shí)際順序。在一個(gè)實(shí)施例中,取反單元可以通過(guò)向整數(shù)列表的每一個(gè)整數(shù)加上常數(shù)來(lái)演算輸出整數(shù)列表。例如,在使用使得um=-1的整數(shù)m的示例編碼中;例如輸出整數(shù)列表可以是(a1+m,a2+m)。環(huán)加法單元130被布置成接收對(duì)第一加法輸入環(huán)元素編碼的第一加法輸入整數(shù)列表(a1,a2)和對(duì)第二加法輸入環(huán)元素編碼的第二加法輸入整數(shù)列表(b1,b2)。例如,環(huán)加法單元130可以從運(yùn)算數(shù)存儲(chǔ)裝置150接收兩個(gè)運(yùn)算數(shù)。環(huán)加法單元130被布置成通過(guò)將增量表應(yīng)用到從第一和第二加法輸入整數(shù)列表確定的環(huán)元素來(lái)確定對(duì)加法輸出環(huán)元素編碼的加法輸出整數(shù)列表,該加法輸出環(huán)元素等于第一加法輸入環(huán)元素和第二加法輸入環(huán)元素的環(huán)加。在一個(gè)實(shí)施例中,整數(shù)列表到特定環(huán)元素的映射包括多個(gè)子映射,每一個(gè)子映射與整數(shù)列表的整數(shù)關(guān)聯(lián),子映射將整數(shù)映射到環(huán)元素。所述映射是應(yīng)用于關(guān)聯(lián)的整數(shù)的子映射的線性組合,例如和。子映射可以將基礎(chǔ)元素提升至由關(guān)聯(lián)的整數(shù)確定的冪。例如,在示例編碼中,(a1,a2)可以被說(shuō)成子映射和子映射的和。圖1b圖示了加法單元130的一個(gè)實(shí)施例。加法單元130接收第一加法輸入整數(shù)列表131和第二加法輸入整數(shù)列表132。加法單元130包括中間加法單元134,其被布置成將從第二加法輸入整數(shù)列表132的整數(shù)獲得的環(huán)元素迭代地加到第一加法輸入環(huán)元素。例如,中間加法單元132可以增加中間和133,其被初始化為第一整數(shù)列表元素。該加法涉及來(lái)自存儲(chǔ)庫(kù)110的增量表的應(yīng)用。環(huán)乘法單元140被布置成接收對(duì)第一乘法輸入環(huán)元素編碼的第一乘法輸入整數(shù)列表(r1,r2)和對(duì)第二乘法輸入環(huán)元素編碼的第二乘法輸入整數(shù)列表(s1,s2)。例如,乘法單元140可以從運(yùn)算數(shù)存儲(chǔ)裝置150接收兩個(gè)運(yùn)算數(shù)。環(huán)乘法單元140被布置成通過(guò)將增量表應(yīng)用到從第一和第二乘法輸入整數(shù)列表確定的環(huán)元素來(lái)確定對(duì)乘法輸出環(huán)元素編碼的乘法輸出整數(shù)列表,該乘法輸出環(huán)元素等于第一乘法輸入環(huán)元素和第二乘法輸入環(huán)元素的環(huán)乘。圖1c示出乘法單元140的一個(gè)可能的實(shí)施例。乘法單元140接收第一乘法輸入整數(shù)列表141和第二乘法輸入整數(shù)列表142。乘法單元140包括中間乘法單元144,其被布置成從第一和第二乘法輸入整數(shù)列表141、142確定第一中間乘法整數(shù)列表145(t1,t2)和第二中間乘法整數(shù)列表146(u1,u2),其分別對(duì)第一和第二中間乘法環(huán)元素編碼。乘法單元140被布置成通過(guò)環(huán)加法單元130加上第一145和第二中間乘法整數(shù)列表146。確定中間整數(shù)列表可以涉及在整數(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í)現(xiàn)為編碼設(shè)備和/或解碼設(shè)備160。環(huán)編碼單元170可以包括布置成存儲(chǔ)針對(duì)一個(gè)或多個(gè)基礎(chǔ)環(huán)元素(u)定義的編碼表的存儲(chǔ)庫(kù)172,該編碼表將環(huán)元素(x)映射到整數(shù)列表((a,b)),使得環(huán)元素等于一個(gè)或多個(gè)基礎(chǔ)環(huán)元素的冪的線性組合(),其中所述冪具有由整數(shù)列表確定的指數(shù)。編碼單元170可以在算子存儲(chǔ)裝置150中存儲(chǔ)編碼的環(huán)元素。編碼單元170允許系統(tǒng)利用明文信息工作。環(huán)解碼單元160被布置成針對(duì)一個(gè)或多個(gè)基礎(chǔ)環(huán)元素(u)確定環(huán)元素(x),使得該環(huán)元素等于一個(gè)或多個(gè)基礎(chǔ)環(huán)元素的冪的線性組合(),其中所述冪具有由整數(shù)列表確定的指數(shù)。例如,解碼單元160可以包括存儲(chǔ)將整數(shù)列表映射到環(huán)元素的解碼表的存儲(chǔ)裝置。例如,解碼單元160可以包括演算單元以用于演算所述冪及其線性組合。許多有趣的實(shí)施例省略了編碼和解碼單元160和170中的一個(gè)或二者。例如,計(jì)算設(shè)備100可以被配置成通過(guò)計(jì)算機(jī)網(wǎng)絡(luò)(比如因特網(wǎng))接收編碼信息?;煜?jì)算設(shè)備100在其上運(yùn)行的系統(tǒng)(例如執(zhí)行混淆計(jì)算軟件的計(jì)算機(jī))的所有者可能不知曉用于輸入信息的編碼,也不知道由系統(tǒng)100輸出(例如通過(guò)計(jì)算機(jī)網(wǎng)絡(luò)傳輸回來(lái))的信息的編碼。相應(yīng)地,即使在云中執(zhí)行計(jì)算,信息的所有人具有他的信息是安全的某種保證。使用密碼術(shù)(比如加密)在編碼形式的信息上操作典型地是不可能的。即使表系統(tǒng)如
背景技術(shù):
中概述的那樣使用,這要求雙重表。典型地,計(jì)算單元100包括微處理器(未示出),其執(zhí)行設(shè)備100處存儲(chǔ)的適當(dāng)?shù)能浖?;例如,該軟件可能已?jīng)被下載的和/或存儲(chǔ)在對(duì)應(yīng)的存儲(chǔ)器中,例如諸如RAM之類(lèi)的易失性存儲(chǔ)器或諸如閃存之類(lèi)的非易失性存儲(chǔ)器(未示出)。可替換地,設(shè)備100可以整體地或部分地在可編程邏輯中實(shí)現(xiàn),例如實(shí)現(xiàn)為現(xiàn)場(chǎng)可編程門(mén)陣列(FPGA)。設(shè)備100可以整體地或部分地實(shí)現(xiàn)為所謂的專(zhuān)用集成電路(ASIC),即針對(duì)其特定用途定制的集成電路(IC)。在一個(gè)實(shí)施例中,電子計(jì)算設(shè)備包括環(huán)加法電路和環(huán)乘法電路,其被布置成執(zhí)行對(duì)應(yīng)單元的功能。計(jì)算設(shè)備還可以包括取反電路。該電路可以是例如通過(guò)以硬件描述語(yǔ)言(比如混合語(yǔ)言(Verilog)和VHDL)描述功能而獲得的集成電路,比如CMOS。這些電路可以是處理器電路和存儲(chǔ)電路,該處理器電路執(zhí)行存儲(chǔ)電路中電子地表示的指令。這些電路也可以是FPGA、ASIC等等。表存儲(chǔ)裝置110和運(yùn)算數(shù)存儲(chǔ)裝置150可以實(shí)現(xiàn)為電子存儲(chǔ)庫(kù),例如存儲(chǔ)器。兩種存儲(chǔ)裝置可以是相同存儲(chǔ)器的部分,但是它們可以是不同的存儲(chǔ)器。表存儲(chǔ)裝置110可以非易失性、不可寫(xiě)的,比如ROM,或?qū)懸淮巫x許多次(WORM)存儲(chǔ)器。運(yùn)算數(shù)存儲(chǔ)裝置150可以是易失性或非易失性可寫(xiě)存儲(chǔ)器,比如閃存或RAM。圖2示意性示出計(jì)算設(shè)備101的實(shí)施例的一個(gè)示例。計(jì)算設(shè)備101是計(jì)算設(shè)備100的改善。在一個(gè)實(shí)施例中,計(jì)算設(shè)備101包括多個(gè)環(huán)加法單元、多個(gè)乘法單元以及可選地多個(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í),這些單元不需要超過(guò)數(shù)百個(gè)低水平計(jì)算機(jī)指令。特別地,加法和/或乘法單元的副本可以用于計(jì)算機(jī)程序中所需的每一個(gè)乘法或加法。這允許傳統(tǒng)的混淆技術(shù)。作為一個(gè)示例,圖2示出如何可以使用混淆算術(shù)演算多項(xiàng)式ax2+bx+c。多個(gè)算術(shù)單元的運(yùn)算(例如,加法、乘法、取反)可以以其數(shù)據(jù)相關(guān)性所允許的任何順序來(lái)排序。例如,運(yùn)算140.3可以插入在排序140.1、140.2、130.1和130.2中的130.1之前的任一點(diǎn)處。而且,后續(xù)的乘法或加法的排序可以顛倒。因而,像圖2那樣的圖可以在用于軟件程序的線性排序中以許多方式來(lái)解釋。不需要將各單元嚴(yán)格地分離;用于第一單元的指令可以穿插有用于另一單元的指令。圖3示意性示出用于演算用在計(jì)算設(shè)備中的增量表的表演算設(shè)備200的實(shí)施例的一個(gè)示例。增量表可以用在像計(jì)算設(shè)備100那樣的設(shè)備中。增量表可以存儲(chǔ)在非暫時(shí)性存儲(chǔ)設(shè)備上,例如硬盤(pán)、非易失性存儲(chǔ)器芯片等。表演算設(shè)備200包括被布置成構(gòu)造增量表的表創(chuàng)建單元210。例如,表創(chuàng)建單元可以被布置成:-反復(fù)地選擇輸入環(huán)元素,例如x,-確定等于增量環(huán)元素環(huán)加到輸入環(huán)元素的輸出環(huán)元素。例如,如果增量值為1,則y=x+1。-確定針對(duì)輸出環(huán)元素編碼的輸出整數(shù)列表。例如,表演算設(shè)備200可以包括像編碼單元170那樣的編碼單元。-向?qū)⑤斎氕h(huán)元素映射到輸出整數(shù)列表的增量表添加條目。這些步驟可以被執(zhí)行,直到所有環(huán)元素都被映射到整數(shù)列表。在一些實(shí)施例中,元素可以被跳過(guò),構(gòu)建部分增量表;例如,可能從上下文得知某些環(huán)元素將不會(huì)出現(xiàn)。給定環(huán)R、潛在的基礎(chǔ)環(huán)元素u、編碼(比如示例編碼)和整數(shù)列表長(zhǎng)度(比如2),可以生成如下給出的解碼表。令k為u的次數(shù)。-生成所有整數(shù)列表,例如通過(guò)生成整數(shù)列表長(zhǎng)度的所有整數(shù)列表且允許從0直到k(但不包括k)的所有整數(shù)用于列表中的每一個(gè)位置。例如,生成:(0,0),(0,1),(1,0),(1,1),(0,2),(1,2),(2,2)(2,0),(2,1),(0,3),...等等-對(duì)于每一個(gè)所生成的整數(shù)列表,演算通過(guò)整數(shù)列表編碼的環(huán)元素,并且向與將整數(shù)列表關(guān)聯(lián)到解碼的解碼表添加條目。盡管解碼可能使用或可能不使用解碼表,但是這樣的表也是有用的,因?yàn)榫幋a表可以從解碼表生成,例如通過(guò)對(duì)用于環(huán)元素的表進(jìn)行分類(lèi)來(lái)生成。可能發(fā)生的是,環(huán)元素具有多個(gè)編碼。例如,環(huán)元素0(用于加法的中性元素)可以在示例編碼中針對(duì)任意a而表示為(a,a)。這樣的多個(gè)編碼可以從表中移除,例如通過(guò)刪除用于給定環(huán)元素的多個(gè)條目中除了1之外的所有條目;或者通過(guò)在表中留下所述多個(gè)編碼并且使用編碼表來(lái)對(duì)多個(gè)條目中隨機(jī)的一個(gè)條目進(jìn)行編碼。構(gòu)造解碼或編碼表還可以用于找出環(huán)元素u是否是基礎(chǔ)環(huán)元素。如果構(gòu)造編碼表失敗,因?yàn)槭聦?shí)證明一些環(huán)元素不具有編碼,那么u不是基礎(chǔ)環(huán)元素。下面呈現(xiàn)編碼、增量表、環(huán)加法方法以及環(huán)乘法方法的若干實(shí)施例。計(jì)算設(shè)備100的取反、加法和乘法單元可以被配置用于這些實(shí)施例中任意一個(gè)。所有示例適用于任何交換環(huán),特別是和。本文中,n是正整數(shù)。而且,非常優(yōu)選的是,交換環(huán)的任何元素可以在選擇的編碼中表示。不是所有交換環(huán)都允許所有元素在給定的編碼中表示,例如表示為給定類(lèi)型的整數(shù)列表表示。給定交換環(huán)R,我們將假定如果R中的任何元素可以使用給定的編碼類(lèi)型表示為整數(shù)列表,則它允許完全同質(zhì)的混淆。本領(lǐng)域技術(shù)人員可以驗(yàn)證,在給定編碼的情況下,給定的交換環(huán)是否允許完全同質(zhì)的混淆,例如通過(guò)生成所有許可的編碼并驗(yàn)證它們一起表示給定環(huán)的所有元素。對(duì)于某些應(yīng)用,可能允許的是,所述編碼具有一些間隙。這可能具有如下后果:算術(shù)無(wú)法在那些間隙上執(zhí)行,至少不使用混淆整數(shù)列表編碼。下面進(jìn)一步呈現(xiàn)允許特定類(lèi)型的編碼的交換環(huán)的特定示例。下面首先給出示例編碼的描述。存在許多類(lèi)型的編碼,其共同之處在于環(huán)元素可以表示為整數(shù)的列表。這些整數(shù)不是環(huán)元素,例如即使環(huán)不是整數(shù)環(huán)(比如多項(xiàng)式環(huán)),則盡管如此元素可以表示為整數(shù)列表。所使用的編碼、給定的整數(shù)列表如何映射到環(huán)元素被稱為編碼。典型地,整數(shù)列表將總是具有相同的長(zhǎng)度,然而這不是必需的。一般地,隨著編碼允許更多類(lèi)型的整數(shù)列表(例如更長(zhǎng)列表),變得更有可能的是給定的環(huán)元素可以以不同方式被編碼為整數(shù)列表。給定具有示例編碼的交換環(huán)R,存在特殊元素u,使得對(duì)于某些整數(shù)a1和a2,R中任何元素a可以被寫(xiě)作。我們將這樣的特殊環(huán)元素稱為基礎(chǔ)環(huán)元素。不是所有交換環(huán)都可以以這種方式進(jìn)行編碼,而是它們中的足夠多對(duì)于編碼將是有用的。整數(shù)a1和a2自身不是環(huán)R的環(huán)元素;它們是基于對(duì)基礎(chǔ)元素的次數(shù)取模而運(yùn)算的整數(shù)。注意到,環(huán)元素a等于基礎(chǔ)元素u的冪的線性組合,即的線性組合;在此情況下,該線性組合通過(guò)將所述冪與+1或-1相乘并且將它們求和而獲得,更特別地,通過(guò)從第一冪減去第二冪而獲得。計(jì)算設(shè)備在以上述方式編碼的環(huán)元素上運(yùn)算。加法、取反和乘法單元可以在這個(gè)編碼中的環(huán)元素上運(yùn)算。增量表T在加法和乘法運(yùn)算二者中發(fā)揮中心作用。增量表映射輸入環(huán)元素,在此情況下輸入環(huán)元素可以表示為整數(shù)列表。例如,給定表示輸入環(huán)元素的輸入整數(shù)列表(k1,k2),表T將此映射到輸出整數(shù)列表,例如,其對(duì)輸出環(huán)元素。輸出環(huán)元素等于增量環(huán)元素環(huán)加到輸入環(huán)元素。在此示例中,增量元素可以被取為1,即,為用于環(huán)乘法的單位元素的環(huán)元素;在此情況下,l=k+1。方便的是,該表可以直接應(yīng)用到使用相同編碼的環(huán)元素,并且因而其可以應(yīng)用于具有整數(shù)列表表示的環(huán)元素。盡管如此,存在其中表應(yīng)用于在可替換的編碼中的環(huán)元素的實(shí)施例。該可替換編碼也可以是整數(shù)列表,但是具有可替換類(lèi)型。再者,增量環(huán)元素不必是1。下面描述運(yùn)算、取反、加法和乘法。取反。給定表示取反輸入環(huán)元素的取反輸入整數(shù)列表,可以通過(guò)置換整數(shù)列表、在此情況下通過(guò)顛倒順序來(lái)獲得取反輸出整數(shù)列表。取反輸出整數(shù)列表可以是。假設(shè)存在m,使得um=-1(其在許多環(huán)R上發(fā)生),取反可以可替換地通過(guò)將常數(shù)(例如m)加到整數(shù)列表的每一個(gè)整數(shù)而獲得。在后者的情況下,取反輸出整數(shù)列表可以是。這是起作用的,因?yàn)椤U麛?shù)列表中的算術(shù)優(yōu)選地以對(duì)基礎(chǔ)元素的次數(shù)取模來(lái)進(jìn)行。這里,整數(shù)列表的整數(shù)對(duì)應(yīng)于基礎(chǔ)元素的指數(shù),因此以對(duì)基礎(chǔ)元素的次數(shù)取模同余的整數(shù)對(duì)相同的環(huán)元素編碼。加法。為了將接收的對(duì)第一加法輸入環(huán)元素編碼的第一加法輸入整數(shù)列表與對(duì)第二加法輸入環(huán)元素編碼的第二加法輸入整數(shù)列表相加,首先確定對(duì)中間加法環(huán)元素c編碼的中間加法整數(shù)列表()。環(huán)元素c可以是第一加法輸入環(huán)元素a加上基礎(chǔ)元素u的從第二加法輸入整數(shù)列表確定的冪,特別是第二加法輸入整數(shù)列表的第一個(gè)整數(shù)。在此示例中,我們可以有。為了演算后者,我們觀察到。括號(hào)中的項(xiàng)可以使用增量表在編碼中重寫(xiě)。通過(guò)增量表針對(duì)環(huán)元素的第一應(yīng)用,獲得了元素=+1。例如,通過(guò)。然后我們有,和,從而確定中間加法整數(shù)列表()可以進(jìn)一步包括將從第二加法輸入整數(shù)列表確定的整數(shù)加到源自第一應(yīng)用的整數(shù)列表中的整數(shù)。將加到整數(shù)列表表示中的環(huán)元素(在此情況下加到a)有時(shí)被稱為正約簡(jiǎn)步驟。因而,加法單元已經(jīng)獲得中間加法環(huán)元素,作為整數(shù)列表。該中間加法環(huán)元素因而是一個(gè)或多個(gè)基礎(chǔ)元素的冪的線性組合,其中所述冪從第一和第二加法輸入整數(shù)列表確定。在此情況下,增量表被應(yīng)用于環(huán)元素,其通過(guò)一個(gè)或多個(gè)基礎(chǔ)元素(u)提升至以第一整數(shù)列表的第一整數(shù)(a1)減去第二整數(shù)列表的第一整數(shù)(b1)為指數(shù)的冪減去基礎(chǔ)環(huán)元素(u)提升至以第一整數(shù)列表的第二整數(shù)(a2)減去第二整數(shù)列表的第一整數(shù)(b1)為指數(shù)的冪而形成。在此示例中,加法輸出整數(shù)列表可以通過(guò)增量表針對(duì)從中間加法整數(shù)列表和第二加法輸入整數(shù)列表確定的環(huán)元素的第二應(yīng)用來(lái)確定。這可以包括演算中間加法環(huán)元素c的和并減去基礎(chǔ)元素提升至從第二加法輸入整數(shù)列表確定的冪(例如第二加法輸入整數(shù)列表的第二整數(shù)b2):。這可以在增量表的第二應(yīng)用之前通過(guò)對(duì)由中間加法整數(shù)列表表示的中間加法環(huán)元素取反而實(shí)現(xiàn)。c的取反可以如上文所指示的那樣進(jìn)行。作為示例,我們使用置換,但是相同的運(yùn)算可以通過(guò)將常數(shù)加到指數(shù)來(lái)執(zhí)行。在取反之后,所述和可以使用加(而非減)基礎(chǔ)元素提升至從第二加法輸入整數(shù)列表確定的冪:。后者運(yùn)算具有與上文相同的類(lèi)型,并且可以以與加上相同的方式通過(guò)表應(yīng)用來(lái)執(zhí)行。在此之后,結(jié)果再次被取反。該完全加法可以使用相同增量表T的兩次取反和兩個(gè)表應(yīng)用。從整數(shù)列表表示中的環(huán)元素(在此情況下從c)減去有時(shí)被稱為取反約簡(jiǎn)步驟。取反約簡(jiǎn)步驟可以通過(guò)取反、執(zhí)行正約簡(jiǎn)步驟以及再次取反來(lái)執(zhí)行。乘法。為了使接收的對(duì)第一乘法輸入環(huán)元素編碼的第一乘法輸入整數(shù)列表與對(duì)第二乘法輸入環(huán)元素編碼的第二乘法輸入整數(shù)列表()相乘,確定第一中間乘法整數(shù)列表和第二中間乘法整數(shù)列表。從第一和第二中間元素確定對(duì)乘法輸出環(huán)元素編碼的乘法輸出整數(shù)列表。在其他實(shí)施例中,可能存在超過(guò)兩個(gè)中間乘法整數(shù)列表。我們有,。在展開(kāi)乘積中的關(guān)于兩項(xiàng)t和u分開(kāi)各項(xiàng)可以以不同方式進(jìn)行,例如,分開(kāi)為。因而,為了使表示為整數(shù)列表的兩個(gè)環(huán)元素相乘,它們可以被變換成可以被相加的兩個(gè)新的整數(shù)列表以獲得該乘法的答案。該加法可以如上文所述那樣進(jìn)行。例如,乘法單元可以演算中間整數(shù)列表并且將它們發(fā)送至乘法單元。例如,第一中間乘法整數(shù)列表的第一整數(shù)t1可以包括第一乘法輸入整數(shù)列表的第一整數(shù)r1加上第二乘法輸入整數(shù)列表的第一整數(shù)s1,并且第一中間乘法整數(shù)列表的第二整數(shù)t2可以包括第一乘法輸入整數(shù)列表的第一整數(shù)r1加上第二乘法輸入整數(shù)列表的第二整數(shù)s2,;第二中間乘法整數(shù)列表的第一整數(shù)u1可以包括第一乘法輸入整數(shù)列表的第二整數(shù)r2加上第二乘法輸入整數(shù)列表的第二整數(shù)s2,并且第二中間乘法整數(shù)列表的第二整數(shù)u2可以包括第一乘法輸入整數(shù)列表的第二整數(shù)r2加上第二乘法輸入整數(shù)列表的第一整數(shù)s1,。在一個(gè)實(shí)施例中,例如在剛剛公開(kāi)的示例中,算術(shù)在整數(shù)列表上執(zhí)行,環(huán)元素不需要作為某種自然表示的環(huán)元素被計(jì)算?,F(xiàn)在,討論若干變形。許多變形是獨(dú)立的,例如變形的編碼可以與執(zhí)行加法的變形組合。通過(guò)在整數(shù)列表中執(zhí)行計(jì)算(例如對(duì)應(yīng)于等)時(shí)的混淆算術(shù),所述值可以以對(duì)u的次數(shù)取模進(jìn)行約簡(jiǎn)。例如,如果u的次數(shù)為30,則所有演算可以以對(duì)30取模來(lái)執(zhí)行。增量值。增量值不必是1。存在至少兩種使用不同增量值的方式。首先,等式可以被修改成。這意味著,可以構(gòu)造加上值ut的增量表。此增量表被應(yīng)用于相同的整數(shù)列表,除了加上整數(shù)t之外。在增量表的第一應(yīng)用之后,加上數(shù)字b1-t而非b1。改變?cè)隽恐档牧硪环N方式是取R的兩個(gè)元素g和p,使得環(huán)中的g的反復(fù)相加給出p。例如,存在整數(shù)h,使得。假設(shè)存在具有增量值p的增量表Tp,例如,或。增量表Tg可以針對(duì)作為增量值的g構(gòu)造。表Tg可以被應(yīng)用h次以獲得與直接應(yīng)用Tp相同的效果。使用具有不同增量值的不同增量表甚至可以在單個(gè)實(shí)施例中組合,例如以增強(qiáng)混淆。后者的構(gòu)造具有以下優(yōu)點(diǎn):多個(gè)增量表可以組合,而不改變后面的加法演算。增量表的構(gòu)造也可以變化。例如,返回到用于中間加法環(huán)元素的等式,但是取代因式分解為的是,進(jìn)行下面的觀察:。使用此公式,可以針對(duì)增量值-1構(gòu)造增量表。此類(lèi)型的增量表被應(yīng)用于環(huán)元素。此環(huán)元素沒(méi)有示例編碼。盡管如此,該環(huán)元素可以表示為整數(shù)列表,例如表示為(a1-a2,b1-a2),使得此增量表取整數(shù)列表作為輸入并且產(chǎn)生作為輸出的整數(shù)列表。然而,不同于先前的示例,該輸入整數(shù)列表具有與輸出編碼不同的編碼。而且,盡管非常優(yōu)選的是到加法單元的輸入中使用的編碼沒(méi)有間隙,即任何環(huán)元素可以在此編碼中表示,但是并不需要此增量表的此可替換輸入編碼沒(méi)有間隙;需要表示為表輸入的所有元素可以通過(guò)構(gòu)造表示。在將增量表應(yīng)用到環(huán)元素,例如表示為整數(shù)列表(a1-a2,b1-a2),整數(shù)a2被加到增量表的輸出的兩個(gè)元素。結(jié)果是如上文所定義的中間值c。為了執(zhí)行第二表應(yīng)用,可以使用與上文相同的構(gòu)造:取反、使用此可替換增量表加、再次取反。使用上文所指示的構(gòu)造,增量值可以從-1變化到其他值。將增量表應(yīng)用到環(huán)元素具有明顯優(yōu)點(diǎn),表達(dá)式是對(duì)稱的,從而,使用整數(shù)列表表達(dá)式為輸入值。這進(jìn)而允許以圧縮形式存儲(chǔ)增量表,該表的大約一半不需要存儲(chǔ)。例如可能僅在時(shí)存儲(chǔ)。此方法的輕微的潛在缺點(diǎn)是中間整數(shù)列表使用不同的編碼。作為另外的變形,增量表也可以適用于。針對(duì)示例編碼說(shuō)明的原理可以應(yīng)用于若干可替換編碼。第一可替換編碼是使用編碼將環(huán)元素a編碼為整數(shù)列表。具有基礎(chǔ)環(huán)元素u以使得任何環(huán)元素可以以此方式編碼的環(huán)被說(shuō)成允許正混淆算術(shù)。示例編碼將被稱為負(fù)混淆算術(shù)??梢栽跀?shù)學(xué)上證明,對(duì)于允許正混淆算術(shù)的具有基礎(chǔ)環(huán)元素u的任何環(huán),存在整數(shù)m,使得。而且,當(dāng)且僅當(dāng)這樣的值m存在時(shí),允許負(fù)混淆算術(shù)的環(huán)允許正混淆算術(shù)。允許正混淆算術(shù)的任何環(huán)也允許負(fù)混淆算術(shù),盡管反之不成立。正混淆算術(shù)很大程度上遵循與上文概述的針對(duì)負(fù)混淆算術(shù)相同的線(line)。簡(jiǎn)言之,整數(shù)列表的符號(hào)的改變可以通過(guò)將值m加到整數(shù)列表中的所有整數(shù)來(lái)完成。給定加法輸入和,該加法可以通過(guò)演算中間者來(lái)執(zhí)行,例如通過(guò)來(lái)執(zhí)行。增量表適用于,其中增量值為1。正約簡(jiǎn)可以應(yīng)用兩次,兩次都針對(duì)和,沒(méi)有負(fù)約簡(jiǎn)是必需的。這簡(jiǎn)化了加法。通過(guò)對(duì)u的不同冪進(jìn)行因式分解,增量表的構(gòu)造可以如上文所指示變化。增量表可以如上文所示變化。正混淆算術(shù)具有以下優(yōu)點(diǎn):增量表總是對(duì)稱的,并且可以以壓縮形式存儲(chǔ)。正混淆的一個(gè)缺點(diǎn)是較少的環(huán)允許此類(lèi)型的編碼。迄今為止給定的編碼可以可選地乘以恒定環(huán)元素w=uv(對(duì)于某個(gè)v)。因而,整數(shù)列表可以表示環(huán)元素。取反步驟不變。正約簡(jiǎn)步驟變成。增量表可以使用w作為增量值,并且應(yīng)用到,其具有相同的編碼類(lèi)型。負(fù)約簡(jiǎn)步驟可以從如上文所指示的正約簡(jiǎn)步驟導(dǎo)出。所述乘法可以使用使(其被表示為整數(shù)列表和整數(shù)列表)相乘。一種另外的可替換編碼通過(guò)給出或通過(guò)乘以常數(shù)?給出。可以證明,對(duì)于允許負(fù)混淆算術(shù)的具有含有奇數(shù)次數(shù)的基礎(chǔ)元素u的環(huán),任何環(huán)元素x可以被寫(xiě)作。這改變了編碼,例如從整數(shù)列表到環(huán)元素的映射。如果環(huán)具有負(fù)混淆,則它也允許這種表示,假如基礎(chǔ)環(huán)元素具有奇數(shù)次數(shù)。加法和乘法步驟可以相應(yīng)地適應(yīng)于不同的編碼。例如,給定編碼形式的數(shù)字,可以演算和中的和,使得,例如通過(guò)以對(duì)u的次數(shù)取模演算和以對(duì)u的次數(shù)取模來(lái)演算。使用后者的整數(shù),可以使用如上文那樣的加法和乘法。我們?yōu)楂@得雙曲線表示而做過(guò)的事情可以被概括為任何種類(lèi)的線性變換,并且如果變換可能是可逆的,則新的表示等效于原始表示。假定我們有表示,以及以矩陣形式寫(xiě)的關(guān)系:如果變換具有行列式,則a3和a4的表示等效于其他,其中為環(huán)中的單元;k為環(huán)R中的u的次數(shù)。當(dāng)且僅當(dāng)時(shí),這是成立的。雙曲線表示是一個(gè)示例(包括與?相乘)并且要求k為奇數(shù),因?yàn)樵诖饲闆r下,所述變換的行列式為2(或-2)。我們將利用另一個(gè)示例解釋所述方法??紤]環(huán)并取u=8。此元素具有次數(shù)k=13,并且我們知曉中的所有元素對(duì)某些指數(shù)而言可以被寫(xiě)成差??紤]變換。行列式為5模13,所以該矩陣具有逆;其為。我們知道,對(duì)于中的每一個(gè)x,我們可以找到和,使得,但是使用此變換,我們直接推斷出對(duì)于所有x,我們可以找到和,使得。這表明表示的大類(lèi)是等效的。線性變換可以推廣到仿射變換,如果我們包括兩個(gè)加法常數(shù)r、s,使得。如果線性編碼M可以取逆,此變換可以取逆。整數(shù)列表中整數(shù)的數(shù)量。在迄今所討論的示例中,整數(shù)列表中元素的數(shù)量總是2。此數(shù)量具有優(yōu)勢(shì),即它減少了演算步驟的數(shù)量。另一方面,允許在整數(shù)列表中的更多元素?cái)U(kuò)大了允許混淆的環(huán)的數(shù)量。下面的示例考慮每列表三個(gè)整數(shù),但是更多是可能的且工作類(lèi)似??紤]分別對(duì)元素和編碼的第一整數(shù)列表和第二整數(shù)列表。取反可以通過(guò)將常數(shù)m加到列表中的整數(shù)來(lái)進(jìn)行。加法可以通過(guò)增量表針對(duì)第二整數(shù)列表中的每一個(gè)整數(shù)的應(yīng)用來(lái)進(jìn)行,在此情況下應(yīng)用三次。第一中間加法整數(shù)列表可以從演算。在此情況下,增量值為1并且增量表適用于。為了相乘,形成與第二整數(shù)列表中相同數(shù)量的中間乘法整數(shù)列表,例如:),,。多個(gè)不同的基礎(chǔ)環(huán)元素。考慮兩個(gè)具有指數(shù)的基礎(chǔ)元素u和v,使得且。整數(shù)列表對(duì)環(huán)元素編碼;對(duì)類(lèi)似。取反通過(guò)將映射到獲得。正約簡(jiǎn)步驟=(。增量值為1,且該表適用于整數(shù)列表。負(fù)約簡(jiǎn)可以使用取反而被簡(jiǎn)化為正約簡(jiǎn)。乘法可以簡(jiǎn)化為加法。下面給出用于允許負(fù)和/或正混淆的環(huán)的示例。環(huán)R可以是整數(shù)環(huán),其中模數(shù)為n。例如,n可以是13,其中基礎(chǔ)環(huán)元素u=4。此元素具有次數(shù)6。下面,使用示例編碼將所有環(huán)元素0-6編碼為整數(shù)列表。注意到,這里所有的元素具有多個(gè)編碼。對(duì)于所列出的第一編碼,給出了映射示例,該映射示例展示了在給定整數(shù)列表情況下如何可以找到對(duì)應(yīng)的環(huán)元素。環(huán)元素7-12可以被發(fā)現(xiàn)是對(duì)環(huán)元素1-6取反。環(huán)元素整數(shù)列表映射示例0(x,x),對(duì)于任意0<=x<64x-4x1(1,2),(5,4)41-422(0,3),(2,0),(3,5)40-433(1,0),(3,4)41-404(0,5),(2,3)40-455(0,4),(1,3),(4,1)40-446(2,5),(4,2),(5,1)42-45此示例也允許正混淆,在此環(huán)中為43=-1。允許負(fù)混淆的n和u的其他值為:n=151,u=2;n=87,u=20;n=79;u=8等等。發(fā)明人已經(jīng)發(fā)現(xiàn)允許負(fù)和/或正編碼的環(huán)的大量實(shí)例。注意到,許多變形是可從給定的負(fù)和/或正編碼導(dǎo)出的,如本文所描述。環(huán)R可以是多項(xiàng)式環(huán),對(duì)于多項(xiàng)式f以及模數(shù)n。多項(xiàng)式不需要是不可約的。如果f不是不可約的,我們得到不是域的交換環(huán)。事實(shí)證明,任何交換多項(xiàng)式環(huán)R允許混淆。例如,給出若干域域F(2^6)此域與F2[x]/(x^6+x^4+x^3+x+1)同構(gòu)?;鵸=x^3具有次數(shù)21。域F(2^8)此域與F2[x]/(x^8+x^4+x^3+x^2+1)同構(gòu)。基u=x^3具有次數(shù)85?;鵸=x+1具有次數(shù)51。域F(2^10)此域與F2[x]/(x^10+x^6+x^5+x^3+x^2+x+1)同構(gòu)?;鵸=x^3具有次數(shù)341?;鵸=x^7+x^6+x^4+x^3+x^2+x具有次數(shù)93。域F(2^12)此域與F2[x]/(x^12+x^7+x^6+x^5+x^3+x+1)同構(gòu)?;鵸=x^3具有次數(shù)1365?;鵸=x^5具有次數(shù)819?;鵸=x^7具有次數(shù)585?;鵸=x^9具有次數(shù)455?;鵸=x^8+x^7+x^6+x^4+x^2+x具有次數(shù)315.基u=x^10+x^9+x^8+x^6+x^4+x^3具有次數(shù)273。基u=x^11+x^10+x^7+x^5+x^3+x^2+x+1具有次數(shù)195。圖4示意性示出用于在交換環(huán)(例如)中執(zhí)行混淆算術(shù)的計(jì)算方法300的實(shí)施例的一個(gè)示例,該環(huán)具有有限數(shù)量的環(huán)元素,在環(huán)元素上定義了環(huán)加法和環(huán)乘法,該計(jì)算方法在對(duì)環(huán)元素()編碼的整數(shù)列表()上操作,整數(shù)列表包括至少兩個(gè)整數(shù)。該計(jì)算方法包括:-存儲(chǔ)針對(duì)增量環(huán)元素(1;ut)定義的增量表(T),該增量表將輸入環(huán)元素()映射到對(duì)輸出環(huán)元素()編碼的輸出整數(shù)列表(),使得輸出環(huán)元素等于增量元素環(huán)加到輸入環(huán)元素(l=k+1),-環(huán)加,該環(huán)加包括:-接收310對(duì)第一加法輸入環(huán)元素編碼的第一加法輸入整數(shù)列表()和對(duì)第二加法輸入環(huán)元素編碼的第二加法輸入整數(shù)列表(),-通過(guò)將增量表應(yīng)用到從第一和第二加法輸入整數(shù)列表確定的環(huán)元素來(lái)確定320對(duì)加法輸出環(huán)元素編碼的加法輸出整數(shù)列表,該加法輸出環(huán)元素等于第一加法輸入環(huán)元素和第二加法輸入環(huán)元素的環(huán)加,-環(huán)乘,該環(huán)乘包括:-接收330對(duì)第一乘法輸入環(huán)元素編碼的第一乘法輸入整數(shù)列表()和對(duì)第二乘法輸入環(huán)元素編碼的第二乘法輸入整數(shù)列表(),-通過(guò)將增量表應(yīng)用到從第一和第二乘法輸入整數(shù)列表確定的環(huán)元素來(lái)確定340對(duì)乘法輸出環(huán)元素編碼的乘法輸出整數(shù)列表,該乘法輸出環(huán)元素等于第一乘法輸入環(huán)元素和第二乘法輸入環(huán)元素的環(huán)乘。圖5示意性示出加法方法400的實(shí)施例的一個(gè)示例,該加法方法可以用在設(shè)備100或用在方法300中等等。此示例使用示例編碼。該方法可以適應(yīng)于其他編碼。可以應(yīng)用本文描述的所有變形;此示例使用增量值1并且增量表通過(guò)因式分解出構(gòu)造。方法400包括接收加法運(yùn)算數(shù)410。這可以包括接收410第一加法輸入整數(shù)列表,例如,以及接收420第二加法輸入整數(shù)列表,例如。方法400進(jìn)一步包括確定420中間加法整數(shù)列表,例如。例如,這可以包括將增量表應(yīng)用到從第一和第二加法輸入整數(shù)列表確定的環(huán)元素。特別地,增量表可以被應(yīng)用于整數(shù)列表,整數(shù)中的元素從輸入整數(shù)列表中的元素導(dǎo)出。例如,確定420可以包括將增量表應(yīng)用422到,例如獲得;將從第二加法輸入整數(shù)列表確定的整數(shù)b1加424到源自第一應(yīng)用的整數(shù)列表中的整數(shù),例如,。方法400進(jìn)一步包括通過(guò)增量表針對(duì)從中間加法整數(shù)列表和第二加法輸入整數(shù)列表確定的環(huán)元素的第二應(yīng)用來(lái)確定430加法輸出整數(shù)列表。對(duì)于更長(zhǎng)的整數(shù)列表,這可以涉及附加的增量表應(yīng)用。例如,這可以包括對(duì)中間加法整數(shù)列表取反431,例如,置換成。應(yīng)用432增量表以及相加434與應(yīng)用422和相加424相同,除了加法輸入整數(shù)列表被中間整數(shù)列表和b1乘b2替代。最后,434的結(jié)果被取反453以獲得混淆加法的結(jié)果。如果取代負(fù)混淆,如這里那樣使用正混淆,那么可以省略取反431、435。圖6示意性示出乘法方法500的實(shí)施例的一個(gè)示例,其可以用在設(shè)備100或方法300等等中。此示例使用與方法400相同的編碼和增量表。方法500包括接收乘法運(yùn)算數(shù)510。這可以包括接收510第一乘法輸入整數(shù)列表,例如,以及接收514第二乘法輸入整數(shù)列表。方法500進(jìn)一步包括確定520第一和第二中間乘法整數(shù)列表。例如,520可以包括確定522第一中間乘法整數(shù)列表和確定524第二中間乘法整數(shù)列表。這些可以例如分別被選擇為和,盡管存在其他選擇。所述乘法通過(guò)在加法方法400中增加這些數(shù)字繼續(xù)。注意到,所述表僅用在應(yīng)用422和應(yīng)用432中,而沒(méi)有應(yīng)用在方法400和500中的任何其他地方。加法和乘法二者使用相同的表,并且二者以相同次數(shù)(2)使用表。其他運(yùn)算包括在整數(shù)列表中的整數(shù)上進(jìn)行的小算術(shù)運(yùn)算,例如對(duì)基礎(chǔ)環(huán)元素的次數(shù)取模。執(zhí)行方法的許多不同方式是可能的,如對(duì)本領(lǐng)域技術(shù)人員而言將是顯然的。例如,可以改變步驟的次序并且可以并行執(zhí)行一些步驟。而且,在各步驟之間可以插入其他方法步驟。所插入的步驟可以表示諸如本文所描述之類(lèi)的方法的改進(jìn),或者可以與該方法無(wú)關(guān)。而且,給定的步驟可能沒(méi)有在下一步驟開(kāi)始之前完全結(jié)束。根據(jù)一個(gè)實(shí)施例的一種方法可以使用軟件執(zhí)行,該軟件包括用于促使處理器系統(tǒng)執(zhí)行方法300、400和500中任何一種的指令。軟件可以只包括系統(tǒng)的特定子實(shí)體所采取的那些步驟。軟件可以存儲(chǔ)在適當(dāng)?shù)拇鎯?chǔ)介質(zhì)中,比如硬盤(pán)、軟盤(pán)、存儲(chǔ)器等。軟件可以作為信號(hào)沿著線纜、或無(wú)線或使用數(shù)據(jù)網(wǎng)絡(luò)(例如因特網(wǎng))而被發(fā)送??梢允沟密浖捎糜谙螺d和/或在服務(wù)器上遠(yuǎn)程使用。一種方法可以使用位流執(zhí)行,該位流被布置成配置可編程邏輯(例如現(xiàn)場(chǎng)可編程門(mén)陣列(FPGA))以執(zhí)行該方法。應(yīng)當(dāng)領(lǐng)會(huì),實(shí)施例也擴(kuò)展到計(jì)算機(jī)程序,特別是載體上或載體中的計(jì)算機(jī)程序,其適于使實(shí)施例付諸實(shí)踐。該程序可以是源代碼、目標(biāo)代碼、代碼中間源和目標(biāo)代碼形式(比如部分編譯的形式),或者是適合用于依照一個(gè)實(shí)施例的方法的實(shí)現(xiàn)方式中任何其他形式。一個(gè)涉及計(jì)算機(jī)程序產(chǎn)品的實(shí)施例包括對(duì)應(yīng)于所闡述的方法的至少一個(gè)的每一個(gè)處理步驟的計(jì)算機(jī)可執(zhí)行指令。這些指令被細(xì)分成子例程和/或存儲(chǔ)在一個(gè)或多個(gè)可以靜態(tài)或動(dòng)態(tài)鏈接的文件中。另一個(gè)涉及計(jì)算機(jī)程序產(chǎn)品的實(shí)施例包括對(duì)應(yīng)于所闡述的系統(tǒng)和/或產(chǎn)品的至少一個(gè)的每一個(gè)構(gòu)件的計(jì)算機(jī)可執(zhí)行指令。圖7a示出具有包括計(jì)算機(jī)程序1020的可寫(xiě)部分1010的計(jì)算機(jī)可讀介質(zhì)1000,該計(jì)算機(jī)程序1020包括用于致使處理器系統(tǒng)執(zhí)行依照一個(gè)實(shí)施例的用于執(zhí)行混淆算術(shù)的計(jì)算方法的指令。該可寫(xiě)部分可以被布置用于多次寫(xiě)入或用于僅一次寫(xiě)入。計(jì)算機(jī)程序1020可以作為物理標(biāo)記或借助于計(jì)算機(jī)可讀介質(zhì)1000的磁化而體現(xiàn)在計(jì)算機(jī)可讀介質(zhì)100上。然而,任何其他適當(dāng)?shù)膶?shí)施例也是可想到的。而且,應(yīng)當(dāng)領(lǐng)會(huì),盡管計(jì)算機(jī)可讀介質(zhì)1000在這里被作為光盤(pán)示出,但是計(jì)算機(jī)可讀介質(zhì)1000可以是任何適當(dāng)?shù)挠?jì)算機(jī)可讀介質(zhì),比如硬盤(pán)、固態(tài)存儲(chǔ)器、閃存等,并且可以是非可記錄或可記錄的。計(jì)算機(jī)程序1020包括用于致使處理器系統(tǒng)執(zhí)行用于執(zhí)行混淆算術(shù)的所述計(jì)算方法的指令。計(jì)算機(jī)可讀介質(zhì),例如計(jì)算機(jī)可讀介質(zhì)1000,可以包括增量表、和/或解碼表、和/或編碼表。圖7b示出依照一個(gè)實(shí)施例的處理器系統(tǒng)1100的示意性表示。該處理器系統(tǒng)包括一個(gè)或多個(gè)集成電路1110。圖7b中示意性示出了一個(gè)或多個(gè)集成電路1110的架構(gòu)。電路1110包括用于運(yùn)行計(jì)算機(jī)程序組件以執(zhí)行依照一個(gè)實(shí)施例的方法且/或?qū)崿F(xiàn)起模塊或單元的處理單元1120,例如CPU。電路1110包括用于存儲(chǔ)編程代碼、數(shù)據(jù)等的存儲(chǔ)器1122。存儲(chǔ)器1122的部分可以是只讀的。電路1110可以包括通信元件1126,例如天線、連接器或二者等等。電路1110可以包括用于執(zhí)行所述方法中限定的部分或所有處理的專(zhuān)用集成電路1124。處理器1120、存儲(chǔ)器1122、專(zhuān)用IC1124和通信元件1126可以經(jīng)由互連1130(比如總線)連接到彼此。處理器系統(tǒng)1110可以被布置用于分別使用天線和/或連接器的接觸式和/或非接觸式通信。應(yīng)當(dāng)注意,上述實(shí)施例說(shuō)明而非限制本發(fā)明,并且本領(lǐng)域技術(shù)人員將能夠設(shè)計(jì)許多可替換實(shí)施例。在權(quán)利要求中,置于括號(hào)之間的任何附圖標(biāo)記不應(yīng)當(dāng)被解釋為限制權(quán)利要求。動(dòng)詞“包括”及其詞形變化的使用不排除存在權(quán)利要求中非陳述的其他元件或步驟。元件之前的冠詞“一”并沒(méi)有排除存在多個(gè)這樣的元件。本發(fā)明可以借助于包括若干不同元件的硬件、且借助于適當(dāng)編程的計(jì)算機(jī)實(shí)現(xiàn)。在列舉了若干構(gòu)件的設(shè)備權(quán)利要求中,這些構(gòu)件中的若干個(gè)可以由同一硬件項(xiàng)體現(xiàn)。在相互不同的從屬權(quán)利要求中記載了某些措施的起碼事實(shí)并不指示這些措施的組合不可以用于獲益。在權(quán)利要求中,括號(hào)中的參考是指實(shí)施例的附圖中的附圖標(biāo)記或者指實(shí)施例的公式,從而增加權(quán)利要求的可理解性。這些參考不是詳盡的并且不應(yīng)當(dāng)解釋為限制權(quán)利要求。圖1中參考數(shù)字的列表100計(jì)算設(shè)備110布置成存儲(chǔ)增量表的存儲(chǔ)庫(kù)120環(huán)取反單元130環(huán)加法單元140環(huán)乘法單元150運(yùn)行數(shù)存儲(chǔ)裝置160解碼單元170編碼單元172布置成存儲(chǔ)編碼表的存儲(chǔ)庫(kù)當(dāng)前第1頁(yè)1 2 3