【密碼學基礎】基于LWE(Learning with Errors)的全同態加密方案

學習資源:
全同態加密I:理論與基礎(上海交通大學 郁昱老師)
全同態加密II:全同態加密的理論與構造(Xiang Xie老師)


現在第二代(如BGV和BFV)和第三代全同態加密方案都是基于LWE構造的,現在先進的全同態方案也都是基于LWE的,所以本文總結一下LWE的基礎知識。
首先考慮,我們希望加密一個數 s s s, 現在用一系列的 a i a_i ai? s s s進行加密,得到 a i s a_is ai?s,實際上通過求解最大公約數GCD就能求解出 s s s。但是,如果加上一個隨機噪聲 e i e_i ei?,得到 a i s + e i a_is+e_i ai?s+ei?,那么將難以求解出 s s s的值。這個過程就是我對LWE的簡單理解,所謂error就是一個noise。

在這里插入圖片描述

全同態加密的計算過程分為三步:密鑰生成KeyGen、加密Enc、同態計算Eval、解密Dec。、

KeyGen:

在這里插入圖片描述
首先構造出如上的等式, s ? A + e = s A + e s\cdot A + e = sA+e s?A+e=sA+e,然后得到公鑰pk( ? A -A ?A s A + e sA+e sA+e的拼接),以及私鑰sk( s s s和1的拼接)。于是得到pk和sk滿足相乘后的結果是隨機噪聲e(接近0)。

Enc:

加密用的公鑰pk,r是一個只包含0或1的隨機向量,m是待加密的信息(放在向量的最低位上)。
在這里插入圖片描述
在這里插入圖片描述

Dec:

解密用的私鑰sk,和ct計算完內積后求mod 2得到解密結果。

在這里插入圖片描述
正確性證明:
在這里插入圖片描述
sk和pk相乘得到2e(KeyGen時滿足的條件),然后和r做內積得到一個很小的偶數噪聲,最終的結果就是m+很小的偶數噪聲,于是通過mod 2就能將噪聲消除,得到解密結果m。這也就是為什么構造的噪聲是2e,而不是e,我的理解就是希望通過構造偶數的隨機噪聲,從而在解密時方便用mod 2的方式消除掉噪聲。

安全性證明:

在這里插入圖片描述
當pk是偽隨機的,r具有足夠高的熵(也就是隨機性很強?)時,pk和pk乘r都是偽隨機的。自然和帶m的向量相加后,加密結果也是偽隨機的。

在這里插入圖片描述

下面是Xiang Xie老師的公式化描述:
加密公式:密文c = 公鑰pk ?? 隨機r + 明文m
解密公式:明文m = <密文sk, 私鑰sk> mod q mod 2

在這里插入圖片描述
在這個基礎上,再mod 2就能解密出明文m的值。只要噪聲夠小,就能保證正確性。
這里有個需要區分的事情:以上 P K = ( A , b = A s ′ + 2 e ) PK=(A, b=As'+2e) PK=(A,b=As+2e)是BGV方案,BFV則是 P K = ( A , b = A s ′ + e ) PK=(A, b=As'+e) PK=(A,b=As+e),區別是BGV將信息編碼在低位,而BFV將消息編碼在高位(學習BFV的時候會說明)。

Eval(加法同態和乘法同態):

在這里插入圖片描述
注意到同態加法或乘法都會帶來顯著的噪聲累積,并且乘法是呈平方增長趨勢。
然后說說如何解密同態乘的結果,下面的式子可以看到:兩個密文做乘法,等價于密文和私鑰分別先做tensor product,然后再做內積。因此,顯然密文和私鑰的大小都翻了一倍。Example是一個等價性的證明。

在這里插入圖片描述

那么問題來了,如何將同態乘之后的密文大小和私鑰大小都恢復回去呢?這就是Key Switching解決的問題。

下面是Xiang Xie老師的描述:

在這里插入圖片描述

Key Switching

目標是將密文和私鑰的大小恢復到線性大小。
在這里插入圖片描述
現在求密文c1和c2的乘法:

