第10章数据库系统安全;10.1数据库安全概述;(1)??存取控制技术
(2)??隔离控制技术
(3)??加密技术
(4)??信息流向控制技术
(5)??推理控制技术
(6)数据备份技术;一般情况下,我们可以确定整个数据库是敏感的(要求保密)或不敏感的(不要求保密)。
细一点,可以确定库中的某个基表(对于关系型数据库)是敏感的或不敏感的。
但有时情况却复杂得多。;姓名、部门和电话这三列是不需保密的,任何人都可以查询。
但是工资和绩效考核却是必须保密的(现在很多企业都搞所谓的“密薪制”),这说明基表中只有部分字段是敏感的。;也许李四是一个特殊人物,他的所有情况都要保密,甚至他的存在都是一个秘密。
赵六的电话也许很重要,不想被别人知道。
这些数据的安全要求与工资与绩效考核两个字段的安全要求是不一样的。;1.一个元素的敏感度可能不同于同一记录的其他元素或同一属性的其他值。这要求应该对每个元素单独实行安全保护。
2.敏感和不敏感两种级别不足以描绘某些安全要求,需要多个安全级别。
3.集合安全不同于单个元素的安全,如数据库中的和、平均值。集合安全可能高于也可能低于单个元素的安全。;虽然DBMS在操作系统的基础上增加了不少安全措施,例如基于权限的访问控制等,但操作系统和DBMS对数据库文件本身仍然缺乏有效的保护措施,有经验的黑客会“绕道而行”,直接利用操作系统工具窃取或篡改数据库文件内容。
被称为通向DBMS的“隐秘通道”,它所带来的危害一般数据库用户难以觉察。
分析和堵塞“隐秘通道”被认为是B2级的安全技术措施。
对数据库中的敏感数据进行加密处理,是堵塞这一“隐秘通道”的有效手段。;;;一般来说,一个良好的数据库加密系统应该满足以下基本要求:
1.支持各种粒度加密
2.良好的密钥管理机制
3.合理处理数据
4.不影响合法用户的操作;1.操作系统层加密
2.DBMS内核层实现加密
3.DBMS外层实现加密;数据库加密系统分成两个功能独立的主要部件:一个是加密字典及其管理程序,另一个是数据库加/解密引擎;优点;数据库加密如果采用序列密码,那么同步将成为一个大问题。
需要对大片密文中的极小部分解密时,如何同步密文与密钥呢?
非对称加密?
所以数据库加密一般采用分组密码。
对于分组密码中常用的ECB和CBC两种模式,又该如何确定呢?
考虑到数据库中会有大量相同的数据,比如性别、职务、年龄等信息,我们应该采用CBC模式。
对于在DBMS上实现的加密,加密粒度可以细分为基表、记录、字段或数据元素。;10.2.4数据库加密系统的密钥管理;其中密钥的产生应满足下列条件:;10.3.1统计数据库的安全问题
具体地说,统计数据库是这样一种数据库;从库中取得的信息是关于一实体集子集的汇总信息。
统计数据库只为提供统计数据所用,如人口普查数据库就是这样。
在统计数据库中,除了禁止非法存取等一般安全问题外,还存在特殊的安全问题。
保护统计数据库的目的是,由该数据库发布统计信息时,保证不会使其中受保护的具体信息泄露。;一般的统计数据库有下面几种统计信息类型:
1.计数:count(c),求满足特征表达式c的记录个数。
2.求和:sum(c,a),求满足特征表达式c的记录中字段a的和。
3.求平均值:average(c,a),求满足特征表达式c的记录中字段a的平均值。
4.求最大值:max(c,a),求满足特征表达式c的记录中字段a的最大值。
5.求最小值:min(c,a),求满足特征表达式c的记录中字段a的最小值。;;用户通过一些统计数据库允许的合法查询,可以得到本来对他保密的信息。
统计数据库远不是安全保密的,而且,前面介绍的一般数据库的访问控制并不能解决统计数据库的泄密问题.
因为它主要是限制用户的存取权力,用户只能对数据库中的一部分数据进行访问。
在统计数据库中,保密的目标应该是防止用户通过一系列“合法”的统计查询,使“不合法”的要求得到满足,也就是防止用户从一系列查询中推理出某些秘密信息,这时我们要实行的控制称为“推理控制”。;;;1.小查询集和大查询集攻击
2.跟踪器攻击
3.插入和删除攻击
4.对线性系统的攻击;1.小查询集和大查询集攻击;2.跟踪器攻击;3.插入和删除攻击
;4.对线性系统的攻击
;第一类:对统计数据库的查询加以限制。
1.限制查询集的大小
2.单元隐蔽(能够帮助用户推导出秘密信息的有关统计信息单元应该隐去)
3.最大阶控制(如果一个统计查询恰好涉及到m个互不相同的属性,那么这样的统计称为m阶统计,所谓最大阶控制就是要限制m的值。)
4.数据库分割(将数据库分割成一个个记录组,规定用户只能以这些记录组作为基本单元进行统计查询,亦即同一记录组中的数据,或者全部在查询集中,或