論文精讀筆記與思考:An Efficient Privacy-Preserving Outsourced Calculation Toolkits with Multiple Keys

系統模型

系統模型圖

在這裏插入圖片描述

系統參與實體介紹

一、KGC:
可信的密鑰生成中心,它負責分發全部實體(K1個DPs和K2個RUs的弱密鑰對)。而後計算全部DPi的聚合公鑰 p k Σ pk_{\varSigma} pkΣ再發送給CP和CSP。而後用模數 N N N的卡邁克爾函數值 S K = λ SK=\lambda SK=λ做爲系統強密鑰(便可以對任何密文消息進行解密),再將其隨機拆分紅, S K 1 = λ 1 SK_1=\lambda _1 SK1=λ1 S K 2 = λ 1 SK_2=\lambda _1 SK2=λ1,知足條件:html

λ 1 + λ 1 ≡ 0 ( m o d    λ ) λ 1 + λ 1      ≡ 1 ( m o d    N 2 ) \lambda _1+\lambda _1\equiv 0 \left( mod\,\,\lambda \right) \\ \lambda _1+\lambda _1\,\,\,\,\equiv 1 \left( mod\,\,N^2 \right) λ1+λ10(modλ)λ1+λ11(modN2)算法

二、DPs:
DPs是數據提供商的集合,在醫療大數據模型下,DPs能夠是醫療機構,他們掌握着大量的醫療數據和對應的診斷結果。DPi會將本身的數據集用本身的公鑰加密而後上傳到雲平臺CP。數據庫

三、RUs:
RUs是向CP發起請求的用戶集合,可是在本文方案中,是端到端通訊模型,因此通常是單個用戶RUi用本身的公鑰對本身的病症加密,再發給CP,向CP請求獲得診斷結果。安全

四、CP:
CP是距離客戶端(DPs和RUs)最近的服務器,它直面多源密態數據。因爲數據是不一樣用戶用不一樣公鑰加密的,例如: [ x ] p k a \left[ x \right] _{pk_a} [x]pka [ x ] p k b \left[ x \right] _{pk_b} [x]pkb,通常的密碼算法是沒法對不一樣公鑰加密的數據進行計算的。此時就須要依賴「同態加密」技術,讓CP在沒有數據訪問權的狀況下持有數據操做權。可是本文的方案是基於加法同態的(相似Paillier方案),因此還須要依賴另外一個服務器CSP。服務器

首先CP會利用同態性對數據進行同態處理,這部分的工做通常是對隱私信息進行匿名保護。通常的方法是加入隨機數 r r r,可是須要主要這個 r r r必定要可以在後續的同態計算中消去。而後再利用部分密鑰 S K 1 SK_1 SK1對消息進行部分解密,再發給CSP。markdown

五、CSP:
CSP是計算服務提供商,它負責利用 S K 2 SK_2 SK2對部分解密的密文消息進行全解密,此時獲得的是明文,可是這個明文是被CP匿名保護後的明文,因此CSP仍然不可能獲得數據擁有者的隱私信息機器學習

拿到明文後,CSP能夠進行任何運算,由於此時是在明文下計算。本文這樣設計的好處就是利用CSP去避免半同態加密的計算侷限性分佈式

任何在計算結束後,CSP利用聚合公鑰 p k Σ pk_{\varSigma} pkΣ對處理後的數據進行重加密,而後發送給CP。而後CP再利用同態性,把 p k Σ pk_{\varSigma} pkΣ加密的消息中的噪音(隨機數)消去。ide

分佈式雙服務器的好處

因爲強密鑰 S K SK SK可以對任何用戶加密後的密文進行解密,從而***、惡意訪問到用戶的隱私。而一臺服務器是有可能被敵手攻陷的,可是兩臺服務器對敵手來講難度就很大了,幾乎不可能完成。若是讓一臺服務器擁有強私鑰 S K SK SK,則這臺服務器能力太大,如若被***後果不堪設想,任何再委託CSP輔助計算,專門擔任計算服務提供商。這樣的設計是很好的,值得學習!函數

問題陳述

數據格式

本文提供的問題描述,DPs的數據屬於結構化數據(二維表、關係型數據庫),而請求用戶RU是但願經過大數據算法、機器學習算法獲取這些數據的統計學信息。

(疑惑點)數據格式的思考筆記

