當前公開的主題涉及一種執(zhí)行加密計算的加密方法、相應的設備、用于加密計算的編譯器方法和設備、以及計算機可讀介質。
背景技術:
1、同態(tài)密碼學允許人們執(zhí)行加密計算:由一方將其對加密數(shù)據執(zhí)行而該方無法解密的計算(例如電路評估)。例如,可以以加密形式接收和返回輸入數(shù)據和計算結果。中間數(shù)據(例如計算的內部狀態(tài))也可以采用加密形式。
2、即使計算的結果以加密形式返回,解密時的輸出預計會相同或非常接近,就像對未加密數(shù)據執(zhí)行運算一樣。同態(tài)加密可被用于保護隱私的外包存儲和計算。這允許數(shù)據被加密且被外包到云環(huán)境,以進行處理和/或存儲,同時加密。
3、例如,同態(tài)密碼術可以應用在諸如醫(yī)學保健的領域中,其中隱私法規(guī)可能使得共享明文數(shù)據變得困難,但是對加密醫(yī)學數(shù)據的計算可能是允許的。例如,開發(fā)如用于對醫(yī)學數(shù)據進行分類的醫(yī)學模型可以被配置為以加密形式從第三方(例如,醫(yī)院)接收醫(yī)學數(shù)據。醫(yī)學模型可以例如將醫(yī)學數(shù)據分類為例如正常的或異常的,或者分類為具有某種特定的醫(yī)學綜合癥、疾病或其他病癥。使用同態(tài)加密,醫(yī)學模型可以應用于以加密形式接收的醫(yī)學數(shù)據。這意味著提供醫(yī)學模型的一方無法訪問與加密醫(yī)學數(shù)據相對應的明文醫(yī)學數(shù)據。該服務的用戶可以對醫(yī)學模型應用的結果進行解密。
4、特別是,存在同態(tài)密碼技術,至少在原理上可用于計算加密數(shù)據的任何函數(shù)。此類技術被稱為“全同態(tài)加密”(fhe)技術。
5、出于安全原因,fhe的已知實施方式使用噪聲密文。例如,數(shù)據項的加密可以包括將數(shù)據項映射到密鑰相關格中的點,向該點添加噪聲。具體地,fhe的許多已知實施方式使用lwe類型密文,lwe類型密文的安全性取決于容錯學習問題的加密難度。這種lwe類型密文可以包括一個或多個掩碼值(例如,按某個模數(shù)q取模的值,或環(huán)面元素),加上主體值,所述主體值從掩碼值和使用加密密鑰的明文中導出,并且所述主體值包含噪聲。它的一個推廣是glwe類型密文,所述glwe類型密文加密并使用多項式而不是標量值。rlwe類型密文是另一種類型的glwe密文。fhe的其他已知實施方式使用ntru類型密文,其基本適用相同的考慮。
6、當數(shù)據項剛剛被加密時,噪聲很低——加密是新近的。例如,噪聲量很低,使得如果要解密數(shù)據項,則可以在解密過程中的某個點去除噪聲,例如通過舍入。另一方面,噪聲應該足夠高,以使對系統(tǒng)的攻擊足夠困難。例如,在假設沒有噪聲的情況下,許多同態(tài)加密方案可能會受到線性代數(shù)或其他有效算法(例如格點減少算法)的攻擊。當數(shù)據項被加密時,會添加經過選擇的噪聲,使得攻擊是困難的,同時仍然可以執(zhí)行同態(tài)運算,并且解密仍然是可能的。
7、大多數(shù)同態(tài)運算都會增加同態(tài)加密數(shù)據項中固有的噪聲。當執(zhí)行許多這樣的運算時,噪聲可能達到不再可能進行唯一解密的水平。一般來說,已知使用稱為自舉的技術來減少同態(tài)加密值的噪聲。自舉可以使用稱為自舉密鑰的公鑰。通過在需要時使用自舉來降低噪聲,原理上可以計算任何所需數(shù)目的同態(tài)運算。
8、一種特殊類別的全同態(tài)加密方案是tfhe類的同態(tài)加密方案。這種方案在i.chillotti等人在“programmable?bootstrapping?enables?efficient?homomorphicinference?of?deep?neural?networks”,cyber?security?cryptography?and?machinelearning(cscml?2021),lecture?notes?in?computer?science的第12716卷,1-19頁,springer,2021(通過引用納入本文)中描述。tfhe類方案與其他fhe方案的不同之處在于,它們支持一種相對高效的自舉技術;此外,它們還能夠在自舉運算過程中同時對函數(shù)求值,被稱為可編程自舉。常規(guī)自舉與帶有標識函數(shù)的可編程自舉相對應。
9、tfhe類的方案的其他已知的實施方式使用ntru類型密文,其基本適用相同的考慮。具體地,通過使用產生測試多項式和自舉單項式的ntru加密多項式乘積的盲旋轉和/或將盲旋轉應用于ntru密文作為輸入,ntru可以與所提供的技術結合使用。合適的ntru加密的實施例在c.bonte等人的“final:faster?fhe?instantiated?with?ntru?and?lwe”,cryptology?eprint?archive,paper?2022/07中定義;以及在k.kluczniak的“ntru-v-um:secure?fully?homomorphic?encryption?from?ntru?with?small?modulus”,cryptologyeprint?archive,paper?2022/089中定義。
10、有趣的是,可編程自舉的輸出具有與輸入密文中的噪聲無關的噪聲量。因此,通過執(zhí)行可編程自舉,可以將輸入密文中的噪聲減少到固定量,而可能同時將函數(shù)應用于輸入密文。通過在適當?shù)臅r間執(zhí)行可編程自舉,可以執(zhí)行無限乘法復雜度的加密計算。
11、盡管pbs運算很強大,但對相對較大的值(例如,按大于256或大于1024的模數(shù)取模定義的值)有效地執(zhí)行算術運算(例如,乘法)今天仍然具有挑戰(zhàn)性。其中一個原因是pbs縮放在輸入大小上比線性更差。
12、在p.clet等人的論文“putting?up?the?swiss?army?knife?of?homomorphiccalculations?by?means?of?tfhe?functional?bootstrapping”,cryptology?eprintarchive,report?2022/149中,在數(shù)字分解方法的基礎上,提出了對密文執(zhí)行乘法和加法的技術。這意味著通過對按基數(shù)β取模的值的基數(shù)分解元素進行加密,對值進行編碼且加密。在此文章中,作者提出了一種對將分解的元素進行加密的每個密文使用兩個或多個可編程自舉的加法。加法是以順序的方式執(zhí)行。乘法是基于教科書上的乘法方法執(zhí)行。盡管有這些發(fā)展,但仍需要對大加密值進行加密運算的進一步改進。
技術實現(xiàn)思路
1、發(fā)明人注意到現(xiàn)有方法中的許多缺點。
2、一些現(xiàn)有方法對于使用tfhe的整數(shù)明文具有較小的精度:當使用單個密文來加密整數(shù)時,現(xiàn)在在實踐中對超過7位明文的密文執(zhí)行乘法等算術運算并不可行。
3、現(xiàn)有的方法也缺乏效率?;趯⒂嬎戕D換為布爾電路,然后通過門自舉評估電路的方法,在明文不是布爾值的情況下,在實踐中會顯著減慢速度。此外,現(xiàn)有的依賴于使用小整數(shù)(例如1位或2位的整數(shù))對值進行編碼的方法速度很慢,因為對這些小整數(shù)的運算通常使用pbs構建,或后跟一個pbs,因此需要大量昂貴的pbs。
4、現(xiàn)有方法的另一個缺點是它們缺乏可并行性。例如,當整數(shù)通過基數(shù)分解進行編碼時,執(zhí)行加法或乘法可能涉及沿同態(tài)整數(shù)的msb進行進位傳播,這是一個順序過程。這意味著當可以并行化時同態(tài)電路評估期間速度會慢。
5、另一個缺點是缺乏靈活性?,F(xiàn)有的算術運算實現(xiàn),例如帶進位傳播的加法或乘法,不允許根據輸入的大小靈活地調整算術運算發(fā)生的方式,從而優(yōu)化用于當前使用情況的性能。
6、本發(fā)明的目的是解決至少部分這些問題。
7、根據本發(fā)明的一個方面,提供了一種執(zhí)行加密計算的加密計算方法,如權利要求所定義。根據又一個方面,提供了一種與計算機實施的方法相對應的設備,如權利要求所定義。根據另一個方面,提供了一種計算機可讀介質,如權利要求所定義。
8、各個方面涉及對一組的一個或多個編碼且加密的值執(zhí)行加密計算。這些值可以是數(shù)值,例如,按某個整體模數(shù)q取模定義的值。此類按模數(shù)q取模的值可被解釋為,例如,無符號整數(shù)(例如,來自域[0,q));有符號整數(shù)(例如,[-q/2,q/2));定點數(shù),等等。
9、此類編碼且加密的值可以被編碼且加密為多個相應子值的加密,在本文中也稱為“塊”。舉例來說,值和子值可以根據固定基β的基數(shù)分解相互關聯(lián)。值和子值可以關聯(lián)的若干其他方式也是可能的,如其他地方詳細討論的那樣。
10、在一個實施方案中,子值的加密是lwe加密。在一個實施方案中,子值的加密是ntru加密。
11、加密計算可以包括對所述組的編碼且加密的值應用一個或多個加密運算,例如,算術運算(諸如加法和/或乘法);函數(shù)應用(諸如應用relu、符號、指數(shù)或其他單變量函數(shù));和/或其他數(shù)字運算。
12、這種加密運算通??梢詫⒁粋€或多個編碼且加密的輸入值(以及可選的附加輸入,例如進一步加密或未加密的值)作為輸入,并且可以產生一個或多個編碼且加密的輸出值。有趣的是,這些運算是以加密方式執(zhí)行的,從某種意義上,它們不會泄露有關輸入和/或輸出值的信息,特別是,為了執(zhí)行運算,輸入值不會被解密。
13、有趣的是,發(fā)明人設想將編碼且加密的值編碼為允許保留進位的加密子值。子值可以具有相關的消息模數(shù),以及大于所述消息模數(shù)的進位消息模數(shù)。例如,子值可以根據基數(shù)分解來定義,其中基數(shù)為8,并且因此消息模數(shù)也是8,但可以加密為按64的進位消息模數(shù)取模的值。相應地,值可以進行不帶進位編碼且加密,這意味著子值是小于相應消息模數(shù)的非進位子值;但值也可以進行帶進位編碼且加密,這意味著至少一個子值是大于或等于對應的消息模數(shù)的帶進位子值。
14、帶進位編碼且加密的值可以根據該值與非進位子值之間的關系以及根據對應的進位歸約運算(例如根據具有按模數(shù)β取模的消息的基數(shù)分解以及根據將子值m進位歸約為m?modβ并將進位傳播到下一個最高有效值的進位歸約)對應于其子值。
15、發(fā)明人意識到帶進位子值不僅可以在加密運算中使用,還可以作為加密運算的輸入或輸出。加密運算(例如,加法、乘法、另一算術運算或單變量函數(shù)評估)可應用于帶進位編碼且加密的至少一個輸入值,并可產生帶進位編碼且加密的至少一個輸出值。
16、在某些情況下,可以對輸出值應用加密進位歸約,其中至少一個帶進位子值可以歸約為非進位子值。然而,在其他情況下,輸出值可以不進行進位歸約,并且可以與進位一起輸入到進一步的加密運算中(例如,進一步的加法、乘法或其他算術運算)。在任何情況下,如果需要的話,可以在加密運算期間應用加密進位歸約,例如應用于中間子值。一般來說,可以應用加密進位歸約,以保證后續(xù)加密運算不會產生超出進位消息模數(shù)的子值。
17、通過允許將帶進位編碼且加密的值作為加密運算的輸入和/或輸出,以及通過可選地執(zhí)行進位歸約(在某些情況下不會對編碼且加密的值的所有帶進位子值進行進位歸約),可以大大提高加密計算的效率,基于下面詳述的多個原因??偟膩碚f,所提供的技術使得能夠高效地執(zhí)行加密計算,例如對編碼且加密成多個子值的值評估算術電路。通過對選擇的子值選擇性地執(zhí)行加密進位歸約,提供了可配置的加密計算技術,所述可配置的加密計算技術允許在執(zhí)行之前或運行過程中優(yōu)化計算方面的執(zhí)行。
18、特別是,通過使用多個子值,可以彌補一些現(xiàn)有方法的精度不足。這使得能夠對按相對較大的模數(shù)取模定義的值執(zhí)行加密計算,稍后將給出實施例。
19、通過選擇性進位歸約,可以大大減少所需的進位歸約運算的數(shù)目;例如,與現(xiàn)有方法相比,可以使用更小數(shù)目的可編程自舉應用程序執(zhí)行加密計算,從而大大提高效率。例如,可以執(zhí)行多次加法、其他線性運算、或者甚至加密值的乘法,而無需在中間執(zhí)行進位歸約。可以改變各種參數(shù),包括消息模數(shù)、進位消息模數(shù)以及加密過程中對明文的子值的編碼。這為優(yōu)化給定加密計算的同態(tài)評估提供了可能性,提高了靈活性和性能。
20、此外,所提供的技術提供了改進的可并行性。由于運算的輸出可以有進位,因此可以避免步驟之間的進位歸約,從而對相應子值并行執(zhí)行一個或一系列加密運算。例如,當使用基于基數(shù)分解的編碼時,可以對相應子值單獨執(zhí)行加法。當使用基于余數(shù)系統(tǒng)的編碼時,乘法和進位歸約也可以并行化。從而特別是在多線程系統(tǒng)和多核系統(tǒng)上的性能得到提高。
21、具體來說,上面引用的論文“putting?up?the?swiss?army?knife?ofhomomorphic?calculations?by?means?of?tfhe?functional?bootstrapping”提出了一種加法,所述加法是按順序的并且對分解的元素進行加密的每個密文至少使用2個pbs。相比之下,所提供的技術允許使用每個密文僅一個pbs并且僅在需要該密文的進位歸約時來實現(xiàn)加法;如果不需要進位歸約,則可以完全將加法并行化。與他們提出的乘法相比,所提供的技術更高效,并且可以更好地并行化。
22、一般來說,加密計算可以在tfhe設置中執(zhí)行。這意味著用于加密子值的密文允許可編程自舉運算。具體來說,密文可以是lwe(容錯學習)加密,即基于容錯學習問題很難的密碼學假設的加密。如本身已知,可編程自舉可以評估glwe加密單項式(例如,實現(xiàn)為所謂的盲旋轉)的指數(shù)中的lwe解密。具體來說,可編程自舉可能涉及計算表示明文值為指數(shù)的自舉單項式和測試多項式的加密多項式乘積。測試多項式可以表示通過可編程自舉應用于輸入的函數(shù)??删幊套耘e可以使用自舉密鑰,該自舉密鑰能夠執(zhí)行可編程自舉但不能夠執(zhí)行密文的解密??梢允褂每删幊套耘e運算來實現(xiàn)加密進位歸約和/或加密計算的一個或多個加密運算。
23、替代使用lwe/glwe類型密文,還可以使用不同的格加密。例如,應用盲旋轉的密文和/或由此產生的加密多項式乘積可以是ntru密文。例如,可以通過將噪聲多項式g和私鑰多項式f的商添加到消息來定義消息μ的ntru加密,例如,可以是可逆多項式(通常具有較小的系數(shù));并且ntru加密可以由給出,或者通過c=e1/f+μ+e2,寫為g=e1+f·e2。具體來說,ntru密文可以僅包含單個多項式。此類密文的安全性可以基于ntru假設。
24、在一個實施方案中,應用盲旋轉的密文可以是lwe類型密文。例如,盲旋轉可以是對lwe類型密文執(zhí)行的加密計算的一部分(例如,不涉及任何ntru類型密文)?;蛘撸琹we類型密文可以通過從ntru類型密文轉換獲得,例如,作為對ntru類型密文執(zhí)行的加密計算的一部分。也可以直接將盲旋轉應用于ntru類型密文,而無需轉換為lwe。更一般地,密文可以是格類型密文,其安全性取決于格問題的密碼難度,lwe和ntru就是兩個例子。
25、在一個實施方案中,可以通過對一組編碼且加密的值執(zhí)行多個加密運算來計算輸出值,其中執(zhí)行加密運算時不會在加密運算之間或期間執(zhí)行任何加密進位歸約。例如,加密運算可以包括多個加法和/或多個乘法。例如,執(zhí)行加密計算可以包括評估包括加密運算的算術電路。算術電路可以具有例如至少二的乘法深度(意味著一個乘法的輸出直接或間接地用作另一個乘法的輸入)或至少三的乘法深度。通過允許進位,在某些情況下,此類計算可以在中間不進行進位歸約的情況下執(zhí)行,或者在使用更少的進位歸約的任何情況下執(zhí)行,從而提供顯著的性能改進。
26、在一個實施方案中,可以通過對輸入值的子值的相應加密單獨應用相應子運算來應用加密運算。具體來說,執(zhí)行加密運算可以僅由執(zhí)行這些子運算組成。例如,對于線性運算,或者當使用余數(shù)系統(tǒng)表示時的乘法,可以就是這種情況。在一個實施方案中,單獨應用的加密運算可以至少部分地并行執(zhí)行,這對于性能有利,特別是對于多線程系統(tǒng)和多核系統(tǒng)。
27、在一個實施方案中,將值編碼為非進位子值是基于該值的基數(shù)分解。換句話說,由一組帶進位和非進位子值編碼的值可以通過對帶進位子值進行進位歸約并從基數(shù)分解中重建值來計算?;鶖?shù)分解可以針對相應基元素的基數(shù),其中相應消息模數(shù)與相應基元素相對應。使用基數(shù)分解的編碼允許相對高效地執(zhí)行加密計算的各個部分,特別是諸如加法和/或乘法和/或除法之類的算術運算;諸如確定兩個值中哪一個更大的比較運算等;以及進位歸約。
28、基元素可以定義與相應基元素的乘積相對應的總模數(shù)。因此,可以使用具有給定基的基數(shù)分解來對按該總模數(shù)取模的值進行編碼。還可以將基與小于基元素的乘積的模數(shù)組合使用,如本說明書其他地方也描述的。
29、基元素可以全部相同,例如,對于基2基數(shù)分解,可能全部等于2,或者對于基5基數(shù)分解,可能全部等于5。但有趣的是,這并不是必要的。在一些實施方案中,基數(shù)分解的基元素并不全部相同。這為根據當前應用程序的大小要求選擇基元素提供了更大的靈活性,從而減少使用大于必要模數(shù)的開銷。具體來說,基元素不必全都是相同的冪或二的冪,或者根本不需要全都是二的冪。發(fā)明人意識到,加密計算技術,特別是在tfhe設置中的技術,也可以應用于這種更通用的設置中。
30、在一個實施方案中,基數(shù)分解設置中的加密進位歸約可以執(zhí)行為將輸出值的帶進位子值分解為該子值的相應子值的加密,并將該子值的子值加密添加到輸出值的對應子值的加密中。這樣,帶進位子值可以歸約到低于消息模數(shù)的值。通過對相應帶進位子值重復此過程,可以獲得不帶進位的值的編碼且加密。
31、在一個實施方案中,可以執(zhí)行編碼且加密的值與非加密標量的加密乘法??梢酝ㄟ^計算編碼且加密的值的子值與標量的乘法的相應加密子值,例如,使用可編程自舉,來實現(xiàn)該加密乘法。如果使用基數(shù)分解編碼,則可以將加密乘法的結果組合起來以獲得整體結果。這樣,就可以執(zhí)行與相對較大的標量的乘法。例如,對于較小的標量,也可以直接將相應加密子值與標量本身相乘以獲得相應加密輸出子值。如果使用余數(shù)系統(tǒng)編碼,則相應子值的相應乘積可以形成整體結果。
32、在一個實施方案中,可以通過執(zhí)行第一編碼且加密的值和第二編碼且加密的值的子值的加密的加密乘法來執(zhí)行第一編碼且加密的值與第二編碼且加密的值的加密乘法。在基數(shù)分解設置中,子值的加密乘法可以得到編碼且加密的值。這些編碼且加密的值可以相加在一起以獲得總體結果。在乘法過程中,可以根據需要執(zhí)行進位歸約,例如,如本文所描述的計算的完整性程度所指示的那樣。有趣的是,通過這種方式可以實現(xiàn)大加密值的特別高效的乘法。
33、在一個實施方案中,使用基數(shù)分解編碼進行編碼且加密的值被定義為按小于基數(shù)分解可表示的最大值(例如,基元素的乘積)的模數(shù)取模。這樣,可以使用基數(shù)分解編碼的情況數(shù)目就大大增加了。為了效率,基數(shù)分解編碼優(yōu)選使用較小的基元素,在這種情況下,最大可表示值是這類小的基元素的乘積。有趣的是,發(fā)明人意識到,在計算被期望為按不是小基元素的乘積的模數(shù)取模的情況下,仍然可以使用基數(shù)分解編碼。各種加密運算都可以像按基元素的乘積進行取模一樣執(zhí)行,除了可以通過根據所需模數(shù)校正進位歸約來調整最高有效子消息的加密進位歸約。例如,可以通過將最高有效子值乘以標量,并從已刪除最高有效子值的值中減去結果來執(zhí)行校正。
34、在一個實施方案中,將值編碼為非進位子值是基于該值的余數(shù)系統(tǒng)表示。這種表示也稱為crt(中國剩余定理)表示。該表示可以基于一組互質的基元素。例如,編碼且加密的值的相應子值可以具有與基元素相對應的消息模數(shù)。
35、具體來說,帶進位編碼且加密的值可以根據具有相應消息模數(shù)βi的crt分解以及根據將相應子值mi模數(shù)歸約為mi?modβi的進位歸約對應于其子值。
36、與基數(shù)表示類似,可以使用crt表示高效地實現(xiàn)線性算術運算。有趣的是,crt表示還可以允許特別高效的乘法和進位歸約,這兩者另外還可以對相應子值單獨執(zhí)行,并且因此是可并行的。此外,使用crt表示,各種其他類型的運算(諸如應用單變量函數(shù))是可能的。
37、在一個實施方案中,將值編碼為非進位子值可以基于余數(shù)系統(tǒng)表示,并且進一步基于余數(shù)系統(tǒng)表示的元素的基數(shù)分解。這種方法在本文中被稱為“混合”方法。例如,可以根據相應(不同或相等的)基數(shù)對余數(shù)系統(tǒng)中的一個、多個或所有元素進行基數(shù)分解。使用混合方法,可以使用相對較大的crt基元素高效地使用crt方法。
38、在一個實施方案中,當使用基數(shù)分解對余數(shù)系統(tǒng)表示的元素進行編碼時,關于其而定義該元素的模數(shù)(即,crt基的對應基元素)可以小于基數(shù)分解可表示的最大值。正如一般對基數(shù)分解所描述的那樣,基數(shù)分解在這種情況下仍然可以使用,從而使得它能夠應用于更廣泛的情況。這種組合尤其有益,因為它允許更好地結合對具有crt中互質基元素和具有使用小基元素的基數(shù)分解的迫切需求。
39、如果加密運算的輸入和輸出不使用進位,例如,如果僅在加密運算內部使用加密進位歸約;如果在每個加密運算之后直接使用加密進位歸約,以致于產生不帶進位的輸出;或者如果加密運算根本不涉及任何進位,例如,如果它們是使用可編程自舉來實現(xiàn)的,而不使用進位,則使用crt表示的若干個優(yōu)點,特別是高效且可并行的加密線性和乘法運算,是適用的。還設想了一種使用crt但不涉及對不帶進位加密且編碼的值應用的加密運算的加密計算方法。
40、具體來說,設想了一種加密計算方法,包括:訪問一個或多個編碼且加密的值,其中將值編碼為非進位子值是基于該值的余數(shù)系統(tǒng)表示;并且將加密運算應用于編碼且加密的至少一個輸入值以獲得編碼且加密的輸出值。還設想了一種與該方法相對應的加密設備。
41、在一個實施方案中,執(zhí)行帶進位的加密計算可以包括跟蹤編碼且加密的值的子值的完整性程度。完整性程度可以指示子值的界限,例如,表示為已知子值具有的最大值,或者最大值相對于進位消息模數(shù)的比例。例如,對于不帶進位編碼且加密的值,完整性程度可能表明其子值小于對應的消息模數(shù)。對于帶進位編碼且加密的值,完整性程度可以表示其子值中至少一個可能大于或等于對應的消息模數(shù),換句話說,不能保證小于消息模數(shù)。
42、在加密運算期間和/或之間,可以使用完整性程度來確定是否對加密子值執(zhí)行加密進位歸約。具體來說,可以確定在加密運算中待從一個或多個輸入加密子值計算出的帶進位子值的完整性程度。如果完整性程度指示的界限超出了對應的進位消息模數(shù),則可以在計算帶進位子值之前將加密進位歸約應用于一個或多個輸入的加密子值,使得帶進位子值的界限不再超出進位消息模數(shù)。因此,可以避免子值的溢出。
43、有趣的是,通過在加密計算期間跟蹤完整性程度,可以獲得一種執(zhí)行加密計算的靈活方式,其中可以自適應地決定是否執(zhí)行加密進位歸約。因此,決策可以取決于當前的輸入,例如,計算中使用的公共標量、輸入者提供的加密輸入的界限、迭代算法的特定迭代中的完整性程度等。這通常會導致更高效地執(zhí)行加密計算。由于不需要明確指定何時執(zhí)行進位歸約,因此它還使得指定加密計算變得更加容易。這可能使得所提供的技術特別適合加密計算的非專家。
44、例如,可以以這樣的方式執(zhí)行加密計算,使得在第一次執(zhí)行中,發(fā)生某個加密子值的加密進位歸約,而在第二次執(zhí)行中,避免該加密進位歸約。此外,多次執(zhí)行的加密計算的運算可以包括或不包括加密進位歸約,這取決于其輸入的完整性程度。例如,加密乘法或其他加密運算可以在乘法的第一次執(zhí)行中包括在運算期間計算的加密子值的加密進位歸約,但在乘法的第二次執(zhí)行中不包括。
45、根據本發(fā)明的進一步方面,提供了如權利要求所定義的編譯器方法和設備。正如發(fā)明人所意識到的,在加密計算期間不需要跟蹤完整性程度。如果將完整性程度計算作為將計算編譯為同態(tài)可執(zhí)行文件的編譯器方法的一部分,那么也可以實現(xiàn)使用完整性程度的許多優(yōu)點。即,該同態(tài)可執(zhí)行文件可以能夠高效地執(zhí)行加密計算,特別是僅在需要時執(zhí)行加密的進位歸約運算。同態(tài)可執(zhí)行文件可由加密計算引擎執(zhí)行,并使加密計算引擎對如本文所描述的一組一個或多個編碼加密值執(zhí)行加密計算。同態(tài)可執(zhí)行文件可以包括一個或多個指令來執(zhí)行如本文所描述的加密進位歸約運算,例如作為加密運算的一部分或在加密運算的執(zhí)行之間。編譯器方法可以包括:對于待計算的帶進位子值,確定指示帶進位子值的界限的完整性程度;并且,如果界限超出了對應的進位消息模數(shù),則生成指令,該指令使得加密計算引擎在計算所述帶進位子值之前應用加密的進位歸約。編譯器方法還可以包括優(yōu)化加密計算的一個或多個參數(shù),諸如數(shù)目和用于消息和進位消息模數(shù)的值,用于將加密計算編譯成可執(zhí)行文件。
46、在一個實施方案中,一個或每個消息模數(shù)不是2的冪。盡管現(xiàn)有的用于加密計算的技術(特別是在tfhe設置中)通常使用2的冪用于它們的模數(shù),但發(fā)明人意識到這不是必需的,并且當一個或多個消息模數(shù)不是2的冪時也可以使用所提供的技術。相反或另外,在一個實施方案中,一個或多個進位消息模數(shù)不是2的冪。這允許更好地根據當前情況調整運算,例如,對按與當前輸入值的計算和范圍相匹配的模數(shù)取模定義的值執(zhí)行計算。
47、在一個實施方案中,消息模數(shù)至少為3和/或至少5和/或至少10。對消息模數(shù)使用較大的值的優(yōu)點是單個密文的精度更高,從而需要更少的密文來表示值。此外,計算(特別是不涉及進位歸約的那些計算)可以更高效。
48、在一個實施方案中,進位消息模數(shù)可以是對應的消息模數(shù)的至少四倍、至少八倍、或至少三十二倍。因此,以位來表示,實際上,可以提供至少兩個、至少三個或至少5個進位位。通過使用明顯大于消息模數(shù)的進位消息模數(shù),在需要進行進位歸約之前可以執(zhí)行的運算數(shù)目或運算子步驟數(shù)目增加,從而提高效率。
49、在一個實施方案中,一個或每個進位消息模數(shù)最多為128,最多為256,或最多為512。諸如使用可編程自舉的進位歸約等運算的效率通常比進位消息模數(shù)大小的線性更差地縮放。通過保持限制進位消息模數(shù),此類運算的計算成本也保持有限。
50、在一個實施方案中,定義加密值的模數(shù)至少為1024、至少為4096、或至少為16384。有趣的是,盡管使用了如此大的模數(shù),所提供的技術仍然允許對它們進行相對高效的計算。
51、在一個實施方案中,可以通過從編碼且加密的值的一個或多個子值中提取一個或多個位;將提取的位轉換為ggsw密文;并將查找表應用于ggsw密文,來對一個或多個編碼且加密的值應用函數(shù)評估。正如其他地方更詳細地解釋的那樣,這是一種特別高效的實現(xiàn)函數(shù)的方式,特別是對于相對較大的值,例如,消息和/或進位消息模數(shù)和/或子值的數(shù)目相對較大的值。
52、在一個實施方案中,加密計算可以在某個點包括對多個加密輸入值(例如,子值)進行多變量函數(shù)(例如,雙變量函數(shù))的評估。多變量函數(shù)的一個重要示例是第一子值和第二子值的加密的加密乘法,例如,相同的編碼且加密的值或不同的編碼且加密的值。例如,這種加密乘法可以作為編碼且加密的值的加密乘法的一部分出現(xiàn),或者作為不同類型的加密運算的一部分出現(xiàn)。在任何情況下,都可以通過確定表示相應加密輸入值的組合加密來執(zhí)行多變量函數(shù)評估;并且通過將單變量函數(shù)應用于組合加密,這對應于將多變量函數(shù)應用于相應輸入值,例如,通過對組合加密應用可編程自舉,來執(zhí)行多變量函數(shù)評估。
53、這是執(zhí)行多變量函數(shù)評估的一種特別高效的方法,所述方法還可以與確定完整性程度和使用進位很好地結合。具體來說,當帶進位加密輸入值時,明文空間中確實可能有足夠的空間來存儲組合加密;如果需要,可以執(zhí)行加密進位歸約,以確保組合加密不會溢出進位消息模數(shù)。
54、所提供的用于加密數(shù)據的改進計算的技術可以應用于廣泛的實際應用。此類實際應用包括在無需訪問明文數(shù)據的情況下對軟件程序進行加密評估。例如,人們可以評估關于醫(yī)學數(shù)據的醫(yī)學診斷軟件,而無需實際訪問醫(yī)學數(shù)據。醫(yī)學數(shù)據可以包括醫(yī)學圖像。醫(yī)學圖像可以包括例如通過多種獲取方式所獲取的多維圖像數(shù)據,例如二維(2d)、三維(3d)或四維(4d)圖像,所述多種獲取方式諸如但不限于標準x射線成像、計算機斷層掃描(ct)、磁共振成像(mri)、超聲(us)、正電子發(fā)射斷層掃描(pet)、單光子發(fā)射計算機斷層掃描(spect)以及核醫(yī)學(nm)。
55、在一個實施方案中,所提供的技術可用于評估關于加密輸入的神經網絡。評估神經網絡的一方可能會或可能不會以明文方式訪問神經網絡的訓練參數(shù),例如權重和偏差??傮w上,本文所提供的技術(例如,改進的多項式乘法、可編程自舉和外部乘積)提高了評估神經網絡的效率和/或減少了所用密文或密鑰材料的存儲和傳輸要求。
56、本方法的一個實施方案可作為計算機實施的方法而在計算機上被實施,或者在專用硬件中實施,或者在這二者的組合中實施。用于該方法的一個實施方案的可執(zhí)行代碼可被存儲在計算機程序產品上。計算機程序產品的實施例包括存儲器設備、光學存儲設備、集成電路、服務器、在線軟件等。優(yōu)選地,計算機程序產品包括存儲在計算機可讀介質上的非暫時性程序代碼,用于當所述程序產品在計算機上執(zhí)行時執(zhí)行該方法的一個實施方案。
57、在一個實施方案中,該計算機程序包括計算機程序代碼,當計算機程序在計算機上運行時,該計算機程序代碼適于執(zhí)行該方法的一個實施方案的全部或部分步驟。優(yōu)選地,該計算機程序被實施在計算機可讀介質上。