网络考试系统—般采用目的主流的中小型企业级数据库MS SQL Server,它提供了身份验证、权限验证、访问控制。数据库备份和恢复以及审计等安全管理机制,但对数据库文件本身仍然缺乏有效的保护措施,对数据库敏感数据进行加密保护是目的解决问题的最佳办法。

一、数据库文件加密在网络考试系统中的基本要求

网络考试系统中涉及的人员众多,大致可以分为两类人员:管理人员和考生,其中考生数量众多,流动性火,而且很多考生可能参加了一次考试就不会再参加考试了。此外,考试过程中用户对系统的实时性要求很高。针对系统的特点,其数据库文件加密应满足以下基本要求:

1、密钥动态管理

数据库客体之闻隐含着复杂的逻辑关系,一个逻辑结构可能对应着多个数据库物理客体,所以数据库文件加密不仅密钥量大,而且组织和存储工作比较复杂,需要对密钥实现动态管理。

2、合理处理数据

首先要恰当地处理数据类型,否则DBMS将会因加密后的数据文件不符合定义的数据类型而拒绝加密。

3、加密强度大

理论上数据文件加密后应该是安全的或者破解的难度很大。

4、字段加密

考虑到系统的性能和实时性要求,应该只对关键字段加密。如果加密和解密的粒度是文件将降低系统的可靠性,而且会因加密和解密时间过长而令用户无法忍受。

5、不影响合法用户的操作

加密系统影响数据文件操作响应时间应尽量短,在现阶段,平均延迟时问不应超过1/10秒。

此外,对数据库的合法用户来说,数据的录入、修改和检索操作应该是透明的,不需要考虑数据文件加密和解密问题。

二、数据库文件加密策略设计

1、数据库文件加密的模型

对数据库文件进行加密,可选择的层次主要有操作系统层、DBMS内核层和DBMS外围层,三种方案各有优缺点。

比较实际的做法是在DBMS外层实现加密,就是在数据库外围构造一个数据库系统的加密软件和解密软件。采用这种加密方式时,加密和解密运算可以放在客户端进行,其优点足不会加重数据库服务器的负载并可实现网上传输加密,缺点足加密功能会受到一些限制,与数据库管理系统之问的耦合性稍差。

本方案中加密数锯库文件的模型如图1 所示。该模型采用B/S结构,在服务器端的加密,解密引擎处理从客户端发来的对加密数据库文件的访问请求并将结果返回给客户端。对数据库的合法用户来说,数据的录入,修改和检索操作是透明的,不需要考虑数据文件加密和解密问题。

数据库文件加密在网络考试系统中的应用

加密字典中记载了用户对数据库文件信息具体的加密要求,它是数据库文件加密系统的基础信息。

加密字典管理程序是数据库管理员定义加密数据项的工具,提供了创建加密字典、删除加密字典、表加密、表解密、表修复、加像字典权限管理等功能,它利用数据库文件加密和解密引擎完成对已有数据文件的加密或解密处理。加密和解密引擎位于浏览器和数据库服务器之间的Web服务器上,是数据库文件加密系统的核心部件,负责后台完成数据文件加密和解密处理。

2、字段加密方式

本文对不同记录的相同字段采用不同的密钥加密,虽然安全性好,也可以灵活选择需要加密的字段值,但其密钥的数量是非常庞大的。如果一个表中有M条记录,一个记录中有N个需要加密的字段,那么这个表需要的加密的字段是M*N,整个数据库系统中密钥数量则更多,随着数据库中记录的增加,这个问题会越来越突出。为了减少时空消耗,本文的方案中对不同记录的相同字段采朋相同的密钥加密,即一个加密字段对应一个数据密钥,一个数据密钥为多个授权用户共享。但这样又会带来一定的不安全性,容易被统计攻击。例如:对于不同记录p和q上属性相同的两个数据项xpj和xqj,若xpj=xqj,则加密后的密文是相同的,即cpj=cqj,这样,如果cpj和cqj中的任意一个被破译,那么xpj和xqj就会同时被泄露。由于同一属性中数据项的取值在一定范围之内,且往往呈现一定的概率分布,攻击者甚至可以不用求原文,而直接通过统计方法,就可以得到有关的原文信息。对于考试系统来说,需要加密的字段的取值范围一般较宽,特别是重要的试题内容,黑客根本不可能进行统计攻击I选择题的答案范围最小,一般在A、B、C和D四个取值范围内,很容易被统计攻击,但只要加密算法的强度够大,黑客就不可能轻易破解得到明文。

3、AES加密算法的选择与改进

