【隐私计算篇】不经意传输协议(OT/OTE)的进一步补充

1. 背景介绍        

        关于不经意传输(OT)和不经意传输扩展(OT Extension), 我们在之前的文章《OT&OT扩展(不经意传输扩展)深入浅出》做了详细的说明。但对于OT/OTE的一些技术或者概念,还有一定的内容欠缺,因此本文根据冯登国院士关于安全多方计算协议的分享,做了相关的笔记,在这里对OT的相关内容做进一步的补充,主要涉及OT扩展类别体系、COT-ROT-OT的构建关系等。

        接下来,我们先回顾一下标准OT的构建基础(依赖的密码学技术和困难假设)以及一种经典的1-out-of-2 OT协议Naor-Pinkas OT。然后再引出本文的要点。

1.1 标准OT的构建基础

1.2 Naor-Pinkas OT过程(基于CDH困难假设的示例)

        Naor-Pinkas Oblivious Transfer (Naor-Pinkas OT) 是一种经典的基于公钥加密的 1-out-of-2 Oblivious Transfer (OT) 协议,该协议建立在 Diffie-Hellman 假设 上。在公钥密码学中,循环群的概念【3】可以被用于构建Diffie-Hellman密钥交换。符号G表示循环群的基群,指有限域上的一个有限群。g是生成元,群中的一个元素,通过不断对 g 进行幂运算可以生成整个群 G。

协议步骤:
1. 循环群(\mathbb{G}, q, g, C)
  • 协议基于一个循环群,群的生成元为 g
  • 发送方和接收方都在该群内进行操作。
2. 接收方的选择 b \in \{0,1\}
  • 接收方根据比特选择 b,生成 PK_b = g^k,然后计算另一个公钥 PK_{1-b} = C / PK_b
  • 接收方发送 PK_0​ 给发送方。
3. 发送方的预计算
  • 发送方生成一个随机数 r \in \mathbb{Z}_q,并计算 g^r 和 C^r
  • 发送方用 (PK_0)^r 和 (PK_1)^r 进行加密。也就是: E_0 = H((PK_0)^r, 0) \oplus m_0,​E_1 = H((PK_1)^r, 1) \oplus m_1
  • 然后发送方将 g^r, E_0, E_1 发送给接收方。
4. 接收方的解密
  • 接收方通过 b 选择的值,计算 (g^r)^k,并使用哈希函数 H((g^r)^k, b) 来解密选定的消息 m_b​。
  • 接收方无法计算未选择的消息 m_{1-b}​,因为没有 (PK_{1-b})^r的私钥部分 r。

2. OT存在的性能问题及OT Extension的引出

2.1 OT性能问题

        关于OT的作用和性能问题,我们在 《OT&OT扩展(不经意传输扩展)深入浅出》文中做了详细的解释,主要是由于OT需要依赖公钥密码操作,而MPC协议需要大量的OT运算,因此会导致通信量较大,整体效率低。

2.2 OT Extension分类

        因此也就引出了后续的OT Extension技术,通过少量的Base OT(有限次公钥密码操作),实现大量的OT生成。下图中列出了OT扩展的类别体系,包含IKNP类、PCG类、PCF类。不同的类别基于的困难假设不同,比如IKNP类基于PRG的困难假设,PCG类基于LPN的困难假设。

2.2.1 PRG困难假设

        伪随机生成器(Pseudo-Random Generator, PRG) 的困难假设是指构建安全伪随机生成器所依赖的计算困难问题。其核心目标是扩展一个小的随机种子为更长的伪随机序列,且该伪随机序列在计算上不可区分于真正的随机序列。

        PRG 的困难假设可以概括为以下几个方面:

1. 可计算性假设

        PRG 的输出必须是可有效计算的。也就是说,给定一个初始的随机种子 s,可以通过多项式时间的算法生成一个伪随机序列 G(s)。

