同態加密的簡單應用

2021-10-04 18:36:05 字數 3926 閱讀 9987

這個例子很酷,但並不是fhe重要的唯一原因。密碼學家(至少是我們)對fhe感到興奮的主要原因是它是一種「終極密碼工具」。當然,fhe並不能解決世界上所有的密碼問題,事實上,對於它所解決的許多問題,都存在非基於fhe的解決方案,這些解決方案更有效或基於更弱的假設。但是基於fhe的結構通常在概念上更簡單,尤其是fhe提供了一種統一的方法來實現諸如多方安全計算、私有資訊檢索、電子投票、零知識等密碼概念。基於這個原因,我們認為fhe(以及它的一些推論)應該在任何密碼學導論課程中教授。當然,這種構造現在可能還不實用,但是我們在加密課程中教授高階主題的原因並不是為了讓學生學習如何實現,比如電子投票。這是為了讓學生們對密碼學中驚人的可能性敞開心扉,在密碼學中,幾乎每乙個你能想象到的概念都可以被構造出來(有些甚至是你之前不敢想象的……)。而且,坦率地說,我們也教授這類主題,讓學生們在經過一學期艱苦的安全定義和規約之後,能夠看到一些很酷的東西。

two party secure computation from fhe.

為了演示fhe如何以一種概念清晰的方式產生規範的先前結果,讓我們考慮兩方的安全計算任務。在這個設定中,alice和bob分別持有輸入,並希望計算它們的輸入的某個函式,但有乙個重要的限制,即alice不應該學習輸出之外的任何關於的內容,同樣,bob不應該學習關於的任何不必要的資訊。兩方安全計算(及其泛化為方)是乙個非常普遍的概念,它捕獲了大量的加密應用程式。例如,多方計算允許丹麥甜菜種植戶參與拍賣,**他們的甜菜,而不披露他們的私人供求曲線;或者允許銀行計算他們的總風險概況,而不披露他們的私有投資組合資訊。實際上,幾乎任何加密任務都可以轉換到這個非常通用的框架中。

以下是如何使用完全同態加密實現兩方安全計算:

alice為fhe生成金鑰,並將傳送給bob。

bob對執行同態計算,並將傳送給alice。

alice解密並將答案傳送給bob。

