数据库课程设计 信息安全技术.docx

上传人:b****6 文档编号:8471970 上传时间:2023-01-31 格式:DOCX 页数:22 大小:458.02KB
下载 相关 举报
数据库课程设计 信息安全技术.docx_第1页
第1页 / 共22页
数据库课程设计 信息安全技术.docx_第2页
第2页 / 共22页
数据库课程设计 信息安全技术.docx_第3页
第3页 / 共22页
数据库课程设计 信息安全技术.docx_第4页
第4页 / 共22页
数据库课程设计 信息安全技术.docx_第5页
第5页 / 共22页
点击查看更多>>
下载资源
资源描述

数据库课程设计 信息安全技术.docx

《数据库课程设计 信息安全技术.docx》由会员分享,可在线阅读,更多相关《数据库课程设计 信息安全技术.docx(22页珍藏版)》请在冰豆网上搜索。

数据库课程设计 信息安全技术.docx

数据库课程设计信息安全技术

 

数据库安全概述

姓名:

孟辉

学号:

201027060126

指导教师:

刘艳

2018年9月26日

目录

摘要...3

0.引言...3

1.数据库安全研究的历史回顾及现状...2

1.1数据库安全研究历史回顾...3

1.2数据库安全研究现状...4

2.数据库安全系统...5

2.1数据库的安全策略...6

2.2 数据库安全系统采取的措施...7

2.2.1身份认证...7

2.2.2存取控制...8

2.2.3数据加密...9

2.2.4审计跟踪和攻击检测...16

2.2.5系统安全恢复...17

结论...18

参考文献...19

摘要

数据库的安全是数据库系统的生命。

作为大量信息的存储系统,数据库系统担负着存储和管理这些信息的任务。

系统中的数据为众多的用户所共享,数据的泄漏或毁坏将会给社会财富、个人财富带来巨大损失。

因此,如何保证数据库系统的安全性,成为迫切需要解决的重要课题。

基于网络的数据库访问安全问题,即数据库远程访问安全问题成为研究热点问题,本文针对信息系统中基于广域网的数据库访问带来的非法访问、黑客攻击、数据的截取、篡改等安全问题提供了建立一个安全代理系统代理对数据库的访问的思路,并对其中整个系统结构进行分析。

关键词:

数据库安全;安全问题;

0引言

随着信息时代的到来,各种信息爆炸式发展并积累着,这涉及到人们日常生活、企事业单位的管理、各种科研活动以至国家的宏观经济调控等等各个方面。

采用计算机对各种信息作为数据进行管理成为高效科学的手段,这也促进了计算机数据库的发展。

目前,基于计算机网络的系统正得到越来越广泛的应用,计算机网络的开放性和信息的安全性之间的矛盾日益突出。

基于网络的数据库访问安全问题,即数据库远程访问安全问题成为研究热点问题[1,2],本文针对信息系统中基于广域网的数据库访问带来的非法访问、黑客攻击、数据的截取、篡改等安全问题提供了建立一个安全代理系统代理对数据库的访问的思路,并对其中整个系统结构进行分析。

1.数据库安全研究的历史回顾

1.1数据库安全研究历史回顾

人们对数据库安全的研究由来已久。

自本世纪70年代初,发达国家即开始重视计算机系统的安全性问题,美国军方率先发起对多级安全数据库管理系统(MLSDBMS)的研究和设计。

尤其是到了80年代,出于国家利益和其它原因的考虑,美国空军和国防部等单位更是大力资助这类项目,促进了数据库安全研究的发展。

计算机安全界掀起了一阵MLSDBMS研究的热潮,一系列安全需求、特殊问题、系统结构、原型系统得到了充分的研究。

美国国防部(DOD)于1985年正式公布了世界上第一个计算机系统安全性评估标准《可信计算机系统评估标准》(TrustedComputerSystemEvaluationCriteria,简称TCSEC,即橙皮书),随后DOD又颁布了《可信计算机系统评估标准在数据库管理系统的解释》(TrustedDatabasemanagementsystemInterpretationofthetrustedcomputerevaluationcriteria,简称TDI,即紫皮书),它将TCSEC扩展到数据库管理系统。