如今的大數據,結構化數據佔比愈來愈少,絕大多數都是非結構化數據!若是是非結構化數據,那麼如何在數據格式上安全處理呢?本文未提到數據格式處理的方案,可是大數據算法主要的時間開銷就是在數據格式上!(來自Hadoop課所學,若是有誤,還請指教!)

分佈式雙陷門密碼體制

原文描述的密碼體制

在這裏插入圖片描述

(不嚴謹)我以爲可能會形成解密失敗的算法

在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

(不嚴謹)我以爲解密失敗的緣由,還請大佬指正

在密鑰生成階段(KeyGen), λ = l c m ( p − 1 , q − 1 ) / 2 \lambda =lcm\left( p-1,q-1 \right) /2 λ=lcm(p1,q1)/2,計算的結果是 λ = p ′ q ′ \lambda =p^{\prime}q^{\prime} λ=pq。而真正的,模數 N N N的卡邁克爾函數應該是:
λ ( N ) = l c m ( λ ( p ) , λ ( q ) ) = 2 p ′ q ′ \lambda \left( N \right) =lcm\left( \lambda \left( p \right) ,\lambda \left( q \right) \right) =2p^{\prime}q^{\prime} λ(N)=lcm(λ(p),λ(q))=2pq
很顯然,這裏的卡邁克爾函數並非密鑰生成階段(KeyGen)的 λ \lambda λ,然後續的加解密須要依賴卡邁克爾函數的性質,不然可能沒法保障能正確解密!

卡邁克爾函數的筆記

一、卡邁克爾函數的定義

在這裏插入圖片描述

從上面的定義能夠看出,卡邁克爾函數是是和指數息息相關的!由於卡邁克爾函數是最小的指數,所以其餘指數必定是卡邁克爾函數的倍數。

二、我對卡邁克爾定理的證實

定理描述:
已知 n = n 1 × n 2 n=n_1\times n_2 n=n1×n2,且 ( n 1 , n 2 ) = 1 \left( n_1,n_2 \right) =1 (n1,n2)=1,則: λ ( n ) = [ λ ( n 1 ) , λ ( n 1 ) ] \lambda \left( n \right) =\left[ \lambda \left( n_1 \right) ,\lambda \left( n_1 \right) \right] λ(n)=[λ(n1),λ(n1)]

