第6章数据库安全.ppt_第1页
第6章数据库安全.ppt_第2页
第6章数据库安全.ppt_第3页
第6章数据库安全.ppt_第4页
第6章数据库安全.ppt_第5页
已阅读5页,还剩102页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第6章数据库安全 本章要点 数据库完整性 记录完整性 数据正确性和更新完整性数据库安全 访问控制 推理和聚集多级安全数据库 分区 加密封装和过滤数据数据挖掘应用的安全 保护数据是大多数安全系统的核心 许多用户依靠数据库管理系统 dbms databasemanagementsystem 来管理并保护数据 基于此原因 我们重点研究数据库管理系统的安全 并将其作为一个示例来说明如何设计并实现完成特殊任务的应用程序的安全 然而 数据库管理系统仅提供一个综合保护效果 长期以来 我们已经深化了对数据库安全问题的理解 并且获得了一些好的控制方法 但是 也有一些仍然无法控制的安全隐患 6 1数据库简介 6 1 1数据库概念数据库 database 是数据以及按某种指定关系组织数据的一组规则的集合 用户使用这些规则来描述数据的逻辑格式 数据项存储在文件中 但是用户不必关心文件的精确物理格式 数据库管理员 databaseadministrator 负责定义组织数据的规则和控制对数据库的访问 用户通过数据库管理器 databasemanager 或数据库管理系统 dbms 程序 非正式地称为前端 frontend 使用数据库 6 1 2数据库组成 数据库文件由记录 record 组成 每个记录包含了一组相关的数据 每个记录包含域 field 或元素 element 即它们的基本数据项 表6 1一个数据库的实例 6 1 2数据库组成 续 图6 1一个数据库的相关部分 并非所有数据库都可以非常容易地用一张单一 紧凑的表来表示 6 1 2数据库组成 续 数据库的逻辑结构称为模式 schema 一名特殊的用户可能只允许访问数据库的一部分 称之为子模式 subschema 表6 2图6 1中的数据库模式 6 1 2数据库组成 续 数据库的规则要求以列名识别列 列名也称为数据库的属性 attribute 列的集合构成了一个关系 relation 关系描述了有关数据值的簇 cluster 每一簇可能会是2 3 4 n元组 n表示任意值 表6 3数据库中的关系 6 1 2数据库组成 续 查询操作用户通过dbms的命令与数据库交互 命令有 检索 修改 增加或删除数据库中的域和记录 查询 query 是一个命令 数据库管理系统有构成查询语句的精确的语法规则 大多数查询语言使用类英语符号表示 其中很多以sql语言为基础 查询结果为一个子模式 该模式由满足给定条件的记录构成 6 1 2数据库组成 续 例如 selectzip 43210 另外 更复杂的选择条件包含逻辑运算 如 或 以及比较运算符 例如 select zip 43210 name adams 表6 4选择查询的结果 6 1 2数据库组成 续 在选择了记录后 我们可以对这些记录的一个或多个属性进行投影 project 运算 投影操作是从这些满足条件的记录中选取满足条件的列 域 选择 投影操作的结果是选择的记录在指定属性上值的集合 例如 showname firstwherezip 43210 表6 5选择 投影查询结果 6 1 2数据库组成 续 我们也可以使用连接 join 查询来根据相同的元素合并两个模式 该操作的结果是一个子模式 该子模式在相同元素上有相同的值 例如 selectname airportfromname zipjoinzip aiportonname zip zip zip aiport zip 图6 2选择 投影 连接查询的结果 6 1 3数据库的优点 数据库是数据的一个集合 它被集中存储和维护 以满足人们的访问需求 这样 与简单的文件系统相比 数据库提供了很多好处 共享访问 以便用户使用一些公共 集中的数据 最小冗余 使用户不必自己收集和保存数据集 数据一致性 改变一个数据值将影响所有使用该数据值的用户 数据完整性 保护数据值 使偶然或恶意的行为不会改变数值 访问控制 只有授权用户才允许浏览或修改数据值 数据库的安全利益和性能之间存在冲突 这种冲突不足为怪 因为加强安全措施通常要增加计算机系统的规模和复杂度 6 2安全需求 以下为数据的安全需求 1 数据库的物理完整性 数据库中的数据不受停电之类影响 并且人们可以重建被破坏的数据库 2 数据库的逻辑完整性 保护数据库的结构 3 元素的完整性 每个元素中包含的数据都是正确的 4 可审计性 可追踪谁访问了数据库中的哪些元素 5 访问控制 用户只能访问被授权的用户 6 用户鉴别 对每个用户都必须鉴别 7 可用性 用户可以访问数据库中的授权数据和一般数据 6 2 1数据库完整性 如果数据库以集中的数据仓库方式提供数据访问服务 则用户必须相信其中的数据值是正确的 有两种情况会影响数据的完整性 整个数据库被损坏以及单个数据项变得不可读 整个数据库的完整性由dbms 操作系统和计算系统管理员负责 保护整个数据库的方法之一是定期备份数据库系统中的所有文件 有时 能够在故障点重建数据库非常重要 dbms需要维护一个事务日志 在系统发生故障后 可通过重新装入数据库的后备副本并重新执行 日志 记录所有的事务 而获得用户的正确状态 6 2 2元素完整性 元素完整性指数据库元素的正确性或准确性 dbms采用三种方式来维护数据库中每个元素的完整 1 dbms可以利用域检查 fieldcheck 确保某个域的所有值在合适的范围之内 域检查确保了值在指定界内或不大于另外两个域的值之和 也可防止一些简单的错误 如用户输入数据错误 6 2 2元素完整性 续 2 访问控制 accesscontrol 以及集中管理的方式 但谁该共享重要的文件 谁拥有更新元素的权限 如果两个用户更改时相互冲突 如何解决 如何检查和处理重复记录 都是数据库管理员需要解决的问题 3 更改日志 changelog 更改日志维护和保存了数据库的每次修改 同时记录初始值和更新值 6 2 3可审计性 在某些应用中 需要产生关于数据库的所有访问 或读写 的审计记录 这个记录可以协助维护数据库的完整性 至少可以在发生故障后 为分析解决问题提供依据 另一个优点是可以掌握用户不断增加对被保护数据的访问 单一的访问不会暴露被保护的数据 但在一系列连续的访问后 将数据综合起来就可能发现被保护的数据 在这种情况下 审计追踪可以确定用户已经获得的数据线索 然后指导做出是否还应该允许用户做进一步查询的决定 6 2 3可审计性 续 审计粒度是审计的障碍 数据库的审计踪迹应该包括对记录 域甚至元素级的访问 大多数数据库的应用不能达到这种程度 此外 在例如用户执行选择操作时 用户可以访问数据但并未获得数据的具体值 访问一个记录或元素后 系统不将结果数据传递给用户 这种情况称穿过问题 pass throughproblem 同时 用户也可以不直接访问元素而获得它们的值 因此 只记录所有直接访问的日志可能夸大或低估了用户对数据库的实际了解情况 6 2 4访问控制 数据库通常按照用户的访问权限进行逻辑分割 限制访问是数据库集中管理形式的职责和优势 dbms需要实施这样的访问策略 授权访问所有指定的数据 阻止访问禁止的数据 数据库管理员需要分别以视图 关系 域 记录 甚至元素级给予说明 用户或程序可能拥有的权限包括 读 改变 删除或附加一个值 增加或删除整个域或记录 重组数据库 6 2 4访问控制 续 对数据库的访问控制比对操作系统的访问控制更为复杂 虽然在操作系统中用户通常不可能通过读一个文件来推理其他文件的内容 但在数据库中则可能通过读其他元素的值而推知另一个元素的值 从已获得的数据值推断更多的值 称为推理 inference 限制推理意味着要禁止一些特定的路径来阻止可能的推理 但也限制了某些用户的正常查询 这样做实际降低了dbms的性能 因为数据库中的每个文件可能还包含几百个数据域 访问控制的实现要比操作系统困难得多 粒度的大小影响了处理的效率 6 2 5用户鉴别 通常 数据库作为应用程序运行在操作系统之上 这种设计意味着dbms和操作系统之间没有可信路径 所以dbms必须对所有接收到的数据持怀疑态度 包括用户鉴别 因此 dbms不得不自己进行用户鉴别 6 2 6可用性 对于许多用户来说 dbms是可执行的应用程序 用户通常把dbms看作是用来执行特殊任务的基本工具 当系统不可用时 用户会清楚地意识到此时bdms是不可用的 这实际上是要求dbms有高可用性 6 2 7完整性 机密性 可用性 每个元素以至于整个数据库都要求完整性 因此 完整性是设计bdms时主要关心的问题 由于存在推理攻击 所以用户可以通过推理间接获取敏感数据 机密性成为数据库的关键问题 数据库开发的初衷就是为了更好利用共享访问 所以可用性也是一个关键问题 然而 可用性和机密性相互冲突 6 3可靠性和完整性 软件可靠性 reliability 是指软件能够长时间无故障地运行 dbms有几种方法保护数据以防止丢失或被破坏 数据库的可靠性和完整性可以从以下三个级别来考察 1 数据库完整性 在磁盘驱动器或数据库主索引损坏后 保障整个数据库不受损害 2 元素完整性 只有授权用户可以写或修改一个特殊的数据元素 3 元素正确性 只有正确的值才能写入数据库 检查元素值可以防止插入不适当的值 同时 设定的限制条件也可以发现错误值 6 3 1操作系统提供的保护特性 操作系统对所有计算系统的资源提供保护 当操作系统负责管理时 数据库文件会被周期性备份 操作系统使用标准访问控制工具保护文件 以免文件在正常的执行过程中被外界访问 在正常读写i o设备时 操作系统将对所有数据进行完整性检查 6 3 2两阶段更新 对数据库管理器来说 在修改数据的途中计算系统出现故障是一个严峻的问题 它可能导致一个数据项的部分元素已经更新 而另部分却没有更新的问题 而发现并更正这一问题比较困难 为此 lampson和sturgis提出了两阶段更新方案解决这个问题 大部分dbms采用了这种方案 6 3 2两阶段更新 续 更新技术第一阶段称为意向 intent 阶段 dbms收集所有执行更新需要的资源 做足更新前的一切准备工作 但并没有对数据库做任何改变 因为每个步骤都并未永久地更新数据 所以第一阶段可以重复无数次 第一阶段的最后事件是提交 committing 包括为数据库做提交标记 commitflag 提交标记意味着dbms通过了不需要撤消的点 6 3 2两阶段更新 续 第二阶段实现永久更新 如果在这个阶段出现故障 数据库可能包含不完整的数据 但系统可以重新执行第二阶段的所有动作以修复数据 第二阶段结束 数据库更新完毕 6 3 2两阶段更新 续 两阶段更新的实例假定某公司有一个办公用品管理系统 其数据库中包含公司的办公用品清单 中心仓库管理员需要管理办公用品分发以及监控现有的供应量 以便在库存不足时定货 假定现有库存107箱文件夹 而低于100箱时需要定货 假定会计部提出申请需要50箱文件夹 仓库管理员处理请求的步骤为 1 仓库和数据库是否有50箱文件夹库存 没有 拒绝请求结束事物 2 如果库存充足 从数据库中的存货中扣除50箱文件夹 3 仓库从会计部预算中收取50箱文件夹的费用 4 仓库检查剩余的库存57箱文件夹 107 50 57 是否低于定货界限 如果是 将产生一个定货提示 并将数据库中的文件夹项标记为 定货中 5 准备好交货 把50箱文件夹送到会计部 6 3 2两阶段更新 续 当进行两个阶段提交时 可用影子值 shadowvalue 来保存关键数据 如下所示 意向 1 检查数据库中的commit flag 如果该值已经设置 则不进行意向阶段 直到其被清零 2 比较库存文件夹箱数和需求量 如果需求大于库存 停止 3 计算剩余文件夹箱数tclips onhand requisition 4 获得会计部的预算budget 计算结余tbudget budget cost 5 检查tclips是否低于定货界限 如果是 设置treorder true 否则 设置treorder false 6 3 2两阶段更新 续 提交 1 在数据库中设置commit flag 2 复制tclips到数据库的clips 3 复制tbudget到数据库的budget 4 复制treorder到数据库的reorder 5 准备向会计部发送文件夹的通知 在日志中表明完成事务 6 清除commit flag 每个t开头的变量是只在事务阶段使用的影子变量 6 3 3冗余 内在一致性 许多dbms通过维护附加信息来检测数据内在的不一致性 检错与纠错一种冗余形式是检错码或纠错码 可应用于单个域 记录或整个数据库 比如 奇偶效验码 海明 hamming 编码 循环冗余检查 检验码提供的信息越多 所占的存储空间越大 影子域在数据库中可以复制整个属性或记录 这里冗余域显然需要大量的存储空间 6 3 4恢复 除了这些纠错过程外 dbms还需要维护用户的访问日志 尤其是更改日志 在发生故障后 从后备副本中重新装载数据库 并根据日志将数据库恢复到故障前的最后一个正确状态 6 3 5并发性 一致性 dbms使用了简单的封锁技术来保证共享数据库安全 如果两个用户需要对相同数据项进行读访问 则他们之间没有冲突 因为他们将获得相同的值 如果两个用户尝试修改相同的数据 我们通常假定用户间没有冲突 因为每个用户都知道写什么值 同时 认为写入的值不依赖于数据项先前的值 然而 这个假定往往不总是正确的 6 3 5并发性 一致性 续 假如有一个特定航班的订座数据库 代理人a将为乘客mock预订座位 向数据库提交了一个查询 请求过道右边的座位发现了5d 11d 14d 同时另一个代理人b想为一家三口预订三个相邻的位置 发现了8a b c和11d e f是未预约的 这时代理a提交了订座命令订下11d 而代理b提交了订座命令订下11d e f 这时就产生了问题 而出现这种问题的原因 在于从数据库中读数据和改写数据之间的时间延迟 在延迟时段中 另外的用户可访问同一个数据 6 3 5并发性 一致性 续 为了解决这个问题 dbms把整个查询 更新周期看做一个原子操作 读 修改周期必须在一个未受干扰的情况下完成 禁止其他用户对11d的访问 直到第一个代理成功预订后才开始考虑第二个代理人的请求 此外 如果一个用户a正在读时 另一个用户b正在写 那么用户a将读到部分更新的数据 因此 dbms将锁定读请求直到写操作完成后 6 3 6监视器 监视器 monitor 是dbms中负责数据库结构完整性的单元 范围比较范围比较监视器检测每个新产生的值 确保每个值在可接受的范围内 如果一个数据值在范围之外 监视器会拒绝该数据值 并不将它输入数据库 范围比较可用于保障数据库的内在一致性 如果怀疑数据库中的某些数据已经遭到破坏 范围检查可以识别所有可疑记录的数据 6 3 6监视器 续 状态约束状态约束 stateconstraint 描述了整个数据库的约束条件 数据库的值不能违反这些约束 也就是说 如果不满足这些约束 数据库中的一些数值会出错 两阶段更新中的提交标记就是一种状态约束 因为在每个事务结束时都需要判断提交标记是否被设置 提交标记在数据库中的身份是一种完整性约束 另一个例子是 无论何时雇员中 总裁 的数量都是一个 如果由于机器故障 数据库被部分复制了 那么通过测试数据库的状态 dbms可能识别到存在两个相同的雇员编号或有两名 总裁 6 3 6监视器 续 转换约束转换约束 transitionconstraint 则描述了改变数据库之前的必需条件 例如 在数据库中加新员工之前 必须有一个职位是空缺的 添加雇员后 数据库中相应的职位应该从 空缺 改为该雇员编号 大多数数据库管理系统都要执行简单的范围检查 然而 较复杂的状态和转换约束需要专门的程序进行测试 6 4敏感数据 某些数据库保存了所谓不能公开的敏感数据 sensitivedata 决定哪个数据项或域为敏感取决于数据库和数据的含义 最容易处理的两个实例是 根本没有敏感数据或者全部都是敏感数据 更困难的情况是 在实际中 数据库中的元素常常是部分而不是全部为敏感数据 而且敏感的程度各有不同 表6 6一个数据库的样本数据 6 4敏感数据 续 安全需求可能要求 有少部分人具有访问单个域的权限 但是没有人同时具有访问所有域的权限 6 4敏感数据 续 使数据敏感的几个因素包括 1 固有的敏感性 因数据值本身具有揭露性而为敏感数据 2 来自敏感源 数据的来源预示了对机密性的要求 3 声明的敏感性 数据库管理员或数据所有者声明该数据为敏感数据 4 敏感属性或敏感记录中的部分 在数据库中 整个属性或记录可以归类为敏感的 5 与已经泄露信息相关的敏感性 有些数据在某些数据面前变得敏感 6 4 1访问决策 数据库管理员的决策是以访问策略为基础的 数据库管理器或dbms是程序 对数据库和辅助的控制信息进行操作 以实现访问策略的决策 dbms在决定是否允许访问时要考虑几个因素 数据的可用性一个或多个被请求的元素可能存在不可访问的问题 例如 数据更新就会出现这样的问题 如果正在进行数据更新的用户在中途中断了更新事务 其他用户对这些记录的访问将被永远阻塞 这种由中断服务造成的不确定延期也是一个安全问题 它将导致拒绝服务攻击 6 4 1访问决策 续 可接受的访问记录中一个或多个值可能是敏感数据 但是 确定什么样的数据是敏感数据似乎并不容易 因为有时并不需要对敏感域直接访问就可获得敏感数据 用户也可以通过不敏感的统计数据推理敏感数据 保证真实性当允许访问时 可能要考虑数据库用户的某些外在特性 6 4 2泄露类型 数据具有敏感性 数据的特性也同样具有敏感性 我们将了解即使是数据相关信息的描述也是一种泄露形式 准确数据这种情形的结果只有一个 破坏了敏感数据的安全 范围一种暴露是揭露了敏感数据的范围 另一种情况是 只揭露一个值超过某个总量 然而 有时在提供敏感数据时 只给出一个范围是有用的 6 4 2泄露类型 续 否定结果有时 我们会执行查询确定一个否定的结果 同样可能泄露敏感信息 存在性有时 与数据的具体值无关 数据的存在性本身就是敏感数据 大概值假定想确定总统是否为保皇党成员 可以做如下查询 howmanypeoplehave1600pennsylvaniaavenueastheirofficialresidence response 4 howmanypeoplehave1600pennsylvaniaavenueastheirofficialresidenceandhaveyesasthevalueoftory response 1 通过上述结果 知道总统是保皇党成员的可能性为25 部分泄露的小结成功的安全策略必须能够同时防止直接泄露和间接泄露敏感数据 6 4 3安全与精确度 确定一个数据是否是敏感数据以及怎样保护这些敏感数据是十分困难的 这实际鼓励了保守的观点 透露的数据越少越好 保守的观点建议拒绝一切敏感域的查询 但我们同时也希望尽可能显示数据以满足数据库用户的需求 这个目标称为精确度 precision 旨在保护所有敏感数据的同时尽可能多地揭示非敏感数据 安全与精确度的理想结合要求维护完善的机密性与最大的精确性 也就是揭示所有 但仅非敏感数据 6 4 3安全与精确度 续 图6 3安全与精确度 6 5推理 推理 inference 是一种通过非敏感数据推断或推导敏感数据的方法 推理问题是数据库安全中一个很微妙的弱点 回顾表6 6中的数据库 我们假定aid fines和drugs都是敏感域 但这些域只有和固定个体关联后才是敏感的 6 5 1直接攻击 直接攻击是指用户试图通过直接查询敏感域 根据产生的少量记录决定敏感域的值 最成功的技术是形成一个与数据项精确匹配的查询 一个查询可能是 listnamewheresex m drugs 1一个比较隐蔽的查询是 listnamewhere sex m drugs 1 sex m sex f dorm ayres 这就引出 n个同属一类数据项超过k 规则 它表明 如果n个一类数据项代表了超过k 的报告结果 则结果数据应该被保留而不能公布 6 5 2间接攻击 间接攻击是根据一个或多个中间的统计值推理最后结果 这种方法要求做一些数据库之外的工作 特别是 统计间接攻击需要利用某些有明显统计特征的方法来推理单个数据 和通过 和 攻击 试图从已知的和推理单个值 表6 7按寝室和性别查询助学金之和 6 5 2间接攻击 续 计数计数可以和总数结合来揭露更多的结果 而通常数据库给出这两个统计量 方便用户确定平均值 平均值假设知道员工的数量 公司的工资平均值和除总裁外所有员工的工资平均值 则可以很容易地计算总裁的工资 表6 8按寝室和性别查询的学生计数值 6 5 2间接攻击 续 中值通过稍微复杂的程序 我们可以根据中值得出个别值 这种攻击要求所选择的数据中有一个数据刚好在中值的交集中 图6 4中值的交集 6 5 2间接攻击 续 表6 9利用两个表的中间值进行推理 如果查询者已经知道majors为男性和drug use为2 且majors出现在两个列表的中间值 则通过q median aidwheresex m 和p median aidwheredrugs 2 可得到majors奖学金为 2000 6 5 2间接攻击 续 追踪攻击追踪攻击 trackerattack 通过使用额外的 产生更少结果的查询欺骗数据库管理器 从而找到想要的数据 一个典型方法是 追踪者进行两次查询 让一次查询结果与另一次查询结果相比增加了一些记录 去掉两组纪录中的相同部分 就只留下统计数据或想要的数据 这个方法利用了两次查询结果的 间隙 部分 6 5 2间接攻击 续 例如 查询count sex f race c dorm holmes dbms可能会发现结果只是1 拒绝查询 由于q count a b c count a count a b c 所以查询等于 count sex f 6 减去count sex f race c dorm holmes 5 6 5 2间接攻击 续 线性系统的脆弱性使用逻辑与代数知识 加上数据库内容在分布上的特点 可以确定一系列查询 这些返回结果与几个不同的集相关 例如 可以解出各个值 事实上 这种攻击也可以用于非数值的情形 与 和 或 是数据库查询操作的典型运算 我们可以利用逻辑规则从一系列逻辑表达中获得结果 6 5 2间接攻击 续 控制统计推理攻击防止推理攻击的方法有 进行查询控制 或者对数据库里的单个项进行控制 很难确定一个查询是否会揭露敏感数据 因此 查询控制主要对直接攻击有效 对数据项的控制包括禁止查询和隐藏 禁止查询方式就是不提供敏感数据 对敏感数据的查询以不响应的方式拒绝 隐藏方式就是提供的结果接近但不是精确的实际数据值 这两种控制反映了精确与安全两者的矛盾 6 5 2间接攻击 续 有限响应禁止根据n项k 的规则 不显示所占有百分比过大的元素 表6 10按寝室和性别查询的学生人数 禁止显示计数低的单元 如果一个表既有按行计算的总数 又有按列计算的总数 则只禁止查询其中一个单元的数据 仍然可以通过计算获得被禁止显示的数据 因此 在样本数据很少的表中 除了总数单元外所有的单元都不得不禁止查询 而没有提供总数 则可只禁止其中一个单元 6 5 2间接攻击 续 组合结果一种控制方法是组合行或列以保护敏感数据 表6 12通过组合数据抑制推理 表6 11按性别和吸毒查询的学生人数 6 5 2间接攻击 续 另一个组合结果的方法是显示一个结果的范围 例如 发布助学金的结果时 给出金额的范围 0 1999 2000 3999 以及 4000以上 而不是准确的数值 还有一种方法是舍入 这项技术实际上是范围组合中相当有名的实例 如果数字的范围最接近10的倍数 则有效范围是0 5 6 15 16 25 等等 实际值可以根据最接近的基数向上或向下归入某个组 6 5 2间接攻击 续 随机样本使用随机样本控制方法 查询结果不是直接从整个数据库获得 而是从数据库的随机样本上计算出来的 因为样本毕竟不是整个数据 依据样本的查询不一定与在整个数据库中查询的结果相一致 通过重复相同的查询可以进行平均数攻击 为了防止这种攻击 相同的查询应该选择相同的样本 6 5 2间接攻击 续 随机数据扰乱有时 用一个小错误扰乱数据库的值还是有用的 xi是数据库中数据项i的真实值 我们可以产生一个随机数据 i附加在xi上作为统计结果 像 和 以及平均值这些统计方法可能使结果接近真实值 但又不是精确值 为了使相同的查询产生相同的结果 必须存储所有 值 由于存储该值很容易 所以数据扰乱比随机样本选择更容易使用 6 5 2间接攻击 续 查询分析更复杂的安全形式是查询分析 这个方法要求维护每个用户过去的查询 根据过去查询的结果判断这个查询可能推理出的结果 推理问题的总结对于推理问题没有完善的解决方法 可以按下述三种思路来控制推理问题 1 禁止明显的敏感数据 行动相当容易 但常常错误地选择了要禁止的数据 因而降低了可用性 6 5 2间接攻击 续 2 追踪用户已知的数据 虽然这种方法在提供数据时可能有最大的安全性 但是实现它的代价十分昂贵 3 伪装数据 随机数扰乱或舍入可以限制依靠精确值进行逻辑和代数运算的统计攻击 但得到的数据是不精确或可能不一致的结果 与安全中的其他问题一样 重视推理问题有助于理解控制这个问题的目的 同时对这个问题带来的潜在威胁更为敏锐 然而也不意味可以实现保护以防止这些攻击 6 5 3聚集 聚集 aggregation 意味着从较低敏感性的输入构造出敏感数据 它与推理问题相关 解决聚集问题很困难 因为它要求数据库管理系统追踪每个用户获得了哪些数据 以便回避一些可以让用户推导出更多敏感信息的数据 对聚集计算尤其困难 因为聚集是在系统外发生的 几乎没有什么方法提出来阻止聚集攻击 最近对数据挖掘 datamining 的兴趣使聚集问题重新得到重视 数据挖掘是指在多个数据库中过滤数据并在相关联的数据元素中找到有用的信息 在一定事实的聚集下 要使谎言有说服力是很困难的 6 6多级数据库 到此为止 我们主要考虑了两种类型的数据 敏感数据和非敏感数据 我们提到一些数据项比其他数据项更敏感 但是只有允许访问和拒绝访问两种选择 表6 13属性级敏感性 具有敏感性的属性加有阴影 6 6 1区分安全级别的实例 表6 14数据与属性级敏感性 具有敏感性的属性加有阴影 6 6 1区分安全级别的实例 续 数据库显现出三个安全特性 1 一个元素的敏感度可能不同于同一记录的其他元素或同一属性的其他值 这种情形暗示了应该对每个元素单独实现安全保护 2 敏感和不敏感两种级别不足以描述某些安全情况 而是需要多个安全级别 这些安全级别常常形成格 3 数据库中的和 计数或一组值 其安全可能不同于单个元素的安全 集合安全可能高于也可能低于单个元素的安全 6 6 2粒度 为整个数据库中的每个数据定义敏感级别 类似于在一个文件中为每个词定义敏感级别 而且实际问题更加复杂 不仅每个元素有不同的敏感性 而且元素之间不同的组合也具有特殊的敏感性 此外 元素的组合敏感性可能高于或低于组成它的任何一个子元素 保护每个元素的方法是 首先 需要访问控制策略来指定每个用户允许访问的数据 实现这一策略通常是为每个数据项定义访问限制 其次 需要保证元素值不会被未授权用户改变 这两个要求都涉及机密性和完整性 6 6 3安全问题 机密性 完整性将 特性应用于数据库中 访问控制原则描述成高级别的用户不允许写低级别的数据元素 但这种描述却常常出现问题 例如 dbms因为如下原因必须能够读写所有记录并写新记录 备份数据 扫描数据库以响应查询 根据用户进程的需要重组数据库或更新数据库中的所有记录 在此可以考虑两种方法 高级别的进程不允许写低级别的数据 或者计算机与具有安全许可的人一样 进程必须是 可信任的 6 6 3安全问题 续 一些保护机密性的措施是对数据做细微的修改 因此 在多级别数据库中 两个不同安全执行级别的用户可能执行相同的查询而得到不同的结果 为了保证机密性 不得不牺牲精确性 加强机密性也导致了不易察觉的冗余 多重实例化 polyinstantiation 意思是一个记录可以 被实例化 出现多次 每次有不同的机密级别 6 6 3安全问题 续 表6 15多重实例化记录 我们还可以找到导致多重实例化的其他原因 这些原因与敏感级别无关 因此 在减少多重实例化的同时 必须注意不能清除其中的合法记录 6 7关于多级安全的建议 6 7 1分离分区一个大的数据库被分成几个分离开的数据库 每个都有自己的敏感级别 这种方法类似于把不同的文件保存在不同的文件柜里 这种控制机制失去了数据库的基本优点 消除冗余数据以及提高数据的正确性 数据库希望修改数据时 只需更新一个域即可 此外 这个控制机制没有解决高级别的用户 需要访问低级别的数据并与高级别的数据合并使用的问题 6 7 1分离 续 加密每个级别的敏感数据可以存储在一个加密表中 该表使用与敏感级别相对应的唯一密钥加密 但是加密也有一些不利的方面 如可能存在选择明文攻击的问题 为了克服这个缺点可以选择抵抗选择明文攻击的密码算法 也可以为记录的每个域使用不同的密钥加密 还可以为一个记录的所有域使用密码链加密 6 7 1分离 续 图6 5密码分离 不同的加密密钥 图6 6密码分离 块链加密 6 7 1分离 续 这种方法的缺点是 当用户执行数据库的标准操作如 选择薪水大于10000的所有记录 时 查询必须为每个加密域解码 这增加了查询操作的时间 因此 加密机制不常用来实现数据库的分离 6 7 1分离 续 完整性锁完整性锁 integritylock 是美国空军在对数据库安全进行研究时首次提出的 完整性锁的数据项由三个部分组成 实际的数据本身 敏感性标签 以及校验和 敏感性标签定义了数据的敏感性 校验和的计算包括了数据和敏感性标签 以防止未授权者对数据或标签的篡改 为了提高效率 实际的数据项以明文方式存储 图6 7完整性锁 6 7 1分离 续 敏感性标签应该是 1 不能被伪造的 恶意的主体不能为一个元素产生新的敏感级别 2 唯一的 恶意的主体不能从其他元素复制敏感级别 3 隐蔽的 恶意的主体不能测定任意元素的敏感级别 完整性锁的第三个部分是一个检错码 称为密码校验和 cryptographicchecksum 为了保证数据值或其敏感级别未被修改 校验和对于每个元素必须是唯一的 必须包含数据值和数据值在数据库中的位置的指示 6 7 1分离 续 一个合适的密码校验和应该包括 记录的唯一标识符 记录号 记录中数据域的唯一标识符 域的属性名 元素值以及元素的敏感级别 校验和可以用强密码算法计算 图6 8密码校验和 6 7 1分离 续 敏感性锁敏感性锁 sensitivitylock 由唯一的标识符 如记录号 和敏感级别组成 因为标识符是唯一的 每一个锁与一个特定的记录相关 敏感性锁与一个特定的记录相关 并且保证了该记录的敏感级别的保密性 图6 9敏感性锁 6 7 2多级安全数据库的设计 完整性锁完整性锁的目的是能够让用户使用任何一个 不可信的 数据库管理器 该管理器有处理访问控制的可信任程序 用加密的方法隐藏数据以保护数据项及其敏感性 在这种方法中 因为只有访问程序可以实施或授权对敏感数据的访问 所以只需要它是可以信赖的 6 7 2多级安全数据库的设计 续 图6 10可信数据库管理器 6 7 2多级安全数据库的设计 续 完整性锁的缺点 1 系统必须扩大存储数据的空间以容纳敏感性标签 2 完整性锁处理时间的效率也是一个棘手的问题 为了保证访问的合法性 每次为用户传递一个数据时都需要对敏感性标签解码一次 3 另一个难点是不可信的数据库管理器可以看到所有数据 因此 易遭受特洛伊木马的攻击 使数据通过隐蔽的信道被泄漏 6 7 2多级安全数据库的设计 续 可信前端前端也称为守卫 guard 类似引用监视器 前端概念利用已有工具和专门技术 以微小的改变达到加强已存在数据库系统安全的目的 可信任前端的服务像是个单向过滤器 把用户不具有访问权限的数据筛选出来 因为需要先获得大量数据然后再丢弃用户不具访问权限的数据 所以这个方案的效率很不理想 6 7 2多级安全数据库的设计 续 图6 11可信前端 6 7 2多级安全数据库的设计 续 用户 可信前端和dbms之间的交互包括以下这些步骤 1 用户识别前端 前端鉴别用户身份 2 用户向前端发出查询 3 前端验证用户的授权数据 4 前端向数据库管理器发出查询 5 数据库管理器执行i o访问 并与低级别的访问控制交互完成对实际数据的访问 6 数据库管理器把查询的结果返回给可信前端 7 前端分析结果中数据项的敏感级别 并选择出与用户安全级别相一致的数据 8 前端把选择的结果传递给不可信前端以完成数据的格式化 9 不可信前端把格式化后的数据传递给用户 6 7 2多级安全数据库的设计 续 交换式过滤器交换式过滤器 commutativefilter 是一个程序 形成了用户和dbms之间的接口 与可信前端不同 过滤器试图尽量考虑dbms的效率 过滤器筛选了用户的请求 必要时就重新格式化请求 以使数据库管理器尽可能筛选掉许多不符合条件的数据 返回数据再经过过滤器二次筛选 过滤器可用于几个级别的安全 记录级 属性级或元素级 1 在记录级 过滤器请求希望的数据以及密码校验和信息 之后根据用户权限决定是否允许用户访问 2 在属性级 过滤器检查用户查询的所有属性是否都是用户可以访问的 删除用户没有访问权限的所有域 之后传递给dbms查询 3 在元素级 系统请求希望的数据和加密校验和信息 将符合要求的元素返回给用户 6 7 2多级安全数据库的设计 续 例如 对用户的查询 retrievenamewhere occup physicist city washdc 过滤器可以转换为 retrievenamewhere occup physicist city washdc fromallrecordsrwhere name secrecy level r user secrecy level occup secrecy level r user secrecy level city secrecy level r user secrecy level 当然这些附加条件是前端过滤器添加的 用户是看不见的 6 7 2多级安全数据库的设计 续 图6 12交换式过滤器 交换式过滤器的优点是允许选择查询 进行优化并且由dbms处理一些子查询 这种职责的委托使安全过滤器保持很小 减少了dbms和过滤器之间的冗余量 并且提高了整个系统的效率 6 7 2多级安全数据库的设计 续 分布式数据库分布式 distributed 或联合式数据库 federateddatabase 的可信前端控制着两个商业dbms的访问 一个负责敏感度低的数据 另一个负责敏感度高的数据 前端接收用户的查询 并把它们制定为一个合适的数据库的单级查询 如果用户可以访问高敏感度的数据 前端就同时向高 低敏感级两个数据库提交查询 其他情况 只能访问低敏感级数据库 如果从两个后台数据库获得结果 前端需要把结果适当组合起来 因为前端必须可信 也很复杂 并且可能包括整个dbms的大部分功能 所以分布式数据库的设计并不流行 另外 由于各个敏感级别的数据必须分别保存在所属级别的数据库中 所以这个设计也不适合于敏感级别很多的情况 6 7 2多级安全数据库的设计 续 视窗 视图视窗 window 或视图 view 的概念也是多级数据库访问的一个组织原则 视窗是数据库的一个子集 包含了用户授权访问的准确信息 用户的所有查询访问都只能针对这个子集 视图是数据库中一系列关系的详细描述 因此 一旦数据库中的数据改变 视图子集也随之发生改变 例如 航空公司的部分数据允许旅行社访问 可以为旅行社定义视图 viewagent infofltno master fltnoorig master origdest master destdep master deparr master arrcap master capwheremaster type pass classagentauthretrieve 6 7 2多级安全数据库的设计 续 表6 16航班信息数据库 a 航空公司视图 b 旅行社视图 6 7 2多级安全数据库的设计 续 在过滤 filtering 原始数据库的内容之后 把用户应获得的数据呈现给用户 除非用户有权访问至少一个元素 否则所有属性 列 都不能提供给用户 对于记录 行 也是一样 保留用户无权访问的所有元素 元素值用undefined替代 最后一步不危及安全 因为用户知道这个属性的存在 至少有一个元素用户可以访问 并且也知道这个记录的存在 同样 至少有一个元素用户可以访问 视图还可以从新的和已存在的属性及元素中创建新的关系 这些新关系依据标准的访问权限 允许其他用户查询访问 用户只能在视图定义的数据库子集上操作 而且只能执行视图中授权的操作 6 7 2多级安全数据库的设计 续 sea视图方案用分层方法实现了一个可信的数据库管理系统 最低层是引用监视器 第二层实现数据库基本索引和计算功能 第三层把视图转化为数据库

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论