MPC系列-混淆电路

混淆电路:混淆电路是一种密码学协议,完成参与方能在互相不知晓对方数据的情况下计算某一能 被逻辑电路表示的函数。通过对电路进行加密来掩盖电路的输入和电路的结构,以此来实现对各个参与者的隐私信息的保密,再通过电路计算来实现安全多方计算的目标函数的计算。

混淆电路的发展历程:

1.姚-百万富翁问题

【alice和bob各有数据x和y,比较大小。1.alice把电路加密混淆,然后将混淆的table给bob。2.双方用不经意传输使得bob可以通过自己的输入选择混淆的table。3.最后bob可以通过混淆密钥计算出混淆电路标签,并且解密得到x,y。

混淆电路=OT协议+逻辑电路

2.混淆电路构造

【混淆电路具体构造:

逻辑电路:     以与门为例

            

随机生成 6 个密钥,分别表示𝑤1,𝑤2,𝑤3这三条线为0和1时的两种情况。

接着该门利用对称加密算法En()生成4个密文表示用𝑎, 𝑏作为加密秘钥,使用加密算法En()来加密𝑐。

打乱顺序,在电路门储存这四个乱序的值,记为𝑐1,𝑐2,𝑐3,𝑐4【混淆电路的混淆就是这样来的】。

由于对电路求值的一方不知道哪个才是真值.,所以使用对分别对进行解密,只有能够被成功解密得到,即为该门的输出值。

3.如何对混淆电路做优化(核心话题)(optimizing garbled circuits)

经分析:混淆电路带来的最大问题是通信而不在于如何计算.

一个混淆电路会使电路C的大小至少扩大到安全参数倍的大小,就会使通性大大增加,我们的核心就是要降低通信。

上图是学者们努力的成果,从姚提出混淆电路的5倍的安全参数到现在平均的一倍的安全参数。

先从姚1986年发的那篇论文谈起:即每一个门所需要的多少密文。一般来讲一个密文的长度就是一个安全参数长度。

这样一看好像一个门只需要4个安全参数就可以(4个密钥即4个参数),但实际是不可以的

               如果我们就这样把我的混淆表放着然后拿密钥去解锁四个中的某一个,有一个核心问题就是我们能解哪个盒子,就立刻泄露了这个盒子究竟代表了什么。即位置泄露信息。那么怎么办呢?

               首先需要把4个盒子打乱(打乱会遇到另一个问题就是我们所解开的明文出于隐私保护是不知道什么含义的,所以我门需要判断它是否是正确的?或者就是我需要解开哪一个作为为后面的电路的钥匙)最简单的方法就是在所有正确的明文前加128位的0.如果解密出来的前面有128个0,就知道我解密对了。这就是看似需要4个安全参数,其实需要8个安全参数。

BMW三人在90年发表的论文:可将多出来的一倍安全参数扔掉

         

具体的做法:给每一个导线上的标签随机标一个颜色(如上图红色或蓝色,颜色和0,1是随机的不是对立的)。然后将颜色和真假值做个对应(颜色和0,1是随机的不是对立的,所以不会有信息进行泄露)。根据输入的颜色我们就可以定位到要打开哪一个,且解密出来的明文也与之对应颜色。所以我们可以就用一个比特把这个过程进行下去。

那么第一个优化就出现了:安全参数从8下降到了4

NPS在99年的论文:将混淆表减少

BMW的所有的标号都随机选取(表1):思考:这样的方式会不会有点浪费?

         我们为什么不使得一个东西以某种方式是确定的方式呢?这里我们强行使混淆表的第一行规定为0(表二),那么每个门我们只需要3个密文就可以了(表3),协议还是和之前一样的运行,还是用钥匙去一个一个的试盒子,只不过对每一个门我们都对于他的第一个盒子默认为0。

kol在08年的论文:Free XOR(故名思意:这个异或门不在需要任何密钥的代价)

