混淆电路(GC)

news2024/11/25 13:43:46

基本概念

在混淆电路框架下,任意功能函数可被表示为一个与门和异或门组成的布尔电路,协议的参与方由生成方(Garbler)和计算方(Evaluator)组成。
**大致的流程:**生成方生成密钥并加密查找表,计算方在未知密钥和明文之间的关系的条件下解密查找表。

  1. 混淆:生成方进行混淆操作
    1. **选择随机密钥:**一个门电路其实就是一个真值表,对于每一个门电路的真值表,生成方首先对每一个输入/输出线上的真值产生一个随机数。这样一来,每一个输入/输出线上的真值就与一个随机数相对应。
    2. **洋葱加密:**然后,生成方对于每一个输出线上的真值所对应的随机数,使用相应输入线上的真值所对应的两个随机数对其进行加密。
    3. **随机置换:**在完成这些加密操作后,生成方对产生的所有密文进行随机置乱,产生一个混淆的,或者说加密的真值表,
  2. 数据传输(通信):生成方将混淆后的真值表连同对应自己一方输入的随机数发给计算方。然后计算方通过OT协议去向生成方索取自己一方的输入随机数
  3. **计算方解码表:**计算方对混淆真值表进行解密,得到唯一正确的、与输出真值相对应的随机数。
  4. **公布结果:**当计算完最后一个电路得到最终的结果时,计算方可以将该结果发送给生成方,或者发送方将自己选择的随机数发给计算方即可让双方得到最后的结果。

具体流程

考虑诚实好奇模型,以与门为例
与门的真值表如下
image.png

混淆

选择随机密钥

首先是生成方为输入和输出的每个线路都选择两个随机密钥用于代表0和1,即2*3=6个密钥,替换到原来的真值表中的0和1

洋葱式加密

为了使得计算方拥有在拥有一对密钥的时候,只能打开(解密)查找表中的一条数据(一行数据),而无法获取其他的信息,且单独使用 k x k_x kx k y k_y ky都无法获取任何信息,甚至不能够判断某个密文是否是使用 k x k_x kx k y k_y ky得到的。由此,采用洋葱式的加密方法,如下
image.png

随机置换(混淆)

生成方随机打乱真值表 image.png

通信

生成方将已经混淆好的真值表和自己输入所对应的密钥给计算方,此时由于密钥是随机数,所以计算方是不知道哪一个随机数代表的是0或者1。在拿到第一个生成方输入部分的密钥之后,计算方还想要拿到第二个计算方自己的输入部分的密钥,但不能让生成方知道自己想获取的密钥是哪一个,这里就需要采用不经意传输协议(OT)最终,计算方持有混淆的真值表,生成方的输入和自己的输入共三个部分。

解密计算

计算方通过上述三个部分就可以计算出输出电路的结果,,但此时的输出是也是一个随机数,所以计算方也不知道这个随机数代表的是0还是1。
计算方如何知道自己应该解密真值表的哪一条呢?

  1. **思路一,编码附加信息:**在真值表的每一个加密条目的中编码一些附加信息,如 σ \sigma σ个0。如果解密了错误的行,那么解密结果的末尾仅有很低的概率如 ( p = 1 2 σ ) (p=\frac{1}{2^{\sigma}}) (p=2σ1)包含 σ \sigma σ个0。以此来判断是否解密成功。显然这个方案效率很低,平均要解密查找真值表一半的条目。
  2. **思路二,标识置换:**来源于Beaver等人在1990年提出来的解决方案。假设持有的参与方 P 1 P1 P1持有私有值 x ∈ X x\in X xX,参与方 P 2 P2 P2持有私有值 y ∈ Y y\in Y yY,开始选择足够长的密钥 k x ∈ R { 0 , 1 } k k_{x}\in_R \{0,1\}^k kxR{0,1}k k x ∈ R { 0 , 1 } k k_{x}\in_R \{0,1\}^k kxR{0,1}k对每一个私有值进行加密,选择密钥的一部分(第一个密钥的后 ⌈ log ⁡ ∣ X ∣ ⌉ \lceil \log |X| \rceil logX和第二个密钥的后 ⌈ log ⁡ ∣ Y ∣ ⌉ \lceil \log |Y| \rceil logY个比特)作为查找表的置换标识。标识密钥应该用于加密哪行密文,根据置换标识对加密后的查找表进行相应的替换。为了保证密钥的长度,一般将这种标识直接加在密钥后面,同时需要保证置换标识不会在两个密钥空间中出现冲突。

