随着网络在医院的快速普及.医院网络安全隐患也按比例增长。由于资金不足或主观认识不足的原因,很多医院只是采取简单的加装杀毒软件和防火墙进行外围被动防护,对在内部传递的信息进行明文传送。因此,只要突破医院网络的杀毒软件和防火墙等外围防线,医院内部的病案信息可以轻松获取。针对这个重大的安全隐患,必须根据医院特有的病案信息的结构特点,研究和设计出医疗信息加密模块,实现医院内部传递信息的主动防护。

一、医院病案信息的特点

医院病案的形成是一个复杂的过程。病案信息积累越多,信息内容越丰富,信息流的作用越强,反馈的强度越大,反映出来的病案质量也就越高。

1、病案编号

病案编号的种类和方法很多,概括起来有7类11种,如分为序列一单元编号的多号制、分为集中或分开管理的一号或二号管理制、冠字或字头编号、病人姓名、疾病名称、病人住址编号等。

2、病案索引登记

病案索引是指专业索取病案内容而设置的引得手段,一般通过分类编码和登记等方法来实现。建立索引便于查找病案号和有关病案资料、总结归纳资料的内容、简捷摘录有关资料,检索历史的引得等。常用的有:

病人姓名索引:可按门诊病人姓名、住院病人姓名和死亡病人姓名索引编设。

日期索引:可按人院日期、出院日期和转科日期索引。

疾病索引:可按疾病分类、手术分类、传染病索引编设。它是建立在疾病分类编目的基础上来实现的。

3、病案内容和排序

(1)门诊病案

病人在医院门诊期间医疗记录的正式病案。排列顺序:l)病案首页;2)病案副页(续页);3)各科检查报告;4)各科治疗记录单。

(2)住院病案

病人在医院住院期间医疗记录的正式病案。住院期间病案资料排列顺序:1)体温单;2)医嘱记录单;3)人院记录与人院病历;4)诊断分析及诊疗计划;5)病程记录;6)转科记录;7)手术记录(包括麻醉记录,手术报告,手术后病程记录);8)特殊病情治疗记录;9)会诊记录;IO)X线检查报告单;11)病理检查报告单(包括尸检报告单);12)特殊检查报告单;13)检验记录单;14)检验报告单;15)中医处方记录单;16)护理记录单(包括护理计划和特护记录);17)病案首页(包括住院证);18)门诊病案;19)上次住院病案;20)院外医疗资料及有关证明。

出院后的病案资料排列次序:1)住院目录页(在本院2次以上住院者用);2)病案首页(包括住院证);3)死亡者死亡报告单;4)入院记录和入院病历;5)同住院期间病案资料之4)~16)排序;6)医嘱记录;7)体温单;8)其它;9)门诊病案(限编号系统的集中管理制,分开管理制者分开排存)。

二、病案信息数据库加密算法的设计思想

1、加密粒度的选择

病案信息数据库加密的粒度应是每个记录的字段数据,若以文件或列为单位进行加密,会造成密钥的反复使用,从而降低加密系统的可靠性或者因加/解密时间过长而无法使用。

2、加密算法的选择

数据库加密最广泛的主要算法有两类,分别是对称密钥算法和公开密钥算法。

(1)对称密钥算法

对称密钥算法的特点是解密密钥可由加密密钥推出(反之亦然)或者两者相同。对称密钥算法一般又可分为两类,序列算法和分组算法。序列算法一次只对明文中的单个位(或字节)运算,分组算法是对明文的一组进行运算。典型的分组算法有DES算法。

(2)公开密钥算法

公开密钥算法也称非对称算法,其特点是用作加密的密钥不同于解密的密钥,而且解密密钥也不能根据加密密钥计算出来。其中加密密钥能公开,称公开密钥;一般用户能用公开密钥加密数据但只能用相应的解密密钥解密,该密钥称(用户)私钥。典型的公开密钥算法有RSA算法。

(3)病案信息加密算法的使用预期

在设计病案信息数据库使用的加密算法时,应该考虑到以下注意事项:

1)数据库加密以后,数据量和所占的存储空不能有明显增加;

