通用协议(一)

article/2025/11/11 16:08:41

协议

协议:
协议的本质就是执行一个任务,在密码这个领域有时也称一个协议就是为了计算一个函数,即为求一个函数值,但是这任务或者说求函数值,往往不是有一方来单独计算的,而是由多个参与方合作完成的任务,或者合作计算的值。

举个例子,TCP|IP 的握手协议其实目的就是完成一个认证的任务,由两方来联和执行。又比如,在密码学中的一个经典问题:百万富翁问题;多个富翁聊天,想要知道到底谁最有钱,但是他们又都不愿意泄露自己有多少钱,所以需要一方法,既能比较出哪个富翁最有钱,并且不泄露每个人自己的私有财产。(姚期智解决了这个问题,并且由于他在量子计算机理论和密码学上的贡献,他获得了图领奖)

密码学中的协议

现代密码学中一个重要问题就是,如何设计一个安全的协议来计算和完成预定的任务,特别是最好能够探索到一种通用的方法学,设计能够实现通用任务的协议。密码学协议是密码学中一个独立的组成部分,它不同于使用那些使用单向函数的具体的加密解密方案,它本质上就是联合各方在符合预期的条件下,完成预定的任务。也可以成为就是安全多方计算(Multi-party computation)或者安全函数计算(SFE)。

密码学中的通用协议

一个通用的多方(m方)参与的密码学问题主题一般包括以下的三部分:
1.m个输入:即为各个参与方的本地输入。
2.m个输出:即为经过协商后的各方输出。
3.一个特定的随机过程:描述的是计算过程本身。

如果以上的m个参与方互相信任,那么这个问题就非常好解决,即各个参与方将自己的数据发送到信任的参与方身上,然后由受信任的参与方来计算结果,最后将得到的数据发送给其他参与方即可,哪怕大家信任的是外部的参与方。这里存在一个关键的密码学问题是这个可信的参与方在多大程度上能够被互相不信任的参与方模拟。

如下图所示:在多大程度上真实模型能够模拟理想模型
一个例子
但是在现实中,存在各种各样的模型。这些模型依赖于不同的假设,不同的信道设置,以及不同的敌手行为,还有不同的可信方的设计,所以接下来将在不同的情况下,讨论这种模拟是否成立。

基本定义与一些模型

模拟范式:一个协议是安全的,当一个可行的敌手在攻击这个协议后所能获得的任意内容均可以在一个理想的情况下获得。在零知识中,任何验证者可以从与证明者交互后获得的内容,都可以通过断言本身获得。在安全多方计算的场景下,我们主要考虑和比较敌手的影响在真实执行过程中和理想的有可信第三方帮助的情况下执行的影响。

如果敌手能够在真实设置中获得的信息也能够在理想的环境下获得,那么这个协议真实的设置就能模拟一个理想的设置,即为模拟一个可信方。并且是绝对安全的。这意味着这些属性在理想情况下满足也能通过一个安全的协议在真实的情况下模拟执行。

上文中的安全往往意味着,各个参与方的私有数据得到保护,并且诚实方收到的数据是安全的。上文的定义可以应用在各个方面。

一些安全模型中的参数

Set-up assumptions:在算法的初始化阶段,没有任何的假设,除非用户的特殊说明。但是和我们平时所用的方案类似,在set up 中,一些公共的参数往往是已知的,例如椭圆曲线中的参数,和其他算法中的参数设置。

The communication channels:通信信道的设计主要关注的是通信信道的隐私性和可靠性(privacy & reliablity)。其中一个标准的假设是,敌手可以监听到通信内容(即是是在两个可信的通信方之间);也就是说信道并不保证隐私性。同时,如果需要假设用户无法获得用户之间可以获得的诚实方之间信息,这个就称之为私有信道(private-channel model).
对于标准假设的信道来说,敌手不能获取,修改,复制或者放出信息在通信信道上,其实就是说此处的敌手只能进行监听,即半诚实行为。当然广播信道也存在上述的假设,至少在一定程度上标准的假设可以保证信道上的消息的真实性。

Computational limitations:一般情况下我们考虑PPT敌手(概率多项式时间敌手),然而在私有信道上也允许考虑无限计算能力敌手。个人觉得这是一种折中,因为在私有信道上,敌手不能获得其他额外的信息,只能通过进一步扩大他的计算能力在扩张其能力。

Restricted adversarial behavior:在文献中被提及的最一般的敌手就是那些能腐败参与方的敌手,并且能在协议执行到当下,并进一步决定腐败哪一个参与者基于潜在的信息。换句话说,就是这类敌手,能够腐败其中的参与方,从而达到破坏协议的目的。

non-adptive:  非适应性的敌手,即在协议开始前,不诚实方的集合是固定的(当然,诚实方是并不知道的)。
adptive: 适应性的敌手,即在协议开始前,不诚实方的集合是不固定的,随着协议的执行会有一些被腐败的参与方参与进来。
但是一旦被腐败则不能再变回好的参与方。
passive: 消极的敌手也称为以下的一些名字,semi-honest, passive,honest-but-curious.
active: 积极的敌手也称为malicious.

