首页 > 其他分享 >Shuffle and Compaction

Shuffle and Compaction

时间:2024-10-14 16:33:38浏览次数:2  
标签:Shuffle mathsf Compaction 密文 shuffle Bob pi vec

Shuffle and Compaction

文章主题:总结并记录目前常用的安全洗牌协议(Secure Shuffle)与Secure Compaction协议,思想、实现、复杂度分析等。

Shuffle定义:

  • 给定输入\(\vec{v}\),洗牌协议输出一个\(\pi(\vec{v})\),其中\(\pi\)是一个随机的置乱。

compaction与shuffle很相似,也是给定输入\(\vec{v}\)以及\(\vec{t}\),根据\(\vec{t}\)来重新安排\(\vec{v}\)中数据条目的顺序。

  • 给定\(\vec{v}\)和\(\vec{t}\),其中\(\vec{t}\)是一个0-1向量。当\(\vec{t}[i]=1\)时,说明\(\vec{v}[i]\)被选中,0则是没有被选中。Compaction协议会将所有被选中的元素筛选出来。

可以说,compaction(指定一个顺序)对元素顺序安排的要求比shuffle(完全随机)更强一些,但比sort(数之间内在的逻辑顺序)更弱一些,即

\[ \mathsf{Shuffle}<\mathsf{Compaction}<\mathsf{Sort}, \]

所以,compaction和sort可以在shuffle的基础上进行构建。

和Sort类似,Compaction中也有稳定性的定义,即在进行Compaction或者Sort后,元素之间的相对顺序不变。
满足稳定性的Compaction与Sort被称为Stable Compaction,Stable Sort。

Stable定义:

  • Stable Compaction:被选中的元素之间的相对顺序不变。
  • Stable Sort:排序后,若两个元素相等,那么二者排序后的顺序和排序前二者的相对顺序保持一致。

TwoPartyShuffle and StableCompaction

source:secure merge with \(n\log\log n\)

\(\mathsf{TwoPartyShuffle}\):

  • 输入:Alice和Bob都持有向量\(v\)的秘密共享,分别记为\(\vec{v}^a\)和\(\vec{v}^b\)。
  • 输出:\(\pi(\vec{v})\)的秘密共享,其中\(\pi\)是一个随机置乱。

协议简述:

  • 思想:加法同态的重随机化配合local shuffle,可以让某一方对整个数据集进行shuffle。某一方shuffle后,另一方在其基础上再进行一次shuffle,即可得到两个人都无法知晓的shuffle结果。
  • 第一步:Alice将自己的秘密共享加密后发送给Bob。
  • 第二步:Bob将自己的秘密共享也进行加密,然后对两组密文进行同样的本地shuffle。
  • 第三步:为了避免Alice认出自己的密文,Bob对所有密文以及秘密共享进行重随机化,也就是在Alice密文上加上一个随机数,在自己的密文上减去一个随机数。
  • 第四步,Bob将两组密文都发送给Alice。Alice也同样对两组密文进行shuffle后,再进行重随机化,即在自己的密文上加上一个随机数的密文,在Bob的密文上减去一个随机的密文。最后将Bob的密文发还回去,这样就得到了结果。

协议思考:

  • Q1:为什么需要两对密钥?
    • A1:因为不论Alice或者Bob,都不应该能解密对方的密文,否则整个过程就失去了隐私性。
  • Q2:在半诚实条件下,有没有更简单的方法?
    • A2:没有。但在Secret-shared shuffle介绍了将shuffle规约为两次\(\mathsf{Permute + Share}\)的协议,利用Paillier实现。但其本质与这里的\(\mathsf{TwoPartyShuffle}\)是相同的。

复杂度分析:

  • Notation:当\(\mathsf{PKE}\)具有固定的密文扩张率(Ciphertext expansion)时,我们用\(S_c\)代表一个密文的长度。用\(n\)记为向量的长度。我们用\(\mathsf{Enc}\)和\(\mathsf{ReRand}\)来分别表示进行PKE加密和重随机化的计算代价。
  • 通信:第一步,第四步中Alice分别传送了自己的密文与Bob的密文,消耗\(2nS_c\)。第三步中,Bob传送二者的密文,消耗\(2nS_c\),总计消耗\(4nS_c\)。注意到,这里是线性的复杂度,这是其他的shuffle协议很难达到的渐进复杂度。
  • 计算:Alice和Bob都对自己的秘密共享进行了加密,以及重随机化所有密文,总计\(n \mathsf{Enc} + 2n \mathsf{ReRand}\)。观察到,\(\mathsf{TwoPartyShuffle}\)的计算复杂度也是线性的。
  • 轮数:常数轮,两轮。