其思想是,bob只看到的加密,而alice實際上只看到(加密),因此他們都只學習輸出。當然,稍微想一下就會發現這個協議有一些問題——我們怎麼知道bob是在上計算而不是其他函式呢?我們如何確定alice對的解密是正確的呢?實際上,該協議只在所謂的誠實但奇怪的模型中提供安全性(這已經是一項重要的任務,已知的結構至少需要一節課的時間)。但是,它可以被轉換成乙個完全安全的協議,方法是讓bob提供零知識證明,證明他在步驟2中正確地計算了,而alice在步驟3中提供零知識證明,證明她傳送了乙個有效的解密。零知識證明用於保證bob和alice正確地執行它們的步驟,但是(正如它們的名字所暗示的)它們對alice和bob的私有輸入沒有任何提示,因此不會損害安全性。(密碼學家可能會注意到這個協議的另乙個微妙之處是,為了確保安全性,我們需要同態加密來滿足乙個稱為「函式隱私」或「重加密」的屬性;幸運的是,所有已知的fhe結構都可以修改為具有這種特性。

np的零知識證明具有相當優雅的結構,但正如我們下面所描述的,也可以直接使用fhe得到。特別地,基於fhe的構造沒有經過cook-levin定理,並且具有比標準的通訊效率更高的優勢(例如,(非基於pcp)零知識證明結構。實際上,請注意上面協議中的通訊只涉及輸入和輸出的加密。這比以前的非基於fhe的安全計算結構要高效得多,以前的安全計算涉及到的通訊與計算函式所需的門的數量成比例。事實上,使用fhe可以將計算的任何(非安全的)協議轉換為通訊複雜度只有多對數開銷的安全協議。這在設定中非常有用,例如我們上面提到的,其中乙個或兩個輸入可以是非常大的資料庫,我們不希望在雙方之間傳輸。

zero knowledge proofs from fhe.

我們現在描述alice如何使用fhe向bob證明在zero knowledge中存在某個字串,使得,其中是乙個任意的(有效計算的)函式。以下是我們對此類協議的第一次cut:

alice為fhe生成金鑰,並將傳送給bob。

bob對執行同態計算並將其傳送給alice。

alice解密並將答案傳送給bob 。bob檢查。

再說一遍,我們的第一次cut不夠好。我們怎麼知道alice並不總是把傳送給bob?我們如何確定bob正確地計算了,而不是使用它來要求alice解密,比如,的第乙個位?

幸運的是,這個問題很容易解決。要修復第乙個問題,在第二步中bob可以將設定為概率為的加密,而不是。然後他會希望看到在最後一步,alice總是根據bob的隨機選擇返回正確的或值。這將確保如果,那麼bob將以至少的概率拒絕,當然可以通過重複放大。

我們仍然沒有解決alice的問題——她如何確定bob實際上正確地計算了(通過對它求值,或者將它設定為的加密),而不是設定?為此,我們稍微修改了最後一步。alice只向傳送乙個承諾,而不是傳送答案。然後,我們新增乙個額外的步驟,其中bob表示他在步驟2中使用的所有隨機性,允許alice驗證它是否被正確執行,並且只有在這時alice才開啟對的承諾。新協議可以證明是安全的。(最後乙個微妙之處是,取決於我們對fhe的定義有多嚴格,只有當alice為加密選擇了公共引數時,函式privacy/rerandomization屬性才可能有效;這可以通過乙個初始的「剪下和選擇」步驟來保證,在這個步驟中,alice生成兩組金鑰,bob選擇其中一組用於協議,而對於另一組,alice需要顯示相應的金鑰和私有隨機性。

————————————————————————————

outsourcing storage and computations.

同態加密最直接的應用可能是將儲存和計算外包出去,而不暴露敏感資訊。假設有一家小公司試圖將其計算設施轉移到雲上,但它擔心雲提供商會訪問該公司的機密資訊。乙個簡單的解決方案是在將機密資訊儲存到雲中之前對其進行加密,但是公司如何才能在每次操作時使用這些資訊而不將其傳送回本地(這會破壞將其外包的目的)?同態加密為這個難題提供了乙個優雅的解決方案。公司可以將資訊以加密的形式儲存在雲中,雲提供商可以處理此表單中的資訊,只將處理後的結果傳送回公司進行解密。

pir and other private queries.

同態加密的另乙個直接應用是支援對資料庫或搜尋引擎的私有查詢。最簡單的例子是私有資訊檢索,其中伺服器持有乙個大型資料庫(例如,美國專利資料庫),客戶端希望檢索該資料庫的一條記錄,而伺服器不知道檢索的是哪條記錄。同態加密允許使用者對要檢索的記錄的索引進行加密。伺服器可以計算加密索引上的函式fdb

(i)=

db[i

]f_(i) = db[i]

fdb​(i

)=db

[i],將加密後的結果返回給客戶端,客戶端可以對其解密並獲得明文記錄。同樣的解決方案也適用於對資料庫的sql查詢或對搜尋引擎的自由形式查詢的更複雜的設定。在這兩種情況下,伺服器都有一些處理查詢的過程,可以將其形式化為函式gdb

(que

ry)=

answ

er

g_(query) = answer

gdb​(q

uery

)=an

swer

。因此,客戶機可以在將查詢傳送到伺服器之前對其進行加密,伺服器可以對加密的查詢求gdb

g_gd

b​的值並返回加密的答案。

**beyond homomorphic encryption**

同態加密雖然多種多樣,但當然不能解決密碼學中的每乙個問題。

輸出是加密的。雖然我們可以對加密的資料求任意函式的值,但是這種計算的結果本身就是乙個密文,沒有金鑰就沒有意義。相反,obfuscation and functional encryption允許某些形式的加密計算,其中輸出以明文形式獲得;。

•所有輸入必須在同乙個金鑰下加密。為了能夠在加密的資料上進行計算,所有這些資料都必須在同乙個金鑰下加密。同態加密的擴充套件,可以處理在多個金鑰下一起加密的資料,multi-key fhe。

•沒有完整性保證。雖然同態加密支援對加密資料進行計算,但它不提供任何檢查計算是否確實按預期執行的方法。通常,無法判斷給定的密文是執行某些計算的結果,還是相同值的新加密的結果。

gentry同態加密演算法 同態加密演算法

本文對同態加密演算法進行學習。參考文章同態加密演算法。定義同態加密演算法保證對聯合密文的解密結果等價於聯合明文。若存在同態加密演算法f,針對明文a和b,加密後分別得到a f a b f b 將其和a b 解密後得到a b,則同態加密演算法f被成為加法同態加密演算法。加法同態演算法的加密和解密分別用e...

gentry同態加密演算法 同態加密演算法 總結

文章目錄 1 定義 2 同態分類 3 應用 4 意義 1 定義 一般的加密方案關注的都是資料儲存安全。即,我要給其他人發個加密的東西,或者要在計算機或者其他伺服器上存乙個東西,我要對資料進行加密後在傳送或者儲存。沒有金鑰的使用者,不可能從加密結果中得到有關原始資料的任何資訊。只有擁有金鑰的使用者才能...

區塊鏈技術與應用 密碼學中的同態加密演算法

同態加密理論首次在1978年提出,是一種能保護資料隱私的加密演算法,被認為是密碼學中的聖杯之一。1 什麼是同態加密演算法 如果我們有乙個加密函式 f 把明文a變成密文a 把明文b變成密文b 也就是說f a a f b b 另外我們還有乙個解密函式,能夠將 f 加密後的密文解密成加密前的明文。對於一般...