2. 不可区分性假设

        这是假设的核心。对于一个有效的 PRG 来说,伪随机序列应该在计算上与真正的随机序列难以区分。具体而言,给定伪随机生成器 G 的输出序列 G(s)和等长的真正随机序列,任何多项式时间的算法(即攻击者)在接受这两者作为输入时,都不能以显著优于随机猜测的概率区分出这两个序列。

        用数学语言表述为:对于任何多项式时间的算法 A,存在一个可以忽略的函数\epsilon(n),使得:

\left| \Pr[A(G(s)) = 1] - \Pr[A(r) = 1] \right| < \epsilon(n),

        其中 s 是随机种子,G(s) 是 PRG 生成的伪随机序列,r 是真正的随机序列,\epsilon(n) 随着输入大小 n 增大趋近于零。

3. 基础困难问题

        PRG 的安全性通常基于一些公认的计算困难问题,这些问题在当前的计算能力下是难以有效解决的:

  • 离散对数问题(Discrete Logarithm Problem, DLP):在某些有限群上,计算 g^x 容易,但已知 g^x 推导 x 则很难。这在椭圆曲线密码学和 Diffie-Hellman 协议中有重要应用。

  • 整数分解问题:对于大整数 N,分解成两个大素数的乘积是困难的。这是 RSA 加密的基础。

  • 基于格的假设:如 Learning With Errors (LWE) 问题,它涉及在高维格中求解某些方程或猜测噪声,是一种非常难的计算问题。基于格的假设可以构建抗量子攻击的 PRG。

  • 扩展的单向函数:单向函数是一类易于计算但难以反向的函数。PRG 通常建立在单向函数的基础上,假设通过伪随机生成器生成的序列难以通过逆向计算还原。

        总结起来,PRG 的困难假设归根结底依赖于:(1)PRG 的输出不可与真正的随机序列区分。(2)该不可区分性假设基于某些计算困难问题。

2.2.2 LPN(Learning Parity with Noise问题)困难假设

        学习带噪声的奇偶校验(LPN)问题【4,5】作为加密或认证协议等“可证明安全”密码方案构建的困难假设基础。在理论方面,LPN 问题等价于随机线性码解码问题。在实践方面,LPN 基于的方案通常非常简单且高效,既节省代码空间,又能在时间和空间要求方面表现优异。LPN在效率上非常高效,利用了有限域中的乘法和加法操作。

        LPN通过将秘密信息表示为带有误差的方程组,有效地通过引入噪声来隐藏秘密的值。LPN作为一种后量子安全性假设使用,类似于纠错码理论,并且与学习带误差问题(Learning with Errors, LWE)有相似之处。

        LPN问题定义如下:

A · s + e mod p = u

        给定一个矩阵A,即使在噪声向量e的情况下,要找到一个向量s以无限接近目标向量u也是一个计算难题。这里,"·"表示点积,p是一个大于或等于2的素数,s是模p的整数域中的n维向量,而噪声向量e是具有较小汉明重量的稀疏向量。

2.2.3 DDH(Decisional Diffie-Hellman)困难假设

        DDH困难假设是密码学中的一个基础假设,用于证明许多密码协议的安全性。该假设在离散对数问题的基础上提出,主要与 Diffie-Hellman 密钥交换协议相关。

        DDH 困难假设的核心内容如下:

        给定一个有限群 G(通常是一个循环群),群的生成元 g,以及三个群元素 g^ag^bg^c(其中 a、b、c 是随机选取的整数),DDH 假设认为:

        难以区分 (g^a, g^b, g^{ab})(g^a, g^b, g^c) 两个三元组。

        也就是说,给定三个元素 g^ag^b 和第三个元素 g^c,如果第三个元素是 g^{ab} 或者是 g^c(随机独立于 a 和 b 生成的),攻击者无法有效地区分这两种情况。

