杨博文, 翟之博, 徐 湘, 徐 丹, 谢昆明
(湖北工业大学计算机学院, 湖北 武汉 430068)
在过去的十年中,互联网设备已经取代了老式的台式机和医疗设备。随着物联网技术的进步,各种手持和可穿戴的设备(例如,平板电脑、智能手表和智能手环)可以充当传感器和监视器。通常,这些设备安放在患者的身体上或患者居住的地方,收集实时数据,将它们发送到远程服务器,然后发送到客户端。诊断和应急决策可以根据接收到的信息和个人电子健康记录进行。然而,无线通信的自然缺陷引起了人们对电子健康服务中隐私保护的极大关注。由于医疗数据在不安全的公共网络传输,患者的隐私容易受到多种攻击。
本文提出了一种实用的认证密钥协商方案,能够满足电子健康系统的安全需求和计算需求。主要功能如下:
服务器上的安全认证:在提出的方案中,医疗服务器负责检查用户的有效性。为了防止服务器知道密码,使用异或操作将随机字符串与其组合,然后在服务器端匹配两个屏蔽字符串,而不是将真实密码与之匹配。因此,医疗服务器可以验证密码,而不存储和获得具体值。
强大的隐私保护:在存储设备中,智能卡、数据库受到随机数的保护,以确保只有用户拥有真正的密码。针对匿名性和不可追踪性,提出了一种打破传输消息联动的动态机制。数据库和智能卡的相关值将在每次成功登录后更新。可以证明方案在真实或随机模型下是语义安全的。
效率:所提出的方案是轻量级的,因为只用到了哈希函数。所以该系统拥有较高的安全性和高效性。
首先,用户选择用户名IDu,并输入口令PW。生成一个随机数r0,分别与IDu和PW连接并获得对应哈希值,用户端可以将两个值hID和hPW发送给服务器S。服务器在收到用户发送过来的消息后,产生一个随机数r1,并且计算P=h(hID||x)和R=P⨁h(hID||r1),其中x是服务器S的秘钥。然后服务器将hID、hPW储存在数据库中,并将R,r1,h(·)储存在用户的智能卡中。最后,服务器通过安全手段,将智能卡交予用户。当用户拿到智能卡时,计算verify=h(IDu||r0||PW||r1),Z=h(IDu||PW||r1)⊕r0,并将verify,Z储存到智能卡中,从而完成注册阶段,具体过程见图1。
图 1 注册阶段
阶段一:登录时,用户首先需要插入智能卡,并输入自己的用户名IDu和口令PW。智能卡会自动计算r0′ =Z⨁h(IDu||PW||r1),verify′ =h( IDu||ro′||PW||r1)。由于用户智能卡中储存有verify,那么只需比较verify′和verify是否相等即可验证用户输入的用户名和口令的正确性。若不等,则提示用户用户名或口令输入错误,若相等则继续执行后续步骤。智能卡产生一个随机数r2,并计算hID′ =h(IDu||r0′),P′ =R⨁h(hID′||r1),Q=P′⨁r2⨁h(PW||r0′), S=Q⨁hID′,T=h(hID′||r2||p′)。最后,用户将消息{Q,S,T}通过公共信道发送给服务器。
阶段二:服务器在收到用户发送过来的消息后,计算得到hID″ =Q⨁S,并通过hID″搜索数据库,得到对应的hPW。然后计算P″ =h(hID″||x),r2′ =Q⨁P″⨁hPW,并验证之前接收的T是否等于h(hID″||r2′||P″)。若不相等,则服务器拒绝此次登录请求;若相等,则服务器产生两个随机数r3,r4,并计算v1=P″⨁r3,v2=h(P″||r2′||r3||r4),v3=h(v1||r2′)⨁r4,SK=h(P″||r2′||r3||r4)。最后,服务器将消息{v1,v2,v3}发送给用户。
阶段三:用户接收到服务器的返回消息后,可以使用自己的已知数据计算出r3′,r4′的值,并检查v2是否与h(P′||r2||r3′||r3′)相等。若不等,则用户立即结束此次登录过程,并重新执行阶段一中的流程;若相等,用户计算得到{Znew,verifynew},并使用{Znew,verifynew}代替智能卡中的值{Z,verify}。最后用户计算得到与服务器端的SK相同的会话密钥,具体过程见图2。
图 2 登录和认证阶段
这一部分,将通过分析一些可能的攻击来讨论和证明笔者提出的协议的安全性。
重放攻击:方案中,如果黑客监听到用户合法的登录请求消息{Q、S、T}并记录下来,并在某一时刻向医疗服务器S发送这一消息。黑客会通过服务器的验证且获得消息{v1、v2、v3}进行下一步的智能卡端的验证,但此时黑客并没有上一次用户卡中随机数r2′的值。他将会在用户端验证v2的过程中失败,因此黑客不能构建与医疗服务器S或用户U的独立连接。
离线秘钥猜测攻击:假设黑客拦截用户U和医疗服务器S之间传输的所有消息,并发起离线秘钥攻击。因为发送的信息并不直接包含用户的ID和密码,黑客不能通过截获的消息确定他猜到的每个密码是否正确。因此,如果没有对应用户的智能卡,就不能成功执行离线秘钥攻击。
离线密码猜测攻击:因为用户U和医疗服务器S之间在公共信道上传输消息,黑客可以获取消息{Q、S、T、v1、v2、v3},但是随机数r2′的值黑客未知,由于公式和哈希函数的存在,黑客不能在有限的时间内计算出用户的密码PW的值,甚至用户名ID的值。因此黑客不能猜测出用户U密码的值。
去同步攻击:在所提出的方案中,医疗服务器S计算SK后,向用户发送确认消息{v1、v2、v3}。如果用户接收到确认消息,则它将计算的SK存储为共享会话密钥。如果这个过程被阻塞,用户将不会在给定时间内接收确认消息。在这种情况下,用户将删除SK并重新启动登录和身份验证过程。因此,在重启身份验证过程中,用户和服务器就会使用新的共享会话密钥。因此,所提出的方案能够抵抗去同步攻击。
伪装攻击:一方面,黑客可以伪装成合法用户U向服务器端S发送伪造的消息{Q、S、T},但是他不能通过服务器的验证,因为他没有正确的ID,PW和R的值。另一方面,黑客可以伪装成服务器端来接受正常用户合法的消息{Q、S、T},并向用户端发送伪装的消息{v1、v2、v3}。但是,黑客缺乏此用户在真正的服务器上对应的hID,R和P的值,他不能通过在用户端对V2的验证。因此,本方案能抵御黑客的伪装攻击。
内部攻击:假设黑客可以在服务器的数据库端获取大量用户的hID,R和P的值,因为随机数r0的存在,黑客不能计算得出用户正确ID和PW的值,也不能得出重要的数据信息Z的值。因此,本方案能阻挡黑客的内部攻击。
先假设使用一个哈希函数运行的时间为Th,其他类型的操作如生成随机数、拼接、异或的所需时间相较于运行一个哈希函数的时间而言太小,可以忽略不记,所以在性能分析中忽略了此轻量级操作类型的耗时。在经过分析之后,列出表1描述方案的性能分析。
表1 方案的性能分析 Th
从表1中可以看出:方案在注册阶段,用户端耗时4 Th,服务器端耗时2 Th,总共用时6 Th;在登陆阶段,用户端耗时11 Th,服务器端耗时5 Th,总共用时16 Th。运行一次哈希函数所需要的时间大概是0.1 ms。在大多数情况下,注册和登陆阶段,方案耗时都在2 ms之内。
通过性能分析,可以得出结论:本方案在实际的应用中具有高效性。
本文提出了一种基于动态认证机制的密钥协商方案,用于保障电子健康系统的用户隐私。传统的身份口令表被动态验证表代替,以提供不可追踪性,从而可以完全保留用户的匿名性。此外,方案只采用了轻量级的哈希和异或操作,与其他相关方案相比,降低了计算成本和通信成本。因此,所提出的方案可以成功地满足电子健康系统的能量消耗和安全需求。