在這里插入圖片描述
在這里插入圖片描述

以上過程基于比特分解這個概念:

在這里插入圖片描述

下面是Xiang Xie老師的描述:

Key Switching的目標:將私鑰 s ~ \tilde s s~下的 c ~ \tilde c c~ 轉換為 私鑰 s s s下的 c c c,并且 c ~ \tilde c c~ c c c都是加密的同一個明文。
這里有一個核心概念是Key Switching Key (KSK),也就是用私鑰 s s s來加密 s ~ \tilde s s~

在這里插入圖片描述
通過Key Switching過程,可以推導出私鑰從 s ? s s\otimes s s?s變成了線性的 s s s,同時密文從 c ~ \tilde c c~變成了線性的 c c c。并且通過最后一行式子可以看出,Key Switching后的 ? c , s ? \langle c, s\rangle ?c,s?和原來的 ? c ~ , s ? s ? \langle \tilde c, s\otimes s\rangle ?c~,s?s?之間相差了一個噪聲 2 c ~ T e ~ 2\tilde c^T\tilde e 2c~Te~,這部分是可以非常大的!所以到這里仍然沒辦法實現Key Switching。

這里引入了一個Gadget矩陣G:
在這里插入圖片描述
于是,Key Switching的過程變成了下面這樣:

在這里插入圖片描述
此時,增加的誤差就非常小了。
總結一下就是,通過Key Switching,原來私鑰 s ~ = s ? s \tilde s=s \otimes s s~=s?s下的 c ~ = c ? c \tilde c=c\otimes c c~=c?c,被轉換成了私鑰 s s s下的 c c c,注意Key Switching后的 s , c s, c s,c都不是原來的值了(double check)。

在這里插入圖片描述
對于BGV,加法的噪聲線性增長,乘法的噪聲平方增長,Key Switching雖然可以支持乘法了(限制sk變得特別大),但是實際上噪聲是在原本乘法噪聲基礎上加了一個很小的噪聲,總體也非常大。因此需要進一步降低這個噪聲。

Modulus Reduction

在這里插入圖片描述
到這里,通過LWE實現了很小深度的同態乘法和加法計算,key switching則是對每層用新的密鑰,但是隨著計算深度加深,噪聲的擴大是爆炸性的,因此還不是一個levelled FHE(能計算指定深度的FHE)。
現在我們希望不借助bootstrapping,實現一個能計算一定深度的FHE,需要用到模數變換。
在這里插入圖片描述

在這里插入圖片描述

在這里插入圖片描述

暫時沒太看懂中間的流程,簡而言之就是將密文c從模q的域變換到模p的域上(p<<q),于是噪聲等比例縮小,也就是大約縮小到原來的p/q倍。
下面是一個具體的例子:
如果不做Modulus Reduction,隨著深度加深,噪聲呈雙指數趨勢增長,level >= 3之后就會帶來解密錯誤。
在這里插入圖片描述
如果每個level上做Modulus Reduction,那么噪聲也會被維持在一個絕對值范圍內,代價就是模數會不斷減小。

在這里插入圖片描述

所以要想實現一個levelled FHE,可以設置一個模數 B d B^d Bd,然后就可以計算一個深度為 d d d的電路了(其中 B B B是刷新后密文的噪聲上界)。計算完 d d d的深度后,模數應該是降低到 B B B,要保證此時解密不出錯。BGV就是一種levelled FHE。

在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/43490.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/43490.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/43490.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Git 快速上手

這個文檔適用于需要快速上手 Git 的用戶&#xff0c;本文盡可能的做到簡單易懂 ?????? git 的詳細講解請看這篇博客 Git 詳解&#xff08;原理、使用&#xff09; 1. 什么是 Git Git 是目前最主流的一個版本控制器&#xff0c;并且是分布式版本控制系統&#xff0c;可…

合規與安全雙重護航:ADVANCE.AI讓跨境支付更無憂

