本发明涉及密码学、云存储技术,具体而言涉及一种基于连接关键词的文件可搜索加密方法。
背景技术
如今数据大爆炸,云存储、云计算发展迅速。为了节省本地存储空间,很多人愿意通过云端服务器来存储东西,甚至有人享受到了云端带来的云计算服务。不过利益总伴随着一些弊端,借助云端存储就必然带来信息的共享,服务器就能获得云端数据,若被人攻击或者服务器拥有者自己想要获得别人的数据,那后果不堪设想。因此外包数据之前最好完成对数据的加密,这样即使加密数据泄露了也无法轻易获得数据内容。传统的加密方式虽然能保证数据的完整性和安全性,却不方便海量加密数据的检索。
技术实现要素:
本发明的目的在于提出了一种基于连接关键词的文件可搜索加密方法。
实现本发明的技术解决方案为:一种基于连接关键词的文件可搜索加密加密方法,包括:
单用户加密文件:
步骤1、下载工具箱,离线在本地生成公钥、私钥,上传公钥至服务器,用户保留私钥,实现初始化公钥和私钥;
步骤2、使用第一加密算法加密文件,选择文件的若干个关键词并记录下若干个关键词在文件中的位置,用公钥对关键词进行加密,生成关键词索引,使用第二加密算法对关键词索引构成的文件进行加密,将加密文件及关键词索引文件发送给服务器;
步骤3、下载索引,解密关键词索引,在索引上搜索关键词完成预搜索,获得关键词对应的文件以及关键词对应的位置,根据关键词以及其位置用私钥生成搜索陷门,用搜索陷门在服务器上进行文件查询,获得加密文件然后解密加密文件;
用户将加密文件分享给其他用户:
步骤1、下载工具箱,离线在本地生成公钥、私钥,上传公钥至服务器,用户保留私钥,实现初始化公钥和私钥;
步骤2、使用第一加密算法加密文件,选择文件的若干个关键词并记录下若干个关键词在文件中的位置,用其他用户的公钥对关键词进行加密,将加密文件及加密关键词上传至服务器,同时生成一个解密陷门一并上传;使用其他用户的公钥将加密文件的解密密钥加密,将其也发送给服务器;
步骤3、其他用户在服务器上获得上传的解密陷门和加密的解密密钥,根据解密陷门以及自己的私钥对加密文件进行查询匹配,用私钥解密加密的解密密钥,用解密密钥解密加密文件。
本发明与现有技术相比,其显著优点为:本发明能够在完全加密的方式下,基于关键词进行文件的搜索,并支持灵活的搜索方式,能够实现关键词的与或非查询。同时在实现文件基于关键词搜索的情况下,也能够实现基于关键词的文件分享。整个过程均在完全加密的状态下进行,执行运算的服务器无法得知关于文件以及搜索凭证的任何信息。
下面结合附图对本发明做进一步详细的描述。
附图说明
图1为本发明单用户加密文件的流程图。
图2为本发明用户将加密文件分享给其他用户的流程图。
图3为本发明的流程图。
具体实施方式
一种基于连接关键词的文件可搜索加密加密方法,包括:
如图1所示,单用户加密文件:
步骤1、下载工具箱,离线在本地生成公钥、私钥,上传公钥至服务器,用户保留私钥,实现初始化公钥和私钥;
步骤2、使用第一加密算法加密文件,选择文件的若干个关键词并记录下若干个关键词在文件中的位置,用公钥对关键词进行加密,生成关键词索引,使用第二加密算法对关键词索引构成的文件进行加密,将加密文件及关键词索引文件发送给服务器;
步骤3、下载索引,解密关键词索引,在索引上搜索关键词完成预搜索,获得关键词对应的文件以及关键词对应的位置,根据关键词以及其位置用私钥生成搜索陷门,用搜索陷门在服务器上进行文件查询,获得加密文件然后解密加密文件;
如图2所示,用户将加密文件分享给其他用户:
步骤1、下载工具箱,离线在本地生成公钥、私钥,上传公钥至服务器,用户保留私钥,实现初始化公钥和私钥;
步骤2、使用第一加密算法加密文件,选择文件的若干个关键词并记录下若干个关键词在文件中的位置,用其他用户的公钥对关键词进行加密,将加密文件及加密关键词上传至服务器,同时生成一个解密陷门一并上传;使用其他用户的公钥将加密文件的解密密钥加密,将其也发送给服务器;
步骤3、其他用户在服务器上获得上传的解密陷门和加密的解密密钥,根据解密陷门以及自己的私钥对加密文件进行查询匹配,用私钥解密加密的解密密钥,用解密密钥解密加密文件。
进一步的实施例中,所述第一加密算法为aes128加密算法。
进一步的实施例中,所述第二加密算法为aes128加密算法。
如图3所示,本发明基于连接关键词的文件可搜索加密方法中,关键词加密采用的具体方法为安全对称密钥加密方法
步骤1、下载工具箱,离线在本地生成公钥、私钥,具体体现为采用密钥生成发算法keygen(1k),它同时也是一个概率算法,输入安全参数k,生成一个公私钥对apub/apriv,具体包括以下步骤:
步骤1-1、输入k,通过安全参数1k确定p阶群g1,g2的大小。随机选择数
步骤1-2、生成公钥:apub=[p1,p2,y1=s1p1,…,ym=smp1,ym+1=sm+1p1,ym+2=sm+2p1,g=e(p1,p1),h=e(p1,p2)]和apriv=[s1,s2,…,sm,sm+1,sm+2];
步骤1-3、上传公开公钥apub=[p1,p2,y1=s1p1,…,ym=smp1,ym+1=sm+1p1,ym+2=sm+2p1,g=e(p1,p1),h=e(p1,p2)],保持私钥apriv=[s1,s2,…,sm,sm+1,sm+2]私有,完成初始化。
步骤2、使用第一加密算法加密文件,选择文件的若干个关键词并记录下若干个关键词在文件中的位置,采用加密算法encrypt(apub,d)对关键词加密,其中d=(m,w),w=(w1,…,wt),m为文件,w为关键词组,wi是关键词,1≤i≤t,执行加密算法encrypt(apub,d)。输入公钥apub和d,输出密文c,加密上传加密文件和密文c,生成关键词索引,其也是一个文件,其关键词为关键词,作同样处理,具体算法encrypt(apub,d)包括以下步骤:
步骤2-1、通过运行算法
步骤2-2、随机选择数
步骤2-3、设置r0=h3(m||b1||…||bm,sk),其中每一bi均用二进制表示,视为一个字符串,||是一个连接符;
步骤2-4、通过e=εsk(m)加密文件m,计算以下值:
步骤2-5、输出密文
单用户加密文件:
步骤3、下载索引,解密关键词索引,在索引上搜索关键词完成预搜索,获得关键词对应的文件以及关键词对应的位置,根据关键词以及其位置用私钥生成搜索陷门,具体采用生成搜索陷门算法strapdoor(apriv,q),输入私钥apriv和查询q,输出搜索陷门
步骤3-1、输入q=(i1,…,it,ω1,…,ωt),i1,…,it代表关键词位置,ω1,…,ωt代表关键词;
步骤3-2、随机选择一个
步骤3-3、输入公钥apub,密文c=encrypt(apub,d)和搜索陷门
步骤3-4、计算
步骤3-5、如果
验证通过输出yes返还加密文件;否则输出no。
步骤3-6、使用sk解密加密文件e获得文件m。
用户将加密文件分享给其他用户:
步骤3、其他用户在服务器上获得上传的解密陷门和加密的解密密钥,加密陷门生成具体采用解密陷门算法dtrapdoor(apriv,q),输入私钥apriv和查询q,输出解密陷门
步骤3-1、输入q=(i1,…,it,ω1,…,ωt),i1,…,it代表关键词位置,ω1,…,ωt代表关键词;
步骤3-2、随机选择一个
步骤3-3、输入公钥apub,密文c=encrypt(apub,d)和解密陷门
步骤3-4、计算
步骤3-5、如果
验证通过输出加密文件e和加密会话密钥enc(sk,pb),否则输出⊥。
步骤4-6、使用用户b的私钥解密加密的会话密钥enc(sk,pb),获得会话密钥sk,使用sk解密加密文件e获得文件m。
(1)式的数学证明:
如果
故能进行匹配。
(2)式的数学证明:
如果
所以
实施例1
一种基于连接关键词的文件可搜索加密加密方法,具体步骤为:
步骤1、下载工具箱,离线在本地生成公钥、私钥,上传公钥至服务器,用户保留私钥,实现初始化公钥和私钥;
步骤2、使用第一加密算法加密文件,选择文件的若干个关键词并记录下若干个关键词在文件中的位置,用公钥对关键词进行加密,生成关键词索引,使用第二加密算法对关键词索引构成的文件进行加密,将加密文件及关键词索引文件发送给服务器;
步骤2的具体实现包括以下子步骤:
步骤2.1、用户a选择文件,用aes128加密算法加密文件。
步骤2.2、用户a选择文件的多个关键词以及记录下关键词的位置,用公钥对关键词进行加密。
步骤2.3、用户a根据关键词的信息制作关键词索引,该索引能方便搜索,完成预搜索,只需输入关键词,便可以获得这些关键词同时都存在的文件以及这些关键词对应的位置。
步骤2.4、用户a将加密文件及加密的关键词索引一并上传至服务器。
步骤3、下载索引,解密关键词索引,在索引上搜索关键词完成预搜索,获得关键词对应的文件以及关键词对应的位置,根据关键词以及其位置用私钥生成搜索陷门,用搜索陷门在服务器上进行文件查询,获得加密文件然后解密加密文件;
步骤3的具体实现包括以下子步骤:
步骤3.1、用户a输入关键词用公钥生成一个搜索陷门,搜索关键词索引,下载后并解密关键词索引。
步骤3.2、用户a在关键词索引上搜索要找的关键词,获得包含这些关键词的文件以及关键词的位置。
步骤3.3、用户a根据关键词以及其位置用公钥生成搜索陷门,用搜索陷门在服务器上进行文件查询,获得加密文件。
步骤3.4、用户a对加密文件用aes128解密算法解密文件。
实施例2
一种基于连接关键词的文件可搜索加密加密方法,具体步骤为:
用户将加密文件分享给其他用户:
步骤1、下载工具箱,离线在本地生成公钥、私钥,上传公钥至服务器,用户保留私钥,实现初始化公钥和私钥;
步骤2、使用第一加密算法加密文件,选择文件的若干个关键词并记录下若干个关键词在文件中的位置,用其他用户的公钥对关键词进行加密,将加密文件及加密关键词上传至服务器,同时生成一个解密陷门一并上传;使用其他用户的公钥将加密文件的解密密钥加密,将其也发送给服务器;
步骤2的具体实现包括以下子步骤:
步骤2.1、用户a选择文件,并用aes128加密算法加密文件
步骤2.2、用户a搜索用户b的公钥,获得用户b的公钥
步骤2.3、用户a用用户b的公钥加密关键词,并将加密文件及加密关键词上传至服务器,同时生成一个解密陷门一并上传
步骤2.4、用户a生成该文件的解密密钥并用用户b的公钥进行加密并上传给服务器
步骤3、其他用户在服务器上获得上传的解密陷门和加密的解密密钥,根据解密陷门以及自己的私钥对加密文件进行查询匹配,用私钥解密加密的解密密钥,用解密密钥解密加密文件。
步骤3的具体实现包括以下子步骤:
步骤3.1、用户b在服务器上获得用户a上传的解密陷门和加密的解密密钥
步骤3.2、用户b根据解密陷门以及自己的私钥对用户a分享的加密文件进行查询匹配
步骤3.3、下载分享的加密文件,用私钥解密加密的解密密钥,用解密密钥解密加密文件。