随着互联网技术的迅猛发展,各行各业的信息安全问题也上升到了前所未有的高度,当然图书馆信息也不例外。再加上它是国家信息资源的有力组成部分,所以保护图书馆信息资源的安全成为我们义不容辞的责任。

一、图书馆信息资源的安全性

图书馆信息资源常常被安全问题所困扰,有三个棘手的安全问题无法解决。

问题一、一方面图书馆本身需要对自己的关键数据进行有效的保护;另一方面,图书馆用户从应用服务器提供商( Application Serviee Provider.ASP)尤其是美国的应用服务器提供商(包括硬件和软件)处获得应用支持和服务,在这种情况下,图书馆用户的业务数据存放在ASP处,其安全性无法得到有效的保障。

问题二、因为传统的图书馆数据库保护方式是通过设定口令字和访问权限等方法来宾现的。在图书馆界已经有不少文章对图书馆信息资源的安全性进行了广泛的讨论,并给出了一些解决方案。但是仍然停留在依靠设定口令字和访问权限上。但是只设定口令字和访同权限存在一些很大的安全漏洞,首先对于应用服务器提供商(特别是国外的应用服务器提供商)来说不起作用,对于网上黑客来说也不起作用,还有就是数据管理员可以不加限制地访问数据库中的所有数据。因此,有不少图书馆系统以种种手段来削弱系统管理员的权力,但是,一直没有有效的方法来解决这一安全问题。

问题三、来自世界各地的网上黑客的袭击,也是一个很大的隐患,大型图书馆信息系统运行平台一般是WindowsNT和Unix操作系统。这些操作系统的安全级别通常是C1、C2级,它们具有用户注册,识别用户、任意存取控制(DAC)、审计等安全功能。虽然数据库管理系统在操作系统的基础上增加了不少安全措施,但是,有经验的同上黑客会绕道而行,直接利用操作系统工具窃取或篡改数据库文件的内容。

二、图书馆数据库加密的必要性

解决以上三个同题的关键就是要对图书馆数据库本身进行加密,即使数据不幸泄露或丢失,也难以教人破译。对图书馆数据库进行加密,有两种方式:客户端加密和服务器端加密。客户端加密的好处是不会加重图书馆数据库服务器端的负载,并且可实现网上的传输加密。即使是服务器提供商也无法解密,从而达到对服务器提供商保密的目的,这仲加密方式通常利用技据库外层工具实现。服务器端的加密需要对图书馆数据库管理系统本身进行操作,属于核心层加密,需要数据库开发商的配合,这样一来又要依靠服务器提供商,还是不安全。对于希望通过ASP获得服务的图书馆用户来说,只有在客户端实理加密解密,才能有效保证图书馆的信息资源的安全。实现数据库加密以后,各图书馆用户的数据用自己的密钥加密,数据库管理员及数据库开发商获得的信息是加密后的信息,无法进行正常解密。这佯即使是购买的国外系统也可以放心大胆地使用。通过加密,图书馆数据库的备份内容成为密文,这样就减少了因失窃或丢失备份所造成的损失,由此看来,图书馆数据库加密对图书馆信息资源的安全管理足必不可少的。

在图书馆数据库客户端进行加密和解密运算,对图书馆信息系统的负载及运行几乎没有影响,用纯软件实现DES加密算法的速度日过200k字节/秒,如果对图书馆中文书目库中的l万条记录进行加密,加密和解密时间仅需1秒钟,这种时间延迟对用户来说不会有感觉的。

三、图书馆数据库加密算法与密钥管理

1、图书馆数据库的加密算法

图书馆数据库密码系统的两个基本要素是图书馆数据库加密算法和图书馆数据库密钥管理。加密算法是规定明文和密文之间变换方法的一些公式和法则,密钥是控制加密和解密算法的关键信息。应用于图书馆数据库加密的加密算法也叫做图书馆数据库密码,常用的图书馆数据库的加密算法有序列加密体制,分组加密体质、公开加密体质。