證實:
由卡邁克爾函數的定義,得:
g λ ( n ) ≡ 1 ( m o d    n ) g^{\lambda \left( n \right)}\equiv 1 \left( mod\,\,n \right) gλ(n)1(modn)
因此:
g λ ( n ) = k n + 1 g^{\lambda \left( n \right)}=kn+1 gλ(n)=kn+1
又由於: n = n 1 × n 2 n=n_1\times n_2 n=n1×n2,因此:
g λ ( n ) = k n 1 n 2 + 1 g^{\lambda \left( n \right)}=kn_1n_2+1 gλ(n)=kn1n2+1
此時,分別對 g λ ( n ) g^{\lambda \left( n \right)} gλ(n) n 1 n_1 n1 n 2 n_2 n2,獲得:
{ g λ ( n ) ≡ 1 ( m o d    n 1 ) g λ ( n ) ≡ 1 ( m o d    n 2 ) \begin{cases} g^{\lambda \left( n \right)}\equiv 1 \left( mod\,\,n_1 \right)\\ g^{\lambda \left( n \right)}\equiv 1 \left( mod\,\,n_2 \right)\\ \end{cases} {gλ(n)1(modn1)gλ(n)1(modn2)
又由於:
g λ ( n 1 ) ≡ 1 ( m o d    n 1 ) g^{\lambda \left( n_1 \right)}\equiv 1 \left( mod\,\,n_1 \right) gλ(n1)1(modn1)
因此:
λ ( n ) = k 1 λ ( n 1 ) \lambda \left( n \right)=k_1\lambda \left( n_1 \right) λ(n)=k1λ(n1)
同理:
λ ( n ) = k 2 λ ( n 2 ) \lambda \left( n \right)=k_2\lambda \left( n_2 \right) λ(n)=k2λ(n2)
因此:
[ λ ( n 1 ) , λ ( n 2 ) ]    ∣    λ ( n ) \left[ \lambda \left( n_1 \right) , \lambda \left( n_2 \right) \right] \,\,|\,\, \lambda \left( n \right) [λ(n1),λ(n2)]λ(n)
也就是說, λ ( n ) \lambda \left( n \right) λ(n) λ ( n 1 ) \lambda \left( n_1 \right) λ(n1) λ ( n 2 ) \lambda \left( n_2 \right) λ(n2)的公倍數,假設任意一個公倍數是:
M = k 1 λ ( n 1 ) = k 2 λ ( n 2 ) M=k_1\lambda \left( n_1 \right)=k_2\lambda \left( n_2 \right) M=k1λ(n1)=k2λ(n2)
因而,有:
{ g M ≡ 1 ( m o d    n 1 ) g M ≡ 1 ( m o d    n 2 ) \begin{cases} g^{M}\equiv 1 \left( mod\,\,n_1 \right)\\ g^{M}\equiv 1 \left( mod\,\,n_2 \right)\\ \end{cases} {gM1(modn1)gM1(modn2)
又由於: ( n 1 , n 2 ) = 1 \left( n_1,n_2 \right) =1 (n1,n2)=1,根據中國剩餘定理,獲得:
g M ≡ 1 ( m o d    n ) g^{M}\equiv 1 \left( mod\,\,n \right) gM1(modn)
因此,任意的 λ ( n 1 ) \lambda \left( n_1 \right) λ(n1) λ ( n 2 ) \lambda \left( n_2 \right) λ(n2)的公倍數 M M M都是 λ ( n ) \lambda \left( n \right) λ(n)的倍數,因此:
λ ( n ) = [ λ ( n 1 ) , λ ( n 1 ) ] \lambda \left( n \right) =\left[ \lambda \left( n_1 \right) ,\lambda \left( n_1 \right) \right] λ(n)=[λ(n1),λ(n1)]
成立!證畢!

三、邁克爾函數的性質

在這裏插入圖片描述
大括號的第一個等式是卡邁克爾函數的性值,很少贅述,而後第二個等式證實以下:

證實:
由於, w λ ≡ 1 ( m o d    n ) w^{\lambda}\equiv 1 \left( mod\,\,n \right) wλ1(modn)成立,因而等價於:
w λ = k n + 1 w^{\lambda}=kn+1 wλ=kn+1
因此:
w n λ = ( k n + 1 ) n                                                                          = C n 0 ( k n ) 0 1 n + C n 1 ( k n ) 1 1 n − 1 + …                      = 1 + n 2 × ( … ) w^{n\lambda}=\left( kn+1 \right) ^n \\ \,\,\,\, \,\, \,\, \,\, \,\, \,\, \,\, \,\, \,\, \,\, \,\, \,\, \,\, \,\, \,\, \,\, \,\, \,\, \,\, \,\, \,\, \,\, \,\, \,\, \,\, \,\, \,\, \,\, \,\, \,\, \,\, \,\, \,\, \,\, \,\, =C_{n}^{0}\left( kn \right) ^01^n+C_{n}^{1}\left( kn \right) ^11^{n-1}+… \\ \,\,\,\, \,\, \,\, \,\, \,\, \,\, \,\, \,\, \,\, =1+n^2\times \left( … \right) wnλ=(kn+1)n=Cn0(kn)01n+Cn1(kn)11n1+=1+n2×()
因此, w n λ ≡ 1 ( m o d    n 2 ) w^{n\lambda}\equiv 1 \left( mod\,\,n^2 \right) wnλ1(modn2)成立,證畢!

四、卡邁克爾函數的總結

卡邁克爾函數是構造Paillier方案的核心數論基礎,從本文的方案也顯而易見,幾乎全部的密碼操做、任何加解密,都須要依賴卡邁克爾函數!

本文中數學不嚴謹的地方也正是體如今這裏, λ \lambda λ不是正確的卡邁克爾函數,後續的解密、加密操做都不能保障正確性!

隱私保護下的整型計算包

一、加法同態性在本文中的應用

[ x ] p k ⋅ [ y ] p k = [ x + y ] p k \left[ x \right] _{pk}\cdot \left[ y \right] _{pk}=\left[ x+y \right] _{pk} [x]pk[y]pk=[x+y]pk

[ x ] p k N − 1 = [ ( N − 1 ) x ] p k = [ − x ] p k \left[ x \right] _{pk}^{N-1}=\left[ \left( N-1 \right) x \right] _{pk}=\left[ -x \right] _{pk} [x]pkN1=[(N1)x]pk=[x]pk

二、安全加法協議

在這裏插入圖片描述

協議分析:
首先來自DPa和DPb的數據[x]和[y]是不一樣公鑰加密的,而後CP是外包存儲方,因而CP擁有他們的密態數據。CP首先選取兩個隨機數,經過同態性質,來對明文x和y進行隱藏。而後利用部分強密鑰解密,獲得部分解密密文,發給CSP。

而後CSP經過屬於它的部分強密鑰解密獲得隱藏後的明文,好比:x+y+ra+rb,而後這就完成了加法運算了!再用聯合公鑰(此時的聯合公鑰是包含了請求發起者的公鑰的!)加密,再發給CP。

CP再次利用同態性,把噪聲ra+rb去掉,而後把密文發給請求用戶RU。請求用戶,調用下面的算法進行解密,獲得本身須要的SAD結果:
在這裏插入圖片描述
其中聯合公鑰如咱們所分析,是帶上請求用戶的公鑰信息的:
在這裏插入圖片描述

安全加法協議的安全問題

一、在沒有身份認證的狀況下,敵手RU能夠僞造一個DPi存儲[0]而後聯合DPj的密文[x]向服務器發起SAD的請求,這樣會獲得[0+x]的明文,也就是明文x。這樣DPj的隱私數據就泄露了。

二、在本文後面加上了一個身份認證,可是我以爲有點含糊,並無詳細的身份認證協議。仍然是有很多漏洞的,好比「欺騙***」。

三、安全符號位查詢協議

在這裏插入圖片描述

在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

個人諸多疑惑,關於這個安全查詢符號協議以及後續協議

一、在Step1,爲什麼須要經過翻硬幣,來肯定 l l l的形式???

二、在Step2,假設 l = r ( 2 x + 1 ) l=r(2x+1) l=r(2x+1),那麼:
L ( l ) = L ( r ) + L ( x ) + 1 < = 3 / 8 L ( N ) + 1 L(l)=L(r)+L(x)+1<=3/8L(N)+1 L(l)=L(r)+L(x)+1<=3/8L(N)+1
那麼如此以來怎麼判斷是否是符合 L ( l ) < 3 / 8 L ( N ) L(l) < 3/8L(N) L(l)<3/8L(N)???仍是說個人理解有錯誤

尤爲是在 l = − r ( 2 x + 1 ) l=-r(2x+1) l=r(2x+1)的時候, l l l是一個負數,根據計算機的補碼錶示,最高位符號位是1,那麼它的比特長度應該是定值呀???請賜教,感謝!

啓發與參考文獻

關於系統模型

本文系統模型雙服務器的思路我以爲很棒,是值得學習的!哪怕加入了全同態,興許也能夠利用雙服務器的思路去分擔計算!只是須要加入身份認證協議,來保證信息傳輸的安全。

關於安全協議

本文的安全協議設計的是計算輕量級的加法同態方案,它其實不針對任何機器學習的算法、大數據算法,而是爲這些算法的實現提供了高效的計算包,至關因而提供了高效安全的計算原語。

可是我以爲一個地方不太好,那就也是由系統模型帶來的問題,我以爲須要對CP和CSP進行身份認證,而後RU也須要有身份管理和認證的中心,不然安全性仍是不佳?

幾種計算的設計思路仍是很好的,很是值得借鑑!並且系統的生成元的設計也不錯,可是我以爲把 g = − a 2 N g=-a^{2N} g=a2N改爲 g = a 2 N g=a^{2N} g=a2N會更好!由於此處的卡邁克爾函數值擁有是偶數,-1這個係數我認爲能夠去掉,固然在這裏無傷大雅!

參考文獻

[1] X. Liu, R. H. Deng, K.-K. R. Choo, and J. Weng, 「An efficient privacy-preserving outsourced calculation toolkit with multiple keys,」 IEEE Trans. Inf. Forensics Security, vol. 11, no. 11, pp. 2401–2414, Nov. 2016.
[2] P. Paillier, 「Public-key cryptosystems based on composite degree residuosity classes,」 in Proc. Int. Conf. Theory Appl. Cryptograph. Techn.,1999, pp. 223–238.

Update

忘了更新了,上面我提出的思考問題以及一些數學/安全上不嚴謹的問題,我都已經獲得本身滿意的理解了。若是有大佬有新的想法,歡迎探討~

不算什麼很大的問題,我就不列出來了~

相關文章
相關標籤/搜索