基于向量同态加密的隐私保护K‑NN分类方法与流程

文档序号:12493440阅读:654来源:国知局

本发明涉及K-NN算法在隐私保护下的向量分类方法,具体的讲是基于向量同态加密的隐私保护K-NN分类方法。



背景技术:

K临近算法(K-NN)广泛应用于模式识别中,在数据分类中也有良好的表现。在大数据时代,复杂的计算往往外包给第三方云。然而在这个过程中,外包的数据可能包含敏用户的一些敏感的数据,直接将用户的信息外包给第三方云很可能导致用户的一些隐私信息泄露出去,给用户造成损失。一种直接的解决方式就是将数据加密之后再上传到云端,但是这也给K-NN算法的效率带来一些新的挑战。同态加密技术可以在密文下进行操作,而解密之后的结果是正确的。于是可以将数据通过同态加密技术加密之后再在密文下运行K-NN方法。传统的加密方案主要针对整数进行加密,对于向量的整体操作效率不高,出于效率方面的考虑可以使用向量的同态加密技术来加密数据,这样可以大大提高运行效率。

K-NN方法是以特征向量x为中心的一个邻域里,固定落入邻域中的样本个数K(n)。通常采用如下方式实现:在一个合适的距离尺度下(常用的欧氏(Euclidean)距离),逐渐地增大包围x点的区域的体积,直到有K(n)个样本点落入该区域中。在这过程中需要进行概率密度估计,其密度估计形式为:

其中,n为样本个数,V(n)为该区域的体积。如果x点周围的样本点个数较少,那么相应的区域就会变得很大,即V(n)的值很大,的值变得很小。相反,如果x点周围的样本点个数较多,那么相应的区域就会变得较小,即V(n)的值较小,的值变得很大。并且K(n)也会随n的增加而增加。由于K近邻法则进行概率估计密度时,存在两个缺点,一是估计密度的积分必须扩散到无穷大,二是计算上存在沉重的负担。因此,一些研究学者直接用K-NN算法进行分类,分类的原则是:在一定的距离尺度下,考虑待识别样本x周围的K(n)个最近邻样本,并将x归入到K(n)个最近邻中某一类样本最多的那个类别中去。算法步骤:

(1)对一个待分类的数据对象y,计算它与训练集R中的每个数据对象的距离;

(2)找出待分数据对象y与训练集R中的数据对象距离最近的k个;

(3)依次统计出这k个数据对象的所属类别,找出包含最多个数的类;

(4)将待分数据y划分到此类中;

(5)重复以上步骤,直到所有待分数据分类结束;

K-NN算法不仅可以用于分类,还可以用于回归。通过找出一个样本的K个最近邻居,将这些邻居的属性的平均值赋给该样本,就可以得到该样本的属性。



技术实现要素:

本发明提供的基于向量同态加密的隐私保护K-NN分类方法,可在对用户隐私数据保护的情况下,通过K-NN算法对用户的查询向量进行高效、准确的分类。

本发明基于向量同态加密的隐私保护K-NN分类方法,步骤包括:

A.接收查询向量组(x1,x2,…xn)和标准向量组(p1,p2,…pm),其中标准向量组(p1,p2,…pm)对应有标准分类标签(t1,t2,…tm);

B.由于有公式Sc=ωx+e,S为密钥,c为密文,ω为大整数,x为查询向量,e为误差项,且e的每一个元素的值不大于同时使|S|<<ω。那么通过任意的矩阵则可以得到:(GS)c=ωGx+Ge,可以看成是Gx在秘钥GS下被加密成密文c。因此通过查询向量组(x1,x2,…xn)得到查询矩阵G,查询矩阵n表示查询矩阵G的行数,为查询向量组的向量个数,w表示查询矩阵G的列数,为每个查询向量的维度,标准向量组(p1,p2,…pm)中的各标准向量使用密钥S通过向量同态加密生成密钥转换矩阵M以及与标准向量组(p1,p2,…pm)对应的密文组(c1,c2,…cm),通过查询矩阵G和密钥S得到新密钥GS;

C.对所述的新密钥GS进行密钥转换:设置转换密钥S',其中S'=[I,T],且其中I为单位矩阵,T为随机矩阵,n为查询向量的维度,m为转换密文组的维度;然后将新密钥GS转换为转换密钥S',得到此时对应的密钥转换矩阵M,通过所述此时的密钥转换矩阵M得到密文组(c1,c2,…cm)对应的转换密文组(c1',c2',…cm'),其中其中h为每个转换密文ci'的维度,w为每个查询向量的维度,λ满足|ci'|<2λ,i≤m;

