一种数据库SQL字符串操作隐私保护方法及系统与流程

文档序号:33271415发布日期:2023-02-24 18:30阅读:27来源:国知局
一种数据库sql字符串操作隐私保护方法及系统
技术领域
:1.本发明属于信息安全
技术领域
:,特别是涉及一种数据库sql字符串操作隐私保护方法及系统。
背景技术
::2.随着云服务器的发展,越来越多的企业和个人把数据外包到公有云的数据库系统上进行管理。但是,云服务器数据泄露事件时有发生,数据安全成为用户采用云计算和云数据库的重大顾虑。3.在数据库加密隐私保护领域,早年的技术手段是使用des、aes等对称加密算法,但由于对称加密本身要求密文分布足够随机,无法对于密文再做一定的同态操作,故数据库服务器执行查询时仍然需要解密再做明文查询,这在一定程度上降低了隐私保护的强度。近年来,应用同态加密的技术手段被以增加数据库服务器直接对密文进行操作的能力的技术手段开始使用,有效提升隐私保护的强度。但是由于密码算法本身的特点,现有的数据库同态加密隐私保护方案几乎都是对数值类型的数据有较为完整的解决方案,例如数值加法、减法、乘法等等。无法适用于字符型的数据和操作类型占比更重的字符型数据库。4.为了支持对数据库的隐私字段字符串数据进行大部分标准的sql字符串操作,提出一种数据库sql字符串操作隐私保护方法及系统。技术实现要素:5.本发明实施例提出一种数据库sql字符串操作隐私保护方法及系统,以至少解决相关技术中不能支持对数据库的隐私字段字符串数据进行大部分标准的sql字符串操作的问题。6.根据本发明的一个实施例,提出一种数据库sql字符串操作隐私保护方法,包括:7.对数据库隐私字段的字符串数据执行同态加密;8.根据隐私字段字符串信息和同态加密信息计算辅助信息;9.根据加密后的数据和辅助信息构建密文数据表;10.识别涉及隐私字段的字符串操作类型;11.根据字符串操作类型使用数乘同态和/或加法同态和/或减法同态计算隐私字段字符串操作后的密文结果;12.根据隐私字段字符串操作后的密文结果和非隐私字段的查询结果得到用户的最终查询结果。13.在一个示例性实施例中,所述对数据库隐私字段的字符串数据执行同态加密,包括步骤:14.生成数据库中所需的明文二维表table_p;设table_p表共有m条数据与n个字段;15.用户指定其中的t个字段为隐私字段,分别为pf1,…,pft;16.选取随机的1024-bit的素数p和q,计算模数n=p·q,17.令g=n+1,λ=(p-1)·(q-1),计算μ=λ-1modn;18.用户所持paillier公钥为pk=(n,g),私钥为sk=(λ,μ);19.令i=1,2,…,t,j=1,2,…,m,用户使用paillier公钥pk同态加密所有隐私字段的字符串数据pfi_dataj,即在(0,n)中选取随机数r,满足r与n互素,计算密文pfi_dataj_c=(g^int(pfi_dataj))·(r^n)modn2,其中int(pfi_dataj)表示字符串数据pfi_dataj在ascii编码下转为的对应的大整数。20.在一个示例性实施例中,所述根据隐私字段字符串信息和同态加密信息计算辅助信息,包括步骤:21.使用paillier公钥pk加密pfi_dataj的每个单字符;22.计算字符串数据pfi_dataj的字符串长度,记为l;23.在(0,n)中选取l个不同的随机数r1,r2,…,rl,满足r1,r2,…,rl均与n互素,对于k=1,2,…,l,计算pfi_dataj的每个单字符的密文pfi_dataj_sk_c=(g^int(pfi_dataj_sk))*(rk^n)modn2;24.将每个单字符的密文pfi_dataj_sk_c和字符串长度l拼合成列表pfi_dataj_aux作为辅助信息。25.在一个示例性实施例中,所述根据加密后的数据和辅助信息构建密文数据表,包括步骤:26.在明文数据表table_p中,用密文数据pfi_dataj_c代替明文数据pfi_dataj;27.新增t个字段,其中第i字段的第j行储存字符串pfi_dataj的辅助信息pfi_dataj_aux,组成密文数据表table_c;28.上传密文数据表table_c至数据库服务器进行储存。29.在一个示例性实施例中,所述识别涉及隐私字段的字符串操作类型,包括步骤:30.用户提交涉及隐私字段的字符串操作sql语句,记为sql_state;31.数据库服务器dbs分析语句sql_state,确定隐私字段的字符串操作类型;所述字符串操作类型包括concat(pf1,pf2)连接操作、substr(pf,start,len)取子串操作、position(strinpf)返回位置操作、trim(charfrompf)删除字符操作、upper(pf)转大写操作、lower(pf)转小写操作、initcap(pf)首字母转大写操作。32.在一个示例性实施例中,所述根据字符串操作类型使用数乘同态和/或加法同态和/或减法同态计算隐私字段字符串操作后的密文结果,包括步骤:33.识别字符串操作类型所对应的整数操作;34.利用辅助信息将整数操作转化为同态操作并以此计算隐私字段字符串操作后的密文结果。35.在一个示例性实施例中,所述识别字符串操作类型所对应的整数操作,包括:36.所述concat(pf1,pf2)连接操作是连接隐私字段pf1和pf2的对应字符串,其整数操作:comp=int(pf1)*256^len(pf2)+int(pf2);37.所述substr(pf,start,len)取子串操作是截取隐私字段pf字符串从start开始,长度为len的子串的对应字符串,其整数操作:comp=int(sstart+len-1)*256^0+…+int(sstart)*256^(len-1),其中si指的是隐私字段pf字符串中的第i个字符;38.所述position(strinpf)返回位置操作是返回子串str在隐私字段pf字符串中的起始位置的对应字符串,其整数操作:对于某个k,int(pf)-int(str)*256^k的字符串形式中有len(str)个连续的0字符,则位置为len(pf)-len(str)+1-k;39.所述trim(charfrompf)删除字符操作是删除隐私字段pf字符串中的前导重复字符char的对应字符串,其整数操作:comp=int(pf)-int(kchar’s)*256^(len(pf)–k+1);40.所述upper(pf)转大写操作是将隐私字段pf字符串所有字符转成大写的对应字符串,其整数操作:comp=int(pf)+32*(1+256+…+256^(len(pf)-1));41.所述lower(pf)转小写操作是将隐私字段pf字符串所有字符转成小写的对应字符串,其整数操作:comp=int(pf)-32*(1+256+…+256^(len(pf)-1));42.所述initcap(pf)首字母转大写操作是将隐私字段pf字符串首字符转成大写的对应字符串,其整数操作:comp=int(pf)+32*256^(len(pf)-1)。43.在一个示例性实施例中,所述使用同态操作计算隐私字段字符串操作后的密文结果,包括:44.concat(pf1,pf2)连接操作:利用辅助信息中的字符串长度,使用paillier数乘同态结合paillier加法同态,即对于j=1,2,…,m,计算密文结果compj_c=pf1_dataj^(256^len(pf2))*pf2_datajmodn2;45.substr(pf,start,len)取子串操作:利用辅助信息中的单字符加密结果,使用paillier数乘同态结合paillier加法同态,即对于j=1,2,…,m,计算密文结果compj_c=pf_dataj_sstart+len–1_c^(256^0)*…*pf_dataj_sstart_c^(256^(len–1))modn2;46.position(strinpf)返回位置操作:利用辅助信息中的字符串长度,使用paillier数乘同态结合paillier减法同态,即对于j=1,2,…,m,k=1,2,…,len(pf)-len(str),计算密文结果compj_ck=pf_dataj*(e(str)^(256^k))-1modn2;47.trim(charfrompf)删除字符操作:利用辅助信息中的字符串长度,使用paillier数乘同态结合paillier减法同态,即对于j=1,2,…,m,计算密文结果compj_c=pf_dataj*(e(kchar’s)^(256^(len(pf)–k+1)))-1modn2,其中e(kchar’s)表示连续k个重复字符char组成字符串的paillier加密结果;48.upper(pf)转大写操作:利用辅助信息中的字符串长度,用paillier加法同态,即对于j=1,2,…,m,计算密文结果compj_c=pf_dataj*e(32*(1+256+…+256^(len(pf)-1)))modn2,其中e(const)表示常数const的paillier加密结果;49.lower(pf)转小写操作:利用辅助信息中的字符串长度,用paillier减法同态,即对于j=1,2,…,m,计算密文结果compj_c=pf_dataj*e(32*(1+256+…+256^(len(pf)-1)))-1modn2;50.initcap(pf)首字符转大写操作:利用辅助信息中的字符串长度,用paillier加法同态,即对于j=1,2,…,m,计算密文结果compj_c=pf_dataj*e(32*256^(len(pf)-1))modn2。51.在一个示例性实施例中,所述根据隐私字段字符串操作的密文结果和非隐私字段的查询结果得到用户的最终查询结果,包括步骤:52.服务器将隐私字段字符串操作的密文结果comp_c连同非隐私字段的查询结果res返回给用户;53.用户利用paillier私钥sk执行对隐私字段字符串操作的密文结果进行解密;用户结合隐私字段字符串的解密结果和非隐私字段的查询结果得到最终查询结果。54.根据本发明的另一个实施例,提供了一种数据库sql字符串操作隐私保护系统,包括:55.处理器;56.存储器;57.以及58.一个或多个程序,其中所述一个或多个程序被存储在存储器中,并且被配置成由所述处理器执行,所述程序使计算机执行上述方法。59.本发明的数据库sql字符串操作隐私保护方法及系统具有的优点是:60.(1)根据隐私字段字符串信息和同态加密信息计算辅助信息并根据加密后的数据和辅助信息构建密文数据表,相比传统的数据库加密技术方案,可以有效降低数据库加密的复杂性,提高数据库的密文查询效率。61.(2)根据字符串操作类型使用paillier数乘同态和/或paillier加法同态和/或paillier减法同态计算隐私字段字符串操作后的密文结果,相比传统的只能对数值类型数据进行加密操作的技术方案,可以有效实现对字符类数据库的加密操作,提高数据库查询的保密性。62.(3)根据隐私字段字符串操作后的密文结果和非隐私字段的查询结果得到用户的最终查询结果,相比传统的仅支持明文操作或仅支持密文操作的数据库技术方案,可以有效实现数据库明文和密文的混合操作,提高加密数据库的场景适应性。63.(4)将隐私字段的字符串分割为多段并根据各段字符串的长度相似度和/或字符串的汉明重量相似度和/或重复字符的比例计算字符串段之间的关联值,根据关联值对字符串进行组合重构,相比传统的对完整字符串操作的技术方案,可以有效增加冗余,降低大范围出错的概率,提高加密数据库查询效率。附图说明64.图1是本发明实施例的一种数据库sql字符串操作隐私保护方法的流程图;65.图2是本发明实施例的子步骤s01的流程图;66.图3是本发明实施例的子步骤s02的流程图;67.图4是本发明实施例的子步骤s03的流程图;68.图5是本发明实施例的子步骤s04的流程图;69.图6是本发明实施例的子步骤s05的流程图;70.图7是本发明实施例的子步骤s06的流程图;71.图8是本发明实施例的一种数据库sql字符串操作隐私保护系统结构示意图。具体实施方式72.下面结合具体实施例对本发明进行详细说明。以下实施例将有助于本领域的技术人员进一步理解发明,但不以任何形式限制本发明。应当指出的是,对本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变化和改进。这些都属于本发明的保护范围。73.本发明实施例的一种数据库sql字符串操作隐私保护方法,流程图如图1所示,包括步骤:74.步骤s01、对数据库隐私字段的字符串数据执行同态加密;75.步骤s02、根据隐私字段字符串信息和同态加密信息计算辅助信息;76.步骤s03、根据加密后的数据和辅助信息构建密文数据表;77.步骤s04、识别涉及隐私字段的字符串操作类型;78.步骤s05、根据字符串操作类型使用数乘同态和/或加法同态和/或减法同态计算隐私字段字符串操作后的密文结果;79.步骤s06、根据隐私字段字符串操作后的密文结果和非隐私字段的查询结果得到用户的最终查询结果;80.在一个示例性实施例中,所述步骤s01,流程图如图2所示,包括:81.步骤s011、生成数据库中所需的明文二维表table_p;设table_p表共有m条数据与n个字段;82.步骤s012、用户指定其中的t个字段为隐私字段,分别为pf1,…,pft;83.步骤s013、选取随机的1024-bit的素数p和q,计算模数n=p·q;令g=n+1,λ=(p-1)·(q-1),计算μ=λ-1modn;84.步骤s014、用户所持paillier公钥为pk=(n,g),私钥为sk=(λ,μ);85.步骤s015、令i=1,2,…,t,j=1,2,…,m,用户使用paillier公钥pk同态加密所有隐私字段的字符串数据pfi_dataj,即在(0,n)中选取随机数r,满足r与n互素,计算密文pfi_dataj_c=(g^int(pfi_dataj))·(r^n)modn2,其中int(pfi_dataj)表示字符串数据pfi_dataj在ascii编码下转为的对应的大整数。86.在一个示例性实施例中,所述步骤s02,流程图如图3所示,包括:87.步骤s021、使用paillier公钥pk加密pfi_dataj的每个单字符;88.步骤s022、计算字符串数据pfi_dataj的字符串长度,记为l;89.步骤s023、在(0,n)中选取l个不同的随机数r1,r2,…,rl,满足r1,r2,…,rl均与n互素,对于k=1,2,…,l,计算pfi_dataj的每个单字符的密文pfi_dataj_sk_c=(g^int(pfi_dataj_sk))*(rk^n)modn2;90.步骤s024、将每个单字符的密文pfi_dataj_sk_c和字符串长度l拼合成列表pfi_dataj_aux作为辅助信息。91.在一个示例性实施例中,所述步骤s03,流程图如图4所示,包括:92.步骤s031、在明文数据表table_p中,用密文数据pfi_dataj_c代替明文数据pfi_dataj;93.步骤s032、新增t个字段,其中第i字段的第j行储存字符串pfi_dataj的辅助信息pfi_dataj_aux,组成密文数据表table_c;94.步骤s033、上传密文数据表table_c至数据库服务器进行储存。95.在一个示例性实施例中,所述步骤s04,流程图如图5所示,包括:96.步骤s041、用户提交涉及隐私字段的字符串操作sql语句,记为sql_state;97.步骤s042、数据库服务器dbs分析语句sql_state,确定隐私字段的字符串操作类型;所述字符串操作类型包括concat(pf1,pf2)连接操作、substr(pf,start,len)取子串操作、position(strinpf)返回位置操作、trim(charfrompf)删除字符操作、upper(pf)转大写操作、lower(pf)转小写操作、initcap(pf)首字母转大写操作。98.在一个示例性实施例中,所述步骤s05,流程图如图6所示,包括:99.步骤s051、识别字符串操作类型所对应的整数操作;100.步骤s052、利用辅助信息将整数操作转化为同态操作并以此计算隐私字段字符串操作后的密文结果。101.本实施例中,云服务器cs将所有结果compi,j发送给可信第三方ttp;由可信第三方ttp根据所有paillier私钥执行所有结果compi,j的解密,即计算deci,j=(compi,j^λf(i)modnf(i)2-1)/nf(i)·μf(i)modnf(i)2;102.可信第三方ttp对于解密结果大整数deci,j解码成字符串(全英文的关键词使用ascii编码,中英文的关键词使用utf-8编码),求出其字符串长度leni,j,其字符形式下的汉明重量hwi,j(即不为0字符的字符个数),以及重复字符比重rei,j(即字符类别数量与总字符数的比值)。103.在一个示例性实施例中,所述步骤s051中各字符串操作类型所对应的证书操作包括:所述concat(pf1,pf2)连接操作是连接隐私字段pf1和pf2的对应字符串,其整数操作:comp=int(pf1)*256^len(pf2)+int(pf2);104.所述substr(pf,start,len)取子串操作是截取隐私字段pf字符串从start开始,长度为len的子串的对应字符串,其整数操作:comp=int(sstart+len-1)*256^0+…+int(sstart)*256^(len-1),其中si指的是隐私字段pf字符串中的第i个字符;105.所述position(strinpf)返回位置操作是返回子串str在隐私字段pf字符串中的起始位置的对应字符串,其整数操作:对于某个k,int(pf)-int(str)*256^k的字符串形式中有len(str)个连续的0字符,则位置为len(pf)-len(str)+1-k;106.所述trim(charfrompf)删除字符操作是删除隐私字段pf字符串中的前导重复字符char的对应字符串,其整数操作:comp=int(pf)-int(kchar’s)*256^(len(pf)–k+1);107.所述upper(pf)转大写操作是将隐私字段pf字符串所有字符转成大写的对应字符串,其整数操作:comp=int(pf)+32*(1+256+…+256^(len(pf)-1));108.所述lower(pf)转小写操作是将隐私字段pf字符串所有字符转成小写的对应字符串,其整数操作:comp=int(pf)-32*(1+256+…+256^(len(pf)-1));109.所述initcap(pf)首字母转大写操作是将隐私字段pf字符串首字符转成大写的对应字符串,其整数操作:comp=int(pf)+32*256^(len(pf)-1)。110.在一个示例性实施例中,所述步骤s051中各字符串操作类型使用同态操作计算隐私字段字符串操作后的密文结果,包括:concat(pf1,pf2)连接操作:利用辅助信息中的字符串长度,使用paillier数乘同态结合paillier加法同态,即对于j=1,2,…,m,计算密文结果compj_c=pf1_dataj^(256^len(pf2))*pf2_datajmodn2;111.substr(pf,start,len)取子串操作:利用辅助信息中的单字符加密结果,使用paillier数乘同态结合paillier加法同态,即对于j=1,2,…,m,计算密文结果compj_c=pf_dataj_sstart+len–1_c^(256^0)*…*pf_dataj_sstart_c^(256^(len–1))modn2;112.position(strinpf)返回位置操作:利用辅助信息中的字符串长度,使用paillier数乘同态结合paillier减法同态,即对于j=1,2,…,m,k=1,2,…,len(pf)-len(str),计算密文结果compj_ck=pf_dataj*(e(str)^(256^k))-1modn2;113.trim(charfrompf)删除字符操作:利用辅助信息中的字符串长度,使用paillier数乘同态结合paillier减法同态,即对于j=1,2,…,m,计算密文结果compj_c=pf_dataj*(e(kchar’s)^(256^(len(pf)–k+1)))-1modn2,其中e(kchar’s)表示连续k个重复字符char组成字符串的paillier加密结果;114.upper(pf)转大写操作:利用辅助信息中的字符串长度,用paillier加法同态,即对于j=1,2,…,m,计算密文结果compj_c=pf_dataj*e(32*(1+256+…+256^(len(pf)-1)))modn2,其中e(const)表示常数const的paillier加密结果;115.lower(pf)转小写操作:利用辅助信息中的字符串长度,用paillier减法同态,即对于j=1,2,…,m,计算密文结果compj_c=pf_dataj*e(32*(1+256+…+256^(len(pf)-1)))-1modn2;116.initcap(pf)首字符转大写操作:利用辅助信息中的字符串长度,用paillier加法同态,即对于j=1,2,…,m,计算密文结果compj_c=pf_dataj*e(32*256^(len(pf)-1))modn2。117.本实施例中,所述trim(charfrompf)删除字符操作需要提前知道前导重复字符char的个数k;所述upper(pf)转大写操作需要原字符串所有字母均为小写;所述lower(pf)转小写操作需要原字符串所有字母均为大写;initcap(pf)首字符转大写操作需要原字符串所有字母均为小写。118.以position(strinpf)返回位置操作为例,计算decj,k=(compj_ck^λmodn2-1)/n*μmodn2,若某个decj,k的ascii解码字符串形式中有k个连续的0,则令decj为所有满足条件的len(pf)-len(str)+1–k中最小的值,即为求position操作的结果。119.在一个示例性实施例中,在步骤s052之前,还包括步骤:120.将隐私字段的字符串平均分割或随机分割为多段;121.根据各段字符串的长度相似度和/或字符串的汉明重量相似度和/或重复字符的比例计算字符串段之间的关联值;122.将关联值大于或等于设定阈值的字符串进行组合连接,并根据上述实施方式所述的字符串操作类型对应的操作计算相应的密文结果;123.将关联值小于设定阈值的字符串单独执行上述实施方式所述的字符串操作类型对应的操作计算相应的密文结果;124.对密文结果按照原字符串连接方式进行重新组合,形成完整密文结果。125.本实施例中,所述根据各段字符串的长度相似度和/或字符串的汉明重量相似度和/或重复字符的比例计算字符串段之间的关联值,是:根据字符串的长度相似度与字符串段之间的关联值的正相关关系计算字符串段之间的关联值、根据字符串的汉明重量相似度与同态标示值的正相关关系计算字符串段之间的关联值、根据重复字符的比例与字符串段之间的关联值的正相关关系计算字符串段之间的关联值、根据字符串的长度相似度和字符串的汉明重量相似度与字符串段之间的关联值的正相关关系计算字符串段之间的关联值、根据字符串的长度相似度和重复字符的比例与字符串段之间的关联值的正相关关系计算字符串段之间的关联值、根据字符串的汉明重量相似度和重复字符的比例与字符串段之间的关联值的正相关关系计算字符串段之间的关联值、根据字符串的长度相似度和字符串的汉明重量相似度和重复字符的比例与字符串段之间的关联值的正相关关系计算字符串段之间的关联值的任一项,字符串段之间的关联值用变量x表示。126.表a中a1~a7表示计算字符串段之间的关联值的不同实施方式,表a中任一项所述的方法用于计算某两段字符串之间的关联值,为便于表达,字符串的长度相似度表示为e,字符串的汉明重量相似度表示为w,重复字符的比例表示为y。127.表a计算字符串段之间的关联值的不同实施方式128.129.130.131.132.[0133][0134]本实施例中,事先设置的关联阈值x=2,根据表a中任一项计算得到某两个字符串之间的关联值x(例如a7)》x,则判定这两个字符串之间关联性强(属于同等处理的概率大),将两个字符串进行组合连接并根据上述实施方式所述的字符串操作类型对应的操作计算相应的密文结果。对两两字符串执行上述步骤,并将得到的所有密文结果按照原字符串的顺序拆分组合形成完整的密文结果。[0135]在一个示例性实施例中,所述步骤s06,流程图如图7所示,包括步骤:[0136]步骤s061、服务器将隐私字段字符串操作的密文结果comp_c连同非隐私字段的查询结果res返回给用户;[0137]步骤s062、用户利用paillier私钥sk执行对隐私字段字符串操作的密文结果进行解密;[0138]步骤s063、用户结合隐私字段字符串的解密结果和非隐私字段的查询结果得到最终查询结果。[0139]本实施例中,用户利用paillier私钥sk执行对隐私字段计算结果compj_c的解密,即计算decj=(compj_c^λmodn2-1)/n*μmodn2,得到隐私字段的明文查询结果。若字符串操作为求位置操作(position),则计算decj,k=(compj_ck^λmodn2-1)/n*μmodn2,若某个decj,k的ascii解码字符串形式中有k个连续的0,则令decj为所有满足条件的len(pf)-len(str)+1–k中最小的值,即为求position操作的结果。[0140]用户结合隐私字段与非隐私字段的查询结果,即dec与res,得到最终查询结果,完成查询。[0141]为了帮助更好地理解本发明的细节,以下举出一个sql字符串substr同态操作的具体实施示例。由于数据规模的限制,这里只采用paillier加密中模数n=p*q为128比特的情形进行阐述。在实际过程中应采用更大的安全参数。[0142]1)paillier加密参数设置:[0143]p=12458956711587562123,[0144]q=14717327422403960303,[0145]pk:n=p*q=183362545265991497115233232112238403269,[0146]sk:λ=(p-1)*(q-1)=183362545265991497088056947978246880844,[0147]μ=λ-1modn=161629877898154436766220129125868491783.[0148]2)假设某个明文数据表中包含隐私字段“邮箱”,而某条数据记录的邮箱字段值为“amanda79@gmail.com”,其ascii编码序列为[0x61,0x6d,0x61,0x6e,0x64,0x61,0x37,0x39,0x40,0x67,0x6d,0x61,0x69,0x6c,0x2e,0x63,0x6f,0x6d]=[97,109,97,110,100,97,55,57,64,103,109,97,105,108,46,99,111,109]。其对应的整数为97*25617+109*25616+97*25615+110*25614+100*25613+97*25612+55*25611+57*25610+64*2569+103*2568+109*2567+97*2566+105*2565+108*2564+46*2563+99*2562+111*256+109*1=8487112021679314975928238817989101690777453。[0149]该字符串“amanda79@gmail.com”的明文整数用paillier同态加密后密文s_c=16421177971230616094813243732203526778897157164570988834906208124785563949299。[0150]辅助信息则由字符串“amanda79@gmail.com”的每个单字符执行加密以及该字符串长度“18”所组成,所有18个单字符加密结果组成的密文向量[s0_c,s1_c,…,s17_c]如下:[0151][1864489722459001359312327125958837142062865807877209715040460012822396283732,15263343186963627304869080496271834382145558360014068134662778915138566223363,6715269770448632728391703563179078453094980520399663395962437087134567250503,18893740853837748132975971667582067229976106623749238440289811757525469116026,2980953922938028319993702417697035673139395881943227317937883060001563865424,11475882251610573976169113982398288919955165842406294580041752853430500074444,13064814761293642240963133155092137630695556935172293379016921198530535922999,2658233846968359448304435075388864285945241033662408417519729464335496178379,15779358333698166913199594616241838968949372892689754396103627816196600032597,27825391136944981953732818771975339608498232926262033037177831720162541638862,26505800618604023912862812670043831520548887181407206426166364104178644809064,23969404367943273699010230965953984781840693284099007632678936204532325120969,3874152071131510947011054498463468726685155673515181577371034303432544268758,26506071894494143103619603069059918073606482995356414647167708018946942264419,28240719218912120573511318707469946481633069873045299976890962868024472662318,25639547039614734088419586561744832422706237547806718986839514816057387455392,23253415027892258386566699319903676051739114008581022132868458021250194602686,6115016326737349251199728856507746440860045399298894819054060909576479607405].[0152]3)假设查询者输入查询语句substr(邮箱,0,6),即截取所有邮箱数据的前6个字符组成的子串,并提交查询给数据库服务器。[0153]4)数据库服务器解析该查询语句,发现其是对隐私字段“邮箱”进行substr操作,则其会将根据“邮箱”的辅助信息进行同态操作,对于明文邮箱“amanda79@gmail.com”对应的这条记录,利用辅助信息中的字符串长度l=18,及密文向量[s0_c,…,s17_c],对于start=0,len=6,执行同态运算comp_c=s5_c^(256^0)*…*s0_c^(256^5)modn2,得到的密文计算结果为19370969684580705572617849333841157976386556266039400730944135701731308482944,并将此结果发回给查询用户。[0154]5)查询用户将收到的密文计算结果执行同态解密,得到解密结果为107122413954145,再对其进行256进制表示,假设字符统一长度上限为20,由于107122413954145=97*2565+109*2564+97*2563+110*2562+100*2561+97*1,即得到的解码序列为[0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,109,97,110,100,97]。进一步得到此字符串为“amanda”,其确实是查询“substr(‘amanda79@gmail.com’,0,6)”的返回结果,即“amanda79@gmail.com”的前6个字符,substr查询结果正确,完成查询。[0155]本发明实施例的一种数据库sql字符串操作隐私保护系统,结构示意图如图8所示,包括:[0156]处理器;[0157]存储器;[0158]以及[0159]一个或多个程序,其中所述一个或多个程序被存储在存储器中,并且被配置成由所述处理器执行,所述程序使计算机执行上述方法。[0160]当然,本
技术领域
:中的普通技术人员应当认识到,以上实施例仅是用来说明本发明的,而并非作为对本发明的限定,只要在本发明的范围内,对以上实施例的变化、变型都将落入本发明的保护范围。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1