用于共享外包数据库的数据完整性验证方法

文档序号:6331896阅读:757来源:国知局
专利名称:用于共享外包数据库的数据完整性验证方法
技术领域
本发明属于计算机中的数据库应用技术领域,具体涉及一种用于共享外包数据库 的数据完整性验证方法。
背景技术
随着信息技术的迅速发展,为了提高工作效率,越来越多的企业为了管理内部大 量的数据,需要购买软、硬件设备,聘请专业技术人员维护数据,因此带来了人力资源成本 和企业运营成本的上升。鉴于传统数据管理的成本问题,越来越多的企业倾向于新的数据 管理模式——外包数据库,即企业将自己的数据交给数据库服务提供商实行数据托管。根 据支撑一个应用所需数据库服务器提供商的数量分为传统外包数据库和共享外包数据库。在外包数据库模式下,企业内部的数据脱离了企业自己的管理视线,可能被服务 提供商恶意地查询、修改、删除和插入数据,而企业数据中往往含有企业的商业秘密,一旦 泄密将给企业带来不良后果,甚至威胁企业生存。因此,在新型数据管理模式下,数据的保 密性和数据的完整性是重要的问题。传统外包数据库采用加密算法对数据进行加密,利用一个远程服务器实现对数据 的存储和管理。共享外包数据库采用数据分解的方法实现一定程度的数据保密,即将一个 数据分解为多个数据分片,存储在多个远程数据库服务提供商所提供的数据库服务器中, 由多个远程服务器管理数据。共享外包数据库模式下的数据分解方法虽然在一定程度上解 决了数据保密性问题,但是当数据被恶意修改、删除和插入后,仍然缺少一种机制来检验用 户查询到的数据是否被恶意修改或者删除过,同时发现是被哪个数据库服务提供商修改过 的。

发明内容
本发明的目的在于提出一种用于共享外包数据库数据的完整性验证方法,能够发 现哪些数据被恶意篡改,从而保障数据的完整性。用于共享外包数据库的数据完整性验证方法,对涉及的N个数据库服务提供商 DSP进行编号,将数据值real按如下方式分解并存储构建以DSP编号Xi为变量的多项式 g(Xi)=叫广+秘,+…+斗而+!^丨,将各DSP的编号分别代入多项式g(Xi)得到对应各 DSP应存储的数值,其中系数aj = f j (real), f j (real)为单调递增函数,j = 1,2,…,k_l, k < N ;验证方法具体如下任意选择k个DSP构成组合供查询用,对于查询条件中的匹配 数据值D,按照上述数据值分解和存储方式获得D对应的在这k个DSP应存储的数值,进而 将查询转换为对这k个DSP的查询,利用这k个查询结果和k个DSP的编号构建基于多项 Sg(Xi)' =a/ Xi"+^' x^+.'.+aH' Xi+real'形式的k元一次线性方程组,求解得到 系数a/和real'值,验证求取的a/和real'值是否满足a/ = f j (real ‘),若满足, 则完整性验证通过,否则不通过。
作为优化,若完整性验证不通过,重新选择k个DSP构成组合进行验证,直到完整 性验证通过,将通过验证的DSP组合与没有通过验证的DSP组合比较,以确定被篡改的DSP。本发明由于在利用k-Ι次多项式进行数据分解的过程中,设计了一种安全的系数 生成方法,利用k-Ι个单调递增函数,以待分解数据值作为单调递增函数的自变量,生成 k-Ι次多项式的系数,使得系数与原始数据保持一定的关系,因此在完整性验证过程中,通 过判断合成数据与合成多项式系数之间是否保持原有的单调递增函数关系,可确定数据的 完整性是否遭到破坏。本发明提供了一种快速判断数据完整性并确定篡改数据所在服务器 的方法。


