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