D.使用所述的转换密钥S'对所述的转换密文组(c1',c2',…cm')解密,得到解密向量组(D1,D2,…Dm),其中每个解密向量Di的分量为(di1,di2,…din),i≤m;

E.为查询向量组(x1,x2,…xn)中的各查询向量xy附上分类标签,y≤n:比较解密向量组(D1,D2,…Dm)中各解密向量的第y个分量(d1y,d2y,…dmy)的大小,找到其中最小的K个分量;再将所述K个分量对应的分类标签中出现次数最多的分类标签赋值给向量xy,其中分量(d1y,d2y,…dmy)对应的分类标签分别为标准分类标签(t1,t2,…tm),,K值由K-NN算法本身决定。

进一步的,步骤C中所述的密钥转换,可以通过向量同态加密的方法实现,其中包括:

C1、先将密文组(c1,c2,…cm)中的各密文和新密钥GS转换成对应的比特表示的比特密文组(c1*,c2*,…cm*)和比特密钥(GS)*

C2、设置转换密钥S',其中S'=[I,T],且其中I为单位矩阵,T为随机矩阵,n为查询向量的维度,m为转换密文组的维度;然后通过得到此时对应的密钥转换矩阵M,其中A为随机矩阵,E为随机噪声矩阵;

C3、通过所述此时对应的密钥转换矩阵M以及c′=Μc*,得到所述的转换密文组(c1',c2',…cm')。

将密文组c和新密钥GS转换为比特表示的过程可以通过向量同态加密实现。之所以要把它们先转换成对应的比特表示c*和S*是因为|c*|=max{|ci|}=1,这样可以防止误差项增长过大,从而保证解密的正确性。其转换过程为:

选择λ且满足|c|<2λ,c的每一个分量ci的比特表示bi=[bi(λ-1),...,bi1,bi0]Τ,bik∈{-1,0,1},则:

通过初始秘钥S来构造S*:其通式为,将密钥S的各分量Sij替换成Bij=[2λ-1Sij,...,2Sij,Sij],其中:i为密钥S分量的行数,j为密钥S分量的列数,且满足S*c*=Sc。将所有Sij替换为Bij后,即将密钥S转换为了S*。按照上述通式将新密钥GS转换比特密钥(GS)*

上述步骤都可以通过向量同态加密的方法实现,本发明中不再做详述。向量同态加密的方法是由Zhou和Wornell提出,该方法在对加密数据进行运算时可以保证运算函数的私密性。该方案支持向量的加法、线性变换和加权內积的同态运算。本发明在对该放法改进的基础之上,使得本发明的方法可以在对第三方云保密的情况下,实现高效准确的分类。

由于本发明是用于K-NN算法中的判断方法,并且是通过欧式距离来表征两个向量之间的相似程度的,查询向量x和标准向量p之间的欧式距离为:||x-p||2=xTx+pTp-2xTp,因此可以在步骤B中,将标准向量组(p1,p2,…pm)中的各标准向量转换为pi'=(piTpi,1,-2piT)T,i≤m,将转换后的标准向量组(p1',p2',…pm')使用密钥S通过向量同态加密生成对应的密文组(c1,c2,…cm)。

同样的,步骤B中还可以将查询向量组(x1,x2,…xn)中的各查询向量转换为xj'=(1,xjTxj,xjT)T,j≤n,并设置查询矩阵这样便使得||x-p||2=p'Tx',由此计算出各查询向量xj和标准向量pi之间的欧式距离,而此时标准向量的提供者对查询向量明文的内容是不知的,达到了保护数据隐私的目的。

在实际的实施过程中,数据都是外包给第三方云端来进行计算的。而在这个过程中,第三方云端通常都是不可信的,因此在这个过程中对不可信的云端保证数据的隐私是必要的。

实际的实施过程如下:

1)标准向量提供者使用本发明的方法对标准向量进行加密并将加密的密钥S传递给查询向量拥有者。

2)标准向量提供者将加密后标准向量组对应的密文组c上传到云端。

3)查询向量拥有者使用得到的密钥S,然后选定转换密钥S',对查询向量进行密钥转换,得到密钥转换矩阵M,然后将对应的转换矩阵M发送到云端。

4)云端接收到来自标准向量提供者的密文组和来自查询向量拥有者的密钥转换矩阵M后,计算新的密文组c'。

5)云端计算新的密文组c'之后,将新的密文组c'返回给查询向量拥有者,查询向量拥有者使用本发明的所述步骤得到每个查询向量的分类标签。

在整个过程中,数据对于云端来说都是保密的,因此达到了隐私保护的目的。

