楼主: 語諰訫
53 0

[学科前沿] 隐语——数据要素流通技术MOOC三期 课程笔记——综合案例与实践:跨企业数据查询 [推广有奖]

  • 0关注
  • 0粉丝

等待验证会员

小学生

14%

还不是VIP/贵宾

-

威望
0
论坛币
0 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
40 点
帖子
3
精华
0
在线时间
0 小时
注册时间
2018-10-12
最后登录
2018-10-12

楼主
語諰訫 发表于 2025-12-2 17:15:44 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币

讲师:冯宇扬(浙江大学)

核心主题:基于PIR技术的跨企业数据隐私查询(隐语Secret Note平台实操)

分享结构:案例背景 → 数据集准备 → 实验流程(含平台实操)

一、核心技术与场景解析

1. 业务背景

参与方设定:

  • 企业A:一家专注于研发新型生物降解材料的高科技公司,其研究成果尚未公开或申请专利。
  • 企业B:拥有历史技术资料数据库的企业,掌握大量过往研发记录。

核心诉求:企业A希望确认其正在研发的材料是否已被企业B收录于数据库中。然而,在查询过程中必须确保自身研发信息不被泄露。

潜在风险控制:避免企业B通过查询内容推测出企业A的技术方向,防止出现技术泄密、恶意抢注专利或倒卖情报等行为。

2. 关键技术:PIR(Private Information Retrieval,隐私信息检索)

定义说明:PIR是一种允许用户从远程数据库中获取数据,而数据库持有者无法得知具体查询项的技术机制,实现“查询可执行,目标不可见”。

PIR主要分类如下:

分类维度 类型 核心说明
按服务器数量 单服务器PIR 仅需一个数据库节点即可完成隐私保护查询
按服务器数量 多服务器PIR 依赖多个服务器协作,通过数据分片方式保障隐私安全
按查询类型 Index PIR 适用于数组型数据库,用户指定索引i获取对应值,服务器不知晓i的具体数值
按查询类型 Keyword PIR 适用于键值对结构数据库,用户根据关键词(Key)查询对应值(Value),服务器无法获知关键词内容

本次实验采用方案:单服务器 + Keyword PIR 模式

二、数据集构建与分配

实验涉及两个角色:企业A作为查询方(Client节点),企业B作为数据库提供方(Server节点)。各自持有特定数据文件。

持有方 文件名称 内容描述与功能
企业B(Server节点) db.csv 模拟数据库文件,包含两列:“k”(键)和“value”(值),存储若干键值对示例(如 k=fr 对应 value=rm)
企业B(Server节点) serversecretkey.bin 用于PIR加密过程中的私钥文件,由企业B独立保管
企业A(Client节点) pirquery.csv 待查询关键词列表,仅含“k”一列,本案例中包含一条记录:k=fr
unused_tcp_port

三、实验操作流程(基于隐语Secret Note平台)

前置条件

已成功启动Client(企业A)与Server(企业B)两个计算节点,并将上述数据文件分别上传至对应节点的工作目录。

实验目标:企业A在不暴露查询关键词“fr”的前提下,从企业B的加密数据库中准确获取对应的返回值“rm”。

1. 整体流程概览

  1. 获取可用通信端口,配置瑞(Ray)集群(支撑节点间通信);
  2. 再次获取独立端口,部署SPU安全计算组件(PIR运算依托于此);
  3. 执行PIR Setup阶段:由Server将明文数据库加密转换为密文数据库;
  4. 进入PIR Online阶段:Client发起隐私查询请求,双方协同完成结果获取。

2. 具体操作步骤

步骤1:导入必要依赖库

操作说明:Client与Server节点均需运行相同代码块,加载隐私计算核心库(如 secretflow、spu 等)。

平台提示:代码区域右上角标注“client和server”,点击运行后双端同步执行。

步骤2:配置瑞(Ray)集群

获取可用端口:

调用自定义函数以获取当前系统未被占用的端口号,Client与Server分别执行,确保各自获得唯一端口(每次运行结果可能不同)。

