一款釋放數(shù)據(jù)價(jià)值的項(xiàng)目,開源了!
在大數(shù)據(jù)和 AI 的時(shí)代背景下,數(shù)據(jù)已經(jīng)成為了重要財(cái)富,大到政務(wù)數(shù)據(jù)、企業(yè)核心數(shù)據(jù),小到個(gè)人信息、銀行卡余額,這些數(shù)據(jù)無一例外都是“隱私數(shù)據(jù)”,如果在使用和流轉(zhuǎn)時(shí)發(fā)生泄漏都會(huì)造成巨大的損失。
那有沒有什么方法,可以在不暴露數(shù)據(jù)隱私的前提下,讓數(shù)據(jù)流動(dòng)起來發(fā)揮更大的價(jià)值呢?在這個(gè)問題的驅(qū)使下我們找到了今天的主角——隱私計(jì)算。
一、什么是隱私計(jì)算?
隱私計(jì)算是指在不泄露數(shù)據(jù)本身的情況下,實(shí)現(xiàn)數(shù)據(jù)分析和計(jì)算的技術(shù),具有“數(shù)據(jù)可用不可見”的特點(diǎn),讓數(shù)據(jù)安全合規(guī)地流動(dòng)起來。
下面用一個(gè)經(jīng)典的百萬富翁問題,來幫助理解什么是“數(shù)據(jù)可用不見”。
假設(shè)有兩個(gè)百萬富翁,他們都想知道誰更富有,但又不想讓對(duì)方或者第三方,知道自己具體有多少錢。
-
數(shù)據(jù)本身:具體的財(cái)富值(數(shù)據(jù)) -
計(jì)算:比大小(可用) -
不泄露:對(duì)方或第三方(不可見)
按照常理,進(jìn)行比大小的計(jì)算是需要知道兩個(gè)數(shù)是多少,才能比較大小,但這里不知道具體的數(shù)字。所以上面這個(gè)問題在普通人看來是無解的,但其實(shí)這是一個(gè)密碼學(xué)問題,也被稱為“多方安全計(jì)算”(MPC)問題,由姚期智院士在 1982 提出,并給出了解決方案——混淆電路,實(shí)現(xiàn)了數(shù)據(jù)的可用不可見。
從隱私計(jì)算的技術(shù)發(fā)展時(shí)間線,我們不難看出隱私計(jì)算還是一個(gè)比較“新”的技術(shù)。隨著零知識(shí)證明、差分隱私、全同態(tài)加密、聯(lián)邦學(xué)習(xí)等技術(shù)的相繼問世,目前已形成三大應(yīng)用技術(shù)路線多方安全計(jì)算(MPC)、聯(lián)邦學(xué)習(xí)(FL)、可信執(zhí)行環(huán)境(TEE),隱私計(jì)算作為數(shù)據(jù)流通的重要技術(shù)已應(yīng)用于金融、醫(yī)療、政務(wù)、廣告等領(lǐng)域。
-
金融:聯(lián)合反洗錢、銀(行)證(券)數(shù)據(jù)共享等 -
醫(yī)療和健康:流行病接觸者追蹤等 -
政務(wù):案件調(diào)查、人口普查等
隨著歐盟 2018 年生效的《通用數(shù)據(jù)保護(hù)法案》,Google、Facebook 等科技巨頭都收到了巨額罰單。近兩年,我國也相繼出臺(tái)了 《數(shù)據(jù)安全法》 和 《個(gè)人信息保護(hù)法》。因此,如何讓數(shù)據(jù)安全地流通起來,已經(jīng)不再是一道附加題而是一道必答題。
如果我們把上面的“百萬富翁”換成企業(yè)/機(jī)構(gòu)的話,就可以很容易得出隱私計(jì)算技術(shù)就是數(shù)據(jù)安全流通的答案 ??。
二、PrimiHub
那么,對(duì)于沒有隱私計(jì)算技術(shù)背景的程序員、或是沒有相關(guān)研發(fā)團(tuán)隊(duì)的企業(yè)/機(jī)構(gòu),如何才能快速用上隱私計(jì)算技術(shù),讓數(shù)據(jù)流通起來創(chuàng)造更大的價(jià)值呢?
今天,HelloGitHub 給大家?guī)硪豢?strong style="line-height: 1.6 !important;">由密碼學(xué)專家團(tuán)隊(duì)打造的開源隱私計(jì)算平臺(tái)——PrimiHub,它開箱即用、支持 CLI 和可視化 Web 界面,讓你無需具備隱私計(jì)算技術(shù)背景,就能上手發(fā)起隱私計(jì)算任務(wù)。
GitHub 地址:https://github.com/primihub/primihub
下面,我將先介紹如何快速上手 PrimiHub,最后通過演示一個(gè)完整的應(yīng)用案例,讓你能夠真正的入門 PrimiHub,并將隱私計(jì)算應(yīng)用到實(shí)際的業(yè)務(wù)中。
三、快速上手
PrimiHub 是在隱私計(jì)算應(yīng)用技術(shù)之上構(gòu)建的隱私計(jì)算平臺(tái),封裝了底層的密碼學(xué)協(xié)議讓開發(fā)者專注于業(yè)務(wù)、更容易上手。下面就讓我們實(shí)際上手體驗(yàn)一下,讓數(shù)據(jù)流動(dòng)起來吧!
3.1 安裝
雖然 PrimiHub 提供了 Docker、可執(zhí)行文件、本地編譯的安裝方式,但是如果你只是想在本地體驗(yàn)一下,我強(qiáng)烈推薦 Docker 一鍵安裝,因?yàn)檎娴氖翘?easy 了 ~
# 第一步:下載
git clone https://github.com/primihub/primihub.git
# 第二步:進(jìn)入目錄
cd primihub
# 第三步:?jiǎn)?dòng)
docker-compose up -d
3.2 發(fā)起任務(wù)
PrimiHub 將復(fù)雜的隱私計(jì)算技術(shù)封裝成了一個(gè)個(gè)任務(wù),只需要修改配置文件,然后執(zhí)行命令發(fā)起任務(wù)即可。
PrimiHub 目前支持聯(lián)合統(tǒng)計(jì)、隱私求交、匿蹤查詢、聯(lián)邦學(xué)習(xí)等功能。
-
聯(lián)合統(tǒng)計(jì):多個(gè)參與方在不暴露私有數(shù)據(jù)的情況下,共同完成均值(AVG)、求和(SUM)、最大值(MAX)、最小值(MIN) 等計(jì)算 -
隱私求交:在不暴露參與方私有數(shù)據(jù)的情況下,實(shí)現(xiàn)兩個(gè)或多個(gè)參與方之間的數(shù)據(jù)交集計(jì)算。 -
匿蹤查詢:保證用戶向數(shù)據(jù)源方提交查詢請(qǐng)求時(shí),在數(shù)據(jù)源方不知道用戶查詢條件和結(jié)果的前提下完成查詢。 -
聯(lián)邦學(xué)習(xí):一種分布式模型訓(xùn)練技術(shù),在數(shù)據(jù)不動(dòng)、模型出域的前提下完成全局模型的訓(xùn)練。
下面是通過命令行發(fā)起一個(gè)「隱私求交」任務(wù)的全過程,task_config_file 參數(shù)指定配置文件。
# 1. 進(jìn)入容器
docker exec -it primihub-node0 bash
# 2. 發(fā)起隱私求交任務(wù)
./primihub-cli --task_config_file="example/psi_ecdh_task_conf.json"
I20230616 13:40:10.683375 28 cli.cc:524] all node has finished
I20230616 13:40:10.683745 28 cli.cc:598] SubmitTask time cost(ms): 1419
# 3. 查看結(jié)果
cat data/result/psi_result.csv
"intersection_row"
X3
...
3.3 更多配置示例
為了方便用戶上手,PrimiHub 在 example 目錄下,提供了 50 多種隱私計(jì)算任務(wù)的配置文件,可作為模板快速配置自己的數(shù)據(jù)源發(fā)起任務(wù)。
| 文件 | 任務(wù) |
|---|---|
| mpc_statistics_sum_task_conf.json | 聯(lián)合統(tǒng)計(jì)三方求和(SUM)任務(wù) |
| psi_ecdh_task_conf.json | 隱私求交求兩個(gè)集合的交集 |
| keyword_pir_task_conf.json | 匿蹤查詢 |
| hfl_plaintext.json | 線性回歸橫向聯(lián)邦明文模式訓(xùn)練 |
| hfl_paillier.json | 線性回歸橫向聯(lián)邦同態(tài)模式訓(xùn)練 |
| ...... | 更多配置示例 |
四、應(yīng)用案例
這里我們將通過在 PrimiHub 管理平臺(tái)模擬演示一個(gè)匿蹤查詢(隱匿查詢)的應(yīng)用案例:檢察院要向公安機(jī)關(guān)查詢張三(身份證號(hào))是否有涉毒記錄,但是公安機(jī)關(guān)不想把全量數(shù)據(jù)提供給檢察院查詢,檢察院也不想暴露他們當(dāng)前正在偵查的對(duì)象。
上面的場(chǎng)景,雙方可以通過 PrimiHub 的隱匿查詢功能來滿足雙方需求,實(shí)現(xiàn)公安機(jī)關(guān)看不到檢察院的查詢,檢察院也不用拿到公安機(jī)關(guān)的全量數(shù)據(jù),下面開始操作。
4.1 注冊(cè)并登陸
匿蹤查詢需要兩方以上進(jìn)行協(xié)同,所以需要選擇「節(jié)點(diǎn) 1:模擬檢察院」和「節(jié)點(diǎn) 2:模擬公安機(jī)關(guān)」進(jìn)行注冊(cè)。
節(jié)點(diǎn) 1:https://node1.primihub.com/#/register
節(jié)點(diǎn) 2:https://node2.primihub.com/#/register
注冊(cè)完成后打開兩個(gè)網(wǎng)頁分別登陸,剛模擬注冊(cè)的檢察院和公安機(jī)關(guān)的賬號(hào)。
4.2 匿蹤查詢
4.2.1 準(zhǔn)備工作
本地準(zhǔn)備好待查詢的數(shù)據(jù)如下表,以及查詢條件身份證號(hào):110221xxxxx
| 姓名 | 身份證號(hào) | 籍貫 | 出生日期 | 涉賭時(shí)間 |
|---|---|---|---|---|
| 張三 | 110221xxxxx | 北京市 | ... | ... |
| 李四 | 1102211xxxx | 北京市 | ... | ... |
| 王二 | 11022119xxx | 北京市 | ... | ... |
4.2.2 上傳數(shù)據(jù)資源
打開「節(jié)點(diǎn) 2」網(wǎng)頁(公安機(jī)關(guān)賬號(hào))在「我的資源」點(diǎn)擊「添加資源」按鈕,將上面表格作為數(shù)據(jù)資源上傳(實(shí)際場(chǎng)景中可通過配置數(shù)據(jù)庫進(jìn)行查詢),最后點(diǎn)擊保存。
4.2.3 新建匿蹤查詢?nèi)蝿?wù)
打開「節(jié)點(diǎn) 1」網(wǎng)頁(檢查院)在「隱匿查詢」發(fā)起一次查詢?nèi)蝿?wù),在「選擇查詢資源」處選擇上一步模擬公安機(jī)關(guān)上傳的數(shù)據(jù)資源,最后點(diǎn)擊「查詢」按鈕。
4.2.4 查看結(jié)果
在「節(jié)點(diǎn) 1」網(wǎng)頁(檢查院)的「隱匿查詢」下可以查看上一步創(chuàng)建的「匿蹤查詢」任務(wù)狀態(tài),任務(wù)運(yùn)行結(jié)束后,點(diǎn)擊「導(dǎo)出結(jié)果」即可下載結(jié)果文件,查看匿蹤查詢返回的記錄。
至此,我們就用 PrimiHub 管理平臺(tái)完成了一次完整的「匿蹤查詢」任務(wù)。模擬了檢察院在公安機(jī)關(guān)提供的涉賭記錄數(shù)據(jù)中,查詢目標(biāo)對(duì)象(110221xxxxx)的涉賭信息。在查詢過程中,檢察院僅獲得查詢對(duì)象的信息,公安機(jī)關(guān)也看不到檢察院的查詢記錄,保證了檢察院的辦案獨(dú)立性。
五、最后
PrimiHub 是由原語科技開源的隱私計(jì)算平臺(tái),具有開箱即用、功能豐富、容易上手、靈活配置等特點(diǎn)。
-
開箱即用:擁有 Web 界面、命令行 和 Python SDK 多種使用方式 -
功能豐富:支持匿蹤查詢、隱私求交、聯(lián)合統(tǒng)計(jì)、聯(lián)合建模、數(shù)據(jù)資源管理等功能 -
靈活配置:支持自定義擴(kuò)展語法、語義、安全協(xié)議等 -
自主研發(fā):多方安全計(jì)算、聯(lián)邦學(xué)習(xí)、同態(tài)加密、可信計(jì)算等隱私計(jì)算技術(shù)
隱私計(jì)算作為前沿技術(shù),其開發(fā)難度可想而知,開源不易如果體驗(yàn)后覺得 PrimiHub 還不錯(cuò),就點(diǎn)一個(gè) Star? 吧!
GitHub 地址:https://github.com/primihub/primihub
在國內(nèi)外科技巨頭紛紛布局隱私計(jì)算產(chǎn)業(yè)的當(dāng)下,花些時(shí)間學(xué)習(xí)一下「隱私計(jì)算」屬實(shí)是波只賺不虧的技術(shù)投資。雖然目前隱私計(jì)算受限于性能等因素還遠(yuǎn)沒到普及的程度,但從各國對(duì)于隱私保護(hù)的重視程度,隱私數(shù)據(jù)安全合規(guī)的使用和流動(dòng)注定是未來的趨勢(shì)。相信待時(shí)機(jī)成熟之時(shí),隱私計(jì)算會(huì)和現(xiàn)在的大模型一樣,迎來屬于自己的時(shí)代。
- END -
