谷歌這個開源庫的主要工作就是設計一個切實可行的密碼學安全計算協議,其目的是為了工業界的使用。
1. 問題模型
該協議解決的主要問題就是計算隱私交集和(Private Intersection-Sum,簡稱PIS)。
問題模型可以抽象為:
有兩方各自擁有包含使用者身份的資料集,其中一方還擁有與使用者身份相關的一個整數,例如該整數可以是該使用者的交易金額。雙方想知道如下內容:
(1) 雙方擁有的共同使用者數量;
(2) 在不洩露使用者輸入的任何隱私資訊下,這些共同使用者所對應的整數之和。
這就是一個隱私交集和(PIS)問題。
該問題不是一個空想出來的問題,而是來自於企業的具體需求。
例如在廣告戰中,計算具體廣告轉化率,也就是打廣告的效果。有多少人因為廣告而購買了商品。在該需求中,可能涉及到多個企業。這是在企業合作中經常會出現的情況。
這個問題具有重要的實際價值,而且在很多場景下都需要,具有共性。
2. 技術框架
上述問題咋看起來,很像隱私集合交集問題(Private Set Intersection,簡稱PSI)。注意PIS和PSI是兩個問題。
PIS是一個密碼學上的傳統問題,即在不洩露交集的情況下,計算集合的交集。
而谷歌這裡定義的PIS是除了PIS所完成的功能外,還能夠對交集做聚合計算。顯然這會帶來額外的計算開銷。
注意,聚合就是對同一屬性的元素求和。
谷歌開源庫做的事就是以PSI方案為基石,對其進行擴充套件。將其擴充套件為在不洩露交集的情況下,能夠在相應的屬性上做聚合計算。
所以該開源庫的架構是:
PSI + 對交集元素求和(在不洩露交集元素的前提下)
3. 技術路線
該庫的技術路線就是首先根據已有的PSI方案,選擇出最有效的方案作為備選。然後透過加法同態加密實現聚合功能。
這些年,密碼學界已經有許多PSI的解決方案。谷歌技術路線上選擇了兩種解決PSI問題的方法。
一種方法是基於隨機不經意傳輸(Random Oblivious Transfer),該方法利用了不經意PRF(OPRF)技巧,獲得了隱藏交集元素身份的功能。然後利用加法同態加密,實現了在不洩露交集元素的情況下提供聚合功能。
第二種方法是在加法同態加密下,利用加密的Bloom過濾器構造了一個oblivious協議。聚合功能依然透過加法同態加密實現。
除了以上兩個協議外,還構造了第三個協議,稱為DDH型別協議。該協議基於傳統的集合交集協議,使用Pohlig Hellman 密文(基於判斷類DDH問題的困難性)。這種型別協議可以看做是使用共享金鑰的不經意PRF。同樣,聚合功能也是透過加法同態加密實現。
4. 效能
以上三個協議都需要加法同態加密。目前有三種加法同態加密方案:
1. Paillier加密方案
2. 指數型ElGamal加密方案
3. 環LWE加密方案
從通訊效率和計算效率兩個角度,谷歌對基於這三個加法同態加密的三個協議進行了詳細分析。
資料顯示,第三個協議--DDH型別協議獲得了最好的通訊效率。在輸入集合元素是10萬個元素情況下,只需要9.28M的通訊量。
此外,在計算效率方面,基於環LWE加密方案的DDH型別協議也依然獲得了最佳效能。在輸入集合含有10萬個元素,以及相關整數是32位的情況下,計算PIS問題僅需395.78秒。
對於其它兩個協議,儘管做了計算上的最佳化,但是其計算瓶頸主要花在了同態操作上。