对称可搜索加密
本文是对Song
等人首次提出的可搜索加密方案Practical Techniques for Searches on Encrypted Data中的四个方案进行图文式的演示,具体预备知识以及文章方案译文请参照该文章。
接下来直接上方案
方案一
加密方案如图所示,加密过程为:
1、Alice首先将每一个文件都分解成 l
块
2、Alice使用为随机值< S 1 , S 2 , . . . , S l S_1, S_2,...,S_l S1,S2,...,Sl>以及自己选择的一系列密钥< k 1 , k 2 , . . . , k l k_1,k_2,...,k_l k1,k2,...,kl>对每一"块"进行加密
注意:
- < S 1 , S 2 , . . . , S l S_1, S_2,...,S_l S1,S2,...,Sl>和伪随机置换函数 F F F是公开的
- 不同文件之间的 W 1 W_1 W1这些块是不同的,
1
只是该word
在文件中的位置,所以加密的具体细节为:
- 每一个文件的相同位置
word
不一定相同,但是加密时使用的 T i T_i Ti 是相同的
3、Bob解密时需要所有的 K i K_i Ki,对文件中的块进行序列扫描,每到一个块就进行计算 C i ⊕ W C_i\oplus W Ci⊕W ,看得到的 T i T_i Ti是否符合该位置通过 S i , k i S_i,k_i Si,ki计算得到的 T i T_i Ti
注意:每个文件中相同位置的元素是不一定相同的,下标只代表该"块"在文件中的位置
缺点:通过该方式能实现可搜索加密,但是却要把所有密钥< k 1 , k 2 , . . . , k l k_1,k_2,...,k_l k1,k2,...,kl>和要搜索的word
W W W都透露给Bob。这无异于将明文暴露给Bob(通过 k i k_i ki计算出 T i T_i Ti,再与密文异或即可得出明文"块")
除非Alice能够知道 W W W在每个文件中的位置:比如,只有三个文件,Alice知道在第一个文件中位置为
3
,第二个在7
号位值,第三个里面没有该word
,搜索的时候Alice只需要将 k 3 , k 7 k_3,k_7 k3,k7和 W W W发送给Bob就行了,Bob使用将所有三个文件中的3
和5
号位置进行计算后即可.
计算可得
- 第一个文件 C 3 ⊕ W 3 = < S 3 , F k 3 ( S 3 ) > C_3 \oplus W_3 = <S_3,F_{k_3}(S_3)> C3⊕W3=<S3