Yao的混淆表的定义:为每一条线赋值俩个随机串(表2),思考:为什么我们的所有的要是不同的?如果我们把所有的都变成一样会怎么样?(表三)那么神奇的事情就出现了。每条线就只需要一个随机值,另一个就是随机值再异或上。假设A,B,C的真值都为0,然后我们来看一下A,B的异或,如果A和B是假的(表4),那C的也是假的。异或一个那C就为真(表五)。异或俩个那么c就是假的(表6)。这里我们可以看到对于异或门把俩个输入进行异或就可以得到输出C,那么异或门就不再需要代价。故只需要关心and门。

Free XOR:异或等价于模2加,是一个长为n的向量,每一个元素都是0或1(Z2)------现在我们来得到一个广义的Free Xor,也就是将每个元素的取值推广到Zm。

现在我们将Z2推广到Zm,那么在Zm上的加法也是不需要代价的呢?

      证明:

                 可以看出与Z2是一样的。

现在我们再来看一下映射门:

现在我们有了俩套工具:无代价的加法与m代价的一元映射。如何用这俩个来组合成乘法?

从二元上来看,乘法是与门与或门来完成的,大概需要1200个cost。

我们先将模数选到Z2的32次方,算乘法最直接的方法就是将乘法的真值表写出来,但是这将是天文数字,2的64次方的一个大小。这是不可接受的。现在我们来看一下大佬门的智慧:不要2的32.而是使用一个这样的环来取代。

这个环就是2到29之间素数的乘,其时这就是中国剩余定理(已知n的素因子,就能利用中国剩余定理求解整个方程,如果n的素因子可分解为n=p1*p2*..*pt,那方程组x mod pi=ai,ai唯一)。现在我们就可以用中国剩余定理把一个大的整数分解为很多小的.

这样我们就可以用加法进行操作了。

挑战:好像运用中国剩余定理后,计算就会变得简单,但把这些值转化为中国剩余定理是不需要花费的吗?

不是很简单的问题:将二进制转化为CRT,使用CRT进行OT协议

有待改进的地方:比较俩个CRT编码的值(我们好像没有在中国剩余定理中说过比较俩个值是容易的)

比较CRT的值:举一个简单的例子。我们可以看CRT在环Z2-3-5-7里的表示,我们可以看到似乎毫无规律,我们无法从左边的数字来比较大小(表一)。解决办法就是使用primoral mixed Radix(以计设为基底的一个混合进制)(表二),采用一种前缀编码改成表二中的对比(该转换比较复杂还没有看),我们可以看到他是可以做比较的。(41)

上一篇主要就是将布尔电路从Z2推广到Zm,然后使用中国剩余定理。

 

 

 

 

  • 16
    点赞
  • 59
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
carnd-mpc-project-master是一个自动驾驶汽车路径追踪控制器的项目。 该项目使用了模型预测控制(MPC)的方法来使自动驾驶汽车跟踪给定的路径。首先,通过收集车辆的传感器数据,如位置、速度和方向等,并结合车辆模型进行状态估计。接下来,根据给定的车辆模型和路径信息,使用MPC算法预测车辆未来的运动轨迹。MPC算法考虑了车辆的动力学限制以及路径跟踪误差,以寻找最佳的控制输入,例如转向角和加速度,来实现车辆的路径追踪。 在carnd-mpc-project-master中,主要包含了以下几个部分:模型、约束、误差目标以及目标函数。模型定义了车辆的动力学模型,通过车辆的状态与控制输入之间的关系来预测车辆的下一步行动。约束考虑了车辆的实际物理限制,如最大转向角、最大加速度等,以保证控制输入的可行性。误差目标是指车辆与目标路径之间的距离,目标函数通过考虑误差目标和约束,来寻找最佳控制输入,使得车辆能够最优地追踪给定的路径。 除了主要的控制器实现外,还提供了一些辅助功能,如路径生成、状态估计和传感器数据处理等。这些功能一起协同工作,实现了车辆的自动路径追踪。 Carnd-mpc-project-master通过实现高效的路径追踪控制器,可以使自动驾驶汽车更加安全、精确地跟踪所需的路径。该项目不仅提供了路径追踪的基本原理和算法,还提供了一个实际运行的系统,可以应用于真实道路环境中的自动驾驶汽车。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值