|
今天上午组里面开了个讨论会,大概的讨论了一下签名和检验签名的流程,初步想按下面这个思路来做:
1 签名的流程:
医生提交数据(在客户端点提交按钮)--> 提取要向数据库存的相关数据,按电子病历规范生成相应的XML串(或文件) --> 对该XML进行hash运算,生成hash码 --> 验证用户证书是否有效,包括该证书是否与HIS中用户信息区配,证书是否合法等 --> 调用CA证书进行签名,返回加密后的签名信息 --> 提交到时间戳服务器,进行签名 --> 加盖了时间戳的签名信息返回客户端程序后,向HIS数据库服务器提交数据,同时提交签名信息 --> HIS数据库服务器同时保存业务信息和签名信息。
2 验证签名证书的流程:
从HIS服务器提取业务信息及其对应的签名信息 --> 将业务信息按电子病历规范生成XML串 --> 对XML串进行hash运算,生成hash码2 --> 对签名信息进行时间戳服务器的证书解密 --> 对解密后的信息再使用签名人公钥解密,生成hash1码,这个hash1码即是提交业务时生成的hash码 --> 比较hash1码和hash2码,如果相等,则签名有效,即原始业务信息未被修改;如果不等,则签名无效,原始业务信息已被修改。
如果按这样的流程来进行程序的框架设计,有几个地方需要进一步细化:
1 各类业务信息生成XML串的规范,必须在任何时候都是一致的,否则不同的规范会导致同样的业务信息生成不同的XML串。随着业务和技术的发展,或许可以引入XML串生成规范的版本管理
2 医疗业务中,每一个需要问责的业务都需要定义XML串的规范,包括数据来源和数据组织方式
3 我们目前还没弄清楚时间戳服务器进行加盖时间戳的机制,以及对加盖了时间戳的签名信息进行解密时,能否还原时间戳服务器的签名时间,这个非常重要!!这是确定业务是否有效、是否合法的重要依据之一。
4 业务信息签名之后加盖时间戳,是由客户端程序各自独立提交,还是由HIS服务器统一提交,哪种方式性能更好?哪种方式各有什么特点?这些我们还没有搞清楚,还要进一步弄明白
5 卫生部已经颁发了电子病历的规范,我还没学透,等进一步钻研之后,才能判断已有的标准是不是已经定义到了每一个业务类别的规范
上午讨论完之后,大体就理了这些东西出来,我觉得越理发现不明白的问题越多,需要解决的问题越多。
但这个事情,今年肯定要动,如果能有公司合作的话,可能效果会更好一些,进度也能更快一些。还在思考中…… |
|