本說明書一個(gè)或多個(gè)實(shí)施例涉及計(jì)算機(jī)領(lǐng)域,尤其涉及將明文處理程序編譯為密文處理程序的方法和裝置。
背景技術(shù):
1、同態(tài)加密(homomorph?ic?encrypt?ion),是指先對(duì)明文數(shù)據(jù)進(jìn)行加密,在加密密文上進(jìn)行加法和乘法運(yùn)算,得到的結(jié)果解密后與直接在明文數(shù)據(jù)上進(jìn)行相同的加法和乘法運(yùn)算的結(jié)果是等價(jià)的。同態(tài)加密技術(shù)實(shí)現(xiàn)了在保證數(shù)據(jù)提供方不泄漏原始數(shù)據(jù)的前提下對(duì)數(shù)據(jù)進(jìn)行分析和處理,確保了數(shù)據(jù)在流通和融合過程中“可用不可見”,在各類需要隱私保護(hù)的行業(yè)和場(chǎng)景中均可廣泛應(yīng)用。
2、針對(duì)密文進(jìn)行運(yùn)算需要用到密文處理程序,其開發(fā)非常困難。開發(fā)者不但需要有足夠的業(yè)務(wù)知識(shí),還需要學(xué)習(xí)同態(tài)加密的理論基礎(chǔ)、了解各種處理方案的算法實(shí)現(xiàn)、掌握加密方案等細(xì)節(jié),開發(fā)效率低。
技術(shù)實(shí)現(xiàn)思路
1、本說明書一個(gè)或多個(gè)實(shí)施例描述了一種將明文處理程序編譯為密文處理程序的方法和裝置,能夠提升密文處理程序的開發(fā)效率。
2、第一方面,提供了一種將明文處理程序編譯為密文處理程序的方法,方法包括:
3、獲取明文處理程序,所述明文處理程序包括多個(gè)算子;
4、將所述多個(gè)算子中各個(gè)算子分別轉(zhuǎn)化為對(duì)應(yīng)的同態(tài)操作,得到同態(tài)操作序列;其中,當(dāng)任一算子屬于線性算子時(shí),直接將其轉(zhuǎn)化為對(duì)應(yīng)的同態(tài)操作;當(dāng)該算子屬于非線性算子時(shí),通過多項(xiàng)式擬合的方式確定對(duì)應(yīng)的目標(biāo)多項(xiàng)式,將該算子轉(zhuǎn)化為所述目標(biāo)多項(xiàng)式對(duì)應(yīng)的同態(tài)操作;
5、遍歷所述同態(tài)操作序列中各個(gè)同態(tài)操作,調(diào)用同態(tài)操作對(duì)應(yīng)的全同態(tài)加密函數(shù),得到密文處理程序。
6、在一種可能的實(shí)施方式中,所述明文處理程序?yàn)轭A(yù)先訓(xùn)練的神經(jīng)網(wǎng)絡(luò)模型的模型處理程序,用于針對(duì)明文輸入得到明文推斷結(jié)果;所述密文處理程序?yàn)樗錾窠?jīng)網(wǎng)絡(luò)模型對(duì)應(yīng)的全同態(tài)加密處理程序,用于針對(duì)密文輸入得到密文推斷結(jié)果。
7、進(jìn)一步地,所述明文輸入由用戶端持有,所述密文處理程序由服務(wù)端持有。
8、在一種可能的實(shí)施方式中,所述線性算子包括卷積算子、池化算子或矩陣乘法算子,對(duì)應(yīng)的同態(tài)操作包括全同態(tài)加法操作、全同態(tài)乘法操作或全同態(tài)旋轉(zhuǎn)操作。
9、在一種可能的實(shí)施方式中,所述非線性算子包括激活函數(shù),所述目標(biāo)多項(xiàng)式對(duì)應(yīng)的同態(tài)操作包括全同態(tài)加法操作或全同態(tài)乘法操作。
10、在一種可能的實(shí)施方式中,所述通過多項(xiàng)式擬合的方式確定對(duì)應(yīng)的目標(biāo)多項(xiàng)式,包括:
11、根據(jù)該算子、用戶提示或運(yùn)行時(shí)反饋確定多項(xiàng)式擬合的擬合區(qū)間、多項(xiàng)式次數(shù)和系數(shù),得到所述目標(biāo)多項(xiàng)式。
12、在一種可能的實(shí)施方式中,調(diào)用同態(tài)操作對(duì)應(yīng)的全同態(tài)加密函數(shù),得到密文處理程序,包括:
13、確定同態(tài)加密參數(shù),其中包括目標(biāo)乘法深度;
14、在所述同態(tài)操作序列的目標(biāo)位置插入自舉操作,形成更新操作序列,所述目標(biāo)位置使得所述更新操作序列中任意操作結(jié)果的乘法深度不超過所述目標(biāo)乘法深度;
15、遍歷更新操作序列中的各個(gè)操作,根據(jù)所述同態(tài)加密參數(shù)調(diào)用同態(tài)操作對(duì)應(yīng)的全同態(tài)加密函數(shù)和自舉操作對(duì)應(yīng)的函數(shù),得到密文處理程序。
16、進(jìn)一步地,所述目標(biāo)乘法深度采用如下方式確定:
17、分析所述明文處理程序所需的總乘法深度;
18、若總乘法深度小于或等于2倍自舉操作所需的乘法深度,則選取總乘法深度為所述目標(biāo)乘法深度;
19、若總乘法深度大于2倍自舉操作所需的乘法深度,則選取2倍自舉操作所需的乘法深度為所述目標(biāo)乘法深度。
20、進(jìn)一步地,所述同態(tài)加密參數(shù)包括多項(xiàng)式環(huán)的目標(biāo)維度;
21、所述調(diào)用同態(tài)操作對(duì)應(yīng)的全同態(tài)加密函數(shù),包括:
22、根據(jù)所述多項(xiàng)式環(huán)的目標(biāo)維度,初始化同態(tài)操作對(duì)應(yīng)的全同態(tài)加密函數(shù);
23、調(diào)用初始化后的全同態(tài)加密函數(shù)。
24、進(jìn)一步地,所述多項(xiàng)式環(huán)的目標(biāo)維度采用如下方式確定:
25、分析算子進(jìn)行批處理數(shù)據(jù)的大小,得到所需的多項(xiàng)式環(huán)的最小維度;
26、根據(jù)所述目標(biāo)乘法深度和同態(tài)加密標(biāo)準(zhǔn)調(diào)整所述多項(xiàng)式環(huán)的最小維度,得到所述多項(xiàng)式環(huán)的目標(biāo)維度。
27、進(jìn)一步地,所述同態(tài)加密參數(shù)包括目標(biāo)旋轉(zhuǎn)密鑰;
28、所述調(diào)用同態(tài)操作對(duì)應(yīng)的全同態(tài)加密函數(shù),包括:
29、當(dāng)同態(tài)操作為全同態(tài)旋轉(zhuǎn)操作時(shí),根據(jù)所述目標(biāo)旋轉(zhuǎn)密鑰,初始化旋轉(zhuǎn)操作對(duì)應(yīng)的全同態(tài)加密函數(shù);
30、調(diào)用初始化后的全同態(tài)加密函數(shù)。
31、進(jìn)一步地,所述目標(biāo)旋轉(zhuǎn)密鑰采用如下方式確定:
32、掃描所述同態(tài)操作序列中的所有全同態(tài)旋轉(zhuǎn)操作,得到各個(gè)全同態(tài)旋轉(zhuǎn)操作分別對(duì)應(yīng)的偏移量;
33、根據(jù)各個(gè)偏移量,生成所述目標(biāo)旋轉(zhuǎn)密鑰。
34、進(jìn)一步地,所述同態(tài)加密參數(shù)包括各個(gè)變量的目標(biāo)模數(shù);
35、所述調(diào)用同態(tài)操作對(duì)應(yīng)的全同態(tài)加密函數(shù),包括:
36、根據(jù)各個(gè)變量的目標(biāo)模數(shù),初始化同態(tài)操作對(duì)應(yīng)的全同態(tài)加密函數(shù);
37、調(diào)用初始化后的全同態(tài)加密函數(shù)。
38、進(jìn)一步地,所述各個(gè)變量的目標(biāo)模數(shù)采用如下方式確定:
39、根據(jù)所述目標(biāo)乘法深度和所述多項(xiàng)式環(huán)的目標(biāo)維度,確定各個(gè)變量的目標(biāo)模數(shù);或者,
40、根據(jù)用戶指令,確定各個(gè)變量的目標(biāo)模數(shù)。
41、第二方面,提供了一種將明文處理程序編譯為密文處理程序的裝置,裝置包括:
42、獲取單元,用于獲取明文處理程序,所述明文處理程序包括多個(gè)算子;
43、轉(zhuǎn)化單元,用于將所述獲取單元獲取的多個(gè)算子中各個(gè)算子分別轉(zhuǎn)化為對(duì)應(yīng)的同態(tài)操作,得到同態(tài)操作序列;其中,當(dāng)任一算子屬于線性算子時(shí),直接將其轉(zhuǎn)化為對(duì)應(yīng)的同態(tài)操作;當(dāng)該算子屬于非線性算子時(shí),通過多項(xiàng)式擬合的方式確定對(duì)應(yīng)的目標(biāo)多項(xiàng)式,將該算子轉(zhuǎn)化為所述目標(biāo)多項(xiàng)式對(duì)應(yīng)的同態(tài)操作;
44、調(diào)用單元,用于遍歷所述轉(zhuǎn)化單元得到的同態(tài)操作序列中各個(gè)同態(tài)操作,調(diào)用同態(tài)操作對(duì)應(yīng)的全同態(tài)加密函數(shù),得到密文處理程序。
45、第三方面,提供了一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其上存儲(chǔ)有計(jì)算機(jī)程序,當(dāng)所述計(jì)算機(jī)程序在計(jì)算機(jī)中執(zhí)行時(shí),令計(jì)算機(jī)執(zhí)行第一方面的方法。
46、第四方面,提供了一種計(jì)算設(shè)備,包括存儲(chǔ)器和處理器,所述存儲(chǔ)器中存儲(chǔ)有可執(zhí)行代碼,所述處理器執(zhí)行所述可執(zhí)行代碼時(shí),實(shí)現(xiàn)第一方面的方法。
47、通過本說明書實(shí)施例提供的方法和裝置,首先獲取明文處理程序,所述明文處理程序包括多個(gè)算子;然后將所述多個(gè)算子中各個(gè)算子分別轉(zhuǎn)化為對(duì)應(yīng)的同態(tài)操作,得到同態(tài)操作序列;其中,當(dāng)任一算子屬于線性算子時(shí),直接將其轉(zhuǎn)化為對(duì)應(yīng)的同態(tài)操作;當(dāng)該算子屬于非線性算子時(shí),通過多項(xiàng)式擬合的方式確定對(duì)應(yīng)的目標(biāo)多項(xiàng)式,將該算子轉(zhuǎn)化為所述目標(biāo)多項(xiàng)式對(duì)應(yīng)的同態(tài)操作;最后遍歷所述同態(tài)操作序列中各個(gè)同態(tài)操作,調(diào)用同態(tài)操作對(duì)應(yīng)的全同態(tài)加密函數(shù),得到密文處理程序。由上可見,本說明書實(shí)施例,由明文處理程序自動(dòng)生成密文處理程序,其中,針對(duì)非線性算子,通過多項(xiàng)式擬合的方式支持其轉(zhuǎn)化為對(duì)應(yīng)的同態(tài)操作。開發(fā)者不必直接開發(fā)密文處理程序,而是可以僅開發(fā)明文處理程序,后續(xù)明文處理程序可以自動(dòng)轉(zhuǎn)換為密文處理程序,開發(fā)難度大幅降低,從而能夠提升密文處理程序的開發(fā)效率。