有人认为使用一个不公开的加密算法可以增加系统安全性,其实不然,未经验证的加密算法很可能存在漏洞,有逆向工程分析经验的人员利用Ollydbg之类的跟踪调试工具就可以轻易地破解其加密算法。由于考试系统会被反复使用,所以仅靠加密算法的保密很难保征信息的安全。因此,选取的加密算法应该是公开的,其安全性应该只基于密钥的长度,而不是基于算法或控制的秘密。数据库加密算法一般采用算法公开、计算曼小、加密速度快、加密效率高的对称加密算法。目前常用的对称加密算法有DES、3DES和AES等。DES加密算法运行速度最快,而128位AES的加密算法对数据进行加密保护。

AES加密算法中,当数据分组长度和密钥长度均为128位时,要加密的数据即明文被分成128位一组。如果明文分组的长度不是128位的整数倍时,最后一个明文分组的长度就小于128位。如果采用填充"00”或其他数据使其长度也为128位,加密后的数据文件就大于明文的长度,不符合数据库加密算法的要求。为使加密后的数据文件长度不变,我们采用“密码挪用法”来解决。当待加密数据的长度为24码(即192位)时,密码挪用法加密过程如图2所示。

数据库文件加密在网络考试系统中的应用

第一个整组(1~16码)加密后截取第9~16码的密文与尾部(17~24码)组成—个整组进行加密,加密所得密码接在前一组的第8个密码之后。其中,第9~16码实际上进行了二次加密,在解密时也应该进行二次解密。这一改进既保证了128位分组加密,同时也保证了数据库文件加密以后,数据长度不会变化。

4、密钥管理策略

密钥管理方案虽然能够充分地保证加密的强度,然而它有两个明显的缺点,一是没有提出很好的主密钥保护方案,一旦主密钥泄露或被攻破,所有被加镥的数据就将暴露无遗,二是主密钥的更换将纯大量的时间,因为每一次更换主密钥,都要解密所有的密文数据,然后再用新的主密钥加密这些被解密的数据。一种好的加密数据库加密机制,应尽量减少密钥生成。分派、存取、更换时的工作量和降低可能的安全风险,同时还应尽可能考虑用户的使用习惯,保征用户易于使用。

考试系统中,考生的特点就是数量众多,流动性大。这里我们可以为每位考试系统的用户分配一个用户密钥,用户口令对用户密钥进行加密,用用户密钥对数据密钥进行加密,最终用数据密钥对数据进行加密和解密。具体实施方案如下:

在用户注册成功时,由系统采用投币法为其产生56位的二进制密钥,即用户密钥,并以用户口令的Hash值为密钥用AES加密算法加密后存储在用户信息表中1系统为用户分配权限时,以用户密钥为密钥用AES加密算法加密授权字段的数据密钥(系统随机产生)后存储往用户权限表中;数据密钥对明文数据用AES加密算法进行加密得到密文数据存储住数据库中。这个密钥管理方案的安全问题最终集中在用户口令的安全上。为提高系统的安全性,用户需要不定期更换用户口令,这时只要用IH口令的MD5值解密该用户的用户密钥,再用新口令加密用户密钥即可,不必进行大量数据文件加密和解密,大大提高了系统的性能。

三、方案分析与完善

本文提出的数据库文件加密方案能够保证授权用户正常访问数据,也允许授权用户之间对加密数据共享访问,密钥管理方便、有效。为了进一步提高系统性能,减少不必要的开销,对以下两种情况要特别处理:

一是用户登录后可能委多次访问巳授权的加密字段,可以在用户登录后将解密得到的用户密钥的明文存储在应用程序上下文中,以后每次要用到时直接在应用程序上下文中取出,这样一次完整的访问密文数据的过程最多需要执行3次AES,从第二次访问开始只需执行两次AES,而AES的速度是非常快的,对系统的影响用户几乎感觉不到。

二是数据库表的数据文件加密后,密文数据将不再保持明文数据原有的顺序关系,如果加密建立在某个索引字段上,而用户的查洵条件又刚好涉及到该加密字段,就不能实现快速查询了。改进的办法之一是将查询条件加密后再进行密文查询,最后将得到的查询结果解密返回给用户。

小知识之网络考试系统

网络考试是延伸了传统考试考场的涵义,它利用网络的无限广阔空间,把考场从学校延伸到了家中、计算机房、办公室及其它任何网络所覆盖的区域,并可随时对考生进行考试,加上数据库技术的利用,使考试变得更公平公正、更具权威性和可靠性。网络考试实现了传统考试与现代科技的完美结合,符合现代教育体制的要求,代表着现代教育考试的发展方向。