具体步骤

  1. 选择一个大质数 p 和一个生成元 g。
  2. 随机选取整数 a 和 b,计算 g^a 和 g^b
  3. 两种可能的情况:
    • 有效的 Diffie-Hellman 三元组:给定 g^a, g^b, g^{ab}
    • 伪造的三元组:给定 g^a, g^b, g^c,其中 c 是随机的。
  4. DDH 假设断言,无法有效区分两种三元组。

        不同类型的OT扩展,在通信效率、计算效率上存在差异,以下展示了对比分析, PCG类的协议通信效率高,适合在低带宽场景下使用。而IKNP协议则适合在高带宽下使用。另外,大部分的OT扩展协议可以通过COT->ROT->OT进行构造。下一章节具体来分析一下。

3. OT构造链路

        事实上,我们在《OT&OT扩展(不经意传输扩展)深入浅出》文中,详细介绍了IKNP03-OT Extension的生成过程,其基于有限次Correlated OT生成n组Random OT,可以详细阅读理解一下实现方案。

        Random OT中的Random其实是指预处理过程中发送者的消息r_0r_1是随机生成的,然后经过OT计算,接收者获得选择比特c对应的r_c信息,该过程所涉内容与实际要发送的信息m_0m_1无关,因此可以预先生成。后续真正要发送m_0m_1时,可以利用已经生成的ROT信息,快速实现OT。下图展示了具体的执行过程。接收者通过选择比特b获得所需要的信息m_b

        进一步地,通过COT, 可以用于快速生成ROT。所谓的COT是指,发送方的消息x_0x_1之间存在相关关系【6,7】。

        通过对消息对进行Hash化,可以实现信息的随机性。因此可以快速生成ROT。下图展示的是一个示例。具体的实现案例,依然可以参考我们之前写的IKNP03-OT Extension的生成过程。

        接下来我们来分析一下为什么说COT的生成相对于ROT来说代价更低或者说更容易。从两个层面来回答:        

1. 随机性来源:

  • ROT生成的随机性复杂:ROT需要生成多个随机比特并确保每个比特对应的消息对都是随机的。因此,ROT需要在安全性上保证消息对的完全随机性,并且消息之间没有任何关联。

  • COT可以基于简单的关联:COT只要求消息对之间存在特定的关联性(例如,线性关系、加法关系等)。这种关联可以通过从ROT生成的随机性中简单地引入某种固定的数学变换实现。因此,COT可以使用ROT的随机消息并通过简单的线性变换或函数构造所需的关联性。

2. 从ROT转换为COT非常高效

  • 从ROT生成COT时,只需要将ROT的随机消息经过一次线性或代数变换来创建关联的消息对。比如,设定两个消息对(m_0, m_1),COT只需要确定一个差值 \Delta,通过加法运算来形成关联对:(x_0, x_1) = (m_0 + \Delta, m_1),这种数学操作的计算复杂度非常低,因此生成COT相对简单。

  • 一次ROT生成的随机性可以用于多次COT操作。这意味着通过少量的ROT,能够生成大量的COT,而不需要为每个COT实例单独进行高成本的生成。

        从上述描述来看,其实COT的生成是利用了ROT的随机性。COT可以通过ROT的随机性加上简单的数学变换生成,而不需要重新生成复杂的随机性。,也意味着在多个COT实例中可以重复利用同一组ROT生成的随机性。通过一次ROT生成的随机消息对,可以复用多次,通过简单的数学变换生成多个COT实例。有了COT后,又可以变换为ROT实例,进而实现OT的生成。这一段可能比较绕,建议结合 《OT&OT扩展(不经意传输扩展)深入浅出》中的IKNP03-OT Extension说明反复阅读理解。

4. 参考材料

【1】安全多方计算(MPC)的基本概念及基础组件

【2】基于秘密分享方法的 MPC 协议

【3】密码学-02-群论基础

【4】Cryptography from Learning Parity with Noise

【5】Learning Parity with Noise (LPN)

【6】Efficient Actively Secure OT Extension

【7】OT_extension

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/144029.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