Restricted notions of security: 有一些协议是可以容忍的不公平的执行过程的,但是可以被不诚实的参与方检测并终止;并且在终止之后,不诚实的参与方不能比不终止获得的信息更多。这个协议一种可能的结果是,一些诚实的参与方没有获得自己想要的结果,但是宁愿终止这个过程,这种安全被叫做(allows abort)允许中断的,也称之为(allows premature suspension of the execution)。

Upper bounds on the number of dishonest parties:在一些安全多方计算模型中,当且仅当大多数参与方诚实才能保证安全,有的协议也称之为三分之二。

Mobile adversary:移动敌手,极为这个敌手是可移动的,他可能会抓住一个参与方腐败他,然后进一步,可能会释放这个敌手,这就是一个移动的敌手。

一个例子:在一个多方协议中存在大多数的诚实方

现在假设存在一个MPC协议,及有m个输入,以及有m个输出,然后计算一个既定的过程;

我们考虑的第一个问题是这样的:在一个多方的协议中,每一方在输入之前都是有可能修改自己的输入的,因为这个输入其实是本地的内容,但是这并不被认为是影响安全,这是不可避免的问题。在MPC中的有一个潜在的原语,即多方计算中的情况在真实模型下发生的也能发生在理想模型中。在定义一个安全多方协议的时候,我们需要准确的指出什么是不可避免的情况,在理想的情况下。

一个理想的模型各方执行如下:

  1. 第一步,不诚实的少数可以和其他诚实方一样,将输入发送给可信方。
  2. 第二步,可信方收到来自各方的数据后,计算确定的输出,然后将输出发送到相应的地方。
  3. 第三步, 当接受到输出后,诚实方将这个接受到的值作为输出,不诚实的参与方会根据当亲自己的输入和接受的输出选择自己的输出值。

这种少数的参与方的行为是不可避免的在任何协议的执行过程中(即使是在有可信方存在情况下)。这就是为什么要如此定义理想模型的原因。现在,一个安全多方计算协议要去模拟这样一个理想的过程。就是说,任何可能敌手的影响在真实环境中,都可以被一个敌手在理想的环境下模拟。

所有这里有一个重要的问题,为什么理想协议要这样设计?

我尝试总计下,对于MPC,SMPC,SFE来说,本质上其实都是在执行一个任务,或者需要联和计算一个函数值。对于理想的协议来说,最重要的一定安全,这个是毋庸置疑的,肯定的。好的,我们就假定有一个可信的第三方,直接引入这个比较强的安全方,任何敌手不能用任何方法攻破这个可信方,但是我们依然要深入考虑还有没有什么问题,其实任务或者函数已经安全了,唯一的问题就是这些通信方和可信方的通信问题了,经过上文的描述,我们已经发现了,唯一就是这个不可避免的交互方式,所以一个理想的协议(模型)就这样设计了。

还有一个更加本质的问题,为什么要这样做?

答案应该在[GMW86] 里边,等我看了,我在填补这个答案。

以上内容参考《Foundations.of.Cryptography.Volume.2.Basic.Applications(Oded.Goldreich)》


http://chatgpt.dhexx.cn/article/k6asIUpE.shtml

相关文章

MQTT协议

目录 MQTT协议的通信模型 MQTT消息格式* 1 固定报头 2 可变报头 3 负载 MQTT控制报文 1 CONNECT-连接服务器* 2 CONNACK-确认连接请求 3 PUBLISH-发布消息* 4 PUBACK-发布确认 5 PUBREC-发布收到 6 PUBREL-发布释放 7 PUBCOMP-发布完成 8 SUBSCRIBE-订阅主题* …

【协议_简介】

协议简介常见协议UDP协议IP协议以太网帧协议ARP协议封装分用网络通信的过程ARP协议:通过IP地址查找MAC地址 协议简介 协议,网络协议的简称,网络协议是通信计算机双方必须共同遵从的一组约定。如怎么样建立连接、怎么样互相识别等。只有遵守这…

netty实现多协议,多编解码器

实现多协议,多编解码器详解 前言netty中handler的执行顺序和条件(重要)执行顺序入栈handler介绍出栈handler介绍入栈handler处理器顺序出栈handler处理器顺序 执行条件 编码演示客户端服务端 编解码器异常继续传递消息(扩展&#…

什么是802.1q协议

欢迎来到东用知识小课堂! 1.VLAN VLAN全称:Virtual Local Area Network(虚拟局域网),是将一个物理的LAN在逻辑上划分成多个广播域的通信技术。在数据帧的SMAC字段后添加VLAN标签字段,基于接口、IP、MAC或协…

qi无线充电协议_无线充电Qi专利池正式上线!

展位合作,请联系:infochongdiantou.com 此前,充电头网报道了Philips飞利浦将征收无线充专利费的事件,引发行业关于无线充专利费收取的广泛讨论。1月14日,关于大家关心的无线充专利授权,业界有了最新进展&am…

MQTT - 消息队列遥测传输协议

MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议),是一种基于发布/订阅(publish/subscribe)模式的"轻量级"通讯协议,该协议构建于TCP/IP协议上,由IBM在19…

