非对称可搜索加密
- 2000年S哦那个等人首次提出了对称可搜索加密方案,方案分析在这篇文章图文解析Song首次提出的对称可搜索加密方案—《Practical Techniques for Searches on Encrypted Data》
- 2004年Dan Boneh使用双线性对运算首次提出了非对称可搜索加密方案Public Key Encryption with Keyword Search
该方案只要对双线性对的运算有一定的了解,便十分容易理解
非对称加密方案理解起来虽然比较容易一些,但是由于使用了双线性对运算,使得其效率相对对称可搜索加密算法相对较低一些
方案如下所示
加密使用了简单的非对称加密算法
- 先生成公私钥对 ( A P U B , A p r i v ) = ( g α , α ) (A_{PUB},A_{priv}) = (g^α,α) (APUB,Apriv)=(gα,α)
- 对密文"块"word进行加密
- 先计算 t = e ( H 1 ( W i ) , h r ) = e ( H 1 ( W i ) , A p u b ) = e ( H 1 ( W i ) , g α r ) t = e(H_1(W_i), h^r)=e(H_1(W_i), A_{pub}) = e(H_1(W_i), g^{αr}) t=e(H1(Wi),hr)=e(H1(Wi),Apub)=e(H1(Wi),gαr),其中 r r r为随机选取的,不需要存储
- 在使用 t t t计算密文对 [ A , B ] = [ g r , H 2 ( t ) ] [A,B] = [g^r, H_2(t)] [A,B]=[gr,H2(t)]
搜索时生成搜索陷门(令牌):
* 使用私钥
A
p
r
i
v
A_{priv}
Apriv计算
T
W
i
=
H
1
(
W
i
)
A
p
r
i
v
=
H
1
(
W
i
)
α
T_{W_i}= H_1(W_i)^{A_{priv}} = H_1(W_i)^α
TWi=H1(Wi)Apriv=H1(Wi)α
搜索
* 计算是否
H
2
(
e
(
T
W
,
A
)
)
=
B
H_2(e(T_W,A)) = B
H2(e(TW,A))=B,若相等,则该word即为搜索的W
正确性验证
搜索时有
H 2 ( e ( T W , A ) ) = H 2 ( e ( H 1 ( W i ) α , g r ) ) = H 2 ( H 1 ( W i ) , g α r ) = H 2 ( t ) = B H_2(e(T_W,A)) = H_2(e(H_1(W_i)^α, g^r)) = H_2(H_1(W_i), g^{αr}) = H_2(t) = B H2(e(TW,A))=H2(e(H1(Wi)α,gr))=H2(H1(Wi),gαr)=H2(t)=B
这就是第一个非对称可搜索加密方案,比较适合于一对一和一对多的场景,而对称加密适合自己存储自己搜索的场景。