SSE有关的符号
- ∆表示所有关键字的集合,其中|∆|表示关键字集合的大小
- D为文档,id(D)为文档编号(与内容无关),我们也可以把一个文档D看作是关键字的列表,w ∈ D 代表D有关键字w
- ’D是多个文件的数据集,‘D[i]是数据集中的i个元素。假设id(D[i]) = i
- 'D(w)是包含关键字w的所有文档列表
- I是安全索引
定义1:可搜索的对称加密方案(SSE)
一个SSE方案是以下四种多项式时间算法的集合
- (KI , KD) ← Keygen(1λ):一种随机密钥生成算法,由客户端运行来设置方案。它取一个安全参数λ,并返回密钥(KI , KD),KI用于安全索引,KD用于文档集合
- I ← BuildIndex(KI ,(D,W)):客户端使用密钥KI,文档集合D和关键词列表W,运行,生成一个加密的索引 I
- τ ← Token(KI , w):由客户端运行,为给定密钥KI和关键字w生成一个陷门τ。
- R ← Search(I, τ ):由服务器运行,以搜索包含关键词w的集合D(w)。输入加密索引I,集合D和关键字w中陷门τ作为输入,并返回包含w的文档标识符集R。
- SKE.Enc和SKE.Dec分别是对文档一对一加密,解密。
简单流程如图所示:
为了定义SSE方案的安全性,借用了历史、视图和路径的概念。
-
历史History:包含客户端想要私有的敏感信息,即文档明文集合D和t次查询的关键字序列,在D上的历史是一个元组,Ht = (D, ~w)
~w= ( ~w[1], ~w[2], . . . , ~w[t]), 其中~w是t查询的底层关键字的向量。 -
部分历史Hst:s ≤ t,Hts = (D, ~w 0 ) 其中 ~w 0= ( ~w[1], . . . , ~w[s])。
-
视图View:之后视图指定服务器在运行SSE协议时可以看到的内容,即文档标识符id(D)、每个文档E(D[i])的加密、安全搜索索引I和查询令牌(活板门)τ。KEY sk下的Ht的视图是向量Vsk(Ht) .= (id(D), E(D[1]), , …, E(D[n]), I, τ1, …, τt),其中τi是第ith查询的查询令牌
-
Access Pattern:
-
Search Pattern:
-
上面两者的区别:访问模式显示哪些文档包含哪些查询的关键字,而搜索模式显示哪些查询具有相同的底层关键字(可以知道用户对某个特定的关键词进行的搜索次数)。
-
路径Path:利用历史的路径建立了SSE方案的实际泄漏模型,T(Ht)的路径是向量,T(Ht) .= (id(‘D), |’D[1]|, . . . , |‘D[n]|, Π~w, Φ~w)。我们已经准备好为SSE定义自适应语义安全了。非正式地说,该定义指出,如果一个观察到视图View的对手可以被一个只看到路径Path的算法模拟,那么SSE方案是安全的;这意味着Path包含了与对手相关的所有信息
-
针对SSE的自适应语义安全:如果对于所有t∈N和所有对手A,SSE方案存在算法(模拟器),对于所有长度t的轨迹Tt,所有多项式采样分布Ht,所有函数