如何混淆多方计算(MPC)输入

立即解锁
发布时间: 2025-08-31 00:32:56 阅读量: 14 订阅数: 25 AIGC
PDF

密码学理论前沿研究

### 如何混淆多方计算(MPC)输入 #### 1. 个性化通用群协议 在理想置换模型中,我们可使用通用群来实现个性化通用群协议。为避免混淆,我们需区分公共群和个性化群: - **公共群**:协议使用的通用群,双方可无限制地访问该群的操作。群元素句柄通过一个名为 `dlog` 的映射与它们的离散对数相关联。在安全证明中,模拟器可充当此通用群,并以不同方式维护 `dlog` 映射。 - **个性化群**:由协议实现,其理想功能中,句柄通过名为 `DLog` 的映射与离散对数相关联。该群的目标是通过交互式协议,严格限制客户端对涉及 `DLog` 的操作的访问。 ##### 1.1 主要思想 个性化通用群的“密钥”由强伪随机置换(PRP)`F` 的密钥 `k`(正向和逆向评估分别表示为 `F +` 和 `F -`)以及公共群的随机生成元 `g` 组成。离散对数为 `x` 的个性化群元素由形式为 `(Fk(m), gxgm)` 的句柄表示,其中 `m ∈ Z` 提供乘法盲化因子 `gm`。这种编码方式的原理如下: - 若客户端不知个性化群的“密钥”,由于 `F ± k` 的行为不可预测,客户端只能创建随机元素的句柄。 - 若攻击者攻破服务器并获取“密钥” `(k, g)`,可反转 PRP 得到 `m`,然后去除 `gm` 盲化项,得到 `gx`。此时,攻击者可在无服务器帮助的情况下,对 `gx` 形式的无盲化值执行群操作,但模拟器仍可观察这些操作。 在服务器的帮助下,客户端可对两个句柄执行群操作: 1. 考虑两个句柄 `(c1, g1)` 和 `(c2, g2)`,其中 `c1 = Fk(m1)`,`c2 = Fk(m2)`,`g1 = gx1gm1`,`g2 = gx2gm2`。客户端可计算 `g3 = g1g2 = gx1+x2gm1+m2`,这是离散对数为 `x1 + x2` 的元素的有效句柄的一半。若客户端能获得 `Fk(m1 + m2)` 的加密值,就能构建完整且正确的句柄。 2. 客户端和服务器运行两方计算(2PC)协议,客户端提供 `c1` 和 `c2`,服务器提供 `k`,客户端学习 `Fk(m1 + m2)`,而服务器不获取任何信息。此 2PC 协议不涉及公共通用群中的群操作,仅涉及指数运算和 PRP 评估。 同样,在服务器的帮助下,客户端可执行零测试: 1. 给定句柄 `(c1, g1)`,客户端想知道 `c1` 是否为 `Fk(m1)` 形式,以及 `g1` 是否为 `g0gm1 = gm1` 形式,即客户端需了解 `c1` 是否对 `g1` 的离散对数进行了加密。 2. 我们借助 2PC 协议实现此功能。客户端提供 `c1`,服务器提供 `k`,在 2PC 功能中获取 `m1`。该功能提供两个基本操作:首先,选择随机数 `s`,让客户端使用计算得到的 `m1` 值学习 `gs·m1`;其次,允许客户端将其选择的任何群元素提升到 `s` 次幂。若客户端选择计算 `gs 1`,则结果等于 `gs·m1` 当且仅当 `g1 = gm1`。 ##### 1.2 详细信息 协议的完整细节如图 8 所示,各方调用的单独 2PC 功能如图 7 所示。此“辅助功能”是典型的反应式功能,可通过任何标准 2PC 协议安全实现。但由于技术原因,协议需进行一些必要修改: - **句柄包装**:句柄被包装在理想置换 `Π±` 中,有效句柄 `h` 的形式为 `Π(c1, g1)`,其中 `c1` 和 `g1` 如上述定义。借助理想置换,模拟器可观察每次新句柄生成或现有句柄解包为两个组件的过程。 - **避免历史泄露**:在原始方案中,客户端可获取新句柄 `Π(Fk(m1+m2), gx1+x2gm1+m2)`,但这会向持有 `k` 的人泄露其“历史”信息。因此,新句柄应使用新的掩码 `m3`,而非从父句柄派生的 `m1 + m2`。当各方运行 2PC 让客户端学习新密文时,客户端应学习 `Fk(m3)`,并获取校正项 `Δ = gm3−m1−m2` 以完成句柄。由于 2PC 功能本身无法生成群元素,此任务委托给服务器。 为防止服务器作弊,功能使用一次性消息认证码(MAC)对群元素进行认证。功能向客户端提供随机 MAC 密钥 `α` 和 `β`,向服务器提供 `s` 及其一次性 MAC `μ = αs + β`。服务器向客户端发送 `gs` 和 `gμ`,客户端通过 `(gs)α · gβ?= (gμ)` 检查指数中的 MAC。 零测试协议有两个概念步骤比概述更复杂: 1. **客户端学习 `gm1s`**:2PC 辅助功能希望客户端学习群元素 `gm1s`,此任务委托给服务器,并使用一次性 MAC 确保客户端收到预期的群元素。为防止服务器得知 `m1`,功能向客户端提供随机数 `z`,要求服务器交付 `gm1s+z`,客户端通过乘以 `g−z` 解盲。 2. **服务器执行盲指数运算**:2PC 功能向服务器提供 `s`,使服务器参与盲指数运算协议(将客户端选择的群元素提升到 `s` 次幂)。为确保服务器正确执行操作,功能向客户端交付 `gs`,并让服务器运行简单的可验证指数运算协议,使客户端确信其群元素确实被提升到 `s` 次幂。 ##### 1.3 安全分析 当 `F` 为强 PRP 时,图 8 中的协议在通用群和理想置换模型中,可 UC 安全地实现图 6 中的 `Fpgg` 功能。 - **服务器被破坏的情况**:在 `OnlineMult` 和 `OnlineZeroTest` 期间,服务器的视图不包含客户端句柄选择的任何信息,因为所有通信都通过辅助功能 `Fhelper` 进行。`Fpgg` 功能允许被破坏的服务器学习任何句柄的离散对数,并直接注册具有选定离散对数的句柄。模拟器可利用这些功能拦截攻击者的 `Π±` 预言机查询,并在功能和实际群元素之间中继离散对数信息。 - **客户端被破坏的情况**:在现实世界中,句柄的形式为 `h = Π(c, gDLog[h]gF −1 k (c))`。我们使用符号离散对数技术来模拟攻击者对某些值的无知。攻击者不知道 `g` 的离散对数,用形式变量 `K` 表示;在会话被破坏前,攻击者不知道任何 `c` 的 `F −1 k (c)`,用形式变量 `Mc` 表示;攻击者最初对 `DLog[h]` 值一无所知,用形式变量 `Dh` 表示。 攻击者只能通过零测试获取公共群中群元素的信息。当攻击者进行零测试时,模拟器观察并检查该群元素的 `dlog` 值。此 `dlog` 是形式变量上的符号表达式,若该表达式作为这些变量的函数在符号上不等于零,则现实世界中的零测试成功的概率可忽略不计,模拟器可直接判定零测试失败。但 `dlog` 表达式可能包含表示具体 `DLog[h]` 值的 `Dh` 项,此时模拟器需知道具体的 `DLog` 值是否使 `dlog` 表达式恒等于零。经分析,这种情况仅在模拟器需知道单个 `DLog[h]` 值是否为零,且攻击者对 `h` 进行了 `OnlineZeroTest` 后才会发生。在会话被破坏前,其他情况下具体的 `DLog` 值对 `dlog` 表达式是否符号为零无影响。 当攻击者破坏会话并获取 PRP 密钥 `k` 时,`F −1 k (c)` 值不再不确定。模拟器在破坏后将每个形式变量 `Mc` 替换为具体值 `F −1 k (c)`,这改变了攻击者能在 `dlog` 中产生的表达式类型。破坏后,更多情况下具体的 `DLog[h]` 值会影响 `dlog` 表达式是否符号为零,此时模拟器可使用 `OfflineMult` 和 `OfflineZeroTest` 了解相关的 `DLog` 值信息。 以下是相关的功能和协议代码: **个性化通用群功能 `Fpgg`**: ```plaintext Parameters: – group order p – handle length ℓ – client C and server S Storage: – map DLog; our convention is uninitialized entries of DLog are sampled uniformly from Zp before being used. – map status On input (Init, sid, h ∈{0, 1}ℓ) from server S: 1. If status[sid] already defined: abort. 2. Set status[sid] := active. 3. Send (Init, sid, S, h) to C. 4. Set DLog[h] := 1. On (Compromise, sid) from A∗: 5. Set status[sid] := compromised. On input (OnlineMult, sid, ssid, h1, h2) from C: 6. Give (OnlineMult, sid, ssid) to S and await response (Deliver, sid, ssid) 7. Sample h3 ←{0, 1}ℓ. 8. Set DLog[h3] := DLog[h1] + DLog[h2] mod p. 9. Give (OnlineMult, sid, ssid, h3) to P. On input (OfflineMult, sid, ssid, u0, (u1, h1), . . . , (un, hn)) from party P ```
corwn 最低0.47元/天 解锁专栏
买1年送3月
继续阅读 点击查看下一篇
profit 400次 会员资源下载次数
profit 300万+ 优质博客文章
profit 1000万+ 优质下载资源
profit 1000万+ 优质文库回答
复制全文

