浅谈医疗保险安全数据库系统的实现

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

浅谈医疗保险安全数据库系统的实现
医疗保险数据库管理系统是一个使用面广、结构复杂、性能要求高的应用软件。

本文简要阐述了数据库应用的安全技术:身份认证和数据库加密,在医疗保险数据库管理系统的实现。

1安全的用户注册和授权的实现
用户注册(用户的身份认证)往往是系统安全的第一道、也是最重要的安全屏障,这个屏障一旦被攻破,整个系统就无安全性可言。

为了实现提出的数据库应用的安全要求,应解决以下几个问题:
1.1用户的身份认证。

本系统采用了用户名加密码,再加电子钥匙Ekey验证的双重认证的办法,对用户的身份进行认证。

用户首先要在客户端安装电子钥匙驱动程序,而后在登陆系统时,将电子钥匙Ekey插入到USB端口,登陆页面将使用特定的函数读取存储在Ekey中的用户信息,同时用户输入自己的用户名和密码,点击确定按钮后,页面将这些信息以密文形式发送到服务器端,服务器对这些信息进行解密后,进行信息的核对比较,如果输入的信息以及Ekye中的信息正确,则用户身份确认为合法用户,系统登陆成功;否则视为非法用户,不允许登陆使用本系统。

1.2用户权限分配和控制。

本系统中使用功能模块作为分配用户权限的基本单位,实现权限控制。

系统中建有角色表,其中存储了各个系统权限,以及各个权限对用的模块,以一个0,1字符串表示权限,成为权限字,也就是说每个模块对应权限字中的某一位,如果该位字符为1,则表示用户拥有使用该模块的权限,0则表示没有权限。

在对角色进行定义后,系统再将这些角色赋予特定的操作员,也就是将这些角色的编号与操作员进行绑定,这样便实现了用户的权限分配和控制。

2客户端的安全访问
为了保证系统用户可以正常的登陆使用本系统,同时又防止非法用户登陆,在客户端我们专门设置使用密码加上电子钥匙Ekyc做为系统的第一步安全保障。

电子钥匙Ekye是结合了USB接口技术和智能卡技术的新一代数据安全产品。

它既完美地继承了已有智能卡技术的安全性又结合了新型USB接口的数据传输能力,比传统的智能卡设备更加低廉,而应用更加灵活方便,体积小巧,方便使用者随身携带,无需任何附加电源,直接与计算机连接通讯,无需任何读卡器设
备,是保护用户敏感数据的理想设备。

具有高安全性、灵活易用、造价低廉、高可靠性等优点。

我们利用电子钥匙Ekey的这些优点,将用户信息加密存储在其中。

在客户端登陆页面中,我们设置了获取电子钥匙Ekey的对象,当用户点击确定按钮时,夺取USE端口的电子钥匙中的用户信息,将它同用户名、密码一起,通过SSL加密后,以密文形式发送到服务器端,服务器端再进行进一步的比较。

服务器端获得客户端传送过来的信息后,逐步在数据库表中进行比较核对,数据库中的表分别为:操作员信息表〔Operator Info):存储操作员信息、包括ID,已加密的密码、权限值、状态等;角色信息表(Role Info):存储权限值对应的具体权限以及状态等。

首先,系统根据获得的电子钥匙Ekey的信息进行判断,若获得的信息为“为安装驱动程序”(---keysetuperror---)或“未定义”(undefined),则表示客户端没有安装电子钥匙驱动程序,登陆页面无法从客户端获取电子钥匙中的用户信息。

此时提示“您必须使用EKey登陆!但是现在您没有安装EKey驱动程序,请下载安装!”,并在页面中提供下载驱动程序的链接。

如果获得的电子钥匙Ekey的信息为“未插入电子钥匙”(---noinsertkey---)则表示客户端已经安装了电子钥匙驱动程序,但是在登陆时没有在USB端口插入电子钥匙设备,此时提示“您必须使用EKey登陆!但是现在您没有插EKey,请插入EKey!”。