本发明基于向量同态加密的隐私保护K-NN分类方法,能够良好的对用户隐私数据保护,并且在隐私数据受到保护的情况下,通过K-NN算法对用户的查询向量进行高效、准确的分类,提高了对向量类型判断的效率,扩大了向量类型判断的应用范围。

以下结合实施例的具体实施方式,对本发明的上述内容再作进一步的详细说明。但不应将此理解为本发明上述主题的范围仅限于以下的实例。在不脱离本发明上述技术思想情况下,根据本领域普通技术知识和惯用手段做出的各种替换或变更,均应包括在本发明的范围内。

附图说明

图1为本发明基于向量同态加密的隐私保护K-NN分类方法的流程图。

具体实施方式

如图1所示本发明基于向量同态加密的隐私保护K-NN分类方法,包括步骤:

A.接收查询向量组(x1,x2,…xn)和标准向量组(p1,p2,…pm),其中标准向量组(p1,p2,…pm)对应有标准分类标签(t1,t2,…tm);

B.由于有公式Sc=ωx+e,S为密钥,c为密文,ω为大整数,x为查询向量,e为误 差项,且e的每一个元素的值不大于同时|S|<<ω。那么通过任意的矩阵(n表示查询矩阵G的行数,为查询向量组的向量个数,w表示查询矩阵G的列数,为每个查询向量的维度),则可以得到:(GS)c=ωGx+Ge,可以看成是Gx在秘钥GS下被加密成密文c。因此通过查询向量组(x1,x2,…xn)来得到查询矩阵G。在K-NN算法中通过欧式距离来表征两个向量之间的相似程度,用欧式距离表示查询向量x和标准向量p之间的距离为:||x-p||2=xTx+pTp-2xTp,因此将标准向量组(p1,p2,…pm)中的各标准向量转换为pi'=(piTpi,1,-2piT)T,i≤m,转换后的标准向量组(p1',p2',…pm')使用密钥S通过向量同态加密生成密钥转换矩阵M以及与标准向量组(p1,p2,…pm)对应的密文组(c1,c2,…cm)。将查询向量组(x1,x2,…xn)中的各查询向量转换为xj'=(1,xjTxj,xjT)T,j≤n,并设置查询矩阵 这样便使得||x-p||2=p'Tx',通过查询矩阵G和密钥S得到新密钥GS;

所述的向量同态加密的方法是由Zhou和Wornell提出,该方法在对加密数据进行运算时可以保证运算函数的私密性。该方案支持向量的加法、线性变换和加权內积的同态运算。

C.对所述的新密钥GS进行密钥转换:设置转换密钥S',其中S'=[I,T],且其中I为单位矩阵,T为随机矩阵,n为查询向量的维度,m为转换密文组的维度;然后将新密钥GS转换为转换密钥S',得到此时对应的密钥转换矩阵M,通过所述此时的密钥转换矩阵M得到密文组(c1,c2,…cm)对应的转换密文组(c1',c2',…cm'),其中其中h为每个转换密文ci'的维度,w为每个查询向量的维度,λ满足|ci'|<2λ,i≤m。具体为:

C1、先将密文组(c1,c2,…cm)中的各密文和新密钥GS转换成对应的比特表示的比特密文组(c1*,c2*,…cm*)和比特密钥(GS)*

C2、设置转换密钥S',其中S'=[I,T],且其中I为单位矩阵,T为随机矩阵,n为查询向量的维度,m为转换密文组的维度;然后通过得到此时对应的密钥转换矩阵M,其中A为随机矩阵,E为随机噪声矩阵;

C3、通过所述此时对应的密钥转换矩阵M以及c′=Μc*,得到所述的转换密文组(c1',c2',…cm')。

本实施例中的所有随机向量或者矩阵均服从高斯分布。由于上述步骤都可以通过向量同态加密的方法实现,本实施例中不再做详述。

D.使用所述的转换密钥S'对所述的转换密文组(c1',c2',…cm')解密,得到解密向量组(D1,D2,…Dm),其中每个解密向量Di的分量为(di1,di2,…din),i≤m;

E.为查询向量组(x1,x2,…xn)中的各查询向量xy附上分类标签,y≤n:比较解密向量组(D1,D2,…Dm)中各解密向量的第y个分量(d1y,d2y,…dmy)的大小,找到其中最小的K个分量;再将所述K个分量对应的分类标签中出现次数最多的分类标签赋值给向量xy,其中分量(d1y,d2y,…dmy)对应的分类标签分别为标准分类标签(t1,t2,…tm),,K值由K-NN算法本身决定。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1