近年來&#xff0c;隨著全球化進程的加速和跨境貿易的蓬勃發展&#xff0c;跨境支付的需求大幅增加。根據Grand View Research的報告&#xff0c;2021年全球跨境支付市場規模估計為22.09萬億美元。到2025年&#xff0c;全球跨境支付市場預計將達到35.9萬億美元&#xff0c;較20…

rfid資產管理系統解決方案 rfid固定資產管理系統建設方案

在現代化的倉庫儲備中&#xff0c;僅僅完成對貨物進出的簡單批次處理已經不再足夠&#xff0c;對庫內貨品的種類、數量、生產屬性、垛位等信息的清晰記錄變得至關重要。然而&#xff0c;傳統的資產管理方式如條形碼在長期使用中逐漸暴露出不耐臟、數據存儲量小、讀取間隔短、不…

優質可視化大屏模板+動態圖表+科技感原件等

優質可視化大屏模板動態圖表科技感原件等 軟件版本&#xff1a;Axure RP 9 作品類型&#xff1a;高保真 作品內容&#xff1a; 1、大屏可視化模版&#xff08;100套&#xff09;&#xff1a;包含智慧城市、智慧社區、智慧園區、智慧農業、智慧水務、智慧警務、城市交通、電…

新加坡工作和生活指北:教育篇

文章首發于公眾號&#xff1a;Keegan小鋼 新加坡的基礎教育在東南亞處于領先地位&#xff0c;這點基本是人盡皆知&#xff0c;但很多人對其教育體系只是一知半解&#xff0c;今日我們就來深入了解一下。 新加坡的學校主要分為三大類&#xff1a;政府學校、國際學校、私立學校。…

Python 中將字典內容保存到 Excel 文件使用詳解

概要 在數據處理和分析的過程中,經常需要將字典等數據結構保存到Excel文件中,以便于數據的存儲、共享和進一步分析。Python提供了豐富的庫來實現這一功能,其中最常用的是pandas和openpyxl。本文將詳細介紹如何使用這些庫將字典內容保存到Excel文件中,并包含具體的示例代碼…

如何理解Node.js?NPM?Yarn?Vue?React?

一、背景 對后端技術棧更熟悉&#xff0c;對前端技術棧不了解&#xff0c;希望通過前后端的技術棧進行對比&#xff0c;可以更直觀地了解前端技術棧。 二、Node.js Node.js 是一個基于 Chrome V8 JavaScript 引擎的 JavaScript 運行環境。它使得 JavaScript 可以在服務器端運…

Xterminal工具的安裝與使用體驗

Xterminal工具的安裝與使用體驗 一、Xterminal簡介二、Xterminal核心特性三、Xterminal使用場景四、Xterminal下載地址五、Xterminal的基本使用5.1 設置倉庫密碼5.2 SSH連接5.3 Windows遠程桌面5.4 筆記功能5.5 AI工具 六、總結 一、Xterminal簡介 Xterminal是一款專為開發者設…

【大模型】智能體探秘:從概念到實踐的全面指南

智能體探秘&#xff1a;從概念到實踐的全面指南 引言一、智能體的基本概念二、智能體的類型三、設計智能體的步驟四、智能體設計實例&#xff1a;迷宮求解智能體五、智能體的評估與優化六、智能體的未來方向結語 引言 在人工智能領域&#xff0c;智能體&#xff08;Agent&…

【Linux進階】vim的用法

1.什么是vi/vim? 簡單來說&#xff0c;vi是老式的文本編輯器&#xff0c;不過功能已經很齊全了&#xff0c;但是還是有可以進步的地方。vim則可以說是程序開發者的一項很好用的工具&#xff0c;就連 vim的官方網站&#xff08; http://www.vim.org&#xff09;自己也說vim是一…

獨享代理VS共享代理,新手選擇攻略

隨著互聯網的廣泛普及和應用&#xff0c;涉及網絡隱私、數據安全和網絡訪問控制的問題變得越來越重要。代理服務器作為一種常見的網絡工具&#xff0c;可以在跨境電商、海外社媒、SEO投放、網頁抓取等領域發揮作用&#xff0c;實現匿名訪問并加強網絡安全。在代理服務器類別中&…

