论述了基于浏览器方式的数字图书馆信息系统,在安全方面采用了身份识别验证与数字签名技术、多层次的权限控制技术、工作流程安全机制等安全技术,并尽最大可能利用网络环境、操作系统以及数字图书馆服务器本身的安全机制,将非法访问和数据的篡改降到最低的限度,以保障数字图书馆的信息安全,系统的安全是可以信赖的。
1 概述
随着以网络为核心的高新技术突飞猛进的发展,信息传播的方式发生了重大的变革,作为文献信息中心的图书馆也基本具备了采访、编目、书刊流通、公共查询和读者咨询服务等主要功能的计算机网络管理,逐步实现了自动化、网络化、数字化的操作和管理,在由传统图书馆逐步向数字图书馆转变。在数字图书馆的建设过程中,网络安全问题会显得越来越突出,数据资源的共享与网络安全两者之间的矛盾也将会越来越突出。保障数字图书馆网络系统的安全和正常运行,在其现代化的管理中具有非常重要的地位。
2 数字图书馆网络与数据安全面临的主要问题
凡事预则立,不预则废。做好数字图书馆网络安全管理的前提是对网络安全威胁和存在的问题有充分的认识和预见性。数字图书馆在带来各种便利的同时,也带来很多新的安全问题,如黑客攻击、病毒爆发、非法用户入侵等。另外,数字图书馆网络中存在不安全因素,包括:非法登陆、窃取信息、安全漏洞、内部的攻击、病毒的侵害、非法使用网络、来自外来计算机和电子邮件的破坏等。
3 构建数字图书馆网络安全体系的基本原则
网络安全是指网络系统的各个组成部分不因偶然或恶意的原因而遭到破坏、篡改和泄露,网络系统正常可靠运行、网络服务持续不中断。它包括物理安全、软件安全、数据安全和运行安全, 如图l所示。物理安全是指整个图书馆网络系统中硬件设备的安全;软件安全是指网络平台及应用程序的安全;数据安全是指数据存储和传输的安全,包括数据的完整性、可用性、可靠性;运行安全是指整个图书馆网络系统各部分都能正常运行。图书馆网络安全体系的构建就是以物理安全、软件安全、数据安全为内容,在保证数据安全的前提下,为读者提供优质的网络信息服务,同时必须充分考虑安全体系的经济性。
3.1 数据安全
图书馆数据库中存储数据或信息是其赖以存在的物质基础。如图书管理系统中的流通数据库,包括读者借阅信息、读者个人信息,一旦发生数据丢失或损坏,必将会影响图书馆流通工作的正常开展;电子阅览室管理系统数据库中同样也存储着读者存款信息、上机信息、计费信息,这些数据的丢失或损坏必将会给读者和图书馆造成损失。因此,构建数字图书馆网络安全体系的首要原则就是维护数据的安全。
3.2 服务质量
网络安全不能以牺牲服务质量为代价, 在注重网络安全的同时必须保持优质的网络信息服务。在网络受到攻击或遇到其它意外情况时, 轻易切断网络或停止部分功能以保障网络安全的做法是不可取的。在信息膨胀、节奏加快的现代社会,服务意味着承诺与信誉。必须保证网络的强壮性,即使遭受攻击,也能在最短的时间内恢复服务。
3.3 经济性
关键的网络设备与安全软件比较昂贵, 在使用中并非多多益善, 否则将超出经费预算, 给图书馆其它工作的正常运行带来影响。对数字图书馆而言,经济性是选用网络安全方案的一个重要参考因素。可以采用优化的网络安全策略,最大限度地发挥网络各部分安全措施的功效,达到立体防御的效果。
4 数字图书馆数据安全的实现
4.1 采用.NET技术的数据安全保障功能
微软所开发的.NET技术是完全基于XML数据交换的革命性平台。微软这一平台的设计意图十分明确,就是要把网上所有可用资源通过统一的数据格式整合为一个解决方案。这个设计意图使得.NET技术在对数字图书馆数据的处理方面有着很好的优势。.NET提供了多种符合W3C标准的命名空间和类来实现数据加密、数字签名和XKMS服务的功能。利用.NET所提供的安全功能可以有效的在数字图书馆信息系统中保护数据的安全。
4.2 数据加密功能
数字图书馆框架中,有三个命名空间涉及到数据的加密:
1) System.Security.Cryptography
这是一个提供密码服务的命名空间,在这个加密命名空间中有支持多种加密算法的类。密码服务程序类的列表如表1所示。
2) System.Security.Cryptography.X5O9Certificates
包含了W3C规范中.X509证书检索等的有关功能。
3) System.Security.Cryptography.Xml
应用在.NET框架下的特有的数据加密安全系统,可对数字图书馆流程信息文档部分或全部内容进行加密。
上述的三个命名空间使得数据加密功能在使用的方便性方面有了很大的提高,这也是.NET在实现数据安全方面的优势。例如在数字图书馆信息系统中需要对XML的数据进行加密,可以通过例程1实现(例程1以.NET中的C#语言编写)。
例程1:加密XML数据
using System.Xml;
using System.Security.Cryptography;//引用加密算法的命名空间 RSACryptoServiceProvider crypt=new RSACryptoServiceProvider();
//创建加密算法类的实现对象
System.Text.UTF8Encoding enc=new System.Text.UTF8Encoding();
//把数据字符串转换为字节数组
Byte[]bytes=enc.GetBytes(“数字图书馆信息系统中的XML数据”);
Bytes=Crypt.Encrypt(bytes,false);//)加密XML数据
在上述例程中直接使用了.NET在System.Security.Cryptography命名空间中所提供的加密算法类RSACryptoServiceProvider来加密XMI 数据,即快捷又安全。
4.3 数字签名功能
数字图书馆还采用了.NET框架在System.Security.Cryptography.Xml命名空间中对数字签名所需的全方位支持。在System.Security.Cryptography.Xml命名空间中可直接创建、、和等XML数字签名元素的对象,并可使用SignedXml类和它的ComputeSignature()和CheckSignature()方法来实现数字签名和验证数字签名的功能。例程2用C#语言实现了对一个包含数字图书馆信息的XML数据文档进行签名的处理。
例程2:数字图书馆文档的签名处理
using System.Xml;
using System.Security.Cryptography;
using System.Security.Cryptography.Xml;//引用加密算法的命名空间
SignedXml SignedXml=new SignedXml();//创建XML签名
Reference reference=new Reference();//指定要签名的数字图书馆文档
Reference.Uri=@ “file://”+“@数字图书馆文档”;
SignedXm1.AddReference(reference):
RSA crypt=RSA.Create();//使用RSA算法进行加密
SignedXm1.SigningKey=crypt;//生成RSA签名的密钥信息
Keylnfo keylnfo= new Keylnfo();
RSAKeyValue rsaKey=new RSAKeyValue(crypt);
KeyInfo.AddClause(rsaKey);
SignedXm1.Keylnfo=keyinfo;
SignedXm1.ComputeSignature();//正式签名
XmlElement xmlSignature=signedXm1.GetXml();//把签名放入XML文档
XmlDocument doc=new XmlDocument();
在上述例程中使用了.NET的XML数字签名类创建了一个独立的数字图书馆文档的数字签名。
4.4 数字图书馆密钥管理规范服务(XKMS)
在.NET框架下,XML密钥管理规范服务是以Web服务的形式实现的,它允许客户端应用程序访问PKI服务,但客户端应用程序不需要关心底层PKI的语法,从而减少客户机应用程序的复杂性。XKMS服务帮助数字图书馆轻松地将网络安全措施(如数据加密和数字签字)和图书馆信息系统的应用结合起来。XML安全标准措施是建基于XKMS服务所提供的网络交易中的信任关系上,XKMS服务是实现XML数字加密和签名服务的媒介。
4.4.1 创建XKMS服务
数字图书馆使用Web服务描述语言(WSDL)来定义Web服务,WSDL定义了用于与服务通讯的SOAP消息和XML类型,而使用WSDL创建XKMS服务分两个步骤:
1) 用WSDL创建XKMS对象模型。WSDI 实用工具可创建一个适当类型的字段,该字段的名称与XML元素或属性的名称对应,这些类型直接映射为.NET公共语言运行库(CLR)类型。利用这些字段构建出XKMS对象模型。
例程3:构建XKMS的对象模型
public class Keylnfo{
[System.Xm1.Serialization.XmlElementAttribute(“KeyName”,typeof(string))]
[System.Xm1.Serialization.XmlElementAttribute(“KeyValue”,typeof(KeyValue))]
[System.Xm1.Serialization.XmlElementAttribute(“RetrievalMethod”,typeofRetrievalMethod))]
[System.Xml.Serialization.XmlElementAttribute(“XS09Data”,typeof(X509Data))]
[System.Xml.Serialization.XmlElementAttribute(“PGPData”,typeof(PGPData))]
[System.Xml.Serialization.XmlElementAttribute(“SPKIData”,typeof(string))]
[System.Xml.Serialization.XmlElementAttribute(“MgmtData”,typeof(string))]
[System.Xml.Serialization.XmlChoiceIdentifierAttribute(“ItemsElementName”)]
public object[]Items;
[System.Xml.Serialization.XmlElementAttribute(“ItemsElementName”)]
[System.Xml.Serialization.XmlIgnoreAttribute()]
public ItemsChoiceType2[]ItemsElementName;
[System. Xml.Serialization.XmlAnyElementAttribute()]
public XmlElement[]Any;
[System. Xml.Serialization.XmlAttributeAttribute(DataType=“ID”)]
public string Id;}
2) 用WSDL实用工具生成的原型代码可以使XKMS服务得以实现。这些原型代码可以控制Web服务名称、XML命名空间和参数序列化的属性,以该代码创建一个XKMS服务实现非常简单。只需把KeyService类定义和相关联的属性复制到一个ASMX文件并添加必需的Web服务声明:< @WebService Language=“C#”class=“XKMS.KeyService” >。另外还需把KeyService类放置在命名空间‘XKMS’中,这有助于清楚‘KeyService’的用途。
4.4.2 构建XKMS客户端
有了用于XKMS服务,构建客户端应用程序很简单。XKMS服务包含了客户端服务需要的方法以及使用那些方法所需要的所有类型。构建KXMS客户端包括:
1) 使用服务注册RSA公钥值
2) 根据KeyName值查找RSA公钥
3) 根据KeyID或KeyName值验证RSA公钥
通过客户端应用程序交互式地收集任何所需的输人,用户可以执行一系列这些操作,调用XKMS服务。
4.4.3 数字图书馆的安全机制
大部分的数字图书馆信息系统是分布式应用程序环境,分布式协作存在巨大的安全隐患。所以现在除了采用XML加密、XML数字签名和XKMS等方法来解决数据一级的安全保障外,还提供了一个可伸缩的、由权限驱动的安全机制来保障应用程序的安全。这种程序级的安全机制进一步加强了XML数据的安全,适合在物流信息系统中广泛应用。
1) 程序访问安全性
为确保应用程序的安全,需要限制授予程序的权限。当调用受保护的资源或操作时,.NET要求程序有一个确定的权限。除检查程序的权限外,也可以为程序请求必要的运行权限以实现具伸缩性的安全机制。
2) 角色安全性
在.NET运行时(runtime)系统里,每一个正在执行的线程都有一个身份叫管理员,这是安全环境的一部分。管理员执行基于角色的检查,对每一个要求连编的线程进行对象角色的检查以确定线程的合法性。
5 结论
综上所述,结合本市数字图书馆网络安全体系的实践,我们认识到,由于数字图书馆的最终目标是建设图书订阅自动化、面向统筹管理、面向公众服务的资源共享的综合信息系统,系统的复杂性和特殊性便决定了其安全问题的多层次性、重要性和迫切性。
网络安全管理应技术措施和管理措施并重,建立数字图书馆安全体系,应从物理安全、网络安全、数据安全、应用系统安全、安全制度建设、安全教育培训等多方面进行全面规划和周密部署。另外,在构建数字图书馆安全体系的同时,还需要注意结合本市数字图书系统实际进行设计,安全思路清晰、安全体系全面、安全重点突出等相关问题,使网络和数据安全建设即符合现代化图书管理工作的需要,又符合公共服务部门相关的安全保密要求。
作者:何俊杰 来源:电脑知识与技术 2009年4期