(二)聯邦學習的安全機制


一、基於同態加密(Homomorphic Encryption, HE)的安全機制

同態加密指的是直接對加密數據進行處理,然后再解密,得到的結果跟直接處理明文的效果相匹配。如下圖所示,同態加密處理流程和明文狀態處理流程的區別在於數據輸入之前的加密和輸出之后的解密步驟。

同態加密的定義

一個同態加密方案由一個四元組組成:
H={KeyGen,Enc,Dec,Eval}

  • KeyGen是密鑰生成函數。其輸入是密鑰生成元g。對於非對稱同態加密,輸出密鑰對{pk,sk}=KeyGen(g),pk是用於明文加密的公鑰,sk是用於密文解密的私鑰。對於對稱同態加密,只生成一個密鑰sk=KeyGen(g),同時用於明文加密和密文解密。
  • Enc是加密函數。對於非對稱加密,其輸入是公鑰pk和明文m,輸出密文\(c=Enc_{pk}(m)\)。對於對稱同態加密,使用密鑰sk和明文m作為輸入,輸出密文\(c=Enc_{sk}(m)\)
  • Dec是解密函數。對於非對稱和對稱同態加密,使用私鑰sk和密文c用作輸入,輸出明文\(m=Dec_{sk}(c)\)。這里的明文一般已經經過計算了,跟輸入的明文肯定是不同的。
  • Eval是評估函數。輸入密文c和公鑰pk,輸出與明文對應的密文(輸入密文輸出還密文,或許應該是輸出與密文對應的明文?),用於驗證加密算法的正確性。

一個安全密碼系統如果滿足以下條件,則可稱為是同態的:

\(\forall\)\(m_1\),\(m_2\) \(\in\) M, \(Enc_{pk}(m_1 \bigodot_{M} m_2) \leftarrow Enc_{pk}(m_1) \bigodot_{C} Enc_{pk}(m_2)\)

其中\(Enc_{pk}()\)表示使用公鑰作為加密密鑰的加密函數,M表示明文空間,C表示密文空間。\(\bigodot_{M}\)\(\bigodot_{C}\)分別表示操作符\(\bigodot\)在明文空間M和密文空間C上的運算。上式的意思是,同態密碼系統的特點是,先在明文空間上運算再加密,和先解密再在密文空間上運算的結果是一致的。

為簡化表述,用[[v]]表示對明文v的同態加密結果,用同一個運算符表示在明文空間和密文空間上的運算符號,比如\(+\)\(\times\)等運算。可以定義加法同態運算和乘法同態運算。

  • 加法同態運算 對於在明文空間M中的任意兩個元素u和v,其加密結果是[[u]]和[[v]],滿足:
    \(Dec_{sk}([[u]]+[[v]])=Dec_{sk}([[u+v]])=u+v\)
    即不管是先加密再運算,還是直接運算再加密,最后解密出來的結果都與直接運算是相同的。
  • 乘法同態運算 對於在明文空間M中的任意兩個元素u和v,其加密結果是[[u]]和[[v]],滿足:
    \(Dec_{sk}([[u]]\times[[v]])=Dec_{sk}([[u\times v]])=u\times v\)

同態加密的分類

可分為三類:部分同態加密(Partially Homomorphic Encryption, PHE)、些許同態加密(Somewhat Homomorphic Encryption, SHE)、全同態加密(Fully Homomorphic Encryption, FHE)。

部分同態加密PHE

也稱為半同態加密,部分同態加密中(M,\(\bigodot_{M}\))和(C,\(\bigodot_{C}\))都可以構成一個群。
群定義:對於一個集合和一個群乘運算組成的二元組,如果它們滿足封閉性、結合律、單位元、逆元,四個條件,則它們構成一個群。
因此,部分同態加密PHE中(M,\(\bigodot_{M}\))和(C,\(\bigodot_{C}\))都滿足群的四個條件,以(C,\(\bigodot_{C}\))為例,得:

