陆姗姗+谢龙龙+唐聪+赵子彰+林涛+石润华
摘要:远程医疗技术给人们的生活带来巨大的便利,保护病患的隐私变得愈来愈重要。该文构建了一套保护数据隐私的远程医疗查询系统,病患通过移动终端将人体体征数据发送给远程服务器,医生在获取相应的权限后,可通过web页面查看到患者传送的数据并将诊断结果反馈给移动终端。病患敏感数据在传输和存储过程中是以密文形式存在的,从而保证了数据的机密性。
关键词:远程医疗:查询:隐私保护
近几年,远程医疗技术随着医疗市场的需求的增长和信息技术的发展而蓬勃发展。远程医疗技术不仅不需要病患亲自去医院就诊,并且辅助治疗的同时可以在患者病情突然恶化时报警。另外,远程医疗可以用于日常对健康状况的评估,及时发现疾病的早期症状,从而达到保健和预防疾病的目的。
1系统功能
保护隐私的远程医疗查询系统分为手机端和Web(服务)端。界面美观,操作便捷。医生和患者使用时都需要经过身份验证,获取自己的账号后才能登录系统。服务端对从患者那里接收到的数据进行分析处理并通过Web页面展示给医生,最后把医生所诊断的结果再传输到移动终端App供患者参考。
Android端主要是患者使用。可以实现登录、一键拨号、查询天气、定位、好友列表、从本地查看数据和从服务器查询数据等功能,患者可以自主选择是否上传自己的个人信息(包括性别、年龄、心率、血压等)。这些数据上传至服务端,都会经过可靠算法进行加密。
Web服务器与后台数据库的搭建,以及实现数据共享。服务端经过信息过滤将患者的生理数据等信息展示给合法登入Web端系统的医生。医生可通过Web页面查看患者上传的信息,根据相应情况作出诊断后将结果反馈患者。医生在注册账号前需要先完成对其身份的验证过程,通过身份验证后才可以注册账号,登录账号后可以查看公告,和患者之间成为好友关系后,可以从好友列表中选择该患者并与其进行交流。
数据在发送前先对其加密,服务器接收到密文数据后,需要对数据进行解密,才可以对数据内容进行进一步的解析过程。数据库中数据也是以密文形式存放的。攻击者即使获取了数据库或者传输过程中的密文数据,也无法解析其中内容。
2系统设计
本系统使用JAVA程序开发,后台用数据库MySQL,采用基于MVC(即模型(model)一视图(view)一控制器(controller))模式的查询系统,适合在WINDOWS操作系统中运行。MVC的视图层和业务层分离,这样就允许更改视图层代码而不用重新编译模型和控制器代码,很容易改变应用程序的数据层和业务规则。
系统界面设计满足医生及病人进入系统后,只需按步骤操作,就会使用此系统,无需培训。系统设计共分为Android端设计、web端设计、服务器设计、数据库设计以及加密算法设计五个模块的设计。
2.1Android端设计
Android移动终端结合了当今移动互联时代的特征:移动化,个性化,差异化,给用户提供了诸多便捷,方便了用户使用的同时,还提高了传统方式难以解决的效率问题。患者可以在自己的Android手机上安装此APP,将收集到的人体生理数据传送给服务器,和医生完成双方互选后可以进行对话并接收医生反馈的诊断结果,患者可以从本地或者服务器端查询数据,另外还有天气查询、一键拨号、健康资讯等功能。详细如图1所示。
2.2 Web端设计
Web端主要用于医生对远程的患者身体情况的监测,并及时将诊断结果反馈给移动终端。web页面采用jsp设计方式,页面主要语言包括Html、Css、JavaScript和Java。其中Html构造页面结构,Css构造页面UI,JavaScript提交AJAX请求,处理页面基本信息,一部分逻辑代码使用Java实现。辅助性工具使用Jquery和EL表达式。
web端和服務器交互包括:1)提交表单,标签;2)超链接,主要用于标签;3)AJAX技术,主要用于事件的触发。
2.3服务器设计
在系统试运行的时候使用的是Tomcat本地服务器。服务器端开发语言是Java。和移动端与Web端交互运用的是Http协议,通过Request和Reponse进行交互。其中Request:请求头,封装了请求的信息;Response:响应头,封装了响应的信息。
控制器有Servlet:主要控制器,拦截请求进行逻辑处理,与数据库进行交互,是代码实现的主要地方。Filter:能做到serv-let所能做的一切事情,主要用来统一全站编码,请求拦截。Lis-tefler:监听各种事件,主要用来进行在线人数统计。
2.4数据库设计
医疗查询系统对数据库服务器的性能要求很高,我们选用MySQL数据库作为后台数据库开发平台。类型为关系型数据库。
设计的数据库中的所有数据表:
分别是:公告列表,医生账号信息表,医生基本信息表,好友关系表,留言消息表,病人账号信息表,病人基本信息表,病人身体信息表,test,time测试用可以不写。
2.5加密算法设计
本项目的主要数据流向为:PS(个人服务器)端将收集到的人体生理数据加密~PS端将加密的数据传输到MS端(远程医疗服务器)→MS端将数据解密→MS端将数据保存→PS端向申请MS端申请数据→MS端将数据加密→MS端将数据传给PS端→PS端将数据解密。
该方案具有以下安全特性:
不可抵赖性:该方案中每一端都使用了自己的密钥对散列值进行了加密,当有一方否认自己进行了数据传输可直接通过那一方的公钥对密文进行解密,再将得到的散列值与消息的散列值进行对比,若一致则必为那一方进行的传输。
强抗碰撞:已知原数据和其MD5值,想找到一个具有相同MD5值的数据(即伪造数据)是非常困难的,在实现上是不可行的。
数据机密性:本方案采用的加密方式为RSA加密算法,其中PS端的密钥只有PS自己知道,在自己私钥不丢失的情况下,加密数据被破解理论上不可行。
数据完整性:通过使用MD5消息摘要算法能够保证数据完整性,当原始数据进行哪怕1bit的改动,生成的消息摘要也会有非常大的差距。
3系统实现
系统支持医生和患者远程操作,实现账号注册、身份验证、病人信息管理、医生信息管理、医生和患者建立好友关系、患者和医生实时查询生理数据信息、医生实时反馈信息等功能。隐私保护及远程查询是整个系统的两大核心。由于系统中交互的数据涉及个人隐私,所以在通信过程中要实现隐私保护的目的。服务端对从患者那里接收到的数据进行分析处理通过web页面展示给医生,最后把医生所诊断的结果再传输到移动终端app供患者参考,让人们可以时刻了解自身身体状况,从而实现疾病预防和及时就医的效果。
1)查询功能实现
用户查询之前,会发生数据生成与数据实现过程。生成过程部分主要解释存储。生成的数据以Json的形式存人缓存,在App端展示数据时,会解析Json数据,得到具体某一项的数组,数组传人折线图控件会把数据展示出来。发送的时候直接发送Json即可。
经过多次发送和生成数据后,APP端进行清理,无法查看太久的数据。此时发送查询请求,服务器返回同样格式的Json数据,进行解析显示结果即可。本地数据(血压数据、血糖数据、心率数据)查询实现界面如图3所示。从远程服务器端查询10天血糖和血压结果数据如图4所示。
21数据加密实现
系统使用RSA公钥加密算法对传输数据进行加密,服务器端用病患的公钥对数据进行加密,病患端用私钥解密密文数据。
4结束语
本项目搭建的这一套保护隐私的远程医疗查询系统将病人的实时生理数据发送给医疗机构,接受专业医师的专业分析,足不出户就能享受专业的体检服务,既节约了时间又收获了健康,同时严格对用户的隐私信息进行保密。