Nginx在線安裝與啟動

Nginx在線安裝與啟動 系統環境&#xff1a;中科方德桌面操作系統 3.1 內核&#xff1a; SMP CDOS 4.9.25-11cdos44 (2019-12-20) x86_64 GNU/Linux 使用連接工具&#xff1a;FinalShell3.9.5.7 1、下載nginx sudo apt-get update2、安裝命令 sudo apt-get install nginx安裝…

面向對象編程在Perl中的實現:解鎖Perl的OOP潛力

面向對象編程在Perl中的實現&#xff1a;解鎖Perl的OOP潛力 Perl作為一種多范式編程語言&#xff0c;支持過程式編程、面向對象編程&#xff08;OOP&#xff09;以及函數式編程等多種編程范式。盡管Perl在過程式編程方面非常強大&#xff0c;但在面向對象編程方面同樣具有獨特…

occ geo

隨筆 - 12 文章 - 18 評論 - 117 閱讀 - 13萬 opencascade造型引擎功能介紹 現今的CAD 系統大多通常都基于CAD 系統提供的二次開發包&#xff0c;用戶根據要求定制符合自己要求的功能。AutoCAD就提供了AutoLISP、ADS 等都是比較通用的開發工具包。UG 也提供了多種二次開發…

【力扣: 15題: 三數之和】

15題: 三數之和 給你一個整數數組 nums &#xff0c;判斷是否存在三元組 [nums[i], nums[j], nums[k]] 滿足 i ! j、i ! k 且 j ! k &#xff0c;同時還滿足 nums[i] nums[j] nums[k] 0 。請 你返回所有和為 0 且不重復的三元組。 注意: 答案中不可以包含重復的三元組。 …

小米攝像頭黃燈常亮,小米攝像頭不好用了刷機

我是MJSXJ05CM型號 一不小心更新了系統結果就不好用了&#xff0c;這種東西真是要小心&#xff0c;一不小心更新不成就成磚頭了。 我按下面方法試了不好用&#xff0c;但是下載鏈接很多收藏一下!某種程度上說如果服務端故意發布一個錯誤鏡像會導致很多攝像頭變成磚頭&#xff0…

名企面試必問30題(二十七)——你能為公司帶來什么呢?

回答一&#xff1a; “首先&#xff0c;我具備扎實的軟件測試專業知識和豐富的實踐經驗。我能夠運用各種測試方法和工具&#xff0c;確保公司產品的質量&#xff0c;降低產品上線后的風險。 其次&#xff0c;我善于發現問題和解決問題。在測試過程中&#xff0c;我不僅能找出軟…

Pytest中的鉤子函數

在pytest框架中&#xff0c;鉤子函數&#xff08;Hooks&#xff09;是一種強大的機制&#xff0c;允許用戶擴展和定制pytest的行為。鉤子函數在pytest的測試執行生命周期的特定點上被調用&#xff0c;提供了一種靈活的方式來修改或增強測試過程的各個方面。以下是對pytest鉤子函…

桌面弄一個透明的記事本怎么弄?電腦桌面透明記事本

每次坐在電腦前&#xff0c;我總會被桌面上密密麻麻的圖標和文件弄得眼花繚亂。多么希望能有一個透明的記事本&#xff0c;既能隨時記錄我的想法和任務&#xff0c;又不會遮擋我桌面上的其他內容。 有一天&#xff0c;我偶然發現了透明記事本工具。它不僅解決了我的記事本需求…

cf 7.9 div3

AProblem - A - Codeforces ac代碼 #include<bits/stdc.h> typedef long long ll;#define IOS ios::sync_with_stdio(0),cin.tie(0),cout.tie(0) const ll N1e5; using namespace std;int main() {IOS;int t;cin>>t;while(t--){int sum,ansINT16_MAX;int a[3];for…