《用于共享外包数据库的数据完整性验证方法.pdf》由会员分享,可在线阅读,更多相关《用于共享外包数据库的数据完整性验证方法.pdf(8页完整版)》请在专利查询网上搜索。
1、(10)申请公布号 CN 101937498 A (43)申请公布日 2011.01.05 CN 101937498 A *CN101937498A* (21)申请号 201010279080.0 (22)申请日 2010.09.13 G06F 21/00(2006.01) G06F 17/30(2006.01) (71)申请人 武汉达梦数据库有限公司 地址 430073 湖北省武汉市关山一路特 1 号 光谷软件园 C6 栋 5 层 (72)发明人 韩朱忠 徐纲 付铨 蔡畅 (74)专利代理机构 华中科技大学专利中心 42201 代理人 李智 (54) 发明名称 用于共享外包数据库的数据完整性。
2、验证方法 (57) 摘要 本发明提供了一种用于共享外包数据库的数 据完整性验证方法, 具体为 : 采用多项式将数据 值分解为多个数据分片, 并分别存储在多个数据 库服务提供商 DSP 中, 多项式以 DSP 编号为变量, 其系数值由以数据值为变量的单调递增函数计算 得到。 查询时, 通过将匹配数据值按照相同方式进 行分解, 进而将查询转换为对多个 DSP 的查询, 依 据查询结果和被查询 DSP 的编号构建基于上述多 项式形式的一次线性方程组, 求解方程组, 验证求 解得到的多项式系数和合成数据值是否满足前述 单调递增函数关系, 若满足, 则完整性验证通过, 否则不通过。本发明通过判断合成数据。
3、与多项式 系数之间是否保持原有的单调递增函数关系, 可 确定数据的完整性是否遭到破坏, 从而保障数据 的完整性。 (51)Int.Cl. (19)中华人民共和国国家知识产权局 (12)发明专利申请 权利要求书 1 页 说明书 4 页 附图 2 页 CN 101937499 A1/1 页 2 1. 用于共享外包数据库的数据完整性验证方法, 对涉及的 N 个数据库服务提供商 DSP 进行编号, 将数据值real按如下方式分解并存储 : 构建以DSP编号xi为变量的多项式g(xi) a1xik-1+a2xik-2+ak-1xi+real, 将各 DSP 的编号分别代入多项式 g(xi) 得到对应各 。
4、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和 r。
5、eal值是否满足 aj fj(real ), 若满足, 则 完整性验证通过, 否则不通过。 2. 根据权利要求 1 所述的数据完整性验证方法, 其特征在于, 若完整性验证不通过, 重 新选择 k 个 DSP 构成组合进行验证, 直到完整性验证通过, 将通过验证的 DSP 组合与没有通 过验证的 DSP 组合比较, 以确定被篡改的 DSP。 权 利 要 求 书 CN 101937498 A CN 101937499 A1/4 页 3 用于共享外包数据库的数据完整性验证方法 技术领域 0001 本发明属于计算机中的数据库应用技术领域, 具体涉及一种用于共享外包数据库 的数据完整性验证方法。 背景技。
6、术 0002 随着信息技术的迅速发展, 为了提高工作效率, 越来越多的企业为了管理内部大 量的数据, 需要购买软、 硬件设备, 聘请专业技术人员维护数据, 因此带来了人力资源成本 和企业运营成本的上升。鉴于传统数据管理的成本问题, 越来越多的企业倾向于新的数据 管理模式外包数据库, 即企业将自己的数据交给数据库服务提供商实行数据托管。根 据支撑一个应用所需数据库服务器提供商的数量分为传统外包数据库和共享外包数据库。 0003 在外包数据库模式下, 企业内部的数据脱离了企业自己的管理视线, 可能被服务 提供商恶意地查询、 修改、 删除和插入数据, 而企业数据中往往含有企业的商业秘密, 一旦 泄密。
7、将给企业带来不良后果, 甚至威胁企业生存。因此, 在新型数据管理模式下, 数据的保 密性和数据的完整性是重要的问题。 0004 传统外包数据库采用加密算法对数据进行加密, 利用一个远程服务器实现对数据 的存储和管理。共享外包数据库采用数据分解的方法实现一定程度的数据保密, 即将一个 数据分解为多个数据分片, 存储在多个远程数据库服务提供商所提供的数据库服务器中, 由多个远程服务器管理数据。 共享外包数据库模式下的数据分解方法虽然在一定程度上解 决了数据保密性问题, 但是当数据被恶意修改、 删除和插入后, 仍然缺少一种机制来检验用 户查询到的数据是否被恶意修改或者删除过, 同时发现是被哪个数据库。
8、服务提供商修改过 的。 发明内容 0005 本发明的目的在于提出一种用于共享外包数据库数据的完整性验证方法, 能够发 现哪些数据被恶意篡改, 从而保障数据的完整性。 0006 用于共享外包数据库的数据完整性验证方法, 对涉及的 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,。
9、 k-1, k N ; 0007 验证方法具体如下 : 任意选择k个DSP构成组合供查询用, 对于查询条件中的匹配 数据值 D, 按照上述数据值分解和存储方式获得 D 对应的在这 k 个 DSP 应存储的数值, 进而 将查询转换为对这 k 个 DSP 的查询, 利用这 k 个查询结果和 k 个 DSP 的编号构建基于多项 式g(xi)a1xik-1+a2xik-2+ak-1xi+real形式的k元一次线性方程组, 求解得到 系数 aj和 real值, 验证求取的 aj和 real值是否满足 aj fj(real ), 若满足, 则完整性验证通过, 否则不通过。 说 明 书 CN 1019374。
10、98 A CN 101937499 A2/4 页 4 0008 作为优化, 若完整性验证不通过, 重新选择 k 个 DSP 构成组合进行验证, 直到完整 性验证通过, 将通过验证的DSP组合与没有通过验证的DSP组合比较, 以确定被篡改的DSP。 0009 本发明由于在利用 k-1 次多项式进行数据分解的过程中, 设计了一种安全的系数 生成方法, 利用 k-1 个单调递增函数, 以待分解数据值作为单调递增函数的自变量, 生成 k-1 次多项式的系数, 使得系数与原始数据保持一定的关系, 因此在完整性验证过程中, 通 过判断合成数据与合成多项式系数之间是否保持原有的单调递增函数关系, 可确定数据。
11、的 完整性是否遭到破坏。 本发明提供了一种快速判断数据完整性并确定篡改数据所在服务器 的方法。 附图说明 0010 图 1 为本发明方法流程图。 具体实施方式 0011 下面结合附图和实施例对本发明作进一步的描述, 但该实施例不应理解为对本发 明的限制。 0012 本发明分三个步骤实施 : 0013 在数据库中定义基本表 Tablel(coll int), 在 N 5 个数据库服务提供商的数据 库服务器中创建同名的表, 用于保存分解后的数据分片。假设此时 K 3, 其中 (X1, X2, X3, X4, X5) (10, 5, 3, 7, 2), 即将 5 个 DSP 分别编号为 10, 5,。
12、 3, 7, 2。分解原始数据的多项式 为 : a1xi2+a2xi+real(i 1, 5), 其中 real 为真值, xi取值为 DSP 服务器的编号。a1系 数采用单调递增函数 f(x) 2x+5 生成, a2系数用单调递增函数 g(x) |_logx_|+6 生成, 变量 x real。 0014 系统运行阶段, 若需要将三条元组 20, 40, 50 存入 5 个 DSP 中, 则分别用多项式 45xi2+10xi+20、 多项式85xi2+11xi+40和多项式105xi2+11xi+50分解这三条元组, 然后保存在 5 个 DSP 中, 存放形式如图 2 所示。 0015 图2。
13、 : 数据20, 40, 50在分解多项式45xi2+10xi+20、 85xi2+11xi+40和105xi2+11xi+50 下得到的在 5 个 DSP 中的保存的数据。 0016 现在假设 DSP2( 编号为 5) 上的数据 2220 被篡改为 2000, 这个篡改可以是数据库 管理员利用管理工修改也可以是其它用户修改的。 0017 当 用 户 发 出 查 询 请 求 : select*from Tablel where coll 30 时,使 用 65xi2+10xi+30 分解数值 30, 任意选择 5 个 DSP 中的 3 个完成这个查询请求, 如选择查询编 号为 2, 3, 5 。
14、的 DSP, 则将上述查询语句转换为以下三条查询语句 : 0018 Select*from Tablel where coll 310order by coll ; 0019 Select*from Tablel where coll 645order by coll ; 0020 Select*from Tablel where coll 1770order by coll ; 0021 将这三条语句分别发往编号为 2, 3, 5 的 DSP, 得到的查询结果集可能有两种情况 : (1) 查询得到的三个结果集内数据个数不相等, 此时即可判断查询到的结果发生了完整性 错误, 即这三个 DSP 。
15、中的数据被插入或者删除过 ; (2) 查询到的三个结果集内数据个数完 全相等, 则需要采用求解线性方程组的方法, 还原真值数据和多项式系数, 并判断进一步判 说 明 书 CN 101937498 A CN 101937499 A3/4 页 5 断多项式系数与真值数据是否满足单调递增增函数关系, 若满足则完整性检查通过, 否则 说明数据被篡改过。针对本例, 分别得到的查询结果集分别为 402、 492, 838、 1028 和 2000、 2730, 三个结果集的数据个数相等, 说明需要进一步判断。另外, 在查询时通过在指定的列 上进行排序, 如本例中在 coll 列上排序, 在正常情况下保证分。
16、别从三个结果集中每次按序 取得一个数据, 而得到的三个数据值即是可以在恢复时还原原始数据的数据组。 针对本例, 可以分两次按序取得两组数据集合 402, 838, 2000、 492, 1028, 2730。利用这两组数据 集合和分解多项式 a1xi2+a2xi+real( 其中 xi 是 DSP 的编号, 针对本例 xi 2, 3, 5) 解下列 两组线性方程组, 合成真实数据 -180 和 50, 并计算两组多项式系数分别为 145/3、 583/3 和 105、 11。 0022 线性方程组 (1) : a1*22+a2*2+real 402 0023 a1*32+a2*3+real 8。
17、38 0024 a1*52+a2*5+real 2000 0025 线性方程组 (2) : a1*22+a2*2+real 492 0026 a1*32+a2*3+real 1028 0027 a1*52+a2*5+real 2730 0028 由于 a1 105, a2 11 和真实值 50 之间满足单调递增函数 f(x) 2x+5 和单调 递增函数 g(x) |_logx_|+6 关系, 因此判定合成的真实数据 50 没有被恶意篡改过。 0029 由于 a1 145/3, a2 583/3 和真实值 -180 之间不满足单调递增函数 f(x) 2x+5和单调递增函数g(x)|_logx_|。
18、+6关系, 因此判定合成的真实数据-180被恶意篡改 过。需要重新选择 DSP 的组合进行上述查询, 例如选择查询编号为 2, 3, 7 的 DSP, 重新转换 查询语句 : select*from Tablel where coll30, 使用65xi2+10xi+30分解数值30, 将查询 语句转换为以下三条查询语句 : 0030 Select*from Tablel where coll 310order by coll ; 0031 Select*from Tablel where coll 645order by coll ; 0032 Select*from Tablel wher。
19、e coll 3285order by coll ; 0033 将这三条语句分别发往编号为 2, 3, 7 的 DSP, 分别得到的查询结果集分别为 402、 492, 838、 1028 和 4282、 5272, 利用这三个结果集解线性方程组, 合成真实数据。例如针对 402, 838 和 4282, 解线性方程组 (3), 并计算多项式系数分别为 85 和 11。 0034 线性方程组 (3) : a1*22+a2*2+real 402 0035 a1*32+a2*3+real 838 0036 a1*72+a2*7+real 4282 0037 由于 a1 85, a2 11 和真实值。
20、 40 之间满足单调递增函数 f(x) 2x+5 和单调 递增函数 g(x) |_logx_|+6 关系, 因此判定合成的真实数据 40 没有被恶意篡改过。根据 上次选择的 DSP 组合 ( 编号为 2, 3, 5 的 DSP) 在检查查询结果时出现完整性检验错误, 而这 次选择的 DSP 组合 ( 编号为 2, 3, 7 的 DSP) 没有发生完整性错误, 于是可以判定引起出错的 DSP 是 DSP2, 即编号为 5 的 DSP 上的数据被篡改过。 0038 对于字符类型数据, 可以取字符串中的每个字符, 若为英文字符则取其 ASCII 码 作为一个数值, 若为中文字符, 则取其 Unico。
21、de 编码 ( 或者其他中文编码 ) 作为一个数 值, 按照前述方法进行分解, 再重新形成新的英文字符串或者中文字符串。例如对于字符 说 明 书 CN 101937498 A CN 101937499 A4/4 页 6 串 abc , 若保存在本例编号为 10 的 DSP 中, 则分别将字符 a 、 b 、 c的 ASCII 码作 为三个数值, 分别利用多项式 199xi2+12xi+97、 201xi2+12xi+98、 203xi2+12xi+99 转换为数 值 : 20117( 相当于两个字符 N )、 20318( 相当于两个字符 O )、 20519( 相当于两个字 符 P ), 将这三个数值转换的字符串串接起来即是 NOP 保存。进行查询和完整性 验证的方法与数值数据的查询和完整性验证方法相同, 在这里不再详述。 说 明 书 CN 101937498 A CN 101937499 A1/2 页 7 图 1 说 明 书 附 图 CN 101937498 A CN 101937499 A2/2 页 8 图 2 说 明 书 附 图 CN 101937498 A 。