Files
Knowledge/sunyard/标准/[开源+免费]+一款释放数据价值的项目,开源隐私计算平台+cdc79c72-d449-49ec-b9e7-cea4a9a1654c.md
T

183 lines
13 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
![https://img2023.cnblogs.com/blog/759200/202309/759200-20230912173019683-350983077.png](7%20信安/标准/[开源+免费]+一款释放数据价值的项目,开源隐私计算平台+cdc79c72-d449-49ec-b9e7-cea4a9a1654c/759200-20230912173019683-350983077.png)
在大数据和 AI 的时代背景下,数据已经成为了重要财富,大到政务数据、企业核心数据,小到个人信息、银行卡余额,**这些数据无一例外都是“隐私数据”,如果在使用和流转时发生泄漏都会造成巨大的损失。**
那有没有什么方法,可以在不暴露数据隐私的前提下,让数据流动起来发挥更大的价值呢?在这个问题的驱使下我们找到了今天的主角——隐私计算。
## 一、什么是隐私计算?
隐私计算是指**在不泄露数据本身的情况下,实现数据分析和计算的技术,具有“数据可用不可见”的特点,让数据安全合规地流动起来。**
下面用一个经典的百万富翁问题,来帮助理解什么是“数据可用不见”。
![https://img2023.cnblogs.com/blog/759200/202309/759200-20230912173037042-1565994367.png](7%20信安/标准/[开源+免费]+一款释放数据价值的项目,开源隐私计算平台+cdc79c72-d449-49ec-b9e7-cea4a9a1654c/759200-20230912173037042-1565994367.png)
假设有两个百万富翁,他们都想知道谁更富有,但又不想让对方或者第三方,知道自己具体有多少钱。
- **数据本身**:具体的财富值(数据)
- **计算**:比大小(可用)
- **不泄露**:对方或第三方(不可见)
按照常理,**进行比大小的计算是需要知道两个数是多少,才能比较大小,但这里不知道具体的数字**。所以上面这个问题在普通人看来是无解的,但其实这是一个密码学问题,也被称为“多方安全计算”( MPC )问题,由姚期智院士在 1982 提出,并给出了解决方案——混淆电路(篇幅有限这里不做详解),实现了数据的可用不可见。
![https://img2023.cnblogs.com/blog/759200/202309/759200-20230913003503828-1699821043.png](7%20信安/标准/[开源+免费]+一款释放数据价值的项目,开源隐私计算平台+cdc79c72-d449-49ec-b9e7-cea4a9a1654c/759200-20230913003503828-1699821043.png)
从隐私计算的技术发展时间线,我们不难看出隐私计算还是一个比较“新”的技术。随着零知识证明、差分隐私、全同态加密、联邦学习等技术的相继问世,目前已形成**三大应用技术路线多方安全计算( MPC )、联邦学习( FL )、可信执行环境( TEE ),**隐私计算作为数据流通的重要技术已应用于金融、医疗、政务、广告等领域。
- 金融:联合反洗钱、银(行)证(券)数据共享等
- 医疗和健康:流行病接触者追踪等
- 政务:案件调查、人口普查等
随着欧盟 2018 年生效的《通用数据保护法案》,Google 、Facebook 等科技巨头都收到了巨额罚单。近两年,我国也相继出台了 **《数据安全法》** 和 **《个人信息保护法》**。因此,**如何让数据安全地流通起来,已经不再是一道附加题而是一道必答题。**
如果我们把上面的“百万富翁”换成企业/机构的话,就可以很容易得出**隐私计算技术就是数据安全流通的答案 🔑。**
## 二、PrimiHub
那么,对于没有隐私计算技术背景的程序员、或是没有相关研发团队的企业/机构,**如何才能快速用上隐私计算技术,让数据流通起来创造更大的价值呢?**
![https://img2023.cnblogs.com/blog/759200/202309/759200-20230912173100017-1094826619.jpg](7%20信安/标准/[开源+免费]+一款释放数据价值的项目,开源隐私计算平台+cdc79c72-d449-49ec-b9e7-cea4a9a1654c/759200-20230912173100017-1094826619.jpg)
今天,HelloGitHub 给大家带来一款**由密码学专家团队打造的开源隐私计算平台——PrimiHub**,它开箱即用、支持 CLI 和可视化 Web 界面,让你无需具备隐私计算技术背景,就能上手发起隐私计算任务。
> GitHub 地址:[https://github.com/primihub/primihub](https://github.com/primihub/primihub)
![https://img2023.cnblogs.com/blog/759200/202309/759200-20230912173108533-648540079.png](7%20信安/标准/[开源+免费]+一款释放数据价值的项目,开源隐私计算平台+cdc79c72-d449-49ec-b9e7-cea4a9a1654c/759200-20230912173108533-648540079.png)
下面,我将先介绍如何快速上手 PrimiHub ,最后通过演示一个完整的应用案例,让你能够真正的入门 PrimiHub ,并将隐私计算应用到实际的业务中。
## 三、快速上手
PrimiHub 是在隐私计算应用技术之上构建的隐私计算平台,封装了底层的密码学协议让开发者专注于业务、更容易上手。下面就让我们实际上手体验一下,让数据流动起来吧!
### 3.1 安装
虽然 PrimiHub 提供了 Docker 、可执行文件、本地编译的安装方式,但是如果你只是想在本地体验一下,我强烈推荐 Docker 一键安装,因为真的是太 easy 了 ~
```Python
# 第一步:下载
git clone https://github.com/primihub/primihub.git
# 第二步:进入目录
cd primihub
# 第三步:启动
docker-compose up -d
```
### 3.2 发起任务
PrimiHub 将复杂的隐私计算技术封装成了一个个任务,只需要修改配置文件,然后执行命令发起任务即可。
![https://img2023.cnblogs.com/blog/759200/202309/759200-20230912173118353-885693980.png](7%20信安/标准/[开源+免费]+一款释放数据价值的项目,开源隐私计算平台+cdc79c72-d449-49ec-b9e7-cea4a9a1654c/759200-20230912173118353-885693980.png)
PrimiHub 目前支持联合统计、隐私求交、匿踪查询、联邦学习等功能。
- **联合统计**:多个参与方在不暴露私有数据的情况下,共同完成均值(AVG)、求和(SUM)、最大值(MAX)、最小值(MIN) 等计算
- **隐私求交**:在不暴露参与方私有数据的情况下,实现两个或多个参与方之间的数据交集计算。
- **匿踪查询**:保证用户向数据源方提交查询请求时,在数据源方不知道用户查询条件和结果的前提下完成查询。
- **联邦学习**:一种分布式模型训练技术,在数据不动、模型出域的前提下完成全局模型的训练。
下面是通过命令行发起一个「隐私求交」任务的全过程,`task_config_file` 参数指定配置文件。
```Python
# 1. 进入容器
docker exec -it primihub-node0 bash
# 2. 发起隐私求交任务
./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. 查看结果
cat data/result/psi_result.csv
"intersection_row"
X3
...
```
### 3.3 更多配置示例
为了方便用户上手,PrimiHub 在 `example` 目录下,提供了 50 多种隐私计算任务的配置文件,可作为模板快速配置自己的数据源发起任务。
|文件|任务|
|-|-|
|[mpc_statistics_sum_task_conf.json](https://github.com/primihub/primihub/blob/develop/example/mpc_statistics_sum_task_conf.json)|联合统计三方求和(SUM)任务|
|[psi_ecdh_task_conf.json](https://github.com/primihub/primihub/blob/develop/example/psi_ecdh_task_conf.json)|隐私求交求两个集合的交集|
|[keyword_pir_task_conf.json](https://github.com/primihub/primihub/blob/develop/example/keyword_pir_task_conf.json)|匿踪查询|
|[hfl_plaintext.json](https://github.com/primihub/primihub/blob/develop/example/FL/linear_regression/hfl_plaintext.json)|线性回归横向联邦明文模式训练|
|[hfl_paillier.json](https://github.com/primihub/primihub/blob/develop/example/FL/linear_regression/hfl_paillier.json)|线性回归横向联邦同态模式训练|
|......|[更多配置示例](https://github.com/primihub/primihub/tree/develop/example)|
## 四、应用案例
这里我们将通过在 PrimiHub 管理平台模拟演示一个匿踪查询(隐匿查询)的应用案例:检察院要向公安机关查询张三(身份证号)是否有涉毒记录,但是公安机关不想把全量数据提供给检察院查询,检察院也不想暴露他们当前正在侦查的对象。
上面的场景,双方可以通过 PrimiHub 的**隐匿查询功能**来满足双方需求,实现公安机关看不到检察院的查询,检察院也不用拿到公安机关的全量数据,下面开始操作。
### 4.1 注册并登陆
匿踪查询需要两方以上进行协同,所以需要选择「节点 1:模拟检察院」和「节点 2:模拟公安机关」进行注册。
> 节点 1:[https://node1.primihub.com/#/register](https://node1.primihub.com/#/register)
节点 2:[https://node2.primihub.com/#/register](https://node2.primihub.com/#/register)
![https://img2023.cnblogs.com/blog/759200/202309/759200-20230912173134375-447872231.png](7%20信安/标准/[开源+免费]+一款释放数据价值的项目,开源隐私计算平台+cdc79c72-d449-49ec-b9e7-cea4a9a1654c/759200-20230912173134375-447872231.png)
注册完成后打开两个网页分别登陆,刚模拟注册的检察院和公安机关的账号。
### 4.2 匿踪查询
#### 4.2.1 准备工作
本地准备好待查询的数据如下表,以及查询条件身份证号:110221xxxxx
|姓名|身份证号|籍贯|出生日期|涉赌时间|
|-|-|-|-|-|
|张三|110221xxxxx|北京市|...|...|
|李四|1102211xxxx|北京市|...|...|
|王二|11022119xxx|北京市|...|...|
#### 4.2.2 上传数据资源
打开「节点 2 」网页(公安机关账号)在「我的资源」点击「添加资源」按钮,将上面表格作为数据资源上传(实际场景中可通过配置数据库进行查询),最后点击保存。
![https://img2023.cnblogs.com/blog/759200/202309/759200-20230912173142667-532651808.png](7%20信安/标准/[开源+免费]+一款释放数据价值的项目,开源隐私计算平台+cdc79c72-d449-49ec-b9e7-cea4a9a1654c/759200-20230912173142667-532651808.png)
#### 4.2.3 新建匿踪查询任务
打开「节点 1 」网页(检查院)在「隐匿查询」发起一次查询任务,在「选择查询资源」处选择上一步模拟公安机关上传的数据资源,最后点击「查询」按钮。
![https://img2023.cnblogs.com/blog/759200/202309/759200-20230912173149146-1332073375.png](7%20信安/标准/[开源+免费]+一款释放数据价值的项目,开源隐私计算平台+cdc79c72-d449-49ec-b9e7-cea4a9a1654c/759200-20230912173149146-1332073375.png)
#### 4.2.4 查看结果
在「节点 1 」网页(检查院)的「隐匿查询」下可以查看上一步创建的「匿踪查询」任务状态,任务运行结束后,点击「导出结果」即可下载结果文件,查看匿踪查询返回的记录。
![https://img2023.cnblogs.com/blog/759200/202309/759200-20230912173158702-715125436.png](7%20信安/标准/[开源+免费]+一款释放数据价值的项目,开源隐私计算平台+cdc79c72-d449-49ec-b9e7-cea4a9a1654c/759200-20230912173158702-715125436.png)
至此,我们就用 PrimiHub 管理平台完成了一次完整的「匿踪查询」任务。模拟了检察院在公安机关提供的涉赌记录数据中,查询目标对象( 110221xxxxx )的涉赌信息。**在查询过程中,检察院仅获得查询对象的信息,公安机关也看不到检察院的查询记录,保证了检察院的办案独立性**。
## 五、最后
PrimiHub 是由原语科技开源的隐私计算平台,具有开箱即用、功能丰富、容易上手、灵活配置等特点。
- **开箱即用**:拥有 [Web 界面](https://github.com/primihub/primihub-platform)、[命令行](https://docs.primihub.com/docs/category/%E5%88%9B%E5%BB%BA%E4%BB%BB%E5%8A%A1) 和 [Python SDK](https://docs.primihub.com/docs/category/python-sdk-client) 多种使用方式
- **功能丰富**:支持匿踪查询、隐私求交、联合统计、联合建模、数据资源管理等功能
- **灵活配置**:支持自定义扩展语法、语义、安全协议等
- **自主研发**:多方安全计算、联邦学习、同态加密、可信计算等隐私计算技术
隐私计算作为前沿技术,其开发难度可想而知,开源不易如果体验后觉得 PrimiHub 还不错,就点一个 Star✨ 吧!
> GitHub 地址:[https://github.com/primihub/primihub](https://github.com/primihub/primihub)
在国内外科技巨头纷纷布局隐私计算产业的当下,**花些时间学习一下「隐私计算」属实是波只赚不亏的技术投资**。虽然目前隐私计算受限于性能等因素还远没到普及的程度,但从各国对于隐私保护的重视程度,隐私数据安全合规的使用和流动注定是未来的趋势。相信待时机成熟之时,隐私计算会和现在的大模型一样,迎来属于自己的时代。