公布结果

image.png最后计算方可以将最终的计算结果给生成方看,生成方就可以通过自己掌握的随机数映射表得到真实的值。也可以生成方发送随机数给计算方。
不发送最终随机数的解决办法
生成方在发送混淆真值表的时候,可以同步发送一个解码表,解码表只将每个输出门对应的随机数映射为对应值,然后又计算方自行查找计算处最终结果。
这只是单个门的计算例子,接着可以以此类推就可以扩展到整个电路。

当前方案

image.png

参考

混淆电路介绍(三)混淆电路原理
《实用安全多方计算导论》

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

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

相关文章

淘宝天猫数据查询(天猫智能手环数据分析)

近几年,中国智能可穿戴设备市场规模不断增长,也取得了傲人的成绩。从可穿戴设备市场整体发展来看,智能手环是一大主角。智能手环市场接受度和认可度的逐渐提升,为各类厂商提供了更多机会,同时这也蕴含了更多市场增量空…

分享两个有意思的登录界面

1.带有浮动占位符和灯光按钮的登录界面 先上效果: 代码如下: <!DOCTYPE html> <html lang="en"> <head>

L2-2 天梯赛的赛场安排

作者 陈越 单位 浙江大学 天梯赛使用 OMS 监考系统&#xff0c;需要将参赛队员安排到系统中的虚拟赛场里&#xff0c;并为每个赛场分配一位监考老师。每位监考老师需要联系自己赛场内队员对应的教练们&#xff0c;以便发放比赛账号。为了尽可能减少教练和监考的沟通负担&#…

this.$set的正确使用

this.#set(obj, key, value) 我们在项目开发的过程中&#xff0c;经常会遇到这种情况&#xff1a;为data中的某一个对象添加一个属性 <template><div class"hello"><button click"setMessage">添加属性</button>{{ student.name…

开发IM(即时通讯)服务端

首先讲讲IM&#xff08;即时通讯&#xff09;技术可以用来做什么&#xff1a;可以说几乎所有高实时性的应用场景都需要用到IM技术。 本篇将带大家从零开始搭建一个轻量级的IM服务端&#xff0c;麻雀虽小&#xff0c;五脏俱全&#xff0c;我们搭建的IM服务端实现以下功能&#x…

gpt.4.0-gpt 国内版

gpt 使用 GPT&#xff08;Generative Pre-trained Transformer&#xff09;是一种预训练的语言模型&#xff0c;可用于多种自然语言处理任务&#xff0c;如情感分析、文本分类、文本生成等。下面是使用GPT的一些步骤和建议&#xff1a; 确定任务和数据集&#xff1a;首先&…

选择美国虚拟主机需注意的安全问题

在选择美国虚拟主机时&#xff0c;安全性应该是您首要关注的问题。虚拟主机通常是网站托管的最便宜和最方便的方式之一&#xff0c;但也存在安全问题。在本文中&#xff0c;我们将讨论一些您应该注意的安全问题&#xff0c;并提供一些解决方案来保护您的网站。 一、了解虚拟主机…

Linux 配置与磁盘管理

目录 物理设备的命名规则Linux中硬盘分区部分Linux在分区上建立文件系统挂载Linux硬盘管理工具LVM逻辑卷管理器物理卷、卷组合逻辑卷的建立 逻辑卷的使用LVM整体创建流程硬盘配额配置&#xff08;针对用户或者群组使用的空间&#xff09; 物理设备的命名规则 Linux系统内核中的…

分析trace 知识点分析的很全面

Total time breakdown&#xff1a;依据关键tag拆分&#xff0c;比如binderapplication/activitystart/doframe 找出时间差异大tag的cpu status &#xff1a;Running/Runnable/Sleeping/Uninterruptible sleep Running:SW-diff-check 或 cpu能力(大小核或频率&#xff09; Runna…

v-for比v-if优先级更高?面试官:回去等通知吧

大厂面试题分享 面试题库 前后端面试题库 &#xff08;面试必备&#xff09; 推荐&#xff1a;★★★★★ 地址&#xff1a;前端面试题库 web前端面试题库 VS java后端面试题库大全 前言 v-if和v-for哪个优先级更高呢&#xff1f;这是面试官常常问到的一个问题&#xff0c;…