总结:

  • 线性的渐进复杂度:无论是通信还是计算,\(\mathsf{TwoPartyShuffle}\)都是线性的。在理论上具有很好的结果。
  • 实际应用:\(\mathsf{TwoPartyShuffle}\)在实际应用中面临两个主要的问题,即在通信上,密文扩张率是一个较大的常数。其次,同态计算的复杂度较高。

Discussion:让lattice-based FHE取代Paillier

  • 好处:lattice-based FHE能够同时处理大批量密文,同时降低密文扩张率与同态计算的均摊开销。
  • FHE一般只支持rotation,如何由rotation实现密文的本地shuffle?
  • 当前的FHE实现中,支持的明文slots数量有限,但是shuffle处理的数据集体量可能很大。

Construct \(\mathsf{StableCompaction}\) from \(\mathsf{TwoPartyShuffle}\):

  • Solution idea:shuffle-then-reveal技巧。给定\(\vec{v}\)和\(\vec{t}\),运行\(\pi(\vec{v}||\vec{t})=\pi(\vec{v})||\pi(\vec{t})\leftarrow\mathsf{TwoPartyShuffle}(\vec{v}||\vec{t})\)。揭示\(\pi(\vec{t})\),注意到由于\(\pi(\vec{t})\)是shuffle后的结果,因此\(\pi(\vec{t})\)只会泄露有关\(\mathsf{sum}(\vec{t})\)的信息。揭示后,选择\(\pi(\vec{v})[\pi(\vec{t})==1]\)。注意到这样的方法不具备稳定性,\(\mathsf{StableCompaction}\)引入了稳定性技巧。
  • Construction \(\mathsf{StableCompaction}\):核心技巧是引入两个计数器\(c,d\),其中\(c\)从0开始计数,而\(d\)从\(\mathsf{sum}(\vec{t})\)开始。生成一个额外的向量\(\vec{y}\),遍历\(\vec{t}\)。如果\(\vec{t}[i]=1\),执行\(\vec{y}[i]=c,c=c+1\),否则执行\(\vec{y}[i]=d,d=d+1\)。这样shuffle后揭示\(\vec{y}\),只要按\(\vec{y}\)的递增顺序排列\(\vec{x}\),就能保证选中的条目都在最前面,且相对顺序不变,因此实现了稳定性。

复杂度分析:

  • \(\mathsf{StableCompaction}\)的复杂度是\(\mathsf{TwoPartyShuffle}\)加上计算\(\vec{y}\)的复杂度。原文没有给出具体的分析。如果真的一个一个遍历,那导致的通信轮数就是\(n\)轮,这是肯定不可接受的,但是现在我也不太知道怎么简单高效实现这个步骤。

Round-Efficient Shuffle

source:Round-efficient Oblivious Database Manipulation

\(\textsf{Shuffle via Permutation Matrices}\):

  • 思想:对于任意的洗牌\(\pi\),总存在一个0-1矩阵\(M_{\pi}\)使得\(\pi(\vec{v}) = M_{\pi}\vec{v}\)。这个矩阵称为置换矩阵。因此,无论多复杂的洗牌,总是可以将其转化为矩阵-向量乘法。接下来我们考虑两方的例子。
  • Alice随机生成一个\(\pi_1\),并转化为对应的置换矩阵\(M_{\pi_1}\),然后将置换矩阵共享给Bob。
  • Bob同样产生一个置换矩阵\(M_{\pi_2}\),对应\(\pi_2\),共享给Alice。
  • Alice与Bob共同运行乘法协议先计算\(\vec{u}=M_{\pi_1}\vec{v}\),在计算\(\vec{x}=M_{\pi_2}\vec{u}\)。

复杂度分析:

  • 通信:分享两个置换矩阵需要至少\(2n\)比特,考虑到0-1矩阵需要参与算数电路,需要假设字长为\(l\)比特,则这部分通信代价为\(2nl\)比特。接下来进行两次乘法,

标签:Shuffle,mathsf,Compaction,密文,shuffle,Bob,pi,vec
From: https://www.cnblogs.com/AFLuo/p/18464480

