一种创建密文索引的方法、装置及系统与流程

文档序号:11063518阅读:544来源:国知局
一种创建密文索引的方法、装置及系统与制造工艺
本发明涉及计算机信息安全领域,尤其涉及一种创建密文索引的方法、装置及系统。
背景技术
:在大数据平台或公有云平台中,为了防止个人敏感数据(手机号码、家庭住址、身份证号码、护照号和/或银行账号等)被非法访问,需要对个人敏感数据进行加密存储,由于对个人敏感数据进行加密后得到的密文以乱码的形式被存储,无法直接进行搜索,因此,出现了基于关键词索引的密文搜索技术。一般情况下,基于关键词索引的密文搜索技术包括创建索引阶段和搜索匹配阶段,一种创建索引的方法包括:采用中文分词算法将中文敏感数据进行分词,得到N个关键词;对N个关键词中的每个关键词计算基于拼音的编辑距离,得到N个编辑距离;将N个编辑距离中的每个编辑距离和密钥作为HMAC(Hash-basedMessageAuthenticationCode,哈希消息认证码)算法的输入,计算得到N个哈希认证码;将N个哈希认证码作为中文敏感数据的N个索引;采用加密算法将中文敏感数据进行加密,得到中文敏感数据的密文;将N个索引与该密文一同存储在数据库服务器中。采用上述方法生成的密文的索引,不能用于在数据库服务器中直接搜索该密文,因此,使得密文搜索的速度较慢。技术实现要素:本发明的实施例提供一种创建密文索引的方法、装置及系统,用以提高密文搜索的速度。为达到上述目的,本发明的实施例采用如下技术方案:第一方面,提供一种创建密文索引的方法,包括:采用可逆加密算法对敏感数据进行加密得到所述敏感数据的密文;采用分词算法对所述敏感数据进行分词得到目标关键词;根据所述目标关键词和哈希算法,生成哈希认证码;采用预设编码方式对所述哈希认证码进行编码得到索引字符串,所述索引字符串为可打印字符串,所述索引字符串为所述密文的索引;向数据库服务器发送所述密文和所述索引字符串,以便于所述数据库服务器将所述密文和所述索引字符串存储在同一数据表中,所述索引字符串与所述密文是对应存储的。结合第一方面,在第一种可能的实现方式中,在所述采用预设编码方式对所述哈希认证码进行编码得到索引字符串之前,所述方法还包括:截取所述哈希认证码的前r位,得到子哈希认证码,1≤r≤R,R和r均为整数,R为所述哈希认证码的长度;所述采用预设编码方式对所述哈希认证码进行编码得到索引字符串,包括:采用预设编码方式对所述子哈希认证码进行编码得到索引字符串。结合第一方面或第一方面的第一种可能的实现方式,在第二种可能的实现方式中,当所述索引字符串的个数为N时,在所述采用预设编码方式对所述哈希认证码进行编码得到索引字符串之后,所述方法还包括:将N个索引字符串随机置乱,N≥1,N为整数;将随机置乱后的所述N个索引字符串串连起来,串连后的所述N个索引字符串中的相邻的索引字符串之间通过非所述预设编码方式中的可打印字符间隔开。结合第一方面、第一方面的第一种可能的实现方式或第二种可能的实现方式,在第三种可能的实现方式中,所述方法还包括:获取搜索关键词;采用将所述目标关键词生成所述索引字符串的相同方法,将所述搜索关键词生成搜索字符串,所述搜索字符串为可打印字符串;向所述数据库服务器发送所述搜索字符串,以便于所述数据库服务器根据所述搜索字符串和存储的所述索引字符串搜索所述密文。结合第一方面的第三种可能的实现方式,在第四种可能的实现方式中,在所述获取搜索关键词之前,所述方法还包括:获取搜索语句;所述获取搜索关键词,包括:采用所述分词算法对所述搜索语句进行分词得到搜索关键词。结合第一方面的第三种可能的实现方式或第四种可能的实现方式,在第五种可能的实现方式中,所述方法还包括:所述数据库服务器接收M个搜索字符串,当M≥2时,所述数据库服务器还获取搜索方式,所述搜索方式为与方式或者或方式;所述数据库服务器将所述M个搜索字符串与存储的所述索引字符串进行匹配;若M=1,获取与所述搜索字符串相同的索引字符串对应的密文;若M≥2、且所述搜索方式为与方式时,获取与所述M个搜索字符串相同的M个索引字符串所对应的密文;若M≥2、且所述搜索方式为或方式时,获取与所述M个搜索字符串中任一搜索字符串相同的索引字符串所对应的密文。第二方面,提供一种创建密文索引的装置,包括:加密单元,用于采用可逆加密算法对敏感数据进行加密得到所述敏感数据的密文;分词单元,用于采用分词算法对所述敏感数据进行分词得到目标关键词;第一生成单元,用于根据所述目标关键词和哈希算法,生成哈希认证码;编码单元,用于采用预设编码方式对所述哈希认证码进行编码得到索引字符串,所述索引字符串为可打印字符串,所述索引字符串为所述密文的索引;发送单元,用于向数据库服务器发送所述密文和所述索引字符串,以 便于所述数据库服务器将所述密文和所述索引字符串存储在同一数据表中,所述索引字符串与所述密文是对应存储的。结合第二方面,在第一种可能的实现方式中,所述装置还包括:截取单元,用于截取所述哈希认证码的前r位,得到子哈希认证码,1≤r≤R,R和r均为整数,R为所述哈希认证码的长度;所述编码单元,具体用于采用预设编码方式对所述子哈希认证码进行编码得到索引字符串。结合第二方面或第二方面的第一种可能的实现方式,在第二种可能的实现方式中,当所述索引字符串的个数为N时,所述装置还包括:置乱单元,用于将N个索引字符串随机置乱,N≥1,N为整数;串连单元,用于将随机置乱后的所述N个索引字符串串连起来,串连后的所述N个索引字符串中的相邻的索引字符串之间通过非所述预设编码方式中的可打印字符间隔开。结合第二方面、第二方面的第一种可能的实现方式或第二种可能的实现方式,在第三种可能的实现方式中,所述装置还包括:第一获取单元,用于获取搜索关键词;第二生成单元,用于采用将所述目标关键词生成所述索引字符串的相同方法,将所述搜索关键词生成搜索字符串,所述搜索字符串为可打印字符串;所述发送单元,还用于向所述数据库服务器发送所述搜索字符串,以便于所述数据库服务器根据所述搜索字符串和存储的所述索引字符串搜索所述密文。结合第二方面的第三种可能的实现方式,在第四种可能的实现方式中,所述装置还包括:第二获取单元,用于获取搜索语句;所述第一获取单元,具体用于采用所述分词算法对所述搜索语句进行分词得到搜索关键词。第三方面,提供一种创建密文索引的系统,包括:第二方面提供的任一种装置和数据库服务器。本发明实施例提供的方法、装置及系统,在将目标关键词生成哈希认证码之后,采用预设的编码方式对哈希认证码进行编码,得到索引字符串,当索引字符串有N个时,N个索引字符串为敏感数据的密文的N个索引,数据库服务器将密文和N个索引字符串对应存储在同一数据表中,由于索引字符串为可打印字符串,因此,可以直接通过SQL在数据库服务器中查询索引字符串。若需要对包含某个关键词的密文进行搜索时,采用目标关键词生成索引字符串的相同方法,将搜索关键词生成搜索字符串,通过SQL可以直接在数据库服务器中将搜索字符串与N个索引字符串进行匹配,确定是否获取密文,与现有技术相比,不用将密文的索引载入内存,节约了内存空间,并且可以提高密文搜索的速度。附图说明为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1为本发明实施例提供的一种创建密文索引的方法的应用场景示意图;图2为本发明实施例提供的又一种创建密文索引的方法的应用场景示意图;图3为本发明实施例提供的一种创建密文索引的方法的流程图;图4为本发明实施例提供的又一种创建密文索引的方法的流程图;图5为本发明实施例提供的一种密文搜索的方法的流程图;图6为本发明实施例提供的再一种创建密文索引的方法的流程图;图7为本发明实施例提供的一种密文搜索的方法的流程图;图8为本发明实施例提供的一种创建密文索引的装置的结构示意图;图9为本发明实施例提供的又一种创建密文索引的装置的结构示意图;图10为本发明实施例提供的再一种创建密文索引的装置的结构示意图。具体实施方式下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。本文中的“多个”是指两个或者两个以上。本发明实施例提供的方法至少可以应用在大数据平台或公有云平台中。如图1所示(示出的数字代表步骤的先后顺序,图2中同理),在大数据平台中,用户认为大数据服务器是可信的,因此,会直接通过用户设备将敏感数据上传到大数据服务器中,大数据服务器根据该敏感数据获取到该敏感数据的密文以及该密文的索引(根据目标关键词生成)后,将该密文及该密文的索引上传到数据库服务器中,数据库服务器将该密文及该密文的索引对应存储在同一数据表中。当用户(或用户授权的管理员)需要获取敏感数据时,通过用户设备向大数据服务器提供搜索关键词,大数据服务器根据目标关键词生成密文的索引的方法将搜索关键词生成搜索字符串后向数据库服务器发送,数据库服务器根据搜索字符串和密文的索引获取到密文后,将该密文向大数据服务器发送,大数据服务器将该密文解密得到敏感数据,并向用户设备发送该敏感数据。如图2所示,在公有云平台中,租户(租用公有云设备的用户)认为公有云服务的提供商是半可信的,因此,租户设备(租户租用的公有云设备)根据敏感数据获取到该敏感数据的密文以及该密文的索引(根据目标关键词生成)后,将该密文及该密文的索引上传至公有云服务器中,公有云服务器将该密文及密文的索引上传至数据库服务器中,当用户需要获取敏感数据时,租户设备将 搜索关键词根据目标关键词生成密文的索引的方法生成搜索字符串,将该搜索字符串向公有云服务器发送,公有云服务器将该搜索字符串向数据库服务器发送,数据库服务器根据该搜索字符串和密文的索引确定出密文后通过公有云服务器向租户设备发送,租户设备接收到密文后,对该密文进行解密得到敏感数据。需要说明的是,数据库服务器可以置于大数据服务器或公有云服务器内部。实施例一本发明实施例提供一种创建密文索引的方法,如图3所示,包括:301、采用可逆加密算法对敏感数据进行加密得到所述敏感数据的密文。在如图1和图2所示的应用场景下,当本发明实施例提供的方法应用在大数据平台中时,本发明实施例中的执行主体可以为大数据服务器,当本发明实施例提供的方法应用在公有云平台中时,本发明实施例中的执行主体可以为租户设备。示例性的,可逆加密算法可以为AES(AdvancedEncryptionStandard,高级加密标准)算法、DES(DataEncryptionStandard,数据加密标准)算法或其他可逆加密算法,本发明实施例对此不进行限制。优选的,采用标准的数据加密算法(例如,DES算法或AES算法)相比采用非标准的数据加密算法对敏感数据进行加密而言,有利于保证密文的安全性。可选的,在步骤301之前,该方法还可以包括:确定敏感数据。敏感数据具体可以为用户的手机号码、家庭住址、身份证号码、护照号和/或银行账号等。当本发明实施例的执行主体为大数据服务器时,在大数据服务器接收到用户设备发送的数据时,可以根据特定的协议确定出数据中的敏感数据。302、采用分词算法对所述敏感数据进行分词得到目标关键词。其中,敏感数据可以为中文、英文或数字等,本发明实施例对此不进行限制,对不同类型的敏感数据可以采用不同的分词算法。例如,当敏感数据为英文时,由于英文句子中的单词一般被标点符号或空格分隔开,因 此,可以利用标点符号和空格对该英文句子进行分词得到目标关键词,当敏感数据为中文句子时,可以根据中文句子中的词语的含义对该中文句子进行分词。303、根据所述目标关键词和哈希算法,生成哈希认证码。优选的,哈希算法可以为带密钥的哈希算法,示例性的,带密钥的哈希算法可以为HMAC算法,具体可以为HMAC-MD5算法,HMAC-SHA1算法,HMAC-SHA256算法等。一个目标关键词对应一个哈希认证码,将目标关键词和密钥作为哈希算法的输入进行计算后,即可得到该目标关键词对应的哈希认证码。304、采用预设编码方式对所述哈希认证码进行编码得到索引字符串,所述索引字符串为可打印字符串,所述索引字符串为所述密文的索引。需要说明的是,对一个敏感数据进行分词后可以得到一个或多个目标关键词,一个目标关键词生成一个哈希认证码,一个哈希认证码生成一个索引字符串,则当对一个敏感数据进行分词后得到N(N≥1,N为整数)个目标关键词时,则根据N个目标关键词可以生成N个索引字符串,该N个索引字符串为该敏感数据的密文的N个索引。需要说明的是,基本的ASCII(AmericanStandardCodeforInformationInterchange,美国标准信息交换代码)字符集共有128个字符,其中有96个可打印字符,包括常用的字母、数字、标点符号等,另外还有32个控制字符。预设编码方式是指可以将8位字节编码成可打印字符串的编码方式,具体可以为Base64。305、向数据库服务器发送所述密文和所述索引字符串,以便于所述数据库服务器将所述密文和所述索引字符串存储在同一数据表中,所述索引字符串与所述密文是对应存储的。具体的,将索引字符串存储在数据库服务器中的同一数据表中后,由于索引字符串为可打印字符串,可以直接通过SQL(StructuredQueryLanguage,结构化查询语言)在数据库服务器中进行查询。需要说明的是,步骤301可以执行在步骤302至步骤304中的任意一 个步骤之前或之后。需要说明的是,敏感数据可能有多个,每个敏感数据的密文都有对应的索引,每个敏感数据的密文对应的索引的个数可以相同也可以不同。示例性的,如表1所示,表1示出了2个不同的敏感数据的密文与其索引的对应关系,其中,X1和X2代表2个不同的敏感数据的密文,B11至B14为X1的4个索引,B21至B23为X2的3个索引。表1可选的,在步骤304之前,所述方法还包括:截取所述哈希认证码的前r位,得到子哈希认证码,1≤r≤R,R和r均为整数,R为所述哈希认证码的长度;该情况下,步骤304包括:采用预设编码方式对所述子哈希认证码进行编码得到索引字符串。一般情况下,哈希认证码的长度很长,该可选的方法,可以减小运算量。可选的,所述方法还包括:11)获取搜索关键词;12)采用将所述目标关键词生成所述索引字符串的相同方法,将所述搜索关键词生成搜索字符串,所述搜索字符串为可打印字符串;13)向所述数据库服务器发送所述搜索字符串,以便于所述数据库服务器根据所述搜索字符串和存储的所述索引字符串搜索所述密文。可选的,在步骤11)之前,所述方法还包括:获取搜索语句;该情况下,步骤11)包括:采用所述分词算法对所述搜索语句进行分词得到搜索 关键词。需要说明的是,对密文进行搜索时,可以直接通过搜索关键词进行搜索,也可以通过一句(段)话进行搜索,该情况下,需要对该句(段)话采用分词算法进行分词得到搜索关键词,搜索关键词可以有一个或多个,一个搜索关键词对应一个搜索字符串。可选的,所述方法还包括:所述数据库服务器接收M个搜索字符串,当M≥2时,所述数据库服务器还获取搜索方式,所述搜索方式为与方式或者或方式;所述数据库服务器将所述M个搜索字符串与存储的所述索引字符串进行匹配;若M=1,获取与所述搜索字符串相同的索引字符串对应的密文;若M≥2、且所述搜索方式为与方式时,获取与所述M个搜索字符串相同的M个索引字符串所对应的密文;若M≥2、且所述搜索方式为或方式时,获取与所述M个搜索字符串中任一搜索字符串相同的索引字符串所对应的密文。由于索引字符串是根据目标关键词生成的,而目标关键词是利用分词算法对敏感数据进行分词后得到的,因此,当有一个搜索关键词时,采用目标关键词生成索引字符串的相同方法,将该搜索关键词生成搜索字符串后,假设密文的索引有N个,则当搜索字符串与N个索引字符串中的一个相同时,说明该搜索关键词为密文对应的敏感数据中的一个词,该情况下,获取密文;当搜索字符串与N个索引字符串中的任意一个都不相同时,说明该搜索关键词不是密文对应的敏感数据中的词,该情况下,不获取密文。当有多个搜索关键词、且搜索方式为或方式时,说明用户需要的敏感数据为包含多个搜索关键词中的任意一个搜索关键词的敏感数据,该情况下,只要多个搜索关键词中的任意一个搜索关键词对应的搜索字符串与N个索引字符串中的一个相同时,获取密文,否则,不获取密文;当有多个搜索关键词、且搜索方式为与方式时,说明用户需要的敏感数据为包含多个搜索关键词的敏感数据,该情况下,多个搜索关键词对应的多个搜索字符串与N个索引字符串中的多个搜索字符串分别相同时,获取密文,否则, 不获取密文。需要说明的是,当一个搜索关键词为多个敏感数据中的词时,服务器获取多个敏感数据的密文。示例性的,基于表1所述的示例,若密文X1的明文为“0501”,“0501”的4个目标关键词为{0,05,050,0501},密文X2的明文为“052”,“052”的3个目标关键词为{0,05,052}。每个目标关键词对应的索引字符串如表2所示。当搜索关键词为“05”时,搜索关键词对应的搜索字符串为B1′,将B1′分别与密文X1和密文X2的索引进行匹配,由于B1′与B12和B22相同,则获取密文X1和X2。当搜索关键词为“052”时,搜索关键词对应的搜索字符串为B2′,则将B2′分别与密文X1和密文X2的索引进行匹配,由于B2′与B23相同,则获取密文X2。表2索引字符串目标关键词B110B1205B13050B140501B210B2205B23052基于表2所述的示例,当搜索关键词为“05”和“052”时,其分别对应的搜索字符串为B1′和B2′,则将B1′和B2′分别与密文X1和密文X2的索引进行匹配,B1′与B12和B22相同,B2′与B23相同;则当搜索方式为与方式时,获取密文X2,当搜索方式为或方式,获取密文X1和X2。可选的,当所述索引字符串的个数为N时,在步骤304之后,所述方法还包括:将N个索引字符串随机置乱,N≥1,N为整数;将随机置乱后的所述N个索引字符串串连起来,串连后的所述N个索引字符串中的相邻的索引字符串之间通过非所述预设编码方式中的可打印字符间隔开。该情况下,步骤305具体包括:向数据库服务器发送所述密文和串连后的所述N个索引字符串。数据库服务器在存储串连后的N个索引字符 串时,可以占用数据表中的一个字段中的一个存储单元存储,该字段用于存储一个或多个密文的索引。其中,"字段"是指数据库服务器中的数据表的"列",一列包括一个或多个存储单元,本发明实施例中,一个密文对应的N个索引字符串在串连后可以存储在一个存储单元中。需要说明的是,由于需要将N个索引字符串串连后存储,而N个索引字符串是根据N个目标关键词生成的,N个索引字符串顺序排放可能泄露密文的内容,因此,为了提高密文的安全性,在将N个索引字符串串连之前,将N个索引字符串随机置乱。本发明实施例中将N个索引字符串串连起来,在存储N个索引字符串时,可以只占用一个字段中的一个存储单元进行存储,节约了数据库服务器的资源。同时,通过非预设编码方式中的可打印字符将N个索引字符串间隔开可以防止匹配出错。例如,2个索引字符串分别为AAAA和BBBB,一个搜索字符串为AABB,假设非预设编码方式中的可打印字符为“!”,那么若2个索引字符串直接串连,则串连后的2个索引字符串为AAAABBBB,在将搜索字符串AABB与AAAABBBB进行匹配时,由于AABB与AAAABBBB中间的部分相同,则可能使得匹配结果出错;若2个索引字符串采用“!”间隔开,则串连后的2个索引字符串为AAAA!BBBB,在将搜索字符串AABB与AAAA!BBBB进行匹配时,只会匹配被“!”间隔开的索引字符串,因此,可以防止匹配结果出错。另外,对密文进行搜索时,也可以通过几句(段)话进行搜索,该几句(段)话之间的搜索方式可以为与方式或者或方式。该情况下,若有W句(段)话,可以采用分词算法对W句(段)话分别进行分词得到每句(段)话对应的搜索关键词,采用目标关键词生成索引字符串的相同方法,将每句(段)话对应的搜索关键词生成搜索字符串;其中,一个搜索关键词对应一个搜索字符串。假设W句(段)话中的第i(1≤i≤W,i为整数)句话对应的搜索字符串的个数为wi(wi≥1,wi为整数),W句(段)话对应的所有不同的搜索字符串的总个数为w(w≥1,w为整数),在对密文进行搜索的过程中,具体的:当W句(段)话之间的搜索方式为与方式、且每句话对应的搜索关键词之间的搜索方式为与方式时,当w个搜索字符串分别与N个索引字符串中的w个索引字符串相同时,获取密文;当W句(段)话之间的搜索方式为或方式、且每句话对应的搜索关键词之间的搜索方式为或方式时,当w个搜索字符串中任意一个搜索字符串与N个索引字符串中的一个索引字符串相同时,获取密文;当W句(段)话之间的搜索方式为与方式、且每句话对应的搜索关键词之间的搜索方式为或方式时,当W句(段)话对应的W个搜索字符串分别与N个索引字符串中的W个索引字符串相同时,获取密文;其中,W个搜索字符串分别对应W句(段)话;当W句(段)话之间的搜索方式为或方式、且每句话对应的搜索关键词之间的搜索方式为与方式时,当第i句(段)话对应的wi个搜索字符串分别与N个索引字符串中的wi个索引字符串相同时,获取密文,第i句(段)话可以为W句(段)话中的任意一句话。可选的,步骤303包括:根据第一结果和哈希算法,生成哈希认证码,所述第一结果为将目标参数与所述目标关键词直接串连后得到的结果,所述目标参数为所述密文或加密所述敏感数据时采用的初始向量;该情况下,步骤12)包括:采用将所述第一结果生成所述索引字符串的相同方法,将第二结果生成搜索字符串,所述第二结果为将目标参数与所述搜索关键词直接串连后得到的结果。需要说明的是,在对安全性要求非常高的应用场景下,由于不同的用户可能上传包含相同词语的敏感数据,若采用相同的方法生成所有用户的敏感数据的密文,并采用相同的方法生成所有用户的敏感数据的密文的索引,当根据一个搜索关键词对密文进行搜索时,可能会将其他用户的包含该搜索关键词的密文获取到,使得密文的安全性降低。基于该问题,可以使得生成的不同的用户(或租户)的敏感数据的密文和该密文的索引不同来提高密文的安全性。具体的,采用AES算法或DES算法时,在生成不同用户的敏感数据的密文时使用随机的初始向量,那么生成的不同的用户的敏感数据的密文必然不同。在生成密文的索引时, 根据第一结果和哈希算法生成,由于第一结果中包含的目标参数不同,使得生成的不同的用户的敏感数据的密文的索引必然不同。
背景技术
中提到的现有技术中,在搜索匹配阶段,需要将哈希认证码构造为平衡28叉树,因此,需要将N个哈希认证码载入到服务器的内存中,在内存中构造每个哈希认证码对应的平衡28叉树的索引结构,并与根据搜索关键词生成的平衡28叉树进行匹配,因此,需要花费额外的内存空间,并且会大大的降低密文搜索的速度。本发明实施例提供的方法,在将目标关键词生成哈希认证码之后,采用预设的编码方式对哈希认证码进行编码,得到索引字符串,当索引字符串有N个时,N个索引字符串为敏感数据的密文的N个索引,数据库服务器将密文和N个索引字符串对应存储在同一数据表中,由于索引字符串为可打印字符串,因此,可以直接通过SQL在数据库服务器中查询索引字符串。若需要对包含某个关键词的密文进行搜索时,采用目标关键词生成索引字符串的相同方法,将搜索关键词生成搜索字符串,通过SQL可以直接在数据库服务器中将搜索字符串与N个索引字符串进行匹配,确定是否获取密文,与现有技术相比,不用将密文的索引载入内存,节约了内存空间,并且可以提高密文搜索的速度。实施例二需要说明的是,在大数据平台中,数据库服务器一般置于大数据服务器内,该实施例以该情况为例对实施例一中提供的创建密文索引的方法进行说明,该实施例中的相关解释可以参见上述实施例,如图4所示,该方法包括:401、用户设备向大数据服务器发送数据。具体的,当用户设备所属的用户需要将数据存储在大数据服务器中时,可以通过用户设备向大数据服务器发送数据。402、大数据服务器接收用户设备发送的数据,并确定该数据中的敏感数据。需要说明的是,用户设备向大数据服务器发送的数据中可能包括多个敏感数据,本发明实施例中以一个敏感数据为例进行说明。403、大数据服务器采用可逆加密算法对敏感数据进行加密,得到敏感数据的密文X。具体的,可逆加密算法可以为AES、DES或其他可逆加密算法,本发明实施例对此不进行限制。404、大数据服务器采用分词算法对敏感数据进行分词得到N个目标关键词K1、K2、…、KN。具体的,当敏感数据不同时,采用的分词算法也可以不同。当敏感数据为中文时,可以采用智能分词算法或细粒度分词算法,当敏感数据为数字时,可以采用前缀分词算法或后缀分词算法。下面介绍几种分词算法分词的原理:1、智能分词:把句子中有意义的最大词分割出来作为目标关键词。例如:“优秀工程师”的分词结果为{优秀,工程师}。2、细粒度分词:把句子中从有意义的最大词到有意义的最小词全部分割出来作为目标关键词。例如:“优秀工程师”的分词结果为{优秀,工程师,工程,师}。具体的,可以采用中文分词工具IKAnalyze实现智能分词算法和细粒度分词算法。3、前缀分词:从长度为L(L≥1,L为整数)的句子中依次截取连续前1、2、…、L个字符分别作为目标关键词。例如:“050119”的分词结果为{0,05,050,0501,05011,050119}。405、大数据服务器根据N个目标关键词K1、K2、…、KN和带密钥的哈希算法生成N个哈希认证码H1、H2、…、HN。示例性的,带密钥的哈希算法可以为HMAC算法,具体可以为HMAC-MD5算法,HMAC-SHA1算法,HMAC-SHA256算法等。406、大数据服务器截取N个哈希认证码H1、H2、…、HN中的每个哈希认证码的前r位,得到N个子哈希认证码S1、S2、…、SN。其中,1≤r≤R,R和r均为整数,R为哈希认证码的长度。需要说明的是,哈希认证码可以有256位,为了减小运算量,可以将哈希认证码截取前r位用来计算。407、大数据服务器采用预设编码方式对N个子哈希认证码S1、S2、…、SN分别进行编码得到N个索引字符串B1、B2、…、BN。具体的,预设编码方式可以为Base64,子哈希认证码经过Base64编码后得到的字符串为可打印字符串。408、大数据服务器将N个索引字符串B1、B2、…、BN随机置乱,得到乱序的N个索引字符串C1、C2、…、CN。需要说明的是,由于B1、B2、…、BN是根据N个目标关键词生成的,B1、B2、…、BN顺序排放可能泄露密文的内容,因此,为了提高密文的安全性,将N个索引字符串B1、B2、…、BN随机置乱。409、大数据服务器将随机置乱后的所述N个索引字符串C1、C2、…、CN串连起来。其中,串连后的所述N个索引字符串中的相邻的索引字符串之间通过非所述预设编码方式中的可打印字符间隔开,具体的,当预设编码方式为Base64时,字符“!”不是Base64中使用的可打印字符,则该可打印字符可以为“!”。410、大数据服务器将串连后的N个索引字符串C1、C2、…、CN和密文X存储在数据库服务器中的同一数据表中。其中,N个索引字符串为密文的N个索引,密文的索引与密文对应存储,需要说明的是,现有技术中在生成敏感数据的密文的N个索引后,在数据表中每个索引占用一个字段中的一个存储单元来存储,本发明实施例中将密文的N个索引串连起来,在存储N个索引时,可以只占用数据表中的一个字段中的一个存储单元进行存储。同时,通过非预设编码方式中的可打印字符将索引字符串之间间隔开可以防止匹配出错。当用户需要获取敏感数据时,可以通过用户设备向大数据服务器发送搜索关键词,使得大数据服务器根据搜索关键词搜索出密文并解密得到敏感数据后向用户设备发送,如图5所示,具体的过程包括:501、用户设备向大数据服务器发送M个搜索关键词,当M≥2时,用户 设备还向大数据服务器发送搜索方式,搜索方式为与方式或者或方式;M≥1,M为整数。502、大数据服务器接收M个搜索关键词,当M≥2时,大数据服务器还接收搜索方式。503、大数据服务器采用目标关键词生成索引字符串的相同方法,将M个搜索关键词生成M个搜索字符串B1′、B2′、…、BM′。504、大数据服务器将M个搜索字符串B1′、B2′、…、BM′与C1!C2!…!CN中包括的N个索引字符串进行匹配。具体的,若M=1,当所述M个搜索字符串与N个索引字符串中的一个索引字符串相同时,获取所述密文;若M≥2、且所述搜索方式为与方式时,当所述M个搜索字符串与N个索引字符串中的M个索引字符串相同时,获取所述密文;若M≥2、且所述搜索方式为或方式时,当所述M个搜索字符串中的任意一个搜索字符串与N个索引字符串中的一个索引字符串相同时,获取所述密文。当大数据服务器获取到密文时,执行步骤505至步骤507;当大数据服务器未获取到密文时,大数据服务器向用户设备发送搜索失败的消息。图5中以大数据服务器获取到密文为例进行绘制。505、大数据服务器采用可逆加密算法对应的解密算法将获取到的密文进行解密,得到敏感数据。506、大数据服务器向用户设备发送敏感数据。507、用户设备接收大数据服务器发送的敏感数据。具体的,获取密文的示例可参见表2所述的示例。本发明实施例提供的方法,在将目标关键词生成哈希认证码之后,采用预设的编码方式对哈希认证码进行编码,得到索引字符串,当索引字符串有N个时,N个索引字符串为敏感数据的密文的N个索引,数据库服务器将密文和N个索引字符串对应存储在同一数据表中,由于索引字符串为可打印字符串,因此,可以直接通过SQL在数据库服务器中查询索引字符串。若需要 对包含某个关键词的密文进行搜索时,采用目标关键词生成索引字符串的相同方法,将搜索关键词生成搜索字符串,通过SQL可以直接在数据库服务器中将搜索字符串与N个索引字符串进行匹配,确定是否获取密文,与现有技术相比,不用将密文的索引载入内存,节约了内存空间,并且可以提高密文搜索的速度。实施例三需要说明的是,在公有云平台中,数据库服务器一般置于公有云服务器内,该实施例以该情况为例对实施例一中提供的创建密文索引的方法进行说明,该实施例中的相关解释可以参见上述实施例,如图6所示,该方法包括:601、租户设备确定敏感数据。本发明实施例中以一个敏感数据为例进行说明。602、租户设备采用可逆加密算法对敏感数据进行加密,得到敏感数据的密文X。具体的,可逆加密算法可以为AES、DES或其他可逆加密算法,本发明实施例对此不进行限制。603、租户设备采用分词算法对敏感数据进行分词得到N个目标关键词K1、K2、…、KN。具体的,当敏感数据不同时,采用的分词算法也可以不同。当敏感数据为中文时,可以采用智能分词算法或细粒度分词算法,当敏感数据为数字时,可以采用前缀分词算法或后缀分词算法。具体的几种分词算法的原理可参见实施例二中的描述。604、租户设备根据N个目标关键词K1、K2、…、KN和带密钥的哈希算法生成N个哈希认证码H1、H2、…、HN。示例性的,带密钥的哈希算法可以为HMAC算法,具体可以为HMAC-MD5算法,HMAC-SHA1算法,HMAC-SHA256算法等。605、租户设备截取N个哈希认证码H1、H2、…、HN中的每个哈希认证码的前r位,得到N个子哈希认证码S1、S2、…、SN。其中,1≤r≤R,R和r均为整数,R为哈希认证码的长度。需要说明的是,哈希认证码可以有256位,为了减小运算量,可以将哈希认证码截取前r位用来计算。606、租户设备采用预设编码方式对N个子哈希认证码S1、S2、…、SN分别进行编码得到N个索引字符串B1、B2、…、BN。具体的,预设编码方式可以为Base64,子哈希认证码经过Base64编码后得到的字符串为可打印字符串。607、租户设备将N个索引字符串B1、B2、…、BN随机置乱,得到乱序的N个索引字符串C1、C2、…、CN。需要说明的是,由于B1、B2、…、BN是根据N个目标关键词生成的,B1、B2、…、BN顺序排放可能泄露密文的内容,因此,为了提高密文的安全性,将N个索引字符串B1、B2、…、BN随机置乱。608、租户设备将随机置乱后的所述N个索引字符串C1、C2、…、CN串连起来。其中,串连后的所述N个索引字符串中的相邻的索引字符串之间通过非所述预设编码方式中的可打印字符间隔开,具体的,当预设编码方式为Base64时,字符“!”不是Base64中使用的可打印字符,则该可打印字符可以为“!”。609、租户设备向公有云服务器发送串连后的N个索引字符串C1、C2、…、CN和密文X。610、公有云服务器接收租户设备发送的串连后的N个索引字符串C1、C2、…、CN和密文X,并将串连后的N个索引字符串C1、C2、…、CN和密文X存储在数据库服务器中的同一数据表中。其中,N个索引字符串为密文的N个索引,密文的索引与密文对应存储,需要说明的是,现有技术中在生成敏感数据的密文的N个索引后,在数据表中每个索引占用一个字段中的一个存储单元来存储,本发明实施例中将密文的N个索引串连起来,在存储N个索引时,可以只占用数据表中的一个字段中的一个存储单元进行存储。同时,通过非预设编码方式中的可打印字符将索引字符串之间间隔开可以防止匹配出错。当用户需要获取密文时,如图7所示,可以通过以下过程获取:701、租户设备确定M个搜索关键词,并采用目标关键词生成索引字符串的相同方法,将M个搜索关键词生成M个搜索字符串B1′、B2′、…、BM′,当M≥2时,租户设备还确定搜索方式,搜索方式为与方式或者或方式,M≥1,M为整数。702、租户设备向公有云服务器发送M个搜索字符串B1′、B2′、…、BM′和搜索方式。703、公有云服务器接收租户设备发送的M个搜索字符串B1′、B2′、…、BM′和搜索方式。704、公有云服务器将M个搜索字符串B1′、B2′、…、BM′与C1!C2!…!CN中包括的N个索引字符串进行匹配;若M=1,当所述M个搜索字符串与N个索引字符串中的一个索引字符串相同时,获取所述密文;若M≥2、且所述搜索方式为与方式时,当所述M个搜索字符串与N个索引字符串中的M个索引字符串相同时,获取所述密文;若M≥2、且所述搜索方式为或方式时,当所述M个搜索字符串中的任意一个搜索字符串与N个索引字符串中的一个索引字符串相同时,获取所述密文。当公有云服务器获取到密文时,执行步骤705至步骤707;当公有云服务器未获取到密文时,公有云服务器向租户设备发送搜索失败的消息。图7中以公有云服务器获取到密文为例进行绘制。705、公有云服务器向租户设备发送获取到的密文。706、租户设备接收公有云服务器发送的密文。707、租户设备采用可逆加密算法对应的解密算法将获取到的密文进行解密,得到敏感数据。具体的,获取密文的示例可参见表2所述的示例。本发明实施例提供的方法,在将目标关键词生成哈希认证码之后,采 用预设的编码方式对哈希认证码进行编码,得到索引字符串,当索引字符串有N个时,N个索引字符串为敏感数据的密文的N个索引,数据库服务器将密文和N个索引字符串对应存储在同一数据表中,由于索引字符串为可打印字符串,因此,可以直接通过SQL在数据库服务器中查询索引字符串。若需要对包含某个关键词的密文进行搜索时,采用目标关键词生成索引字符串的相同方法,将搜索关键词生成搜索字符串,通过SQL可以直接在数据库服务器中将搜索字符串与N个索引字符串进行匹配,确定是否获取密文,与现有技术相比,不用将密文的索引载入内存,节约了内存空间,并且可以提高密文搜索的速度。实施例四本发明实施例提供一种创建密文索引的装置80,用于执行图3所示的方法,如图8所示,该装置80包括:加密单元801,用于采用可逆加密算法对敏感数据进行加密得到所述敏感数据的密文;分词单元802,用于采用分词算法对所述敏感数据进行分词得到目标关键词;第一生成单元803,用于根据所述目标关键词和哈希算法,生成哈希认证码;编码单元804,用于采用预设编码方式对所述哈希认证码进行编码得到索引字符串,所述索引字符串为可打印字符串,所述索引字符串为所述密文的索引;发送单元805,用于向数据库服务器发送所述密文和所述索引字符串,以便于所述数据库服务器将所述密文和所述索引字符串存储在同一数据表中,所述索引字符串与所述密文是对应存储的。可选的,如图9所示,所述装置80还包括:截取单元806,用于截取所述哈希认证码的前r位,得到子哈希认证码,1≤r≤R,R和r均为整数,R为所述哈希认证码的长度;所述编码单元804,具体用于采用预设编码方式对所述子哈希认证码 进行编码得到索引字符串。可选的,如图9所示,当所述索引字符串的个数为N时,所述装置80还包括:置乱单元807,用于将N个索引字符串随机置乱,N≥1,N为整数;串连单元808,用于将随机置乱后的所述N个索引字符串串连起来,串连后的所述N个索引字符串中的相邻的索引字符串之间通过非所述预设编码方式中的可打印字符间隔开。可选的,如图9所示,所述装置80还包括:第一获取单元809,用于获取搜索关键词;第二生成单元810,用于采用将所述目标关键词生成所述索引字符串的相同方法,将所述搜索关键词生成搜索字符串,所述搜索字符串为可打印字符串;所述发送单元805,还用于向所述数据库服务器发送所述搜索字符串,以便于所述数据库服务器根据所述搜索字符串和存储的所述索引字符串搜索所述密文。可选的,如图9所示,所述装置80还包括:第二获取单元811,用于获取搜索语句;所述第一获取单元809,具体用于采用所述分词算法对所述搜索语句进行分词得到搜索关键词。本发明实施例提供的装置,在将目标关键词生成哈希认证码之后,采用预设的编码方式对哈希认证码进行编码,得到索引字符串,当索引字符串有N个时,N个索引字符串为敏感数据的密文的N个索引,数据库服务器将密文和N个索引字符串对应存储在同一数据表中,由于索引字符串为可打印字符串,因此,可以直接通过SQL在数据库服务器中查询索引字符串。若需要对包含某个关键词的密文进行搜索时,采用目标关键词生成索引字符串的相同方法,将搜索关键词生成搜索字符串,通过SQL可以直接在数据库服务器中将搜索字符串与N个索引字符串进行匹配,确定是否获取密文,与现有技术相比,不用将密文的索引载入内存,节约了内存空间,并且可以提高密文 搜索的速度。实施例五在硬件实现上,上述装置中的各个单元可以以硬件形式内嵌于或独立于该装置的处理器中,也可以以软件形式存储于该装置的存储器中,以便于处理器调用执行以上各个单元对应的操作,该处理器可以为中央处理单元(CPU)、微处理器、单片机等。如图10所示,本发明实施例提供另一种创建密文索引的装置100,用于执行如图3所示的方法,该装置100包括:存储器1001、处理器1002、发送器1003和总线系统1004。其中,存储器1001、处理器1002和发送器1003之间是通过总线系统1004耦合在一起的,其中存储器1001可能包含随机存取存储器,也可能还包括非易失性存储器,例如至少一个磁盘存储器。总线系统1004,可以是ISA总线、PCI总线或EISA总线等。该总线系统1004可以分为地址总线、数据总线、控制总线等。为便于表示,图10中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。存储器1001内存储一组代码,该代码用于控制处理器1002执行以下动作:采用可逆加密算法对敏感数据进行加密得到所述敏感数据的密文;采用分词算法对所述敏感数据进行分词得到目标关键词;根据所述目标关键词和哈希算法,生成哈希认证码;采用预设编码方式对所述哈希认证码进行编码得到索引字符串,所述索引字符串为可打印字符串,所述索引字符串为所述密文的索引;所述发送器1003,用于向数据库服务器发送所述密文和所述索引字符串,以便于所述数据库服务器将所述密文和所述索引字符串存储在同一数据表中,所述索引字符串与所述密文是对应存储的。可选的,所述处理器1002还用于:截取所述哈希认证码的前r位,得到子哈希认证码,1≤r≤R,R和r均为整数,R为所述哈希认证码的长度;所述处理器1002,具体用于采用预设编码方式对所述子哈希认证码进行编码得到索引字符串。可选的,当所述索引字符串的个数为N时,所述处理器1002还用于:将N个索引字符串随机置乱,N≥1,N为整数;将随机置乱后的所述N个索引字符串串连起来,串连后的所述N个索引字符串中的相邻的索引字符串之间通过非所述预设编码方式中的可打印字符间隔开。可选的,所述处理器1002还用于:获取搜索关键词;采用将所述目标关键词生成所述索引字符串的相同方法,将所述搜索关键词生成搜索字符串,所述搜索字符串为可打印字符串;所述发送器1003,还用于向所述数据库服务器发送所述搜索字符串,以便于所述数据库服务器根据所述搜索字符串和存储的所述索引字符串搜索所述密文。可选的,所述处理器1002还用于:获取搜索语句;所述处理器1002,具体用于采用所述分词算法对所述搜索语句进行分词得到搜索关键词。本发明实施例提供的装置,在将目标关键词生成哈希认证码之后,采用预设的编码方式对哈希认证码进行编码,得到索引字符串,当索引字符串有N个时,N个索引字符串为敏感数据的密文的N个索引,数据库服务器将密文和N个索引字符串对应存储在同一数据表中,由于索引字符串为可打印字符串,因此,可以直接通过SQL在数据库服务器中查询索引字符串。若需要对包含某个关键词的密文进行搜索时,采用目标关键词生成索引字符串的相同方法,将搜索关键词生成搜索字符串,通过SQL可以直接在数据库服务器中将搜索字符串与N个索引字符串进行匹配,确定是否获取密文,与现有技术相比,不用将密文的索引载入内存,节约了内存空间,并且可以提高密文搜索的速度。本发明实施例还提供了一种创建密文索引的系统,该系统包括上述装 置80和上述数据库服务器,或者,该系统包括上述装置100和上述数据库服务器。所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。上述描述的装置和模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接。另外,在本申请各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。以上所述,以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1