图1为本发明方法流程图。
具体实施例方式下面结合附图和实施例对本发明作进一步的描述,但该实施例不应理解为对本发 明的限制。本发明分三个步骤实施在数据库中定义基本表Tablel (coll int),在N = 5个数据库服务提供商的数据 库服务器中创建同名的表,用于保存分解后的数据分片。假设此时K = 3,其中(X1,X2,X3, X4,X5) = (10,5,3,7,2),即将5个DSP分别编号为10,5,3,7,2。分解原始数据的多项式 *:aiXi2+a2Xi+real(i = l,…,5),其中real为真值,Xi取值为DSP服务器的编号。 系 数采用单调递增函数f(x) =2x+5生成,a2系数用单调递增函数g(x) = |_logx_|+6生成, 变量 χ = real。系统运行阶段,若需要将三条元组20,40,50存入5个DSP中,则分别用多项式 45x^+1(^+20、多项式85x^+11x^40和多项式105x^+11x450分解这三条元组,然后保存在 5个DSP中,存放形式如图2所示。图 2 数据 20,40,50在分解多项式451/+1(^广20、851/+111广40和 105x^+11x450 下得到的在5个DSP中的保存的数据。现在假设DSP2(编号为5)上的数据2220被篡改为2000,这个篡改可以是数据库
管理员利用管理工修改也可以是其它用户修改的。当用户发出查询请求select*from Tablel where coll > 30 时,使用 65Xi2+10Xi+30分解数值30,任意选择5个DSP中的3个完成这个查询请求,如选择查询编 号为2,3,5的DSP,则将上述查询语句转换为以下三条查询语句Select氺from Tablel where coll > 310order by coll ;Select氺from Tablel where coll > 645order by coll ;Select氺from Tablel where coll > 1770order by coll ;将这三条语句分别发往编号为2,3,5的DSP,得到的查询结果集可能有两种情况 (1)查询得到的三个结果集内数据个数不相等,此时即可判断查询到的结果发生了完整性 错误,即这三个DSP中的数据被插入或者删除过;(2)查询到的三个结果集内数据个数完 全相等,则需要采用求解线性方程组的方法,还原真值数据和多项式系数,并判断进一步判断多项式系数与真值数据是否满足单调递增增函数关系,若满足则完整性检查通过,否则 说明数据被篡改过。针对本例,分别得到的查询结果集分别为402、492,838、1028和2000、 2730,三个结果集的数据个数相等,说明需要进一步判断。另外,在查询时通过在指定的列 上进行排序,如本例中在coll列上排序,在正常情况下保证分别从三个结果集中每次按序 取得一个数据,而得到的三个数据值即是可以在恢复时还原原始数据的数据组。针对本例, 可以分两次按序取得两组数据集合{402,838,2000}、{492,1028,2730}。利用这两组数据 集合和分解多项式alXi2+a2Xi+real (其中xi是DSP的编号,针对本例xi = 2,3,5)解下列 两组线性方程组,合成真实数据-180和50,并计算两组多项式系数分别为145/3、583/3和 105、11。线性方程组(1):al*22+a2*2+real = 402al*32+a2*3+real = 838al*52+a2*5+real = 2000线性方程组(2):al*22+a2*2+real = 492al*32+a2*3+real = 1028al*52+a2*5+real = 2730由于al = 105,a2 = 11和真实值50之间满足单调递增函数f (χ) = 2χ+5和单调
递增函数g(x) = |_logx_|+6关系,因此判定合成的真实数据50没有被恶意篡改过。由于al = 145/3,a2 = 583/3和真实值-180之间不满足单调递增函数f (χ)= 2χ+5和单调递增函数g(x) = |_logx_|+6关系,因此判定合成的真实数据-180被恶意篡改 过。需要重新选择DSP的组合进行上述查询,例如选择查询编号为2,3,7的DSP,重新转换 查询语句select*from Tablel where coll > 30,使用 65x^+10x430 分解数值 30,将查询 语句转换为以下三条查询语句Select氺from Tablel where coll > 310order by coll ;Select氺from Tablel where coll > 645order by coll ;Select氺from Tablel where coll > 3285order by coll ;将这三条语句分别发往编号为2,3,7的DSP,分别得到的查询结果集分别为402、 492,838、1028和4282、5272,利用这三个结果集解线性方程组,合成真实数据。例如针对 402,838和4282,解线性方程组(3),并计算多项式系数分别为85和11。线性方程组(3):al*22+a2*2+real = 402al*32+a2*3+real = 838al*72+a2*7+real = 4282由于al = 85,a2 = 11和真实值40之间满足单调递增函数f (χ) = 2χ+5和单调 递增函数g(x) = |_logx_|+6关系,因此判定合成的真实数据40没有被恶意篡改过。根据 上次选择的DSP组合(编号为2,3,5的DSP)在检查查询结果时出现完整性检验错误,而这 次选择的DSP组合(编号为2,3,7的DSP)没有发生完整性错误,于是可以判定引起出错的 DSP是DSP2,即编号为5的DSP上的数据被篡改过。对于字符类型数据,可以取字符串中的每个字符,若为英文字符则取其ASCII码 作为一个数值,若为中文字符,则取其Unicode编码(或者其他中文编码)作为一个数 值,按照前述方法进行分解,再重新形成新的英文字符串或者中文字符串。例如对于字符串,abc’,若保存在本例编号为10的DSP中,则分别将字符’ a,、’ b,、,C,的ASCII码作 为三个数值,分别利用多项式IggxAuxjgTjoixAuxjgsjosxi^uxjgg转换为数 值20117(相当于两个字符’ Ν ’)、20318(相当于两个字符’ 0~ ’)、20519 (相当于两个字 符’ P' ’),将这三个数值转换的字符串串接起来即是’ Ν Ο~Ρ' ’保存。进行查询和完整性 验证的方法与数值数据的查询和完整性验证方法相同,在这里不再详述。
权利要求
用于共享外包数据库的数据完整性验证方法,对涉及的N个数据库服务提供商DSP进行编号,将数据值real按如下方式分解并存储构建以DSP编号xi为变量的多项式g(xi)=a1xik 1+a2xik 2+…+ak 1xi+real,将各DSP的编号分别代入多项式g(xi)得到对应各DSP应存储的数值,其中系数aj=fj(real),fj(real)为单调递增函数,j=1,2,…,k 1,k<N;验证方法具体如下任意选择k个DSP构成组合供查询用,对于查询条件中的匹配数据值D,按照上述数据值分解和存储方式获得D对应的在这k个DSP应存储的数值,进而将查询转换为对这k个DSP的查询,利用这k个查询结果和k个DSP的编号构建基于多项式g(xi)′=a1′xik 1+a2′xik 2+…+ak 1′xi+real′形式的k元一次线性方程组,求解得到系数aj′和real′值,验证求取的aj′和real′值是否满足aj′=fj(real′),若满足,则完整性验证通过,否则不通过。
2.根据权利要求1所述的数据完整性验证方法,其特征在于,若完整性验证不通过,重 新选择k个DSP构成组合进行验证,直到完整性验证通过,将通过验证的DSP组合与没有通 过验证的DSP组合比较,以确定被篡改的DSP。
全文摘要
本发明提供了一种用于共享外包数据库的数据完整性验证方法,具体为采用多项式将数据值分解为多个数据分片,并分别存储在多个数据库服务提供商DSP中,多项式以DSP编号为变量,其系数值由以数据值为变量的单调递增函数计算得到。查询时,通过将匹配数据值按照相同方式进行分解,进而将查询转换为对多个DSP的查询,依据查询结果和被查询DSP的编号构建基于上述多项式形式的一次线性方程组,求解方程组,验证求解得到的多项式系数和合成数据值是否满足前述单调递增函数关系,若满足,则完整性验证通过,否则不通过。本发明通过判断合成数据与多项式系数之间是否保持原有的单调递增函数关系,可确定数据的完整性是否遭到破坏,从而保障数据的完整性。
文档编号G06F17/30GK101937498SQ201010279080
公开日2011年1月5日 申请日期2010年9月13日 优先权日2010年9月13日
发明者付铨, 徐纲, 蔡畅, 韩朱忠 申请人:武汉达梦数据库有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1