《数据库系统安全》复习题.doc
一、问答题1 . 试简要说明数据库系统安全需求与操作系统安全需求的异同点?2.在一个实现了强制访问控制功能的,满足国标三级要求的数据库管理系统中,不再存在从高安全级到低安全级的非法信息流动,这一说法是否正确?为什么?3. 在采用库外加密机制的数据库应用系统中,数据库管理系统的哪些功能会受到限制?4. 有人说,“目前,国外卖给中国的数据库管理系统都是C2级的,其中存在许多隐通道”,请你谈谈对这一观点的看法? 二、解答题1.在根据数据库系统的特点,采用了改进的BLP模型的强制访问控制的数据库管理系统中,标记粒度是元组。这个系统中建有表emp,其中的数据及其安全级如下所示,其中name,empid,Salary,dept分别保存员工姓名,员工编号,员工工资,员工所在部门,TC是元组安全级,并且普通<秘密<机密<绝密。nameempidSalarydeptTC李明12000开发部普通王晓莉23000设计部机密张平31000管理部机密江平105000设计部秘密陈坚52000测试部绝密回答下列问题: (1) 现有一秘密级别的用户进入系统,他能够看到的数据是哪些?为什么? (2) 另有一机密级别的用户发出更新语句:UPDATE emp set salary = 4000;写出执行这条语句后,数据库中所有的数据?2. 在一个采用了Jajodia-Sandhu模型的多级安全数据库系统中,假设只有四个安全级:U(普通)<C(秘密)<S(机密)<TS(绝密),现有一多级关系火箭发射表,其中发射名表示发射的卫星名或者飞船名,并且已知RTS的结果为:火箭发射表(主关键字为:发射名)发射名任务 发射目的地元组安全级飞船1号 U科技探测 U地球 UU卫星A C搜集情报 C火星 CC飞船 1号 U科技探测 U轨道A SS飞船1号 U科技探测 U太阳系 TSTS(1) 求Rs=?(2) 若U用户发出删除语句: DELETE FROM 火箭发射表 WHERE 发射名 = 飞船1号;则RTS=?3. 下面给出了一个具备强制访问控制标记粒度是元组的数据库管理系统中,利用引用完整性约束,实现利用隐通道的信息传递的例子。如下例所示,当一个安全级是普通的数据库用户,删除员工基本信息表中姓名是”陈晓”的员工时,系统报错,从而该用户猜测到员工工资表中有一条安全级是秘密的元组存在。试设计利用这一隐通道进行信息传递的编码模式,设计利用基于主关键字的存储隐通道的同步模式,构造隐通道的使用场景。 引用完整性的例子:员工基本信息表(主关键字:员工编号)员工编号姓名学历家庭住址安全级牛得草本科.普通张平大专.普通陈晓研究生.普通员工工资表(外键:员工编号,引用员工基本信息表的员工编号)员工编号工资安全级3000普通5000秘密三、分析题1. 设有一用户,打算对下面的学生成绩表(表1)加密后存储在一关系数据库中,采用下面的方法:(1) 用DES加密算法将整个元组加密;(2) 为了还能够对加密后的成绩进行查询,他将学生的成绩按照数据范围进行了划分,并给每个范围一个对应的数据(表2所示),并将表2保存在自己的机器中;(3) 将加密后的学生成绩表3,将表3存放在数据库服务器中(假设数据库服务器不在用户自己的机器上);回答下面的问题: (1) 若已知王琛的成绩是66,要在这个数据库服务器中删除学生王琛的数据,试写出实现的方法(只写出解决问题的步骤)。 (2) 当攻击者已知加密方法时(但是不知表2的具体数据),试分析这种加密方法是否满足密码学上的消息不可区分性,并举例说明表1:学生成绩表 (加密前) 表2:成绩范围及其对应关系学生编号姓名课程名班级成绩成绩范围数值00001陈实数据库原理计算机0301931, 59)400002张苹数据结构计算机03038760,79)900003李凌操作系统计算机03107780, 89)200004王琛数据结构计算机03136690, 100)5表3:学生成绩表(加密后)加密后的元组数据工资项5299消息的不可区分性: A 给出两个数据库D1,D2,给B加密,B将密文数据库给A,让A猜测哪个密文数据库对应哪个明文数据库,A猜中的概率不比随机猜测好时,称B所用的加密方法满足消息不可区分性。2. 设有一数据库应用系统编程人员,编写了一段网络应用程序,用于查询数据库中保存的工资数据。在员工用自己的姓名登录系统后,在输入身份证号后,查询并显示该员工的所有工资。假设该程序使用的后台数据库服务器是ORACLE,假设员工的工资表为 employee_salary,其中身份证号、月份一起作为主键。employee_salary表结构 列名身份证号姓名部门工资月份数据类型CHAR(20)CHAR(20)CHAR(20)REALINT完成这一功能的Java程序片断如下:Public connection conn() /建立与后台ORACLE数据库的连接TryClass.forName( "com.microsoft.jdbc.sqlserver.SQLServerDriver" );con = DriverManager.getConnection("jdbc:microsoft:sqlserver:/MyDbComputerNameOrIP:1433; databaseName = master", “sa”, “1234” );Return con;catch(SQLException) Sqle.GetMessage()public boolean search_salary(void)/查询当前登录员工的工资 boolean f=true; String id_card, emp_name; id_card=Get_emp_id(); /从键盘输入要查询的员工的身份证号 String sql="select 姓名,部门,工资,月份 from employee_salary where 身份证号='"+id_card+"' Try Connection con=conn(); /连接后台SQL-SERVER数据库 Resultset rs=con.execute(sql); /调用JDBC函数,执行sql中的SQL语句 While (re.next() . /显示输出查询结果catch(SQLException).异常处理./结束处理回答下列问题:(1) 试分析这段程序中是否存在安全隐患,若存在,针对该程序举例说明。(2) 提出改进该程序段的方法。 四、在一个数据库应用系统中,由应用系统实现了基于角色的访问控制,支持一个用户可以有多个角色,一个角色可以拥有多个对象上的权限,但是不支持角色的继承,在这个应用系统中数据库表建表语句如下:CREATE TABLE 用户角色表(角色名 CHAR(20) , 用户名 CHAR(20),PRIMARY KEY(用户名,角色名));CREATE TABLE 角色权限表(角色名 CHAR(20) NOT NULL, 对象名 CHAR(20) NOT NULL, 对象所在模式名 CHAR(20), 对象类型 INT NOT NULL, 为0时,表对象,为1时表示视图; 权限 INT NOT NULL);角色在对象上所拥有的权限权限说明:1为查询权限,2为插入权限,4为修改权限,8为删除权限,因此若在一个对象上既有查询权限又有修改权限,则权限的取值为5。试设计一用户权限检查算法,算法输入为对象名和用户名,要求写出算法设计的思路,描述算法的工作流程,并给出注释?五、在一个使用BLP模型的强制访问控制的数据库管理系统中,客体的标记粒度为表,试为该系统设计CREATE TABLE、INSERT、UPDATE、DELETE和SELECT语句的功能,要求:(1) 指出客体的标记时机和各条语句中强制访问控制的检查时机?(2) 考虑完整性约束,使得设计的语句的操作不会产生隐通道的非法信息流动。