了解快充协议芯片诱骗取电过程

快充协议芯片诱骗取电的过程主要涉及充电器与设备之间的通信和电压协商&#xff0c;以确保安全、快速和高效的充电。这个过程依赖于快充协议芯片&#xff0c;如XSP08Q快充诱骗芯片&#xff0c;它们内置通信模块&#xff0c;能够与供电端的充电器进行握手通信&#xff0c;从而申…

(黑马点评)七、附近商户系列功能实现

7.1 GEO数据结构的认识及其基本使用演示 7.1.1 GEO的介绍 GEO&#xff0c;代表地理坐标。Redis在3.2版本中加入了对GEO的支持&#xff0c;允许存储地理坐标信息&#xff0c;帮助我们根据经纬度来检索数据。常见的命令有&#xff1a; GEOADD&#xff1a;添加一个地理空间信息&a…

Java创建教程!(*  ̄3)(ε ̄ *)

Java 构造函数 Java面向对象设计 - Java构造函数 构造函数是用于在对象创建后立即初始化对象的代码块。 构造函数的结构看起来类似于一个方法。 声明构造函数 构造函数声明的一般语法是 <Modifiers> <Constructor Name>(<parameters list>) throws <…

【Binlog实战】:基于Spring监听Binlog日志

【Binlog实战】&#xff1a;基于Spring监听Binlog日志 binlog的三种模式 MySQL 的二进制日志&#xff08;binlog&#xff09;有三种不同的格式&#xff0c;通常被称为 binlog 模式。这三种模式分别是 Statement 模式、Row 模式和Mixed 模式。 Statement 模式&#xff1a; 在 …

JavaWEB概述

JavaWEB概述 一、什么是JavaWEB 用Java技术解决web互联网领域的技术栈。要学习JavaWEB首先得知道什么是客户端和服务端 客户端&#xff1a;简而言之&#xff0c;这就是使用方&#xff0c;比如我们下载一个软件去使用&#xff0c;里面有很多我们可以使用的功能&#xff0c;那…

Flutter问题记录 - 适配Xcode 16和iOS 18

文章目录 前言开发环境问题及解决方案1. Upload Symbols Failed2. type UIApplication does not conform to protocol Launcher3. method does not override any method from its superclass 最后 前言 为了新的镜像功能升级了macOS 15和iOS 18&#xff0c;Xcode也不可避免的需…

传输层协议——udp/tcp

目录 再谈端口号 udp 协议 理解报头 udp特点 缓冲区 udp使用的注意事项 tcp协议 TCP的可靠性与提高效率的策略 序号/确认序号 窗口大小 ACK&#xff1a; PSH URG RST 保活机制 重传 三次握手(SYN) 四次挥手(FIN) 流量控制 滑动窗口 拥塞控制 延迟应答 捎带应答 面…

面向切面:单元测试、事务、资源操作

目录 一、单元测试二、事务2.1、概述2.1.1、编程式事务2.1.2、声明式事务 2.2、JdbcTemplate2.3、基于注解的声明式事务2.3.1、基本用例-实现注解式的声明事务2.3.2、事务属性&#xff1a;只读2.3.3、事务属性&#xff1a;超时2.3.4、事务属性&#xff1a;回滚策略2.3.5、事务属…

八戒农场小程序V2最新源码

一.介绍 八戒农场V2小程序源码&#xff0c;前端工具上传&#xff0c;包更新、这个是源码&#xff0c;覆盖即可升级版&#xff08;修复很多问题&#xff09;&#xff1b;

基于UKF(无迹卡尔曼滤波)的SINS/GPS集成导航仿真程序【需要PSINS工具箱支持】

文章目录 主要特点内容包括运行截图 基于UKF&#xff08;无迹卡尔曼滤波&#xff09;的SINS/GPS集成导航仿真程序&#xff08;需要基于PSINS工具箱&#xff0c;工具箱是开源的&#xff0c;如果需要&#xff0c;可以确认收货后找我要链接&#xff09;。该程序能够高效地模拟导航…