无线充qi协议c语言详解,无线充电Qi协议正向通信FSK的解调设计

白光磊 池卿华 王兆俊 江昊 史佳雯 周天 摘 要: 无线充电Qi协议提出发射器和接收器通过频率调制(FSK)方式进行正向通信,进而建立完整的通信状态控制。接收器可采用测宽法进行频率解调,然而由于电磁耦合变化、负载变化、载波占空比变化、测量量化等引起的误差,该方法无法满…

无线充qi协议c语言详解,QI无线充通信协议数据包格式解析

QI通信数据格式编码: 协议规定时钟信号的频率应该是Fclk = 2(4%)KHZ,所以每一位的传输时间约500us,如图所示 数据 0:500us的高电平,或者500us的低电平 数据 1:250us高电平+250us低电平,或者250us低电平+250us高电平 电源接收端(移动设备端)采用 11 位异步串行格式传输数…

无线充电协议Qi 转 UART

前言 最近有个网友联系我,咨询做无线充电的方案; 于是开始评估一下这个方案: 1:无线充电分为供电端无线发射(通过MOS开关斩波,使线圈的电流变化,这样线圈对外才会很强的电磁辐射)受…

无线充QI协议之TX与RX通讯方式篇

谈到无线充通讯,首先得了解下无线充电的工作原理,在描述中,提供功率的一端称为发射端,接收功率的一端称为接收端; 发射端直流电经过全桥转换为交流电,交流电通过线圈产生磁场(电生磁&#xff0…

无线充电原理与QI协议详解

一 、无线充电基本原理 无线充电的基本原理就是我们平时常用的开关电源原理,区别在于没有磁介质耦合,那么我们需要利用磁共振的方式提高耦合效率,具体方法是在发送端和接收端线圈串并联电容,是发送线圈处理谐振状态,接…

Android 项目必备(二十六)-->获取手机中所有 APP

效果图 代码 添加依赖 implementation com.github.CymChad:BaseRecyclerViewAdapterHelper:2.9.30 implementation androidx.recyclerview:recyclerview:1.1.0AppInfo.java import android.graphics.drawable.Drawable;/*** created on 2020/8/3 20:22** author Scarf Gong*…

基于uni-app多平台管理系统模板uniapp-admin

uniapp-admin 2.0.0 重磅发布! 更加完善的开发指南主题定制:支持颜色主题和深色模式,页面更加美观国际化/多语言:应用内容和pages.json国际化,支持N种语言引入iconfont:海量字体图标支持引入rap2接口管理平…

AppAnnie——AppStore统计工具

前言 随着iOS开发的流行,针对iOS开发涉及的方方面面,早有一些公司提供了专门的解决方案或工具。这些解决方案或工具包括:用户行为统计工具(友盟,Flurry,Google Analytics等), App Store销售分析工具&#x…

Android 启动 应用程序详情AppInfo(AppDetail) -源码分析

在Launcher (桌面)上,长按应用图标然后点击 右上角的 应用详情 按钮, 将会进入 该 应用的详情 界面。 这个过程将会涉及 Client (Launcher App) -> App API(LauncherApps ) -> Framework API(LauncherAppsService) 下面将以…

AppInfoPro 获取手机应用信息

AppInfoKtx Github Android - 获取手机安装的应用信息(用户应用、系统应用)、手机信息、屏幕信息,并且支持扫描本地符合指定要求(后缀)的应用,并且获取该apk信息,支持导出应用信息(…

关于Vista的AppInfo服务被禁的问题

昨天参考了这个文章对vista服务进行了大张旗鼓的阉割,冒险地把大部分服务都给卡擦了(不想转贴了,这个文章本身也是转贴的) http://blog.tom.com/pslwap/article/1411.html 然后就出现了郁闷的事情: 重新启动后任何需要提升权限来操作的程序都无法启动,提示"无法启动服务…

Android8.1根据app名字调用显示app的属性页(App info)

https://actionwind.wordpress.com/2022/04/14/android8-1%e6%a0%b9%e6%8d%aeapp%e5%90%8d%e5%ad%97%e8%b0%83%e7%94%a8%e6%98%be%e7%a4%baapp%e7%9a%84%e5%b1%9e%e6%80%a7%e9%a1%b5%ef%bc%88app-info%ef%bc%89/ 如果要让手机显示出app的属性页: 代码如下&#xff1…

vue项目打包部署注意点 + 宝塔面板几步部署项目

1.vue项目打包 1.1 终端运行打包命令 在编辑器的终端运行vue项目打包命令 yarn run build打包成功如下: 这时我们可以看到项目目录多出来一个dist文件夹,记住它,后面部署就靠它了。 1.2 修改配置 就我个人部署经历(宝塔面板快速部署)来…

vue项目打包部署到tomcat服务器

总结: 修改vue项目相关配置,cmd进入到vue项目文件夹中,执行npm run bulid命令,将生成的dist文件夹下的内容,存放到Tomcat中的webapps新建文件夹下,运行Tomcat服务器,通过 IP地址:端口/新建文件…