相关文章

  • Spark之RDD内核原理,MR的原理计算回顾,RDD的洗牌(shuffle)过程,RDD优化之避免shuffle过程
    学习:知识的初次邂逅复习:知识的温故知新练习:知识的实践应用目录一,MR的shuffle回顾1,Map阶段:2,Shuffle阶段:3,Reduce阶段:二,spark的shuffle介绍 1,两种洗牌的方式2,spark的计算是要尽量避免进入shuffle计算三,并行度1,资源并行度 2,数据并行度一,MR的shuffle回顾1,M......
  • RocksDB代码分析——Compaction的输入文件的选择
    这里主要分析LevelCompactionBuilder::PickCompaction是如何选择输入文件的。SetupInitialFiles();找一个需要compact到下层的SSTfile。只会在score>=1的level里找。score的计算见VersionStorageInfo::ComputeCompactionScore({%post_linkStorage/'RocksDB代码分析——Compa......
  • RocksDB代码分析——Compaction流程
    这里从DBImpl::MaybeScheduleFlushOrCompaction开始讲起。DBImpl::MaybeScheduleFlushOrCompaction可能会scheduleDBImpl::BGWorkFlush和DBImpl::BGWorkCompaction。这里主要看Compaction。Flush部分见{%post_linkStorage/'RocksDB代码分析——Flush流程'%}DBImpl::BGWorkCo......
  • Hadoop-MapReduce的 原理 | 块和片 | Shuffle 过程 | Combiner
    MapReduce的原理简单版本:AppMaster:整个Job任务的核心协调工具MapTask:主要用于Map任务的执行ReduceTask:主要用于Reduce任务的执行一个任务提交Job-->AppMaster(项目经理)-->根据切片的数量统计出需要多少个MapTask任务-->向ResourceManager(Yarn平台的老大)索要......
  • Hadoop(十八)MapReduce Shuffle机制
    MapReduce工作流程上面的流程是整个MapReduce最全工作流程,但是Shuffle过程只是从第7步开始到第16步结束,具体Shuffle过程详解,如下:MapTask收集map()方法输出的kv对,放到内存缓冲区中从内存缓冲区不断溢出本地磁盘文件,可能会溢出多个文件多个溢出文件会被合并成大的溢出文件在......
  • Spark-ShuffleWriter-BypassMergeSortShuffleWriter
    一、上下文《Spark-ShuffleWriter》中对ShuffleWriter的获取、分类和写入做了简单的分析,下面我们对其中的BypassMergeSortShuffleWriter做更详细的学习二、创建ShuffleMapOutputWriterShuffleMapOutputWritermapOutputWriter=shuffleExecutorComponents.createMapO......
  • doris实践——Compaction 策略
    1.基本概念Doris的Compaction 策略决定什么时候将哪些小文件合并成大文件。适当的调整Compaction的策略,可以极大地提升导入效率和查询效率。Doris当前提供了2种compaction 策略,通过表属性的 compaction_policy 参数指定。①size_basedcompaction 策略:默认策略,对大......
  • YOLOv10改进系列,YOLOv10替换主干网络为ShuffleNetV2
    原论文摘要目前,神经网络架构设计主要依赖于计算复杂度的间接指标,即浮点运算次数(FLOPs)。然而,直接指标(如速度)还取决于其他因素,如内存访问成本和平台特性。因此,本研究建议在目标平台上评估直接指标,而不仅仅考虑FLOPs。基于一系列受控实验,本研究提出了若干高效网络设计的实用......
  • yolov5更换主干网络shufflent
    目录1.网络结构解析1.1创建yolov5s_shufflent_v2_X0_5.yaml文件2.对common.py末尾进行添加 3.修改yolo.py1.网络结构解析1.可以先看看shufflenet_v2的网络结构importtorchfromtorchimportnnfromtorchvisionimportmodelsfromtorchinfoimportsummaryc......
  • YOLOv10全网最新创新点改进系列:YOLOv10改进ShuffleNetV2,手把手教学、保姆级实操、必须
    YOLOv10全网最新创新点改进系列:YOLOv10改进ShuffleNetV2,手把手教学、保姆级实操、必须有效涨点!!!所有改进代码均经过实验测试跑通!截止发稿时YOLOv10已改进40+!自己排列组合2-4种后,考虑位置不同后可排列组合上千万种!改进不重样!!专注AI学术,关注B站up主:Ai学术叫叫兽er!购买相关资......