Python VS Golng 谁更胜一筹?

今天我们聊聊Python和Golang这俩到底谁更胜一筹。 这个话题我已经在各种技术论坛上看到无数次了&#xff0c;每次都能引起一波热烈的讨论。作为一个多年写代码的老程序员&#xff0c;今天就站在我的角度&#xff0c;和大家掰扯掰扯这两个语言各自的优缺点。 1. 性能与并发模型…

软件测试技术之 GPU 单元测试是什么!

1 背景 测试是开发的一个非常重要的方面&#xff0c;可以在很大程度上决定一个应用程序的命运。良好的测试可以在早期捕获导致应用程序崩溃的问题&#xff0c;但较差的测试往往总是导致故障和停机。 单元测试用于测试各个代码组件&#xff0c;并确保代码按照预期的方式工作。单…

力扣(LeetCode)每日一题 1184. 公交站间的距离

题目链接https://leetcode.cn/problems/distance-between-bus-stops/description/?envTypedaily-question&envId2024-09-16 环形公交路线上有 n 个站&#xff0c;按次序从 0 到 n - 1 进行编号。我们已知每一对相邻公交站之间的距离&#xff0c;distance[i] 表示编号为 i …

C语言--结构体(学习笔记)

内容借鉴于b站杜远超官方频道&#xff08;C语言结构体详解【干货】&#xff09; 首先C语言中定义变量格式为“数据类型 变量名”&#xff0c;如int a; float b;等等。 那么结构体则是将多个变量&#xff08;数据类型 变量名&#xff09;结合在一起的一种新的数据类型&…

Elasticsearch 下载安装及使用总结

官网文档地址&#xff1a;Elasticsearch Guide [8.13] 官网下载地址&#xff1a;Download Elasticsearch 1. 下载安装 1、下载对应系统的版本 这里下载的 Elasticsearch 版本为 8.13.2&#xff0c;Elasticsearch 依赖 Java&#xff0c;因此要先在服务器上安装 JDK&#xff…

ARM 工业边缘计算机与 C# 编程的完美融合

在工业领域&#xff0c;随着智能化和数字化的不断推进&#xff0c;ARM 工业边缘计算机凭借其出色的性能和低功耗等优势&#xff0c;逐渐成为众多应用场景的重要支撑。而 C# 编程语言的强大功能和广泛适用性&#xff0c;使其在与 ARM 工业边缘计算机的结合中展现出了巨大的潜力。…

Spring考点总结

01.Spring框架的基本理解 关键字:核心思想IOC\AOP\作用(解耦、简化)&#xff0c;简单描述框架组成 Spring框架是一款轻量级的开发框架&#xff0c;核心思想是IOC&#xff08;控制反转&#xff09;和AOP&#xff08;面向切面编程&#xff09;&#xff0c; 为Java应用程序开发…

武器检测系统源码分享

武器检测检测系统源码分享 [一条龙教学YOLOV8标注好的数据集一键训练_70全套改进创新点发刊_Web前端展示] 1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 项目来源AACV Association for the Advancement of Computer Vision …

Python基础(八)——MySql数据库

一.数据库 【库——>表——>数据】 借助数据库对数据进行组织存储&#xff0c;借助SQL语言对数据库、数据进行操作管理 Mysql数据库 下载&#xff1a;https://www.mysql.com/ 查看是否安装配置成功&#xff1a; 安装DBeaver用于Mysql数据库图形化 安装&#xff1a;…

分布式光伏充换电站相关建议

了推动光伏发电和电动汽车的发展&#xff0c;在土地资源日益紧缺的城市区域&#xff0c;需合理共享现有土地资源&#xff0c;实现资源大化利用。城市变电站由于其合理的分布密度以及便利的接入条件&#xff0c;对于建设分布式光伏发电、充换电站具有很好的优势。可利用变电站旧…