如果获得的电子钥匙Ekey的信息为“没有用户”(---nouser---),则表示登陆时客户端已经插入了电子钥匙设备,但是该设备中没有设置用户信息或者该设备已经损坏,此时提示“您必须使用EKey登陆!但是现在您没有插EKey非法或EKey中用户不存在!”如果获得的电子钥匙Ekey 的信息合法,那系统再进行下一步的检查,检查所获得的电子钥匙信息和用户名是否一致,不一致则给予提示“您使用的EKey与用户名不匹配!”。

若这些都已经通过了,最后系统来进行数据库的连接,检查用户名和密码是否正确,在进行比较之前,为了保证安全,我们首先对所接收到的密码进行简单的加密处理,利用每个字符的ASC码来替换。

这样经过加密后的数据与原先的数据己经有很大的不同,例如,我们输入的密码是:5dZuN0,经过加密后,加密后所得密码形式为:532090377848。

最后,系统检查用户名和密码是否匹配,即在数据库中查找用户名和密码分别为所接收到的信息的纪录,若存在,再判断操作员状态是否有效、角色权限状态是否有效,若上面有一项无效或不存在,则登陆失败,在页面中提示“用户名与密码不符”。

若都为有效,则登陆成功,在系统中设置Session 常量,该常量有一定的有效期,如果用户停止操作时间超过有效时间,Session 常量会自动清空。

利用这一点,我们在系统中的每个页面中都包含一个检查Session常量是否为空的函数,一旦检查结果显示为空,则表示用户操作已经过期,需要重新登陆,系统自动将页面转换到登陆页面,以实现系统的安全。

Session 常量的默认有效时间是20分钟。

3数据库加密和密钥管理的实现
直观上讲,数据库加密就是在数据库管理系统(DBMS )的外面加一个数据库安全管理系统(SMS:SecureManagementSoftware)。

3.1数据库加密的实现。

数据库中敏感数据集D={d1,d2,…,dn},di(i=1…n)代表加密数据项的明文,相应的数据密钥集KD二{kdl,kd2,…,kdn),加、解密算法为(E,D)。

这样加密数据项可表示为
实现数据库加密的本质就是对敏感字段内容进行加密后,以密文形式存储在数据库中,那么加密懈密过程就非常重要。

3.2数据完整性的实现。

要保证数据的完整性,可以在源端(本系统中是医疗信息系统)对要传输的影像信息数据M使用SHA一散列算法生成消息摘要H,然后与M连接起来一同发送,在目的端接收到数据以后,把它们分拆成两部分M和H,对其中的影像数据M同样使用SHA-1算法生成消息摘要H’,检查如果H=H’,则数据M在传输过程中没有被篡改。

3.3数据保密性的实现。

要实现数据的保密性,可以在源端使用加密算法对数据明文M进行加密生成密文C,在目的端使用相应的算法和密钥解密。

完成此功能尽管有对称密钥算法和公开密钥算法两种选择,但是出于效率、安全和软件运行速度的考虑,本系统中使用了对称算法IDEA来完成加密,其中的加密密钥在密文传输以前由双方协商。

3.4数据不可否认性的实现。

实现数据的不可否认性,可以由发送方在源端对要发送的数据使用自己的私有密钥加密,在目的端由接受方使用发送方的公开密钥解密,因为私有密钥的唯一性,如果接受方解密成功,则证明该数据只能由发送方传输,无法抵赖。

同样处于效率的考虑,实现的时候只对数据的信息摘要进行加密。

4小结
由于现在的数据库管理系统不支持数据库加密功能,而我们使用的数据库绝大部分是国外产品,无法得到数据库管理系统内部的技术支持。

只能在数据库管理系统的外层增加数据的加解密过程,来保证敏感数据的保密性,但也伴有增加系统的复杂性和系统性能一定的降低的问题(在这个项目中,由于增添安全技术,系统性能总体降低约20%)。

相关文档
最新文档