序列加密体制直接对当前的字符进行变换,是以每一个字符为单位进行变换的。每一个字符数据的加密与其它数据无关。相当于直接对明文加上同等长度的密钥,只要所用的密钥是随机散且不重复使用,即实现了。一次一密”的加密。从理论上讲,真正实现了“一次一密”的加密恳不可破译的,这样密码的明文和密支的长度一般不变,传递迅速,缺点就是黑客容易得到明文和密文的对照码,便于进行密码分折。分组密码体制的明文按固定长度分组,对各组数据用不同的密钥加密或解密,分组加密体制按分组进行加密变换,一个字符数据不仅与密钥有关,而且还与其它数据有关,密码分析的穷尽量很大。在使用分组密码时,对明文尾部不满一个整组的碎片通常采用填充随机数的办法将其扩充为一个整组,然后进行正常加密。由于尾组的扩充,使得密文的长度大下明文的长度。分组密码可用于图书馆计算机存储加密,但因为图书馆数据库加密后长度不应该改变,所以必须改进分组密码体制的使用方法。公开加密体制的缺点是加密解密速度较慢,这类密码的运算速度仅是其它类型密码运行速度的百分之一或更低,公开加密体制目前仅用于图书馆用户认证、密钥传输等。因为速度慢不能用于图书馆数据库加密。

序列加密和分组加密也叫做对称性密码。这类密码加密和解密必须使用相同的密钥。公开密钥密码也称非对称性密码,这类密码体制具有两个密明,公明和私钥,加密时用公钥,数据时用私钥。图书馆数据厍对加密系统的要求是数据库加密后数据量不应有明显增加,加密、解密速度要足够快,数据处理响应时间应该让图书馆用户能够接受。

改变对分组密码算法的传统的应用处理方法。使其加密后长度不变,就能满足以上要求。我们以效据加密标准DES为例说明,DES是一种对二进制数据进行加密的算法,数据分组长度、密钥长度,输出密文长度都是64位,明文经过16轮的叠代,乘积变换,压缩变换等编码过程输出密文。对尾部碎片采用“密码挪用法”以克服传统的“填充数据法”造成数据扩展的缺点。

2、图书馆量据库的密钥管理

图书馆数据库加密需要进行二级密钥管理,一级密钥为主密钥,二级密钥为工作密钥。主密钥的作用是对二级密钥信息进行加密生成工作密钥。工作密钥用于对图书馆数据库数据进行加密和解密。工作密钥信息长度为64位,前56位是记录名。需要带校验存储在图书馆数据库表中,后8位是图书馆数据库表的列信息,它们是临时生成的。为了存储数据库数据,每个图书馆数据库表增加一个记录名字段,在图书馆用户录入数据时,系统自动生成记录名数据,使每条数据都有一个记录名,并使记录名相互不重复。

存图书馆数据需要加密和解密时,将相应的64位二级密钥信息用主密钥进行加密即得到工作密钥。用工作密钥完成对图书馆数据加密和解密。对于多图书馆服务器,多图书馆数据库、多图书馆用户等情况,图书馆数据库加密系统中还需要根据应用需求增加一些信息。方法就是将以上各类实体分别进行编码、存储并依据不同情况使用。

四、图书馆数据库的加密管理程序

图书馆敌据库的加密管理程序是定义加密数据项的工作,它可以创建和删除加密字典。对表进行加密和解密以及修复,它利用图书馆数据库加密引擎来完成对图书馆已有数据的加密和解密。图书馆数据库加密管理程序由用户注册摸块、加密字典配制模块,加密定义修改模块,表信息检索模块、密文表配置摸块,数据转换模块等组成:

甩户注册模块是启动图书馆数据库加密程序后必须通过的身份验证模块,该模块防止未授权人员使用图书馆数据库加密管理程序,通过身份验证后操作员才可以使用其它的功能模块,如果注册成功,则获得用于所有歙据库操作的全局变量QLCA。

加密字典配置模块用于创建和删除加密字典。在选择创建和删除加密字典操作后,图书馆数据库加密程序即调用该模块的相应的功能函数,调用参数是QLCA。创建加密字节的过程是首先验证数据库中加密字典是否存在,若已存在则报错退出,不存在则生成加密字典表;如果创建成功,则显示操作成功,否则显示操作失败;然后记载加密字典的标识等信息。

