內容簡介
這是一本能指導零基礎讀者快速了解并上手隱私計算技術的著作,快速實現從入門到進階。
作者在金融和安全領域有10余年的技術從業經驗,是港交所隱私計算項目的深度參與者,工程實戰經驗豐富。本書從隱私計算的安全保護技術和應用技術兩個維度,深入淺出地講解了6大類隱私計算技術的工作原理、應用方法、開發框架、案例實踐。
全書共11章,分為4篇:
第1篇 基礎概念(第1~2章)
講述隱私計算的基礎知識,為后續深入講解隱私計算原理和技術做鋪墊。
第二篇 安全保護技術(第3~8章)
講述隱私計算技術中的各項安全保護技術,包括
深入講述混淆電路、秘密共享、同態加密、零知識證明、差分隱私、可信執行環境等隱私計算安全保護技術。每一項技術都講解了其原理、應用開發框架以及實踐案例。
第三篇 應用技術(第9~10章)
通過隱私保護集合交集技術、聯邦學習方面的2個綜合案例講解了隱私計算安全保護技術的應用。
第四篇 展望(第11章)
介紹了隱私計算技術標準化的相關進展,探討隱私計算技術的困境和發展前景。
(1)作者背景資深:作者曾就職于微軟、中國平安、港交所等大企業,軟件研發和架構、隱私計算和安全等都擅長。(2)作者經驗豐富:資深隱私計算專家,10余年金融和安全行業經驗,港交所隱私計算項目深度參與者,工程經驗豐富。(3)內容系統深入:系統講解6大類隱私計算技術的工作原理、應用方法、開發框架、案例實踐。(4)零基礎快入門:本書能指導零基礎的讀者快速了解并掌握隱私計算技術,不僅知曉其原理,而且能在實踐中運用。(5)提供資源下載:書中全部源文件提供下載,同時提供了Docker鏡像文件。
為什么要寫這本書
幾年前,我次接觸隱私計算技術時,馬上就被它所具有的神奇能力所吸引。隱私計算技術可以讓數據可用不可見,這是多么神奇的事情,令人難以置信。因為數據幾乎可以零成本地被復制,所以長期以來數據所有權一直難以得到有效保護,數據隱私問題也難以解決,進而導致數據擁有方缺乏提供數據的動力和意愿,造成了大量的數據孤島。數據交易并沒有形成規模,數據石油遠遠沒有被充分開采。如果通過隱私計算技術實現數據可用不可見,進而實現數據所有權和數據使用權的分離,那么數據孤島問題就很可能得到解決。我仿佛已經看到數據石油井噴的場景,著實興奮。
然而隨著研究的深入,我發現這件事情并沒有一開始想的那么簡單。單就隱私而言,什么是隱私數據中是否包含隱私這些問題其實并不容易說清楚、想明白。比如Netflix曾舉辦了一場根據公開數據推測用戶電影評分的比賽(Netflix Prize),公開數據中抹去了可識別用戶的信息,但一年后,來自得克薩斯大學奧斯汀分校的兩名研究員將公開數據與IMDB(互聯網電影數據庫)網站的公開記錄進行關聯,通過差分攻擊等手段識別出了部分匿名用戶的身份。三年后,Netflix終因隱私泄露宣布停止該比賽,并付出了百萬美元的高額賠償金。可見,判斷數據是否包含隱私、是否可以安全公開并不簡單。
經過多年的學習和思考,我認為解決數據隱私問題沒有銀彈,也不存在的數據安全。數據要流通、要共享,就必然要透露給別人之前所不知的新信息。問題的關鍵在于,流通、共享過程中對透露的信息如何衡量和控制,而這正是隱私計算技術需要解決的問題。然而,目前隱私計算技術雖然種類不少,但總體上都談不上十分成熟。公眾對隱私計算技術也不夠了解。市面上雖有學術論文著作,但鮮有技術入門類的書籍。鑒于此,我本著分享技術的初衷,將近年來所學的隱私計算技術整理成書,希望能幫到一部分讀者,鼓勵他們在應用研發方案設計過程中考慮使用這項技術。
讀者對象
大數據專業、數據安全專業的學生。
對數據安全感興趣的程序員。
對數據隱私保護有需求的開發人員、架構師。
本書特色
目前,市面上涉及隱私計算的書籍主要以聯邦學習為主題,且應用場景主要是機器學習,鮮有介紹隱私計算中各項基礎安全保護技術的。本書講述了隱私計算中的各項基礎安全保護技術及實現這些技術的開源應用開發框架,并選取應用案例進行實踐,有利于初學者快速上手學習。
如何閱讀本書
本書分4篇。
基礎概念篇(第1、2章):講述隱私計算的起源、發展、概念等基礎知識,為后續深入講解隱私計算原理和技術做鋪墊。
安全保護技術篇(第3~8章):講述隱私計算技術中的各項基礎安全保護技術,包括混淆電路、秘密共享、同態加密、零知識證明、差分隱私、可信執行環境。
應用技術篇(第9、10章):通過兩個綜合案例介紹隱私計算中基礎安全保護技術的應用。
展望篇(第11章):描述隱私計算技術標準化的相關進展,探討隱私計算技術的困境和發展前景。
其中,篇以基礎知識為主,如果你熟悉隱私安全的相關基礎知識,可以直接跳過這部分內容。但是如果你是一名初學者,請一定從篇開始學習。第二篇的各章比較獨立,你可根據自己的興趣優先選擇其中某些內容閱讀。另外,本書涉及的編程語言較多,讀者不必拘泥于編程語言細節,重點關注相關技術的原理和方法即可。
勘誤和支持
登錄https://github.com/li-weirong/ppct可下載書中全部源文件,登錄https://hub.docker.com/u/liweirong可拉取Docker鏡像文件。由于筆者能力有限,書中難免會存在一些錯誤或者不準確的地方,懇請讀者批評指正。如果你有寶貴意見,請發送郵件到郵箱liweirong@outlook.com,期待得到你的真摯反饋。
致謝
首先要感謝前公司領導許慎,是他帶我走進隱私計算這一前沿技術的世界,讓我領略到了這一新技術的魅力。
其次要感謝機械工業出版社華章公司的編輯楊福川和陳潔,他們在我寫作期間始終支持我,引導我順利完成了全部書稿。
后感謝我的家人,他們在我編寫此書的過程中始終支持和鼓勵我,讓我安心思考和寫作,從而終完稿。
謹以此書獻給我親愛的家人!
李偉榮
隱私計算專家,曾就職于微軟、平安、港交所等大型公司,擁有十年以上金融項目架構和信息安全管理經驗。精通信息安全、軟件研發、項目管理,擅長大型軟件架構開發,善于使用創新思維和創新方法解決問題。
曾在港交所深度參與隱私計算相關項目,致力于通過隱私計算技術解決大數據產品的確權、標準化、存證、溯源、定價、信用體系和利益分配等一系列問題,打造數據、金融資產交易的新型基礎設施。
目錄 Contents
序
前言
篇 基礎概念
第1章 隱私計算技術的起源、發展及應用3
1.1 隱私計算技術的起源3
1.2 隱私計算的概念4
1.3 隱私計算技術的發展脈絡6
1.4 隱私計算技術是重大科技趨勢7
1.4.1 政策扶持7
1.4.2 商業市場前景8
1.4.3 商業研究機構的認同9
1.5 隱私計算技術的應用場景10
1.5.1 金融行業10
1.5.2 醫療健康行業11
1.5.3 政務行業11
1.6 本章小結12
第2章 隱私計算技術的基礎知識13
2.1 非對稱加密RSA算法13
2.1.1 RSA算法基礎13
2.1.2 密鑰生成15
2.1.3 加密與解密16
2.1.4 基于RSA算法的盲簽名17
2.2 不經意傳輸17
2.3 布隆過濾器19
2.4 隱私計算安全性假設20
2.4.1 安全行為模型20
2.4.2 不誠實門限22
2.5 本章小結22
第二篇 安全保護技術
第3章 混淆電路技術的原理與實踐25
3.1 混淆電路的原理25
3.2 開發框架Obliv-C28
3.2.1 通過Docker構建環境29
3.2.2 使用obliv修飾隱私輸入數據30
3.2.3 提供隱私輸入數據31
3.2.4 計算過程中的流程控制32
3.2.5 obliv函數33
3.2.6 對數組的訪問34
3.2.7 關鍵詞frozen34
3.2.8 高級功能:無條件代碼段35
3.2.9 Obliv-C項目的文件結構36
3.3 應用案例:解決百萬富翁難題40
3.3.1 具體代碼實現40
3.3.2 網絡抓包及分析42
3.4 擴展閱讀44
3.4.1 姚氏布爾電路優化44
3.4.2 算術電路44
3.5 本章小結45
第4章 秘密共享技術的原理與實踐46
4.1 秘密共享的概念46
4.2 Shamir門限秘密共享方案47
4.2.1 Shamir門限秘密共享方案流程47
4.2.2 Shamir門限秘密共享方案原理47
4.3 通過秘密共享實現隱私計算的原理49
4.4 開發框架JIFF51
4.4.1 通過Docker構建環境51
4.4.2 JIFF服務器52
4.4.3 JIFF客戶端53
4.4.4 隱私輸入數據的秘密共享55
4.4.5 秘密共享中的運算57
4.4.6 計算過程中的流程控制59
4.4.7 計算結果輸出60
4.4.8 模塊擴展62
4.4.9 使用預處理來提升性能63
4.4.10 使用并行計算來提升性能64
4.4.11 安全模型和假設68
4.5 應用案例:求向量內積68
4.5.1 具體代碼實現68
4.5.2 網絡抓包及分析71
4.5.3 性能優化72
4.6 擴展閱讀74
4.6.1 GMW協議74
4.6.2 BGW協議75
4.6.3 SPDZ協議75
4.6.4 門限簽名75
4.6.5 開發框架FRESCO76
4.7 本章小結77
第5章 同態加密技術的原理與實踐78
5.1 同態加密算法概述78
5.1.1 同態加密算法的概念78
5.1.2 同態加密算法的分類79
5.2 半同態加密算法實踐83
5.2.1 Paillier加法同態83
5.2.2 RSA乘法同態84
5.3 開發框架SEAL85
5.3.1 加密參數設置85
5.3.2 密鑰生成與加解密87
5.3.3 層的概念89
5.3.4 密文計算91
5.3.5 重線性化91
5.3.6 重縮放92
5.3.7 通過Docker構建環境94
5.4 應用案例:距離計算94
5.5 擴展閱讀99
5.5.1 標準化進展99
5.5.2 HElib99
5.5.3 PALISADE99
5.6 本章小結100
第6章 零知識證明技術的原理與實踐101
6.1 零知識證明技術的算法原理101
6.1.1 交互式零知識證明102
6.1.2 非交互式零知識證明104
6.1.3 通過R1CS來描述算術電路106
6.1.4 開發步驟108
6.2 開發框架libsnark109
6.2.1 使用原型板搭建電路110
6.2.2 生成密鑰對111
6.2.3 證明者構造證明112
6.2.4 驗證者驗證112
6.2.5 可復用的電路Gadget113
6.2.6 通過Docker構建環境114
6.2.7 代碼的編譯以及運行115
6.3 應用案例:以零知識證明方式提供財富達標證明116
6.4 同態承諾120
6.4.1 承諾的概念120
6.4.2 哈希承諾121
6.4.3 橢圓曲線121
6.4.4 Pedersen同態承諾122
6.4.5 基于Pedersen同態承諾的轉賬123
6.5 擴展閱讀123
6.5.1 Zash的Powers of Tau活動123
6.5.2 無須可信設置的技術方案Spartan124
6.6 本章小結124
第7章 差分隱私技術的原理與實踐126
7.1 差分隱私概述126
7.1.1 核心思想126
7.1.2 分類128
7.1.3 經典算法130
7.1.4 應用場景132
7.2 開發框架SmartNoise133
7.2.1 SmartNoise核心庫的組成133
7.2.2 基于核心庫進行數據分析134
7.2.3 SmartNoise SDK庫的組成137
7.2.4 基于SDK庫進行SQL統計查詢137
7.2.5 通過Docker構建環境138
7.3 應用案例:美國人口數據統計139
7.3.1 簡單幾何機制的直方圖分析139
7.3.2 拉普拉斯機制的直方圖分析141
7.4 擴展閱讀142
7.4.1 機器學習中的隱私攻擊142
7.4.2 差分隱私模型訓練開源庫Opacus143
7.5 本章小結143
第8章 可信執行環境技術的原理與實踐145
8.1 可信執行環境的原理145
8.2 基于硬件的可信執行環境Intel SGX147
8.2.1 SGX的安全特性147
8.2.2 SGX可信應用程序執行流程148
8.2.3 SGX相比純軟件方案的優勢149
8.2.4 SGX的不足150
8.3 Intel SGX開發入門151
8.3.1 判斷系統是否支持SGX151
8.3.2 SGX開發環境簡介及搭建153
8.3.3 基于Intel SGX SDK構建加密應用156
8.3.4 SGX的啟動審批機制180
8.3.5 SGX的密鑰182
8.3.6 本地鑒證183
8.3.7 遠程鑒證184
8.4 開發框架Teaclave188
8.4.1 Teaclave架構188
8.4.2 通過Docker構建環境190
8.5 應用案例:Private Join and Compute190
8.6 可信計算195
8.6.1 可信計算的基本思想195
8.6.2 可信計算的發展歷史196
8.6.3 可信計算在體系結構上的發展和變化196
8.6.4 可信執行環境與可信計算的關系197
8.7 擴展閱讀198
8.7.1 側信道攻擊198
8.7.2 提升TEE開發易用性199
8.7.3 手機上的可信執行環境200
8.7.4 機密計算聯盟201
8.8 本章小結202
第三篇 應用技術
第9章 隱私保護集合交集技術的原理與實踐205
9.1 PSI的實現原理205
9.1.1 基于哈希的PSI206
9.1.2 基于公鑰加密的PSI206
9.1.3 基于混淆電路等MPC技術的PSI208
9.1.4 基于不經意傳輸的PSI208
9.1.5 基于全同態加密的PSI211
9.2 應用案例212
9.2.1 基于BF和RSA的PSI212
9.2.2 實現方案213
9.2.3 運行環境以及執行215
9.3 擴展閱讀217
9.3.1 谷歌的Private Join and Compute項目217
9.3.2 PSI分析研究報告217
9.4 本章小結218
第10章 聯邦學習219
10.1 聯邦學習的源起219
10.2 聯邦學習的分類221
10.2.1 橫向聯邦學習221
10.2.2 縱向聯邦學習222
10.2.3 聯邦遷移學習224
10.3 基礎隱私計算技術在聯邦學習中的應用225
10.3.1 PSI在聯邦學習中的應用225
10.3.2 同態加密在聯邦學習中的應用226
10.3.3 秘密共享在聯邦學習中的應用227
10.3.4 差分隱私在聯邦學習中的應用229
10.3.5 TEE在聯邦學習中的應用229
10.4 擴展閱讀230
10.4.1 開源的聯邦學習框架230
10.4.2 聯邦學習的國際標準231
10.5 本章小結231
第四篇 展望
第11章 隱私計算的困境與展望235
11.1 隱私計算的困境235
11.2 隱私計算的趨勢與展望236
11.3 隱私計算技術標準化237
11.4 數據要素化與隱私計算240
11.5 本章小結241