閱讀paper"一種高效的同態加密方案及其應用"的筆記。
基礎
生成可逆矩陣對的演算法
- 輸入:矩陣維數
- 輸出:一對互逆矩陣(\(I_1,I_2\))
演算法的目的是構造一對互逆矩陣, 同時由於每一步中的置換引數都是隨機生成的, 所以可使矩陣的
元素不具備任何特徵, 可以通過改變隨機變換的次數來調整效率和隨機性.
金鑰交換技術
來源於BGV方案,作用是將一組密文 - 私鑰轉換到一組新的密文 -私鑰, 同時保證解密正確性.
- 輸入:金鑰\(S\)
- 輸出:新金鑰\(S'\)和矩陣\(M\)
假設原始的金鑰和密文為\(S\)和\(c\),則經過金鑰交換後輸出滿足:新金鑰和新密文為\(S'\)和\(c'=Mc+e \approx Mc\),其中\(e\)很小可以忽略,可以看出金鑰交換產生的新密文,噪音增加了一點。
正確性
其中\(I\)是\(m*m\)的單位矩陣。
同態方案
金鑰生成
- 輸入:引數m
- 輸出:私鑰\(S\)和公鑰\(M\)
其中,矩陣\(wI\)視為明文向量對應的私鑰進行了一次金鑰轉換, 得到公、私鑰,所以,假設\(wI\)對應的明文為\(c\),\(S'\)對應的明文為\(c'=Mc\),則:
\(w\)是什麼?也是引數?
加密
- 輸入:公鑰\(M\),明文\(x\)
- 輸出:密文\(c\)
加密過程中除計算新密文外, 還引入了一個噪聲向量, 從而使得加密結果形式上滿足 LWE 問題.
解密
- 輸入:私鑰\(S\),密文\(c\)
- 輸出:明文\(c\)
其中\(\left \lceil a\right \rfloor_q\)表示對向量或矩陣\(a\)中各元素在模\(q\)的域中取最近整數.(四捨五入)。
解密正確性的引數要求
為保證解密的正確性, 需要對演算法中的各引數做出限制. 下面分析解密過程:
要保證解密正確性需要限制\(|Se/w|< 1/2\) , 其中符號\(|a|\)表示向量或矩陣\(a\)的元素的最大絕對值. 將該限制條件進一步加強, 然後展開得到:
所以噪聲\(e\)的上限:
在該限制條件下, 可以保證解密正確. 在實際應用中, 噪聲往往會隨著同態計算的進行而不斷增大, 而
當噪聲足夠大時, 就會造成解密失敗. 所以在實際應用中, 可以噪音上限的公式中, 得到一個密文可
以進行的同態計算深度\(L\), 然後再應用中加以限制, 以此來保證同態計算的結果可以順利解密.(Leveled-FHE)。
同態計算
加法
1、用同一公鑰\(M\)加密兩個等長的明文向量\(x_1,x_2\)有:
2、將上面兩式相加有:
只需給噪聲向量 \(e_1, e_2\)合適的限制條件即可得到:
只要滿足:\(|S(e_1+e_2)|<1/2\),就可以解密正確。
線性變換
線性變換:給定整數\(x\),輸出\(Gx\),其中\(G\)是一個矩陣/向量/整數等,那麼如何設計:\(Dec(Gc)=Gx\)
1、根據解密結構\(x=\left \lceil Sc/w\right \rfloor_q\)可得:\(Gx=G\left \lceil Sc/w\right \rfloor_q=\left \lceil GSc/w\right \rfloor_q=Dec(GS,c)\),即密文\(c\)可以看作是明文\(Gx\)在公鑰\(GS\)下加密的。
2、然後利用金鑰交換技術,將\(GS\)作為輸出,得到新金鑰\(S'\),及\(M'=Trans(GS)\),此時\(S'\)對應的新密文為\(c'=M'c+e'\),根據金鑰交換的性質有:
3、用新金鑰\(S'\)對新密文解密:
可以看出上面的噪音不僅有第一次加密時引入的噪聲\(e\), 還有金鑰轉換過程中引入的新噪聲\(e'\)以及因進行線性變換而引入的噪聲\(|GSe+S'e'|\). 將上面解密過程展開有:
所以解密正確的條件是:
隨著計算深度的增加噪聲的大小也快速增大, 直至無法正確解密.
總結一下流程:
現在給出一個密文\(c\),想計算其線性變換\(Gc\),然後解密後相當於對應的明文\(x\)做線性變換\(Gx\):
1、將密文\(c\),對應的私鑰\(S\),變為\(GS\),作為金鑰交換的輸入
2、金鑰交換輸出新私鑰\(S'\),得到新密文\(c'\)
3、用新私鑰\(S'\)解密新密文\(c'\)得到明文\(Gx\)
加權內積
什麼是加權內積?
兩向量內積:\(<X,Y>=x_1y_1+x_2y_2+...+x_ny_n\)
兩向量加權內積:\(<X,Y,H>=x_1y_1h_1+x_2y_2h_2+...+x_ny_nh_n\),其中\(H\)是權值向量
關於加權內積沒看太懂。
安全性分析
金鑰安全
回想方案的公私鑰{\(M,S\)}
金鑰安全就是不能根據公鑰\(M\)推測出私鑰\(S\)或者在一定程度上模擬出解密過程,即不能僅從公鑰和密文就可以解出明文!
分析
觀察公鑰\(M=P_mM_t\),是否能從\(M\)中推斷出\(P_m\)或者\(M_t\)?
因為\(P_m\)是一個隨機可逆矩陣,想直接構造出\(P_m\)是困難的。可行的辦法就是\(P_m^{-1}M=M_t\),即需要知道\(P_s\),可以嘗試隨機取\(P_s\),但矩陣規模很大時,很難選取,所以選擇合適的矩陣規模,是影響方案安全性的重要引數。
語義安全
模擬方案是否滿足IND-CPA(不可區分的選擇明文攻擊):
若攻擊者能以概率為\(Pr=1/2+\varepsilon\)獲勝,則攻擊者同樣也可以以相同的概率求出\(x\):
已知$ c_i,M_i,c_i=M_ix+e_i,0 \leq i<n$
該問題明顯就是LWE問題了,LWE問題被Regev證明是困難的,所以該方案的安全性規約到LWE困難問題上