七、vue-基础之条件渲染

一、条件渲染 在某些情况下&#xff0c;我们需要根据当前的条件决定某些元素或者组件是否渲染&#xff0c;这个时候我们就需要进行条件判断了。 Vue提供了下面的指令来进行条件判断&#xff1a; v-ifv-elsev-else-ifv-show &#xff08;1&#xff09;需求demo体验 我们直接…

Win11的两个实用技巧系列之内存不足导致永劫无间闪退解决方法、Win11本地安全机构保护误报修复方法

Win11内存不足导致永劫无间闪退解决方法 Win11内存不足导致永劫无间闪退怎么办&#xff1f;其实解决方法很简单&#xff0c;本文就为大家带来了详细的解决方法&#xff0c;感兴趣的朋友一起看看吧 Win11内存不足导致永劫无间闪退怎么办&#xff1f;永劫无间出现闪退的情况可能…

python练手小案例——采集二手车数据

前言 大家早好、午好、晚好吖 ❤ ~欢迎光临本文章 本次案例亮点: 1、系统分析目标网页 2、html标签数据解析方法 3、海量数据一键保存 环境介绍: 在开始写我们的代码之前&#xff0c;我们要准备好运行代码的程序 Python 3.8.8 | Anaconda, Inc. &#xff1a;解释器 Pych…

物联网|ARM|Keil安装|MDK|增加V5编译器|物联网开发系列课程之零基础玩转Cortex-M系列CPU-学习笔记(1)

文章目录 第一阶段-课程背景及简介问题一 什么是物联网问题二 嵌入式系统在物联网中的角色问题三 不一样的嵌入式系统 课程介绍课程内容提要&#xff08;学什么)课程特色课程要求&#xff08;怎么学)课程目的(怎么用)课程约定 浅谈ARM什么是ARMARM体系架构CPU的特点ARM体系架构…

04-24 每日一题 1163. 按字典序排在最后的子串 学习笔记反思

不晓得脑袋的灵活性是不是和精力的充沛程度相关&#xff0c;看到红色的困难&#xff0c;感觉自信都没了 题目描述 给你一个字符串 s &#xff0c;找出它的所有子串并按字典序排列&#xff0c;返回排在最后的那个子串 示例 1 :::success 输入&#xff1a;s “abab” 输出&…

【CocosCreator入门】CocosCreator组件 | Button(按钮)组件

Cocos Creator 是一款流行的游戏开发引擎&#xff0c;具有丰富的组件和工具&#xff0c;其中的Button组件可以通过设置按钮的状态和点击事件&#xff0c;实现在游戏中添加按钮交互的功能。 目录 一、组件介绍 二、组件属性 三、点击事件 Ⅰ、通过属性检查器添加回调 Ⅱ、通…

【AI话题】Chatbot UI下实现的对话模拟机

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 项目初衷&#xff1a;一、功能介绍&#xff1a;二、使用说明&#xff1a;1.注意事项&#xff1a; 三&#xff0c;未来功能&#xff1a;总结 项目初衷&#xff1a; …

让人悲观的国内ChatGPT的未来

最近关于ChatGPT的火爆已经不是简单的AI圈的事了&#xff0c;它已经席卷了所有的IT、媒体圈子&#xff0c;甚至是不同领域不同行业的人&#xff0c;只要你还对于变化与AI有一定的了解&#xff0c;那我相信你一定能知道ChatGPT是什么了。ChatGPT在某种程度上已经是相当于AGI通用…

时间序列的数据分析(七):数据平稳性

之前已经完成了六篇关于时间序列的博客&#xff0c;还没有阅读过的读者请先阅读&#xff1a; 时间序列的数据分析(一):主要成分 时间序列的数据分析(二):数据趋势的计算 时间序列的数据分析(三):经典时间序列分解 时间序列的数据分析(四):STL分解时间序列的数据分析(五):简单…

怎么使用gpt4-在哪里使用gpt

gpt-4怎么用 目前&#xff0c;GPT-4尚未发布或公开释放。因此&#xff0c;我们目前无法使用GPT-4。GPT-4是由OpenAI公司开发的人工智能语言模型&#xff0c;其预计能够比先前的版本GPT-3更加强大和智能化&#xff0c;但我们需要等待OpenAI官方发布有关GPT-4的更多信息。 如果…