且操作符\(\bigodot_{C}\)無限次用於密文空間PHE是一種群同態技術。

  • 加法同態。如果明文上的運算符是加法運算符,則該方案稱為加法同態的。對應密文上的運算符也是加法運算符。滿足加法同態的加密算法一般也滿足標量乘法同態,因為標量乘法運算可以轉換為有限次加法運算。
  • 乘法同態。明文上運算是乘法運算,則該加密算法被稱為乘法同態的,且對應密文上也是乘法運算。典型的乘法同態加密算法典型的如RSA加密算法和ElGamal加密算法。
    部分同態加密PHE的特點是要求其加密操作符運算只需要滿足加法同態或者乘法同態中的一個即可,不需要同時滿足。

些許同態加密SHE

SHE是指經過同態加密后的密文數據,在其上執行的操作只能是有限的次數。這是因為SHE為了安全性使用了噪聲數據,在密文上的每一次操作都會增加密文上的噪聲量,乘法操作是增長噪聲量的主要手段。但經過多次運算,噪聲量會超過上限值,此時解密操作就不能得到正確結果了。

全同態加密FHE

全同態加密算法FHE允許對密文進行無限次的加法和乘法運算操作,加法和乘法運算是完備的,任何函數都可以轉換為僅包含加法和乘法的形式。所以理論上FHE能夠計算任何函數功能。
FHE算法的設計可以分為四種:

  • Ideal Lattice-based FHE:基於理想格的全同態加密。
  • Approximate-GCD based FHE:該方案安全性基於AGCD假設和稀疏子集和假設。
  • (R)LWE-based FHE:與上邊兩種方案相比,該方案被稱為第二代全同態加密技術。該方案基於(R)LWE構造,通過引入再線性化技術和維數模約減技術實現了乘法的同態加密,提升了效率。
  • 基於近似特征向量技術實現的FHE:前面的加密方案都需要借助計算密鑰的輔助來實現全同態加密,但計算密鑰的大小制約了全同態加密的性能。例如GSW,無須計算密鑰。這是第三代全同態加密方案。

二、基於差分隱私(Differential Privacy, DP)的安全機制

差分隱私采用一種隨機機制,使得當輸入中單個樣本改變之后,輸出分布不會有太大變化。如下圖所示,對於差別只有一條記錄的兩個數據集,查詢它們獲得相同的輸出的概率非常接近,這樣用戶及時獲取了輸出結果,也無法通過結果推測輸入數據來自哪一方。

差分隱私提供了一種信息理論安全性保障,即函數的輸出結果對數據集里的任何特定記錄都不敏感。因此差分隱私能被用於抵抗成員推理攻擊。按照數據收集方式的不同,可以分為中心化差分隱私和本地化差分隱私。中心化差分隱私是各參與方把本地數據發送給可信第三方,由可信第三方進行差分隱私處理。本地化差分隱私則是各參與方分別進行差分隱私處理,然后將擾動數據發送給第三方,第三方不要求是可信的。

中心化差分隱私

中心化差分隱私的(\(\epsilon,\delta\))-差分隱私定義