相关推荐

史东来

安全技术专家
复旦大学计算机硕士,资深安全技术专家,曾在知名的大型科技公司担任安全技术工程师,负责公司整体安全架构设计和实施。
最低0.47元/天 解锁专栏
买1年送3月
百万级 高质量VIP文章无限畅学
千万级 优质资源任意下载
千万级 优质文库回答免费看
立即解锁

专栏目录

最新推荐

请你提供书中第37章的具体英文内容,以便我按照要求完成博客创作。

请你提供书中第37章的具体英文内容,以便我按照要求完成博客创作。 请你先提供书中第37章的具体英文内容,以及已经完成的博客上半部分内容,这样我才能按照要求输出下半部分。

Linux系统运维知识大揭秘

### Linux 系统运维知识大揭秘 #### 1. 标准输入、输出与错误 在 Linux 系统中,标准输入(STDIN)、标准输出(STDOUT)和标准错误(STDERR)是非常基础且重要的概念。 |名称|默认目标|重定向使用|文件描述符编号| | ---- | ---- | ---- | ---- | |STDIN|计算机键盘|< (等同于 0<)|0| |STDOUT|计算机显示器|> (等同于 1>)|1| |STDERR|计算机显示器|2>|2| 常见的 Bash 重定向器如下: |重定向器|解释| | ---- | ---- | |> (等同于 1>)|重定向 STDOUT。

