動態

詳情 返回 返回

10分鐘速通私有信息檢索(PIR)及其應用場景,開源隱私計算隱語SecretFlow框架 - 動態 詳情

打開鏈接點亮社區Star,照亮技術的前進之路。每一個點贊,都是社區技術大佬前進的動力。

Github 地址: https://github.com/secretflow/secretflow

1. The Problem of Private Information Retrival

PIR 全稱為 Private Information Retrival,直觀的翻譯名字為“私有信息檢索”。

已知的最早提出 PIR 的文章是 1995 年 Benny Chor, et. al. [1]。在文章最開始的時候,提到了在傳統的 query 場景中,我們有一個 client 發送 query,有 server 回覆結果。

從抽象角度來看,我們可以試圖保護:

  • Server 數據的安全性
  • Client query 的安全性

在 [1] 之前,有許多工作在研究如何保護 server 端 DB 數據的安全性,在此不再贅述

。Benny Chor, et. al. [1] 提出了一個問題:我們是否可以在 query 場景中保護 client query 的隱私性?由於當時分佈式數據庫存儲的發展,因此他們提出了一個基於 replicated DB (and non-colluding) 的方案。

這就是 PIR 的場景性問題,根據現實中不同的 client 以及 server 的假設,我們可以把協議進行分類。

2. PIR 場景的分類

我們可以看到,PIR 場景中的實體有 client 以及 server,並且 client 向 server 發送了一個需要保護隱私的 query ,server 向 client 返回一個 query 的最終結果。

如果我們僅僅需要保護 query 的隱私、而又不在意性能 ,是有一個很簡單的解決方案。

我們可以讓 server 將其持有的所有數據全量發送給 client,由 client 本地進行搜索查詢並得到結果。

顯然,這種方案是十分低效的。我們尋求一種協議可以比這種簡單的解決方案更加高效。

2.1 單server場景(單個數據庫)&多server場景(分佈式數據庫)

如果我們假設 DB 只有一個,那麼場景就是如下圖所示:

這種情況下我們一般採取加密查詢數據,之後交給 server 去作查詢/匹配操作以得到正確的查詢結果。

例如基於任意加法同態算法的 [1],全同態加密的 SealPIR [2],以及返回一個 block 的查詢結果的 [3]。

PIR 的研究者們同樣證明了:在單 DB 的場景中,所有的 PIR 協議必須基於某個數學難題(這類 PIR 協議也叫做 computational PIR (cPIR) 協議),我們不可能構造出一個單 DB PIR 協議滿足 unconditional security

如果我們假設有許多個 replicated DB,那麼場景就是如下圖所示:

這種情況下我們可以達到 unconditional security,例如基於 DPF 的 PIR [4] 等等。

但是多 server 場景中有兩條關鍵假設

  • 數據庫是 replicated,因此每個數據庫都持有相同的數據集
  • 數據庫中存在 non-colluding 的假設,server 之間存在不可共謀的假設(例如 honest majority or only one honest server)

2.2 保護數據庫隱私 (Symmetric PIR, sPIR)

如果我們試圖保護:

(1)DB 數據的安全性

(2)Client query 的安全性;

那麼我們叫這種協議為 symmetric PIR。我們之前提到的一些算法,例如基於任意加法同態算法的 [1] 以及全同態加密的 SealPIR [2] 都同時保護了數據庫的隱私,因此也屬於 sPIR。

2.3 基於索引查詢/基於匹配查詢

  • 基於索引:index PIR
  • 基於查詢:keyword PIR

基於索引/匹配的 PIR 協議在單 DB 和多 DB 的情況下均成立,我們下面以單 DB 的方案為例。

基於索引的 PIR

基於索引的 PIR 要求 client 在查詢數據庫之前,已經預先得知想要查詢的數據索引信息。

如果我們有一個原本是 (key, value) 的 DB 的話,那麼其實並不一定必須要使用基於匹配的 PIR。

  • 如果 DB 中的 key 屬於非隱私信息,那麼我們可以使用一個 encoding 函數,將每個數據庫元素的 key 映射到某個 index 上,然後對數據庫進行重新排序,那麼在 client 想要插敍某個 key 的時候,可以直接使用公開的 encoding 函數獲取到 key 相對應的 index 值。
  • 但是如果 DB 中的 key 屬於隱私信息,那麼也就意味着我們必須使用 sPIR 來保護數據庫隱私,而 DB 使用的 encoding 函數本身可能會泄漏數據庫 key 的分佈情況,因此在這種情況下我們只能使用基於匹配的 PIR。

基於匹配的 PIR

基於匹配的 PIR 實際上和 PSI with Payload 很相似。場景如下圖所示:

其實就是 one-element PSI with PayloadPSI with Payload 使用 client 的輸入 ki 以及 DB 的輸入 {k1,..., kn} 進行撞庫,把匹配後數據(也就是 ki)的 value 返回給 client。

其中保護了

  • client 不知道未匹配到的 key 是什麼
  • client 不知道未匹配到的 key 的 value 是什麼
  • DB 不知道具體匹配結果的 key 是什麼(有些 PSI 算法可以額外保證這些)
  • DB 不知道具體匹配結果的 value 是什麼(有些 PSI 算法可以額外保證這些)

相關資料
【課程】https://cyber.biu.ac.il/event/the-12th-biu-winter-school-on-c...
【代碼】https://github.com/microsoft/SealPIR
【代碼】https://github.com/OpenMined/PIR

參考文獻
[1] Benny Chor, Oded Goldreich, Eyal Kushilevitz, Madhu Sudan. "Private Information Retrieval". FOCS (1995).
[2] Angel, Sebastian G. et al. “PIR with Compressed Queries and Amortized Query Processing.” 2018 IEEE Symposium on Security and Privacy (SP) (2018): 962-979.
[3] Gentry, Craig and Zulfikar Ramzan. “Single-Database Private Information Retrieval with Constant Communication Rate.” ICALP (2005).
[4] Gilboa, Niv and Yuval Ishai. “Distributed Point Functions and Their Applications.” EUROCRYPT (2014).
本文由隱語社區統一發布,歡迎大家點 Star

user avatar taxunjishu 頭像 xiaodiandideyangrouchuan 頭像 jinshideshizi 頭像 api7 頭像 aixiaodekaomianbao_ddkwvd 頭像 lvxingzhongdemaojin_clive7 頭像 robert_yan 頭像
點贊 7 用戶, 點贊了這篇動態!
點贊

Add a new 評論

Some HTML is okay.