在TCSEC中,对安全系统的评估分成四大类、七个安全级别,即D、C1、C2、B1、B2、B3、A1,其中以A1为最高安全级别,D为最低安全级别(如表1)。

可靠的计算机系统评估准则的层次与级别如下:

(1)D级:

最小保护(最低级别)。

一切不符合更高标准的系统都归于D级。

属于D层的系统是不安全的,这些系统除了物理上的安全措施外,没有其它什么安全性可言。

如DOS就是操作系统中安全标准为D级的典型例子。

(2)C1级:

自主安全保护。

能够实现对用户和数据的分离,进行自主存取控制(DAC),保护或限制用户权限的传播。

每个用户对属于他们自己的客体具有控制权。

(3)C2级:

受控制的存取保护。

将C1级的DAC进一步细化,以个人身份注册负责,并实施审计和资源隔离。

Oracle9i数据库系统被归为C2级系统,这一级别增加了审计及验证机制。

审计建立涉及到安全性事件的记录,系统管理员可配置审计系统使其记录下更多的事件,审计同时引发了验证的必要性,同时也占用了系统资源。

(4)B1级:

带标记的安全保护。

B1级是第一个可以支持多个安全密级的级别,对系统的数据加以标记,并对标记的主体和客体实施强制存取(MAC)以及审计等安全机制。

在强制性存取控制下的客体的存取权限是不可以由文件的属主来改变的。

这一级别的产品才被认为是真正意义上的安全产品。

(5)B2级:

结构化保护。

建立形式化的安全策略模型并对系统内的所有主体和客体实施DAC和MAC。

经过认证的B2级以上的安全系统非常少。

(6)B3级:

安全域。

该级的TCB必须满足访问监控器的要求,审计跟踪能力更强,并提供系统恢复过程。

(7)A1级:

验证设计。

提供B3级保护的同时给出系统的形式化设计说明和验证以确信各安全保护真正实现。

可以看出支持自主存取控制的DBMS大致属于C级,而支持强制存取控制的DBMS则可以达到B1级。

B2级以上的系统标准更多地还处于理论研究阶段。

TDI是TCSEC在数据库管理系统方面的扩充和解释。

TDI不能独立成为一个标准,需要联合TCSEC作为参照,TCSEC中各个安全级别的安全性是积聚性的,即较高安全级具有所有较低安全级的安全性能。

TDI沿用了TCSEC的做法,从以下四个方面来描述安全等级的划分标准;安全策略、责任、保证和文档。

每大项又分为若干子项,各安全等级的安全特性归纳如表2所示:

说明:

相邻两级之间随着级别升高,安全指标可能从无到有,以N(New)表示;或相同,以S(Same)表示;或有改动,以C(Change)表示;或有新增加的内容,以A(Add)表示。

TCSEC/TDI中的一个主要概念是TCB(TrustedComputingBase,即可信计算基础),它是计算机系统中保护机制的全部。

计算机系统的安全完全依赖于实施安全策略可信的软件、硬件和负责系统安全管理的人员,这些就构成了可信计算基础。

1.2数据库安全研究现状

当前数据库安全研究主要集中在多级安全数据库、推理通道、隐藏通道、角色控制、分布式数据库安全等几个方向上,本文中我们只涉及多级安全数据库和推理通道。

(1)多级安全数据库的语义。

多级安全数据库系统是指数据按其敏感程度被划分为不同的等级,如非密(Unclassified)、秘密(Condential)、机密(Secret)、绝密(Topsecret)等;用户也被指定在不同的安全等级上,并按照系统规定的安全策略对不同安全等级上的数据进行存取和共享(如L级的用户仅能读取L级上或L级以下等级上的数据;L级的用户仅能修改L级上的数据)。

多实例(Polyinstation)是多级系统不可避免的内在问题。

这是由于强制安全的特点,完全有可能存在多个客体(元素、元组以及表)——这种同时存在性称为多实例——除了其密级不同之外,它们在某些本质特征方面时相同的。

多实例关系是指多个具有同名但不同密级的关系。

多实例元组指多个具有相同的主键、但密级不同的元组。

多实例元素指存在某个元组的某个属性具有不同密级的多个值。

多实例对数据模型甚至系统设计的影响,是需要有一种对多版本数据区分访问的机制,因为具有某个存取级的用户应该只能看到他应该看的版本。

多实例性存在于任何多级系统中,不过它对多级安全数据库系统的影响看来是最大的,因为它影响到数据库的数据模型。

例如,要实现元素的安全标识,就需要支持多实例元素,这就要求要么抛弃关系数据库中元素的原子性限制,要么把它转换为多实例元组;如果是后者,就必须抛弃关系数据库中的规定“主键要唯一”的前提。

无论使用何种方法,都会使得系统设计复杂化。

若不考虑多级安全数据的语义,多实例将会带来数据库中数据语义的二义性从而导致查询结果的二义性,而且元组的更新可能导致关系规模的急剧增长。

所谓关系规模的急剧增长指在强制安全策略下,多级关系中元组的更新可能导致其元组个数以密级数的指数级规模增长。

所谓语义二义性指一个多级安全关系并不总是只有一个语义解释。

查询的二义性指由于语义的二义性造成的不同的查询路径会得出不同的结果。

对此,人们提出了多级关系数据库的模型论语义。

即从解释的角度出发,定义一个多级关系数据库的解释是一组通常意义下的关系数据库的集合,这些通常意义下的关系数据库具有相同的模式。

对于不同存取级的主体,其理念(Belief)就是与该存取级对应的一个解释。

从表面上看,这种方法有点像是数据库级的标识技术,但事实上并非如此,因为具有存取级L的主体看到的数据库表示了L级主体对现实世界中相关事物的认识,但该理念可能含有更低存取级的主体的理念中的数据。

尽管提出了一个较完美的基于模型论语义的形式化查询语言,或者说,安全关系代数查询语言,但不得不承认该思想的假设前提未免过于苛刻:

<1>具有相同存取级的主体看到的现实世界的当前状态是一致的。

但在现实中,可能需要允许相同存取级的主体看到不完全一样多的信息。

<2>完整性的约束和强制安全策略的一致性:

事实上两者几乎总是有冲突的,如完整性约束导致的隐蔽推理通道问题。

看来多级关系远非传统的关系加上密级标识,因为它们至少会产生多实例数据,而多实例数据反过来又影响完整性约束、查询处理和数据库更新。

多级安全数据库不是本文的重点,只是在讨论推理通道问题时有所涉及。

(2)推理通道。

推理就是根据低密级的数据和模式的完整性约束而推导出高密级的数据的存在。

可见,这种信息泄漏并非来自直接对安全机制的攻击,而是来自信息本身的特性和语义。

基于强制安全策略的系统可以防止低存取级的用户读到高密级的数据,但不能防止他们基于语义和应用来推导高密级的数据。

2.数据库安全系统

2..1数据库的安全策略

数据库的安全策略是指导信息安全的高级准则,即管理、保护和传递敏感信息的法律、规章及方法的集合。

数据库的安全问题主要是存取控制策略。

就访问控制策略而言,它有以下几种:

(1)知需策略。

只让用户得到相应权限的信息,这些信息恰好可以让用户完成自己的工作,其余的权利一律不给。

(2)最大程度共享策略。

使数据库中尽可能多的信息能在最大程度上共享。

(3)按实际要求决策颗粒大小策略。

按要求将数据库中的项分成大小不同的颗粒,颗粒越小,安全级别越高。

通常要根据实际要求决定颗粒大小尺寸。

(4)按内容存取控制策略。

这里的“内容”主要是指存储在数据库中的数值。

存取控制是根据此时刻的数据值来进行的。

(5)按存取类型控制策略。

规定用户对数据可以做出何种类型的存取,如读、写、修改、插入、删除等。

(6)根据历史的存取控制策略。

有些数据本身不会泄露秘密,但当与用户以前得到的数据结合起来就有可能推断出受保护的秘密信息,利用推理来获取秘密信息,对数据库的安全保密是一种极大的威胁。

该策略记住了用户过去存取的历史,根据过去已经执行的存取来控制它们现在提出的请求。

2.2 数据库安全系统采取的措施

在一般的计算机系统中,安全措施是一级一级设置的,如图1:

图1计算机系统安全模型

在图示的安全模型中,用户要求进入计算机系统时,系统首先根据输入的用户标识进行身份鉴定,只有合法的用户才准许进入计算机系统。

对已进入系统的用户,DBMS还要进行存取控制,只允许用户执行合法操作。

操作系统一级也会有自己的安全保护措施。

数据最后还可以以密码形式存储到数据库中。

操作系统一级的安全保护措施不再详叙。

借鉴了计算机安全系统,我们认为:

为保护数据库的安全,从数据库管理系统的角度考虑,安全系统至少应当包括身份认证、存取控制、数据加密、审计跟踪与攻击检测、系统恢复等功能。

2.2.1身份认证

在开放共享的多用户系统环境下,数据库系统必须要求用户进行身份认证。

可以说,用户身份认证是安全系统防止非法用户侵入的第一道安全防线。

它的目的是识别系统授权的合法用户,防止非法用户访问数据库系统。

用户要登录系统时,必须向系统提供用户标识和鉴别信息,以供安全系统识别认证。

目前,身份认证采用的最常用、最方便的方法是设置口令法。

在设置口令的方法中,系统给每个合法用户分配一个唯一的UserID和Password。

但是,由于Password的先天不足,其可靠程度极差,容易被他人猜出或测得。

因此,有必要设计更复杂的方法,例如每个用户都预先约好一个计算过程或者函数,鉴别用户身份时,系统提供一个随机数,用户根据自己预先约定的计算过程或者函数进行计算,系统根据用户计算结果是否正确进一步鉴定用户身份。

另外,近年来一些更加有效的身份认证技术迅速发展起来。

例如智能卡技术、物理特征(指纹、声音、角膜识别等)认证技术等具有高强度的身份认证技术日益成熟,并取得了不少应用成果,为将来达到更高的安全强度要求打下了坚实的理论基础。

创建新的Microsoft®SQLServer™登录,使用户得以连接使用SQLServer身份验证的SQLServer实例。

语法

sp_addlogin[@loginame=]'login'

[,[@passwd=]'password']

[,[@defdb=]'database']

[,[@deflanguage=]'language']

[,[@sid=]sid]

[,[@encryptopt=]'encryption_option'].

参数

[@loginame=]'login'

登录的名称。

login的数据类型为sysname,没有默认设置。

[@passwd=]'password'

登录密码。

password的数据类型为sysname,默认设置为NULL。

sp_addlogin执行后,password被加密并存储在系统表中。

[@defdb=]'database'

登录的默认数据库(登录后登录所连接到的数据库)。

database的数据类型为sysname,默认设置为master。

[@deflanguage=]'language'

用户登录到SQLServer时系统指派的默认语言。

language的数据类型为sysname,默认设置为NULL。

如果没有指定language,那么language被设置为服务器当前的默认语言(由sp_configure配置变量defaultlanguage定义)。

更改服务器的默认语言不会更改现有登录的默认语言。

language保持与添加登录时所使用的默认语言相同。

[@sid=]sid

安全标识号(SID)。

sid的数据类型为varbinary(16),默认设置为NULL。

如果sid为NULL,则系统为新登录生成SID。

尽管使用varbinary数据类型,非NULL的值也必须正好为16个字节长度,且不能事先存在。

SID很有用,例如,如果要编写SQLServer登录脚本,或要将SQLServer登录从一台服务器移动到另一台,并且希望登录在服务器间具有相同的SID时。

[@encryptopt=]'encryption_option'

指定当密码存储在系统表中时,密码是否要加密。

encryption_option的数据类型为varchar(20),可以是下列值之一。

描述

NULL

加密密码。

这是默认设置。

skip_encryption

密码已加密。

SQLServer应该存储值而且不用重新对其加密。

skip_encryption_old

已提供的密码由SQLServer较早版本加密。

SQLServer应该存储值而且不用重新对其加密。

此选项只供升级使用。

返回代码值

0(成功)或1(失败)

2.2.2存取控制

存取控制是数据库系统内部对已经进入系统的用户的访问控制,是安全数据保护的前沿屏障。

存取控制技术是数据库安全系统中的核心技术,也是最有效的安全手段。

存取控制机制主要包括两部分:

<1>定义用户权限,并将用户权限登记到数据字典中。

用户权限是指不同的用户对于不同的数据对象允许执行的操作权限。

系统必须提供适当的语言定义用户权限,这些定义经过编译后存放在数据字典中,被称作安全规则或授权规则。

<2>合法权限检查。

每当用户发出存取数据库的操作请求后(请求一般应包括操作类型、操作对象和操作用户等信息)、DBMS查找数据字典,根据安全规则进行合法权限检查,若用户的操作请求超出了定义的权限,系统将拒绝执行此操作。

用户权限定义和合法权检查机制一起组成了DBMS的安全子系统。

存取控制模型可以分为两大类:

自主型存取控制(DAC)和强制型存取控制(MAC)。

<1>自主型存取控制。

在这种存取控制模型中,系统用户对数据信息的存取控制主要是基于对用户身份的鉴别和存取访问规则的确定。

每个用户对每个信息资源对象都要给定某个级别的存取权限,例如读权、写权等。

当用户申请以某种方式存取某个资源时,系统就进行合法身份性检查,判断该用户有无此项操作权限,来决定是否许可该用户继续操作。

并且,对某个信息资源拥有某种级别权限的用户可以自主地把其所拥有的该级别合法权限传授给其他任何登录系统的用户。

也就是说,系统授权的合法用户可以选择其他用户一起来共享其所拥有的客体资源。

一般来说,自主型存取控制将整个系统的用户授权状态表示为一个授权存取矩阵。

当用户要执行某项操作时,系统就根据用户的请求与系统的授权存取矩阵进行匹配比较,通过则允许满足该用户的请求,提供可靠的数据存取方式。

否则,拒绝该用户的访问请求。

在自主型存取控制中,由于用户可以自主地把自己所拥有的权限授给其他用户,而无需系统的确认。

这样,系统的授权存取矩阵就可能被直接或间接地进行修改,给数据库系统造成不安全因素。

例如,用户A和用户B都是系统授权的合法用户,系统为他们分配了严格的不同级别的安全存取权限。

其中,用户A对数据的D1拥有读取权限,对数据D2没有任何访问权限;而用户B对数据D2拥有读取权限。

那么,用户B可以先合法地读取数据D2,然后便可以自主地把数据B发送给用户A,而无需经过系统或数据D2属主的同意。

这样,用户A就能够同时拥有数据D1和数据D2,把D1和D2组合在一起,即可对系统的数据信息进行统计、分析等操作。

如果这个组合数据是系统中的重要机敏数据信息,则必将给数据库系统造成极大的安全隐患。

因此,自主型存取控制模型定义的安全系统,无法对抗外来的恶意攻击。

在安全强度要求较高的数据库系统中必须采用强制型存取控制技术,以保证数据信息的安全性。

<2>强制型存取控制。

在强制存取控制下,数据库系统给所有主体和客体分配了不同级别的安全属性,形成完整的系统授权状态。

而且,该授权状态一般情况下不能被改变,这是强制型存取控制模型与自主型存取控制模型实质性的区别。

一般用户或程序不能修改系统安全授权状态,只有特定的系统权限管理员才能根据系统实际的需要来有效地修改系统的授权状态,以保证数据库系统的安全性能。

强制型存取控制系统主要通过对主体和客体的已分配的安全属性进行匹配判断,决定主体是否有权对客体进行进一步的访问操作。

如在上例中,由于数据D2的安全属性级别高于用户A对它的已分配安全存取级别,数据D2不允许用户A进行存取,系统就能够拒绝用户B的传输操作,从而防止了数据的非法通信,提高了系统的安全性能。

2.2.3数据加密

数据加密就是将明文数据经过一定的交换(一般为变序和代替)变成密文数据。

与之相应,数据脱密是加密的逆过程,即将密文数据转变成可见的明文数据。

一个密码系统包含明文集合、密文集合、密钥集合和算法,其中密钥和算法构成了密码系统的基本单元。

算法是一些公式、法则或程序,规定明文与密文之间的变换方法,密钥可以看作算法中的参数。

数据库密码系统要求将明文数据加密成密文数据,数据库中存储密文数据,查询时将密文数据取出脱密得到明文信息。

与传统领域的数据加密技术相比,数据库的数据加密技术有其自身的显著特点:

<1>加密机制应该是实际上不可破解的。

因为数据库保存的时间长,不可能采用一次一密的加密方法。

但是,为了数据的安全,应当适时变换系统的密钥方案;

<2>数据加密后的存储空间应该没有明显改变。

数据库一旦确定,其结构一般是不能随意改变的。

因此,为了加密后的数据仍然能有效地存放在原来的数据库中,要严格限制加密后的密文数据存储大小,最好与明文数据大小相等;

<3>加密和解密的时间要求更高。

数据库中的数据往往被多个用户随机存取,如果系统不能在较短的时间内完成数据的加/解密过程,必然会影响数据库的可用性;

<4>数据库应该把灵活的授权机制和加密机制有机地结合在一起,有利于多用户对数据的共享;

<5>要提供一套更加安全、灵活、可靠的密钥管理机构,对系统的所有密钥进行妥善管理,防止密钥的泄漏。

可以采取以下几种技术:

密钥简单加密处理,如简单移位等;多把锁技术,即每人掌握密钥的一部分;函数处理,即密钥是函数的变元,其函数值用于加密;密钥的层次管理,层次结构是建立在传统的对称加密体制的基础上,其基本思想是用密钥来保护密钥。

<6>数据加密时,数值类型的数据只能在数值范围内加密,日期和字符类型的数据也都只能在各自的类型范围内加密;

<7>加密机制要尽量减小对数据库基本操作的影响。

加密后的数据库对数据的查询、检索、修改和更新要简便灵活。

一般,数据库中采用的加密机制不对索引字段、关系运算的比较字段和表的内、外码进行加密,这也是加密技术在数据库应用中的限制。

<8>数据库密码系统宜采用公开密钥的加密方法。

传统的密码系统中,密钥是秘密的一旦获取了密钥和密码体制就能攻破密码,解开密文。

但由于数据库中的数据是共享的,有权限的用户随时需要知道密钥来查询、修改、删除和插入数据,这样就要随时对数据库中数据进行加解密处理。

数据库公开密钥加密机制应是一个二元函数:

密文=F(密钥,明文),当加密算法F确定之后,只要给出密钥和待加密的明文,即可得到相应的密文。

脱密过程即是加密过程的逆过程:

明文=F-1(密钥,密文),由此可知,数据库密码的加密机制应是既可加密又可脱密的可逆过程。

数据库加、脱密密钥应该是相同、公开的,而加密算法应该是绝对保密的。

数据加密是保护数据的最基本措施,可以有效地防止数据库中数据的泄漏。

2.2.4数据库加密技术

 生成密钥

   安装完毕后,运行PGP程序。

从“开始”菜单中选择“PGP”中的“PGP Keys”。

要使用该软件进行加密的话,首先要生成一对密钥。

也就是一个公钥和一个私钥。

其中公钥是发送给别人用来加密钥发送给自己的文件的,私钥是自己保存,用于解密别人用公钥加密的文件,或者起数字签名的作用。

   在PGP Keys的窗口中,选择Keys菜单下的New Key选项。

   PGP Keys的工作窗口

   PGP有很好的创建密钥对的向导,跟着向导很容易生成一对密钥

   

    PGP密钥对的生成向导

   每一对密钥都对应着一个确定的用户。

用户名不一定要真实,但是要方便通信者看到该用户名能知道这个用户名对应的真实的人;邮件地址也是一样不需要真实,但是要能方便与你通信的人在多个公钥中快速的找出你的公钥。

例如,大家都熟悉你的名字叫张三,那你的用户名和地址都含有张三的名字,就很容易让别人知道这个公钥是你的;如果你起了一个其他的名字,类似“天天下雨”或者“五月的海”,那其他与你通信的人很容易不记得这个名字到底是谁,因此在选择公钥的时候,自然很难找出你的公钥。

见图10。

   

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 工学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1