同态+决策树的推理
数据集:
Non-interactive Private Decision Tree Evaluation
该场景包括一个持有私有决策树模型的服务器和一个有兴趣使用服务器私有模型对其私有属性向量进行分类的客户端。计算的目标是获得分类,同时保护决策树和客户端输入的隐私。我们的方案只有一轮,可在数秒内评估一棵深度为 10 的完整树。
不经意程序可以计算决策树,但是程序大小与树大小成正比,效率低。
不过,由于目前的 SHE/FHE 方案开销较大,我们将高效的数据表示与不同的算法优化相结合,以保持较低的计算开销和通信成本。
BGV
bij和bji是0或者1.
移位操作:
[a, b]所以a到b之间整数的集合
c0, . . . , ck−1表示分类标签
决策节点(内部节点) 分类节点(叶节点)
函数thr,得到决策节点的阈值
每个决策节点分配一个属性索引
每个叶节点的标签
决策节点都是大于比较
b=0向左,b=1向右。
子节点可以保存这些信息,称为cmp。如果是右节点,储存比较bit,
左节点储存1-b
决策节点集合D(储存比较bit),叶节点集合L(储存分类标签)
分类函数fc=遍历函数tr
为了减少客户端通信成本,有一个第三方服务器,可以生成随机字符串r,然后把加密的r发给服务器,服务器在调整阈值,普通r发给客户端,然后客户端就可与把明文x+r明文发给服务器,就不用发密文了。
先把所有决策节点遍历一遍,得到b和1-b。
聚合决策节点
叶子结点的决策bit要么是1要么是0,每个叶节点计算并且求和
密文对每一位加密,按bit加密
n个属性值需要nμ个密文,一个属性就是xib
每个密文加密s个密文,也就是有s个slot。
分类标签按位表示,加密打包为一个密文。
多个属性一起加密
加密多个阈值与相同属性比较。
假设分类标签数为k,分类标签的bit长度为|k|。
这个是叶子结点计算结果:
【bv】每个槽都是bv∈{0,1},然后所有求和一下就是分类结果。
以上是对一个向量进行加密
多个属性向量情况:
服务器按bit加密阈值,并将该bit复制到所有的slot里面。
每个叶子结点都这样算,然后按分量求和,就是最后的分类标签了
假设有mi个决策阈值,则有
个密文
SheCmp,s个比较结果
通过旋转将单个属性值密文与多个阈值比较。
And门,乘法门,异或门,加法门。
电路深度:输入门到输出门的最长路径长度。
乘法深度:输入门到输出门之间最大乘法门数量长度。
对数深度,n个数相乘,需要logn个乘法深度。
m:决策节点数量
一个节点有两个子节点,所以有重复公共父节点,希望可以复用,只用一次。而不是使用多次。
u到v的有向路径,则称u<=v,这里的DAG有最大元素
定义函数h,可以连接两个DAG图G1,G2,并且返回一个图G3,这个图连接着G1和G2的最大值
乘法算法这么算:
依赖列表就是自己结点之前连接的节点。
level[]是树层级的指针,0层表示根节点
预计算:不需要加密,计算树每个节点的依赖列表
在线步骤:
乘法深度路径评估算法6:return路径上的乘积,v.cmp
两两相乘,一直分左右,然后乘
树的深度:d
Pdt-Int:helib
Pdt-Bin: tfhe
TFHE更快,但是摊销时间Helib更少,因为可以同时比较多个槽
???密文乘法深度会泄露决策节点数量