支持安全向量内积计算的加密算法
该内容出自于论文
Wai Kit Wong, David Wai-lok Cheung, Ben Kao, and Nikos Mamoulis, “Secure kNN computation on encrypted databases,” 2009 ACM SIGMOD International Conference on Management of data (SIGMOD '09), 2009, pp. 139–152.
提示:读完论文之后做个笔记,如有异议,以原文为准
介绍
一篇论文的开头主要讨论两点内容:第一,这篇论文要解决什么问题;第二、这个问题现有的研究情况如何(指出现有的研究存在怎样怎样的挑战,你的工作就是要解决这些挑战)。本章将截取原文内容来介绍这两点。
问题描述
给定一个包含 n n n个 d d d维数据的数据库 D B = { p 1 , p 2 , ⋯ , p n } DB=\{p_1,p_2,\cdots,p_n\} DB={ p1,p2,⋯,pn}, k k k个最邻近邻居问题(K-nearest neighborhoods Problem,以下简称kNN问题)就是返回 k k k个距离查询点 q q q最近的数据 R = { p 1 , p 2 , ⋯ , p k } R=\{p_1,p_2,\cdots,p_k\} R={ p1,p2,⋯,pk}。解法很简单,首先计算出 q q q与各个点之间的距离 d i = d ( p i , q ) d_i=d(p_i,q) di=d(pi,q),然后将距离升序排序取前 k k k个数据。
示例:以欧几里得距离为例,假设 n = 4 , d = 2 , k = 2 n=4, d=2, k=2 n=4,d=2,k=2,数据库 P = { p 1 = ( 1 , 2 ) , p 2 = ( 3 , 4 ) , p 3 = ( 5 , 6 ) , p 4 = ( 7 , 8 ) } P=\{p_1=(1,2), p_2=(3,4), p_3=(5,6), p_4=(7,8)\} P={ p1=(1,2),p2=(3,4),p3=(5,6),p4=(7,8)},查询点 q = ( 3 , 5 ) q=(3,5) q=(3,5),那么现在就是要从 p 1 , p 2 , p 3 , p 4 p_1,p_2,p_3,p_4 p1,p2,p3,p4中选出2个距离 q q q最近的点,计算过程如下:
d 1 = d ( p 1 , q ) = ( 1 − 3 ) 2 + ( 2 − 5 ) 2 = 3.61 d_1=d(p_1,q)=\sqrt{(1-3)^2+(2-5)^2}=3.61 d1=d(p1,q)=(1−3)2+(2−5)2=3.61
d 2 = d ( p 2 , q ) = ( 3 − 3 ) 2 + ( 4 − 5 ) 2 = 1 d_2=d(p_2,q)=\sqrt{(3-3)^2+(4-5)^2}=1 d2=d(p2,q)=(3−3)2+(4−5)2=1
d 3 = d ( p 3 , q ) = ( 5 − 3 ) 2 + ( 6 − 5 ) 2 = 2.24 d_3=d(p_3,q)=\sqrt{(5-3)^2+(6-5)^2}=2.24 d3=d(p3,q)=(5−3)2+(6−5)2=2.24
d 4 = d ( p 4 , q ) = ( 7 − 3 ) 2 + ( 8 − 5 ) 2 = 5 d_4=d(p_4,q)=\sqrt{(7-3)^2+(8-5)^2}=5 d4=d(p4,q)=(7−3)2+(8−5)2=5
因为 d 2 ≤ d 3 ≤ d 1 ≤ d 4 d_2\leq d_3\leq d_1\leq d_4 d2≤d3≤d1≤d4
所以返回结果为 p 2 , p 3 p_2,p_3 p2,p3
本地kNN问题通过明文计算能很好解决,但随着云存储和云计算的发展,越来越多的企业和机构将本地数据库转移到云服务器上。在隐私保护研究中,云服务器一直是被视为“诚实但好奇”(或者称为半诚实)的实体,云服务器可能会在未经授权的情况下访问并售卖用户数据(现实生活中存在的问题)。为了保护数据安全,一些研究者主张在将数据上传到云服务之前对其进行加密,以密文的形式上传。在这篇文章之前已经有研究者提出了一些加密方案,允许密文之间进行距离计算,这类加密方案被称为DRE(Distance-Recoverable Encryption):
定义1:假设 E E E表示加密函数, K K K表示密钥, E ( p , K ) E(p,K) E(p,K)表示点 p p p的密文格式。如果 E E E属于DRE方案,那么存在一个计算函数 f f f,对于 ∀ p 1 , p 2 ∈ P \forall p_1,p_2\in P ∀p1,p2∈P,存在 d ( p 1 , p 2 ) = f ( E ( p 1 , K ) , E ( p 2 , K ) ) d(p_1,p_2)=f(E(p_1,K), E(p_2, K)) d(p1,p2)=f(