加密定义修改模块提供了一个窗口界面,在此界面中可以指定需要加密和解密的表及字段,程序根据实际的加密和解密要求,完成数据库结构及加密字典的调整和数据的加密和解密转换工作。该模块是图书馆加密管理程序的主要模块,它通过S-tab参数凋用“表信息检索模块”,“密文表配置模块”、“数据转换模块”来完成一个表的加密定义修改任务。该模块的处理过程是首先由图书馆用户选择一个表,调用“表信息检索模块”,得到表的所有字典信息;列出丧的字段信息,供图书馆用户修改加密定义:根据图书馆用户的络改要求,将加密和解密要求确切定义为加密、解密、更改三种类型。若操作是加密,更改,则创建密文表及加密字典,调用“数据转换模块”的相应函数,完成表数据的明密转换,若操作是解密、更改,则删除、更新密文表及加密字典:在以上操作中,成功则进行下一步,否则显示错误信息,终止退出。

表信息检索模块的作用是从数据字典中检索出与某个表有关的各种信息.故人S-tab结构变量中,这些信息包括表名、表标识。主键定义、外链定义、索引定义,宇段定义等,供其它模块使用。表信息睑索模块以函致形式提供服务,输入参数是SQLCA和表的名称,输出数据存放在S-tab的数据结构中,成功返回1,失败返回0。该模块被“加密定义修改模块”、“密文表配置模块”调用。处理过程是首先根据输入的名表,获得该表的表一级信息;获得该表的主键信息;获得该表的外键信息;获得该表的索引信息·获得该表的所有列信息。获得该表已有的加密定义,在以上操作中,成功则进行下一步,否则显示错误信息并终止退出。

密文表配置模块的功能是根据图书馆用户确定的加密定义创建和删除密文表,同时将加密定义写入加密字典或从加密字典中删除有关内容。它为加密定义修改模块提供杓建密史表及加密字典信息服务以及删除、更改霄文表及加密字典信总的服务。用户的加密定义存放住S-tab数据结构中,作为输入参数,“密文表配置模块”根据S-tab中的加密定义进行处理,最后将操作成功或失败的结果退回给“加密定义修改模块。构建密文表及加密字典信息的步蓑是首先根据加密定义构造出密文衰的SQI,命令陶建密文表I然后再恨据加密定义创建出密文表主键的SQI命令,建主键I根据加密定义构造出密丈表外键的SQL命令,建外键,根据加密定义构造出密文表索引的SQL命令建索引;将加密定义信息存入加密字典表。删除、修改密文表及加密字典信息的步骤是首先删除与原密文表有关的加密字典内容,若加密和解密操作是更改,则将新的加密表名换成原来应当使用的名称。删除原密文表,保证原密文表为空,若加密和解密操作是篡改,则将新的密文表换戚原密文表的名称;以上操作中如成功则进行下一步,否则显示错误信息,终止退出。

数据转换模块是专门为加密定义修改模块服务的.能完成—个表的加密,解密以及加密列的变更三种需求下的数据转换工作。数据转换模块程序形式是一个独立的动点连接库,它输出三个函数供加密定义修改摸块调用。这三个函数的定义分别是;EncodeRows <Get-soi_Link,PutSQLLink.明文表名,转换条件,附加参数)、DtcodeRowsI Getsoi,LLrrk.PurSQLLink.明文表名,转换条件,附加参致)、Copy-deRows (CetsoLLink.PurSQLLink.明文表名,转换条件,附加参数X。它们出错返回“-1“。成功则返回1,实际被转换的记录敛。其中GerSQLLink和PutsoLLink由DBHandle <soLCA)函数转换得到,分别代表转换数据时Get操作( SELECT):与Put操作CINSERT&DELETE)所使用的不同数据库的接口参数,如果二次仅转换一条记录。etsoi_l.ink和PutsoLLink可以相同,一般情况下,Gtt SQLLink和Pu tsoi- I_ink必须不相等。

数据转换模块自身并不对数据进行加密或解密,实际的加密和解密工作由数据库加密和解密引擎完成,但必须事先将加密定义写入加密字典,供数据库加密和解密引擎使用。数据转换模块内部没有任何Commit或Rollback命令发往图书馆数据库服务器。它不考虑数据库事物的开始,提交、退回,而是留给调用者处理。只有PutSQLLink这个参数涉及列事物处理问题。GerSQLLink并不改变数据岸,不存在事物处理问题。

小知识之DES加密算法数据加密算法(Data Encryption Algorithm,DEA)是一种对称加密算法,很可能是使用最广泛的密钥系统,特别是在保护金融数据的安全中,最初开发的DEA是嵌入硬件中的。