Paillier加密是一種公鑰加密演算法,基於復合剩餘類的困難問題。其滿足於加法同態,即密文相乘等於明文相加,即:
密鑰生成
快速生成私鑰
在密鑰相同的情況下,可以快速生成密鑰:
, 為歐拉函數,即
加密
解密
加法同態
Paillier加密的兩個密文消息相乘的結果解密後得到兩個消息相加的結果。
對於兩個密文 和
其中 和 都是 中的元素,因此 也屬於 , 並具有相同的性質,所以 可以看作是 加密的密文, 的解密結果為 。
總結
常見的同態加密演算法中,Paillier演算法和Benaloh演算法僅滿足加法同態,RSA演算法和ElGamal演算法只滿足乘法同態,而Gentry演算法則是全同態的。
https://en.wikipedia.org/wiki/Paillier_cryptosystem
https://blog.csdn.net/sinianluoye/article/details/82855059
http://www.cs.tau.ac.il/~fiat/crypt07/papers/Pai99pai.pdf
⑵ 同態加密的實現原理是什麼在實際中有何應用
同態加密是一種加密形式,它允許人們對密文進滲輪衡行特定的代數運算得到仍然是加密的結果,將其解密所得到的結果與對明文進行同樣的運算結果一樣。換言之,這項技術令人們可以在加密的數據中進行諸如檢索、比較等操作,得出正確的結果,而在整個處理過程中無需對數據進行解密。其意義在於,真正從根本上解決將數據及其操作委託給第三方時的保密問題,例如對於各種雲計算的應用。
這一直是密碼學領域的一個重要課題,以往人們只找到一些部分實現這種操作的方法。而2009年9月桐族克雷格·金特里(Craig Gentry)的論文 從數學上提出了「全同態加密」的可行方法,即可以在不解密的條件下對加密數據進行任何可以在明文上進行的運算,使這項技術取得了決定性的叢做突破。人們正在此基礎上研究更完善的實用技術,這對信息技術產業具有重大價值。
⑶ 全同態加密和部分同態的加密有什麼區別
區別:
1、部分同態既能做乘法又能做加法,但是不能同態計算任意的函數;全同態加密可以對密文進行無限次數的任意同態操作,也就是說它可以同態計算任意的函數。
2、部分同態加密能做的事情,全同態加密也能做;但是全同態加密一般計算開銷比較大,所以部分同態加密方案夠用的時候沒必要選用全同態加密;
3、設計出全同態加密的協議是比設計部分同態加密的演算法要難的。
同態加密規定
如果有一個加密函數f,把明文A變成密文A』,把明文B變成密文B』,也就是說f(A)=A』,f(B)=B』。另外還有一個解密函數,能夠將f加密後的密文解密成加密前的明文。
對於一般的加密函數,如果我們將A』和B』相加,得到C』。我們用對C』進行解密得到的結果一般是毫無意義的亂碼。
但是,如果f是個可以進行同態加密的加密函數, 我們對C』使用進行解密得到結果C, 這時候的C = A + B。這樣,數據處理權與數據所有權可以分離,這樣企業可以防止自身數據泄露的同時,利用雲服務的算力。
⑷ 同態加密(1) GSW同態加密方案
所有的更新都放在我的博客中, 本文地址為 https://lingeros-tot.github.io/2019/08/11/%E5%90%8C%E6%80%81%E5%8A%A0%E5%AF%86-1-GSW%E5%8A%A0%E5%AF%86%E6%96%B9%E6%A1%88/
GSW同態加密方案確實如論文標題一樣, 概念清晰明了, 其Intuition簡單到一個剛學完線性代數的大一新生也能理解. GSW還支持基於屬性的加密, 但本文中我們將不介紹這一部分內容.
當然, 完全理解GSW方案仍然需要用到一些比較進階的知識, 如LWE問題的困難性等. 我們在本文中不會對這些知識做過多的介紹, 這些知識將在今後其他的博文中介紹. 關於同態加密的基礎知識可以參閱博文 同態加密(0) 基礎概念 , 這篇博文完成後, 地址將被更新到這里.
GSW方案是由Craig Gentry [1] , Amit Sahai與Brent Waters於2013年提出的方案, 發表於論文[GSW13] [2] 中.
最基本的GSW同態加密方案的私鑰( )是一個向量 [3] , 而所有的明文 都被加密一個矩陣 中, 其中 是以 為近似特徵向量並以 為近似特徵值的矩陣, 即我們要求
這里可以看出, 我們只需要挑選 中非 的位(最好是選較大的位), 如第 位 , 並比較 與 的值就可以解出 的值.
一個需要注意的地方就是, 雖然 取自 , 但被視作是 中的元素, 因此具體的運算也是按照 的運算方式來進行.
我們也可以將雜訊(error)顯式地寫出來, 記作
其中 是非常小的向量. 因此可以看出, 如果 確實是一個較小的雜訊, 那麼我們就可以正確地解出 .
現在我們來驗證該加密方案具有同態性質. 現在假設有兩個密文 , 對對應的明文分別是 , 即
其中 均為較小的雜訊, 那麼令 , 我們檢驗 的解密結果
這里可以看出, 確實是一個比較小的雜訊項, 但是要讓 的雜訊比較小, 那麼就需要讓 是一個較小的矩陣(即其最大的元素較小), 我們稍後會解釋如何做到這一點.
雖然說是乘法同態性質, 但是由於 , 我們也可以將 視作是做了同態的與(AND)運算. 與運算相對來說是比較簡單的, 但是僅有與運算是不夠的, 因為與運算是單調的, 單調的電路不可能是完備的, 我們需要實現一個超強的邏輯門----與非門的同態運算.
設 , 其中 為 階單位矩陣, 則
根據之前的討論, 如果 是一個較小的項, 我們有把握能從 中解出 .
到這里有沒有一種心情舒暢的感覺? 與非門生萬物, 我們確實可以通過不斷地疊加與非門來實現相當復雜的函數運算, 並且由於與非門是完備的, 僅用與非門可以實現任何一個布爾函數.
雖然與非門非常強大, 但是每一次進行與非門運算, 都會導致新密文得雜訊變得更大, 因此較多層的運算後, 雜訊可能大得導致解密錯誤! 因此我們必須評估我們究竟能進行多少次的運算, 以及在快要達到極限的時候使用Bootstrapping技術. 這一點我們將在詳細介紹方案的時候來說明.
這里我們要首先介紹一種工具, 我們稱其為Lattice Gadget, 它的本質是一些代數運算, 能夠輔助我們從標準的LWE加密方案生成滿足同態性質的密文.
第一個運算是 , 它的作用是將一個 [4] 向量的每一位按照二進制展開, 即每一個元素 表示成二進制的形式 , 其中 [5] . 即
即將 的每一位都展開成了二進制, 變成 位, 整個結果一共是 位. 顯然, .
類似的, 我們可以定義 的反函數 , 令
即將每一位的二進製表示重新組合成了 表示. 但是要注意的是, 並沒有要求參數一定要是只由 構成的向量, 我們可以定義一個全新的函數
這個操作有什麼意義? 它將那些不是全由 構成的 重新"抹平"成了由 中的元素構成, 並且能夠保持其一定的性質.
下面介紹另一個不是那麼好看, 但是卻非常簡單的操作 . 的功能也是將一個 向量轉換為 向量, 但是卻使用的是完全不一樣的方式.
即將 的每一位, 展開為 位, 並且後一位是前一位的兩倍. 使得整個向量變成 . 這樣做的好處是, 如果 分別是 中的一位, 那麼
前面一部分就是 中第 組的第 位, 而後一部分就是 中第 組的第 位, 那麼顯然有
如果將 直接寫成 的形式, 我們還有
實際上左右兩邊的兩項都是由中間得到的, 這樣就可以將左右兩邊連接在一起. 這樣我們發現一個驚人的事實: 如果內積的第二項是標準的 結果的形式, 那麼對第一項做 操作不會改變內積的結果! 實際上這也不難理解, 因為Flatten操作就是把數值過高的位分到權重更高的位而已. 但是這樣做有一個好處就是, 使得 變成每一位都是 的 .
我們將以上幾種記號都推廣到對矩陣可用, 例如對於 , 令
其餘幾種記號也做類似的推廣, 總之就是, 對矩陣的每一列的列向量做相應的操作. 這時我們發現, 如果密鑰 確實是某個向量 進行 的結果, 即 , 那麼就有
這可以使得 變成一個較小的矩陣, 而不改變最後與 的相乘的結果! 這樣使得 可以代替 進行下一層的同態運算使得我們要求的 項較小! 我們直接將 的結果記作
現在我們開始具體介紹方案. 我們要說的是, GSW方案根據解密演算法的選區不同, 實際上有構造兩套方案. 第一種是選擇 作為解密演算法, 該演算法僅能解出 , 因此整個同態運算中主要用與非門構建邏輯電路進行計算. 另一個解密演算法 可以解出 , 這樣就可以自然地使用加法與乘法進行運算.
首先我們要說的是, GSW並不是一個標准假設下的全同態加密方案. GSW如果要做到全同態加密, 需要用到Bootstrapping, 進而需要用到LWE加密方案的Circular Security假設(即用一對公私鑰中的公鑰來加密私鑰相關信息的加密結果是安全的). 我們這里不介紹Bootstrapping的具體過程, 僅介紹Somewhat HE.
這里的參數較多, 需要逐一解釋一下. 首先 是安全參數, 表示密碼方案中基於的困難的問題的復雜程度, 所有的參數都應該(直接或間接)基於這個參數選擇. 參數 表示同態運算的層數, 由於同態運算的層數由雜訊的佔比決定, 因此想要做更多的同態運算次數, 那麼雜訊就不應該太快掩蓋 , 就應該相應地選擇大一些. 而LWE問題的錯誤分布 還有維數 按理來說是應該根據 來選擇, 但是這兩個參數是可以根據 來進行權衡(tradeoff)的, 這里直接用基礎參數 來代替 . 而參數 則是為了方便我們進行表示而引入的記號, 並且他們在前面也出現過.
實際上這里就是變相生成了一組LWE問題的實例, 如果對這里不熟悉, 可以跟進我的Blog學習知識. 相關博文更新後會在這里補充地址.
這就是整個加密的過程, 其中 操作是為了保證 是一個較小的矩陣, 我們知道 是一個 向量, 那麼
也是一個小雜訊, 因此密文符合我們的要求.
實際上這里的解密過程就是比較 與 的值. 而為了使得解密出錯的概率最低, 所以選擇 較大的一項, 這樣使得錯誤最多可以積累到 而解密不出錯.
接下來我們看一下進行 層同態運算後, 雜訊的增長. 我們知道, 兩個雜訊為 的密文行一次加法運算, 雜訊增長到 . (這里 , 表示解密中的雜訊項), 而兩個雜訊為 的密文乘法結果的的雜訊項為 , 最多為 . 如果初始雜訊為 的密文進行 層運算, 則雜訊最多增長為 , 由這一點可以看出, 我們最多可以進行對數次數的同態運算. 但是對數次的運算已經足夠用於解密運算, 因此我們可以基於Circular Security假設, 使用Bootstrapping技術實現全同態.
⑸ 隱私計算-密碼學-同態加密
近年來,隨著大數據與人工智慧的盛行,針對個人的個性化的推薦技術的不斷發展,人們在享受便利的同時,也深深的感覺到無處不在的監控與監事,比如剛剛瀏覽了一個網站的商品,當去其他網站訪問的時候就會推薦類似的產品;剛剛搜索了某件商品,在很多其他的場景中都會給你推薦。這種體驗,談不上不好,也談不上多壞,但是如果仔細想想,就感覺自己的網上進行裸奔,個人隱私,一清二楚,毫無隱私可言,細思極恐。
不過隨著廣大用戶對於個人隱私的重視程度不斷加強,以及法律法規的不斷完善,針對個人隱私的保護提出了更高的要求,什麼樣的數據可以採集、收集與使用,如何使用都是一個比較敏感的問題。十三屆全國人大常委會第三十次會議表決通過了《 中華人民共和國個人信息保護法 》,並與2021年11月1日起施行。確立個人信息保護原則、規范處理活動保障權益、禁止「大數據殺熟」規范自動化決策、嚴格保護敏感個人信息、賦予個人充分權利等。新規施行後,違法的主體將 最高可處五千萬以下或者上一年度營業額百分之五 以下的罰款。
鑒於上述情況,近年來隱私計算技術被不斷的提及,源於其有優秀的數據保護作用,使得 「數據不出域、數據可用不可見、數據可算不可見」 ,限定了數據的使用場景,防止了數據的泄露,而引起了業界的熱捧。
隱私計算技術的演進歷程如下圖描述,以下是楊強教授在KDD 2021中國區的分享材料:
可以看到,隱私計算技術從1979年就開始了,最開始是安全多方計算、到差分隱私、到TEE, 再到最近火的不能再火的聯邦學習 ,一系列的技術應運而生。那為啥現在隱私計算這么火呢。
註:隱私計算技術成熟度曲線
但是這些技術本身的安全加密都是採用共同的方法與策略,下面講述下隱私計算的加密技術。
本文主要介紹同態加密,
眾所周知,優秀的程序員需要 嚴謹的邏輯思維與具象能力 ,當然在材料的時候,可能需要適當的渲染。但是對於技術的理解,對技術的探索,嚴謹的邏輯與堅實的推理是非常重要的。所以,對於「數據加密」這個命題,需要進行一番探索。
如此三態合一,即可保障數據的全鏈路的生命周期安全 。
那麼有沒有辦法解決數據計算的安全問題呢?答案就是 同態加密技術 。保障數據的運行態的安全,那麼同態加密技術具體是如何實現,如何應用,並且有哪些限制呢?
什麼是同態加密? ,引用Gentry大佬的原話:
同態加密(Homomorphic Encryption, HE),指滿足密文同態運算性質的加密演算法,即數據經過同態加密之後,對密文進行某些特定的計算,得到的密文計算結果在進行對應的同態解密後的明文等同於對明文數據直接進行相同的計算, 實現數據的「可算不可見」 。同態加密的實現效果如圖所示。
舉個例子: 國內某家大型的三甲醫院,由於歷史悠久,並且醫術精湛,歷史遺留了大量的用戶病例數據 。如今思考基於這些病例數據進行建模分析。但是由於數據量特別巨大,醫院本身的IT資源有限,計算能力不足。
這個時候,雲廠商找了過來。但是對於醫院來說,這些數據本身是用戶的隱私信息,並且也是醫院的核心價值,所以盡管雲廠商再三保證數據安全, 但是醫院還是不能夠放心的將數據上傳到雲廠商進行計算 。
正當這個事情推進不下去的時候,雲廠商從密碼行業花大價錢招來某個大牛,大牛提出一個方案,這樣吧,我們現在有 這樣一門技術,不需要傳輸明文數據,只需要傳輸密文就好,而且加密秘鑰由醫院自己保存,我們基於上傳的密文數據做不解密的密態運算( 並計算函數醫院提供就好),這樣數據不會泄露,雲廠商對數據無感知,之後傳回密文結果,醫院自己解密就好 。醫院一聽非常高興,那就這么辦吧。
下面將核心流程描述下。
這里,大家可能有個問題,這個f應該是什麼樣的函數,有什麼樣的限制條件?HE方案是支持任意的數據處理方法f,還是說只支持滿足一定條件的f呢?根據f的限制條件不同,HE方案實際上分為了兩類:
Paillier加密演算法是Pascal paillier[1]在1999年發明的概率公鑰加密演算法,該演算法 基於復合剩餘類的困難問題,是一種滿足加法的同態加密演算法 ,已經廣泛應用在加密信號處理或第三方數據處理領域。
前面我們分析過 同態加密的核心流程 ,大家可以一起回憶一下。核心的函數包括:秘鑰生成、明文加密、密文解密,下面我們來一步一步的分析,並且描述下,
秘鑰的生成主要有如下的步驟,
下面介紹一個完整的同態運算,m由 組成,介紹下同態加密的是如何使用密文計算的。
⑹ 同態加密簡介
同態加密是數據加密方式的一種,特點是允許數據在加密情況下實現數學或邏輯運算。
同態加密通常為非對稱性加密。因此在介紹同態加密之前,簡單介紹一下非對稱性加密。非對稱性加密分為三個步驟:
1. 生成一對鑰匙,一個公鑰pub和一個密鑰priv;
2. 使用公鑰pub加密原始數據,得到加密數據,公式:pub(原始數據)= 加密數據 ;
3. 使用密鑰priv解密加密數據,得到原始數據,公式:priv( 加密數據 )= 原始數據 ;
同態加密允許對 加密數據 進行處理,得到的解密結果等價於在原始數據下做運算。以聯邦學慣用到的Paillier演算法舉例,假設我有兩個數 和 ,我希望把它們扔給第三方做加法運算,即 + 。同時不希望第三方知道 、 及它們之和的具體值,同態加密可以派上用場,具體步驟如下:
1. (本地)生成一對鑰匙,公鑰pub和密鑰priv,公鑰用於加密,密鑰用於解密;
2. (本地)使用公鑰pub分別加密 和 ,得到 ( )和 ( );
3. (第三方)使用 函數處理 和 ,即 ;
4. (本地)使用密鑰priv解密 ,即 ;
4中 = + 。第三方通過上述步驟3實現了 和 在加密狀態下做加法的操作。
為了更直觀認識上述步驟,假設 =100, =200,步驟就變成:
1. (本地)生成一對鑰匙,公鑰pub和密鑰priv,公鑰用於加密,密鑰用於解密;
2. (本地)使用公鑰pub分別加密 和 ,得到 =1234, =4321 (舉例);
3.(第三方) 使用 函數處理 和 ,即 =12345678;
4. (本地)使用解密priv解密 ,得到 = 300。
第三方在不知道 =100和 =200,但是通過 函數依然可以在加密情況下實現相加運算。
⑺ 隱私保護技術 同態加密
安全多方計算
同態加密
差分隱私
同態加密逐漸被認為是在 PPML 中實現安全多方計算的一種可行方法。
設 表示使用 作為加密密鑰的加密函數。設 表示明文空間, 且 表示密文空間。一個安全密碼系統若滿足以下條件,則可被稱為同態的(homomorphic):
對於 中的運算符 和 中的運算符 , 符號表示左邊項等於或可以直接由右邊項計算出來,而不需要任何中間解密。在本書中,我們將同態加密運算符設為 ,並且對密文的加法操作和乘法操作按如下方式重載:
加法:
標量乘法:
同態加密方法分為三類:部分同態加密 (Partially Homomorphic Encryption, PHE),些許同態加密 (Somewhat Homomorphic Encryption, SHE) 和全同態加密 (Fully Homomorphic Encryption, FHE)。
//待補充
⑻ 同態加密的同態加密的相關概念
同態加密的思想起源於私密同態,代數同態和算術同態是私密同態的子集。
R 和 S 是域,稱加密函數 E:R→S 為:
加法同態,如果存在有效演算法⊕,E(x+y)=E(x)⊕E(y)或者 x+y=D(E(x)⊕E(y))成立,
並且不泄漏 x 和 y。
乘法同態,如果存在有效演算法 ,E(x×y)=E(x) E(y)或者 xy=D(E(x) E(y))成立,
並且不泄漏 x 和 y。
混合乘法同態,如果存在有效演算法 ,E(x×y)=E(x) y 或者 xy=D(E(x) y)成立,並
且不泄漏 x。
減法同態,如果存在有效演算法○- ,E(x-y)=E(x)○- E(y)或者 x-y=D(E(x)○- E(y))成立,
並且不泄漏 x 和 y,則稱 E 為減法同態。
除法同態,如果存在有效演算法○/ ,E(x/y)=E(x)○/ E(y)或者 x/y=D(E(x)○/ E(y))成立,
並且不泄漏 x 和 y,則稱 E 為減法同態。
代數同態,如果 E 既是加法同態又是乘法同態。
算術同態,如果 E 同時為加法同態、減法同態、乘法同態和除法同態。
⑼ 請大神解答一下什麼是同態加密,百度的都看不懂。
同態加密是一種特殊的加密方法,將明文加密之後通過特殊的運算處理得出的結果與把明文經過特殊處理再進行加密的結果是一樣的。這項技術可以在加密的數據中進行諸如檢索、比較等操作而無需對數據先進行解密,從根本上解決將數據委託給第三方時的保密問題。這種專業術語在網路上都是解釋地比較深奧的,沒有基礎很難看懂,推薦你們去看煊凌科技的官網,上面的區塊鏈專業術語都是解釋得比較通俗。如果看不懂的話還可以在網站聯系客服,請他們解答。
⑽ 秘密共享和同態加密的區別
解決的問題不同,應用場景。
1、秘密共享主要是用來將一個秘密信息分割成多份,交給不同的參與者,使得只有當所有參與者合並它們手中的信息時,才能還原出原始的秘密信息;而同態加密則是用來對凱罩已經加密的密文進行一系列計算,得到閉宴正確密文的計算結果,而不用解密得到明文再進行計算,從而實現對加密數據的計算保護和隱私保護。
2、秘密共享主要應用於多方安全計算、安全存儲和安全通信等領域;而同態加密主要應盯態鬧用於雲計算、區塊鏈和數據隱私保護等領域。