2)算法在加密和解密过程中,速度要足够快,数据操作响应时间应该让用户觉得可以忍受;

3)无论数据库的类型是关系型的,还是层次型的,加密算法应直接对数据库中记录或字段进行加密。这样才不会降低加密系统的可靠性或加,解密时间过长。

三、病案信息数据库加密算法的设计

一般而言分组算法比非对称算法速度快得多,在软件实现时,DES算法大约要比RSA算法快100倍。为了达到病案信息加密算法的使用预期,笔者采用的是DES算法对病案信息数据库实现加密。

1、病案信息DES算法过程

标准的DES算法的入口参数有3个:Key、Data、Mode。其中Key为8个字节共64位,是DES算法的工作密钥;Data也为8个字节64位,是要被加密或被解密的病案信息数据库中某个字段的数据;Mode为DES的工作方式分为两种:加密或解密。

参考标准的DES算法,病案信息DES算法的工作方式为:如Mode为加密,则用Key把数据Data进行加密,生成Data的密码形式(64位)作为DES的输出结果;如Mode为解密,则用Key把密码形式的数据Data解密,还原为Data的明码形式(64位)作为DES的输出结果。病案信息DES算法过程如图1所示。

医院病案信息加密模块的研究

使用16次乘积变换的目的是使明文增大其混乱性和扩散性,使得输出不残存统计规律,使破译者不能从反向推算出密钥。

2、病案信息DES算法的实现步骤

(1)病案信息DES算法密钥生成过程

在病案信息数据库中,取64位作为初始密钥(或称主密钥),每8位中有1位奇偶检验位,故主密钥实质上只有56位!经过排列选择PC-1(PC是permutation choose的缩写)。分成Co和Do两部分,各28位。将Co、Do各循环左移1位得到C1、D1,再经过排列选择PC-2得到了密钥Kl;对C2、D2;作循环左移位后得到C2\D2,经过PC-2得到子密钥K2;……直到产生子密钥K16。病案信息DES
算法密钥生成过程如图2所示。

医院病案信息加密模块的研究

其中图2中的主密钥K产生密钥K1-K16的全过程如图3所示。

医院病案信息加密模块的研究

(2)密文的病案信息解密运算

由于DES加密算法中的模2加法的特性和最终排列与初始排列的可逆性,解密运算与加密运算一样,流程也一样,如图2所示,但只是解密时所取子密钥的顺序不同,加密时候取子密钥的顺序是:K1→K2→…→K16;解密时取子密钥的顺序则为:K16→K15→…→K1o。

四、结论

DES加密算法具有极高安全性,到目前为止,除了用穷举搜索法对DES加密算法进行攻击外,还没有发现更有效的办法。例如位长为56的密钥的穷举空间为256,这意味着如果一台计算机的速度以每一秒种检测一百万个密钥,则搜索完全部密钥将需要上千年的时间。

通过使用DES算法实现对病案信息数据库进行直接加密,虽然加密的效果可以达到病案信息的每个数据库中所有字段或记录。但没必要对所有数据库中的字段进行加密,建议对那些公用和公开的数据字段如:药品剂量单位、产品用量单位、疾病分类、手术分类、数据库的随机数等字段就没必要进行加密,因为这些字段所包含的信息足一种公众的、普通的和常见的表示方法,即使该信息的明文被非法截
取,对对方来说也没有任何意义,所以这些字段没有加密价值,这样做也能更好地使数据量和数据的存储空增加不明显,同时数据加密和解密响应时间让用户感到更加满意。

当然,随着科学技术的发展,当出现超高速计算机后,可考虑把DES密钥的长度再增长一些,以此来达到更高的保密程度。

通过使用具有高安全性的DES算法实现对病案数据库的字段或记录进行直接加密,实现医院内部传递信息的主动防护,使内部的传递信息具有很高的保密性。即使内部传递的信息在医院网络的杀毒软件和防火墙等外围防线被突破或被医院原网络管理员非法截取,他们得到的也只是一堆没用的字符甚至乱码。

小知识之非对称算法

非对称密钥算法是指一个加密算法的加密密钥和解密密钥是不一样的,或者说不能由其中一个密钥推导出另一个密钥。