安全KNN
构造安全KNN加密函数的要求——非距离可恢复

满足以下条件,就不是距离可恢复加密了,便可以用于构造安全KNN

上面的定义就要求,E(q)!=E(p),即使q==p
最简单的构造是这样的:
p和q的标量积可以表示为pTIq=(pTM)(M-1q),那么我们让p’=ET(p,K)=MTp,同时q’=EQ(q,K)=M-1q
那么满足要求(i)p’Tq’=pTMM-1q = pTq
同时满足要求(ii)p1’Tp2’=p1TMMTp2 != pTq
一个简单的KNN构造

比较方法:

这两个(d+1)维点的标量积可以表示为


但是这种方案不能对抗选择密文攻击
证明如下:

能抵抗选择密文攻击的KNN构造
Random Asymmetric Splitting
将查询向量q或者数据点p一分为二,假如

将d维向量扩展为d’维
将d维向量扩展为d’维,(d<d’)并保证增加的维度的乘积为零