请你提供书中第37章的具体内容,以便我按照要求为你创作博客。

请你提供书中第37章的具体内容,以便我按照要求为你创作博客。 请你先提供书中第37章的英文具体内容,我会先输出上半部分博客,再输出下半部分博客。

Terraform自动化与CI/CD实战指南

### Terraform自动化与CI/CD实战指南 #### 1. Azure DevOps中构建Terraform管道 在Azure DevOps中,我们可以借助Azure Pipelines服务来自动化执行Terraform。以下是具体步骤: 1. **创建新管道**:通过Web界面使用Azure Pipelines创建新管道,并在GitHub仓库中进行配置,选择从新的YAML文件开始配置。 2. **编写YAML代码**: - 下载Terraform二进制文件,并指定与Terraform配置兼容的版本,如1.4.4。即便使用已安装Terraform的Microsoft托管代理

Docker容器化应用入门与实践

### Docker 容器化应用入门与实践 #### 1. Docker 基础命令与操作 - **运行容器**:使用 `docker run` 命令运行容器,例如 `-d` 选项可让容器在后台运行。以 `nginx` 镜像为例: ```bash docker run -d nginx ``` 若要在 `http://localhost:80` 看到 HTML 内容,可在 `/tmp` 目录添加 `index.html` 文件: ```bash cat <<EOF > /tmp/index.html <!doctype html> <h1>Hello World</h1> <p>This is

掌握设计交接与UI/UX设计师面试准备

# 掌握设计交接与 UI/UX 设计师面试准备 ## 一、设计交接的重要性与流程 ### 1.1 设计交接概述 设计交接是 UX 设计师向开发团队提供数字资产和全面文档,以助力产品愿景实现的关键过程。除了文件传输,顺利的交接还需要设计师与开发者之间密切的协调与沟通。良好的合作能确保设计准确执行,提升用户体验,推动项目成功完成。 ### 1.2 理解设计交接 UX 设计师完成设计后,需创建包含开发团队所需所有要求和数字资源的综合文档。这一过程虽看似简单,但成功的交接需要深思熟虑。常见的问题是认为设计完成后责任就完全转移到了开发者身上,然而,设计师与开发者的紧密合作才是良好交接的第一步,它能保

使用Prometheus和Grafana监控分布式应用

### 使用 Prometheus 和 Grafana 监控分布式应用 #### 1. 架构概述 计划中的系统架构涉及微服务、Prometheus 服务器和 Grafana,并且所有组件都将部署到 Kubernetes 中。以下是它们之间的关系: ```mermaid graph LR classDef process fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px A(Kubernetes):::process -->|提供指标| B(Prometheus):::process C(Node.js 服务):::process

优化Kubernetes应用部署:亲和性、反亲和性与硬件资源管理

### 优化Kubernetes应用部署:亲和性、反亲和性与硬件资源管理 #### 1. 引言 在Kubernetes集群中部署应用时,我们常常需要平衡应用的性能、可扩展性和弹性。理想的应用简单易设计、开发和部署,组件无状态,便于扩展。然而,现实世界的应用往往需要存储状态、处理数据安全和授权问题,还可能需要访问特殊硬件。因此,我们需要一些策略来指导Kubernetes集群更高效地调度容器,而亲和性(Affinity)和反亲和性(Anti-affinity)以及硬件资源管理就是这样的重要策略。 #### 2. 亲和性与反亲和性概述 在管理Pod调度时,我们可能希望控制多个容器是否在同一节点上

Linux认证考试全解析

### Linux认证考试全解析 #### 1. 命令行的强大功能 在学习Linux相关知识时,命令行是一个非常重要的部分。以下是学习此领域需要了解的十大要点: - **输入输出重定向**:标准输入(stdin)传统上是键盘,标准输出(stdout)传统上是显示器,标准错误(stderr)也可以重定向,使用符号 `>`、`>>`、`<` 和 `|` 即可实现。 - **命令连接**:命令可以在命令行用分号(;)连接,每个命令独立运行,也可以使用管道(|)将一个命令的输出作为另一个命令的输入。 - **文件字段操作**:`cut` 命令可从文件中提取字段,使用 `paste` 或 `join`