其中隱私保護預算\(\epsilon\)用於控制算法M在鄰近數據集\(D\)\(D^{'}\)上獲得相同輸出的概率比值,\(\epsilon\)值越小,獲得相同輸出的概率越接近,因此用戶無法通過輸出結果來區分輸入數據來自哪一個數據集,即無法察覺數據集的微小變化,從而達到隱私保護的目的。\(\epsilon\)值越大,隱私保護程度越低。

中心化差分隱私串行組合

中心化差分隱私並行組合

本地化差分隱私

中心化差分隱私是定義在任意兩個數據集的輸出相似性上的,而本地化差分隱私是定義在本地數據任意兩條記錄的輸出相似性上的。本地化差分隱私也擁有中心化差分隱私的串行組合和並行組合特性。

差分隱私的實現機制

目前實現差分隱私保護的主流方法是添加擾動噪聲數據。

中心化差分隱私與本地化差分隱私的實現方法非常不同。中心化差分隱私需要保護全體數據的隱私,有全局敏感性的概念,采用的擾動機制包括高斯噪聲機制、拉普拉斯噪聲機制、指數噪聲機制等。本地化差分隱私沒有全局隱私敏感性的概念,采用的擾動機制一般是隨機響應。

本節只討論中心化差分隱私的實現機制。

全局敏感度

要想知道算法函數\(M\)需要添加多少噪聲才能提供(\(\epsilon, \delta\))-差分隱私保護,就需要先定義該算法在當前數據上的全局敏感度,可分為\(L_1\)全局敏感度和\(L_2\)全局敏感度。

不管是\(L_1\)還是\(L_2\)敏感度,其結果與提供的數據集無關,只由函數本身決定。
當全局敏感度較大時,說明數據集的細微變化可能導致函數\(M\)的輸出有很大不同,因此需要添加較大的噪聲數據,才能使函數\(M\)提供\(\epsilon, \delta\)-差分隱私保護。全局敏感度較小時,只需要添加較小的噪聲數據。

拉普拉斯機制

高斯機制

指數機制


噪聲機制總結

高斯機制和拉普拉斯機制都是面向數值型查詢結果的,直接在結果上添加噪聲即可。指數機制是面向非數值型的。

機器學習中的差分隱私

在機器學習領域應用差分隱私算法,關鍵問題是何時、何階段添加噪聲數據。差分隱私算法根據噪聲擾動使用方式和使用階段的不同,可分為以下幾類:

  • 輸入擾動:噪聲數據被加入訓練數據。
  • 目標擾動:噪聲數據被加入學習算法的目標函數。
  • 算法擾動:噪聲數據被加入中間值,例如迭代算法中的梯度。
  • 輸出擾動:噪聲數據被加入訓練后的輸出參數。

三、基於安全多方計算(Secure Multi-Party Computation, MPC)的安全機制

MPC是密碼學的一個子領域,目的是多個參與方從各自的隱私輸入中計算某個函數的結果,而不將這些輸入數據展示給其它方。基於MPC,對於任何函數功能需求,都可以在不泄露除輸出以外的信息的前提下計算它。

MPC最初用來計算一個安全兩方計算問題,即百萬富翁問題:兩個百萬富翁都想比較到底誰更富有,又不想讓別人知道自己有多少錢,如何在沒有可信第三方的情況下解決這個問題。該問題后來被推廣到了多人場景。

當前主要有三種常用的隱私計算框架來實現安全多方計算。即秘密共享、不經意傳輸、混淆電路。

秘密共享(Secret Sharing,SS)

秘密共享又稱密鑰共享,指將要共享的秘密在一個用戶群體里進行合理分配,以達到由所有成員共同掌管秘密的目的。比如將原始秘密值分成n份交給n各參與方,當且僅當有至少t個秘密值組合在一起時才能重構被共享的秘密。

(t,n)門限秘密共享方案 。

對於數據集合A,有n個用戶的集合(1,2,...,n) ,一個(t,n)門限秘密共享方案包括分享和重構兩個環節。

  • 分享。借助一個算法M將原始數據m拆分成n個部分(\(s_1, s_2,...,s_n\)),將它們下發給n個用戶。
  • 重構。借助一個算法F從n個用戶中任意選取t個用戶的秘密值,構成一個t元組,這個t元組作為F的輸入,能還原原始數據m。更一般地,對於任意m,對於任意的t個用戶集合(\(i_1,i_2,...,i_t\)\(\in\)(1,2,...,n),滿足:
    \(P_r\{F(s_{i_1},s_{i_2},...,s_{i_t})==m\}=1\)
    這里t被稱為門限值。

當前秘密共享方案研究就在於如何高效地構造(t,n)門限秘密共享方案。這些方案包括算術秘密共享、Shamir秘密共享、二進制秘密共享等多種方式。

  • t=1:這是最簡單的形式,只需要給每個用戶原始數據m即可。
  • t=n:較常用的方案是,將原始數據m編碼成一個二進制表示s,對於前n-1個用戶,任意生成和s長度相等的二進制表示\(s_i\),即第i個用戶的秘密值,對於第n個用戶,將其秘密值設置為:
    \(s_n=s XOR s_1 XOR s_2 XOR...XOR s_{n-1}\)
    由異或運算的性質,二進制表示與自身異或為0,與0異或為本身,且異或滿足結合律。因此將n個用戶的秘密值求異或即可重構出原始數據。
  • t=k:實現形式很多,比如Shamir的基於拉格朗日插值法的實現,Blakley則利用多維空間點的性質建立。這種情況更有用,只要獲得一定數量的秘密值才可以獲得密鑰,且當某些秘密碎片丟失或被毀時仍有可能獲得密鑰。

不經意傳輸(Oblivious Transfer, OT)

不經意傳輸中,發送方擁有一個“消息-索引”對\((M_1,1),(M_2,2),...,(M_N,N)\),在每次傳輸時,接收方選擇一個滿足\(1\le i\le N\)的索引i,並接收\(M_i\)。接收方不知道發送方數據庫的信息,發送方整個過程中也不知道接收方選擇接收的信息。

  • "n個中取1"不經意傳輸。
    發送方A:有一個輸入表(\(x_1,...,x_n\)
    接收方B:從(1,...,n)中選擇索引i,意思是B想接收輸入中的\(x_i\)
    整個過程中A不知道B的選擇i,B也不知道A中除了\(x_i\)以外的其它輸入。
    當n=2時,兩個中取1個不經意傳輸可以執行任何的安全兩方計算操作。

混淆電路(Garbled Circuit, GC)

所有可計算問題(函數)都可以轉化為各個不同的電路,而電路是由一個個門組成的,如與門、或門、非門、與非門等。
混淆電路可以看成一種基於不經意傳輸的兩方安全計算協議。能夠在不依賴第三方的前提下,允許兩個互不信任方在各自私有輸入上對任何函數進行求值。GC中心思想是將計算電路分解為產生階段和求值階段。兩個參與方各自負責一個階段,而在每個階段中的電路都被加密處理,所以任何一方都不能從其它方獲取信息,但可以根據電路獲取結果。GC由一個不經意傳輸協議和一個分組密碼組成。電路的復雜度至少是隨輸入內容大小的增大而線性增長的。GC也被擴展用於多方問題。

四、安全機制性能效率對比

比較三種常見安全機制,同態加密、差分隱私和安全多方計算(以秘密共享策略來講解)。

  • 計算性能:從計算角度看,計算耗時主要在求梯度上。對於同態加密,計算在密文狀態下進行(例如,進行不同參與方梯度融合時在密文狀態下進行,防止通過梯度信息反推原始數據導致信息泄露),密文比明文計算耗時更長。差分隱私通過添加噪聲數據進行計算,效率與直接明文計算沒有區別。秘密共享在明文狀態下進行,計算性能不受影響
  • 通信性能:同態加密傳輸密文,比明文占用比特數更多,傳輸效率更慢。差分隱私傳輸帶噪聲明文數據,跟明文傳輸幾乎沒區別。秘密共享會將數據拆分向多方傳輸,需要多次數據傳輸才能完成。
  • 安全性:在聯邦學習的訓練過程中,通過模型參數的交互來進行訓練,而不是交換原始數據,但即使只有模型參數或梯度,也能反向破解原始的輸入數據。同態加密傳輸密文數據,安全性最可靠,秘密共享將模型參數數據拆分,只有當惡意客戶端超過一定數量且相互串通,才有信息泄露的風險,差分隱私對模型參數添加噪聲數據,但添加的噪聲會直接影響模型的性能。噪聲小時性能損失小,安全性變差;噪聲大時性能損失大,但安全性變強。

五、Python安全計算庫


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM