来源:中国一卡通网 作者:张静 发布时间:2010-09-06 11:46:08 字体:[大 中 小]
摘 要:一卡通系统建立在校园网的基础上,系统涉及到一些敏感数据,许多关键的业务系统运行在数据库平台上,如果数据库安全无法保证,其上的应用系统也会被非法访问或破坏,本文根据系统在数据库安全方面的基本要求,对一卡通系统在数据库安全方面的基本要求作了分析,从用户口令认证的安全层面考虑提出了数据库用户二次登录法来保障一卡通系统数据库的安全,此方法可以有效防止系统应用中可能存在的对数据库的各种攻击、破坏和欺诈,使校园一卡通系统可以在开放的网络环境中安全地运行。
1、研究背景和意义
随着数字化校园的兴起和应用的深入,如今的校园一卡通系统规模越来越大,功能越来越复杂,在系统实际的应用中存在诸多问题,其中,如何确保整个系统的安全使用是关键所在。只有妥善地解决了校园一卡通系统的安全问题,才能促进其进步和健康发展。
由于一卡通系统建立在校园网的基础上,系统涉及到一些收费、消费数据和基本信息等一些敏感数据,许多关键的业务系统运行在数据库平台上,数据库系统中的数据为众多用户所共享,如果数据库安全无法保证,其上的应用系统也会被非法访问或破坏,这就对校园一卡通系统的安全性特别是数据库的安全提出了更高的要求,如何有效防止应用中可能存在的各种攻击、破坏和欺诈,使校园一卡通的数据库系统可以在开放的网络环境中安全地运行,实现一套完整有效的数据库安全控制方案就成为校园一卡通系统中的重中之重。
本文的重点在于结合学校一卡通系统的实际业务流程,针对一卡通系统的特点,通过对一卡通系统数据库安全要求进行分析,提出了一个切实有效的数据库安全技术方法即数据库用户二次登录法。此方法可以有效防止系统应用中可能存在的对数据库的各种攻击、破坏和欺诈,使校园一卡通系统可以在开放的网络环境中安全地运行。
2、一卡通系统的数据库安全的基本要求
1).物理上的数据库完整性
一卡通系统中存有很多消费和收费的业务数据,并且,机房计费系统和综合消费系统(餐饮消费)对数据库服务器的不可间断性也提出了很高的要求。
2).访问控制
一卡通系统下分多个子系统,各个子系统拥有各自的数据,对数据库中对象的权限要求并不一样,越权访问会带来一定的隐患,并造成管理上的混乱。
3).可审计性
一卡通系统数据库中包含很多消费和收费的敏感数据,对这些子系统,我们必须能够追踪到谁访问或修改过子系统中的数据。在这一点上,除了数据库本身的日志之外,一卡通系统也要记录系统日志,使审计更加准确。
4).用户认证
一卡通系统数据库安全设计,由于一卡通系统在安全方面有比较高的要求,因此我们必须确保每个用户被正确地识别,既便于审计追踪,也为了限制对特定的数据进行访问。
5).可用性
一卡通系统中的很多子系统,如机房计费系统和综合消费系统对数据库服务器的可用性提出了很高的要求,用户应该随时可以访问数据库以及所有被批准访问的数据。
3、一卡通系统数据库用户二次登录法
3.1 技术需求分析
在一卡通应用系统中,当各个子系统的客户端应用程序访问数据库服务器的时候,都需要提供一个合法的数据库用户名和访问口令组合,通常来说,访问数据库的用户名不需改变,因此如何保护用户口令就成了我们非常关心的内容。
首先要明确的一点是,我们这里所说的维护用户口令指的是第2条中的用户口令。
常见的数据库用户L]令处理方法有如下三种:
(1)把用户名和口令直接写到程序语句中。
(2)将用户名和口令加密后保存在客户端程序的某一配置文件或注册表中。
(3)用户二次登录的方法:客户端程序先用一个权限极低的用户登录数据库,从口令密文表中取得正常工作用户的口令密文,然后用正常工作用户名和根据密文计算出来的口令再次登录数据库。
上述几种保护口令的方法不是太简单死板就是需要数据库管理员的干预,通过分析常见方法的优缺点,我们在一卡通系统中使用了一种新的用户二次登录法,自动维护数据库用户的口令,更加安全和实用。
3.2 设计方案
结合上述二次登录技术,一卡通系统中提出的自动维护数据库用户口令的方法如下:
首先给定一个维护周期,数据库到期随机或者根据周期信息自动生成一个口令密文.接着从口令密文中计算出新的用户口令,然后自动重新设置用户口令以及数据库中相关的口令密文。
所有操作无需数据库管理员的干预,对客户端程序也毫无影响,此时用户口令对管理员和客户端应用程序来说都是透明的。
自动维护用户口令包含数据库服务器端和客户端的实现,分述如下:在服务器端可以将生成口令密文和修改用户口令的算法写在存储过程中,这个存储过程可以由作业周期性地调度,也可以由客户端程序在维护周期内首次运行时调用执行。
客户端要完成的工作根据服务器端的存储过程调度的方法的不同而稍有不同。如果服务器端的存储过程由作业调度执行,那么客户端只需要在第一次登录数据库时取得用户口令的密文,然后计算出口令并进行第二次登录。
为了增加口令被破译的难度,在这里使用了多重加密算法技术,可同时应用于生成密文和从密文计算出【]令的算法中。在生成密文的时候,先设定几种生成算法,然后通过密文种子信息或随机值来选取不同的密 生成算法。在从密文计算出口令的时候,同样先设定几种算法,接着由密文本身的相关信息或通过附加位的方式来确定具体采用的是哪一种计算算法,最后通过密文计算出口令。
3.3 二次登录法的实现
根据上一节的设计思想, 下面给出在一卡通系统q 的具体的实现方案。为了叙述方便,我们假定服务器的数据库名称为Sdataoase,创建此数据库的管理员为DataMaster,客户端的应用程序为ProClient。实现修改口令的存储过程是ChangeUserPWD,存储口令密文的数据表是TPass—word Cry,第一次登录数据库取得密文的用户为CU:m’,而正常工作时使用的用户是L0GUSER。
3.3.1 服务器端数据库操作
a.创建客户端访问服务器数据库的正常工作用户(LOGUSER),配置LOGUSER访问数据库中各数据表的访问权限。
b.创建LOGUSER用户口令密文数据表TPassword Cry:用户名LOGUSER即客户端访问服务器数据库的正常工作用户,既客户端二次登录时的用户。
c.创建客户端程序用户表TelientUser:用户名和用户口令可采用一定的加密算法加密。共享用户名对应数据表TPassword Cry中的LOGUSER,用于在TPassword Cry表中查找客户端二次登录数据库时的用户名和口令密文的位置。
d 创建客户端程序首次登录用CUser,给CUser设置具有访问客户端程序用户表TC1 j entUser和口令密文数据表TPassword Cry的权限。
e.在数据库中添加存储过程ChangeUserPWD。
3.3.2 存储过程本身的安全性
如果一个加密算法本身没有安全性,那么不论加密算法有多好都是没有用的。有些数据库中,存储过程的默认设置是可以看到源码的,因此要注意将它加密后存储。在Oracle数据库中,可采用Oracle自带的包装程序wrap来进行相关处理。
3.3.3 客户端应用程序的二次登录访问
a.ProClient以普通用户CUser/CPassword登录数据库,访问用户表TCIientUser:
b.客户端用户输入用户名和口令,ProClient对用户名和输入口令进行加密,比较TCIientUser表中信息,如果口令正确,则进行下一步操作,否则报告登录出错。
C.如果客户程序是在一个维护周期中第一次登录,此时需调用存储过程changeuserPwD修改用户口令和口令密文。
d.读取共享用户名LOGUSER,然后在口令密文数据表TPassword Cry中读取相应的口令密文,根据密文计算出具体口令。
e.客户端应用程序ProC1lent以用户名LOGUSER进行二次登录,开始数据库的相关数据处理操作。一卡通系统中所采用的自动维护数据库用户口令的方法具有很强的适用性和灵活性,不针对具体的数据库和程序开发环境,适用于c/s或B/s结构的客户端应用程序。另外,具体的密文生成算法,自动维护用户口令的周期,从密文计算出口令的算法以及算法的多重程度可根据具体情况进行灵活调节。
4、结束语
本文根据系统在数据库安全方面的基本要求,对一卡通系统在数据库安全方面的基本要求作了分析,从用户口令认证的安全层面考虑提出了数据库用户二次登录法来保障一卡通系统数据库的安全,此方法可以有效防止系统应用中可能存在的对数据库的各种攻击、破坏和欺诈,使校园一卡通系统可以在开放的网络环境中安全地运行。
推荐文章
论坛热帖