sf.init()

记录所获端口号,后续用于节点通信配置。

初始化Ray集群:

调用初始化函数,关键参数包括:

  • address
    :Ray集群访问地址;
  • cluster_config
    :配置对象,内含以下子项:
  • parties
    :所有参与方的IP地址与端口组合(IP信息可通过平台右上角“节点信息”查看);
  • selfparty
    :标识当前运行节点身份(Client 或 Server)。
selfparty

执行要求:Client与Server分别填写对应的身份参数并执行代码,建议使用“执行上方所有”功能保证同步性,确保集群连接正常建立。

步骤3:配置SPU安全计算环境

重新获取端口:再次调用端口获取函数(同前),为SPU组件分配独立通信端口。

unused_tcp_port

创建SPU实例:

调用创建函数,主要配置项定义于以下参数中:

  • nodes
    :填入当前节点的IP地址及新获取的端口;
  • protocol
    :选择多方安全计算协议,本实验采用3pc2k协议;
  • field
    :设定计算使用的有限域大小为128位;
  • sign_mode
    :设置签名函数的进位模式为signModeRail。
sf.spu()

执行完成后生成SPU运行实例,为后续PIR操作提供加密计算支持。

spu.conf
步骤4:PIR Setup阶段(由Server单独执行)

核心任务:利用企业B本地密钥对原始数据库(db.csv)进行加密处理,生成密文数据库(sdb)。

获取工作路径:

执行函数获取Server端的工作空间绝对路径,并存入变量中以便引用。

os.getcwd()
current_dir

调用PIR加密接口:

执行加密函数,传入以下关键参数:

  • server
    :指定服务方节点名称(server);
  • input_path
    :明文数据库文件路径(db.csv);
  • k_columns
    :数据库中表示“键”的字段名(k);
  • label_columns
    :数据库中表示“值”的字段名(value);
  • oprf_key_path
    :其他扩展参数(如有)
spu.pir_setup()

Server密钥路径(serversecretkey.bin)。

setup_path

加密后数据库的输出路径(位于工作目录下的sdb文件)。

bucket_size

数据库分桶大小设置(本实验中设定为16,适用于小规模数据场景)。

结果验证

检查Server工作目录,确认生成了新的sdb文件,该文件即为已完成加密的数据库。

步骤5:PIR Online阶段(双方协同执行)

核心目标:Client发起隐私查询并获取结果,整个过程中Server无法获知实际查询内容。

密钥路径配置

将Server端的密钥文件(serversecretkey.bin)复制至容器的tmp目录下,以确保后续加密验证流程可正常进行。

发起PIR查询

执行以下操作:

spu.pir_query()

主要参数说明如下:

  • server/client
    :对应参与方的节点名称。
  • server_setup_paths
    :指定加密数据库文件的路径(sdb格式)。
  • client_k_columns
    :Client查询文件中用于匹配的“键”所在列名(k)。
  • client_input_paths
    :Client侧查询输入文件的路径(pirquery.csv)。
  • client_output_paths
    :查询结果的输出路径(pirresult.csv)。

结果验证

在Client的工作目录中,确认生成了新的pirresult.csv文件。

打开该文件可查看:当查询键k=fr时,返回结果为rm,与原始数据库记录一致。表明查询过程既保证了隐私性,又实现了结果的准确性。

四、实验核心结论

PIR技术能够有效应对跨企业间数据查询中的隐私泄露风险,真正实现“数据可用不可见”的安全目标。

通过隐语Secret Note平台提供的节点配置机制与SPU安全计算模块,PIR技术得以高效部署与实践。

本次实验成功验证:Client在完全隐藏查询关键词的前提下,仍能准确获取Server数据库中的目标信息,达到隐私保护与数据可用性的双重目标。

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:MOOC 综合案例 企业数据 数据查询 information
相关内容:数据要素流通技术

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
jg-xs1
拉您进交流群
GMT+8, 2025-12-24 23:43