李思斯 韩伟力
(复旦大学软件学院 上海 201203)
身份认证被广泛应用于网络服务中对用户所浏览内容的访问控制。从网站管理者的角度,身份认证应当保障其网站以及所提供的服务不被未经授权的用户访问,因而安全性在身份认证方式的选择中通常是最重要甚至唯一重要的因素。但是仅考虑安全性可能导致过度保护或保护不足,诸如易用性、可靠性、可访问性以及成本等其他因素也至关重要。综合考虑这五个维度,需要利用量化评估框架来确定满足应用场景要求并能在五个因素中保持平衡的身份认证方法。现有的研究缺乏综合且定量的评估框架。
为此,本文提出了基于专家经验和贝叶斯概率模型的通用型量化评估框架以定量地评估单因子和多因子身份认证方法。该框架将从安全性、可靠性、易用性、可访问性以及成本这五个维度来进行综合的量化评估。针对每一个维度,框架会根据身份认证方法能提供的保障程度或优良程度打分,并根据五个维度的打分结果给出一个综合的雷达图用以直观的展示。在此基础上,本文还提出了增量数据驱动的动态自适应量化评估结果更新模型,根据实时收集的认证数据更新对应身份认证方法的评估结果。利用给出的量化评估和数据展示,网站管理者可以更直观地为其所管理的网站或服务选择最合适的身份认证方案。
对于身份认证方法的通用型评估有美国国家标准与技术研究所NIST为电子身份认证方法以及针对不同的安全保障需求如何选择身份认证方法提供的指导标准SP 800-63[1],以及NIST于2015年提出的针对基于生物识别的认证系统[2]的安全性评估讨论稿[3]。此外,Bonneau等[4]针对用户口令可能的替代品从安全性、易用性和成本三个方面进行了定性比较分析;Sollie[5]为研究多因子身份认证在安全性和易用性方面的影响提出定性分析方法;Gorma[6]对比了基于知识的、基于设备的和基于身份的认证方法在安全性方面的区别。
此外,针对特定认证方法的安全性评估有:用户口令强度的度量工具[7-8];对基于生物识别的认证方法[9]和指纹识别方案的强度评估[10];对基于设备的身份认证方法(如K宝口令[11]等)的强度评估。针对认证方法的易用性评估,Mare等[12]进行了用户研究来观察在面对诸如口令、PIN码、基于设备的认证因子、生物识别的认证方法等不同身份认证因子时,用户在使用时的学习难度和感知层面的使用体验。
然而,现有的研究或仅针对单因子身份认证方法,或仅针对安全性和易用性等某一维度进行分析,且大多仅能给出定性分析结果,这些研究并不能提供量化的评估结果和直观的比较。
安全性指身份认证方法能在多大程度上抵御可能存在的安全性威胁并保护系统不被未经授权的用户访问。本框架以身份认证方法被破解的概率作为评估其安全性的标准。首先将可能存在的攻击总结并归纳为十二种类型:客户端破解攻击、服务端破解攻击、通信信道窃听、离线猜测攻击、在线猜测攻击、钓鱼攻击或域欺骗、社会工程学攻击、肩窥攻击、仿冒攻击、偷窃攻击、复制攻击和测信道攻击,如表1所示。评估身份认证方法的安全性时,先评估其中的每一个身份认证因子防御这十二种攻击的安全等级,再将等级通过模糊函数转化为在该攻击下该认证因子被破解的概率。
表1 身份认证因子的攻击分类及描述
对单因子的身份认证方法,其在十二种攻击下被破解的概率的加和即为其在最坏情况下的被破解概率。而对多因子身份认证方法,加和的方案无法体现其综合的被破解概率。为了更好的表示不同身份认证方法在组合成多因子身份认证时综合的安全性强度,本框架建立基于专家经验的贝叶斯网络模型来评估多因子身份认证方法的综合被破解概率,对于一个由n个因子组成的身份认证方法,其被破解的概率P[X]在本文建立的贝叶斯网络模型中可由式(1)计算,其中pa(xi)表示第i个身份认证因子对应的节点xi的父节点集合。
(1)
为计算式(1),需要对每个因子节点计算其概率P[xi|pa(xi)]。在本框架提出的贝叶斯网络中,pa(xi)包含两种类型的节点:攻击节点和因子节点。攻击节点对应上述十二种攻击类型并表示攻击是否发生,用a1,a2,…,am表示。因子节点对应需要被评估的身份认证方法中的每一种认证因子,用x1,x2,…,xn表示,其中(i∈{1,2,…,n},j∈{1,2,…,m)}。图1展示了一个三因子身份认证方法的示例贝叶斯网络,其中方框节点表示攻击节点,圆形节点表示因子节点。
图1 示例三因子身份认证方法的贝叶斯网络结构图
计算因子节点的概率P[xi|pa(xi)]可分两种情况:第一种是因子节点的所有父节点均为攻击节点,如图1中的“口令”节点;第二种情况是因子节点的父节点既有攻击节点又有因子节点,如图1中的“RSA令牌”节点。在具体的概率计算前,首先说明因子节点不同父节点类型对应到安全性评估的含义。若因子节点的父节点为攻击节点,表明该攻击节点对应的攻击类型有概率破解该因子节点。假设因子节点表示为xi,攻击节点表示为aj,则此破解概率可表示为P[xi|aj]。这一概率可以通过表1列举的评估标准根据设定的模糊函数得出。若某因子节点的父节点为因子节点类型,则意味着这两种因子节点对应的身份认证因子类型可以同时被某个攻击类型破解。
为得到一个通用的安全性评估计算公式,需同时考虑上文提到的两种情况,因此可以将每个因子节点的被破解概率P[xi|pa(xi)]依据不同父节点类型拆分为两部分计算。令G(xi)表示节点xi的所有攻击类型的父节点组成的集合,令Y(xi)表示节点的所有因子类型的父节点组成的集合,则pa(xi)可表示为这两个集合的并集,亦即pa(xi)=G(xi)∪Y(xi),且这两个集合互斥。因此对每个节点的被破解概率P[xi|pa(xi)]可计算为P[xi|G(xi)]+P[xi|Y(xi)]。
P[xi|Y(xi)]=P[xi|Y(xi),Ai]=P[xi|xi-1,
…,x1,∪at∈Aiat]
(2)
P[xi|xi-1,…,x1,∪at∈Aiat]≤
(3)
综合两种情况,身份认证方法综合的被破解概率的计算如式(4)所示,其不仅适用于多因子身份认证方法,也适用于单因子身份认证方法。
(4)
在计算得到贝叶斯网络的联合概率之后,为了能更直观且更友好的展示结果,同时能与其他维度的度量结果保持一致,采用如式(5)所示的负对数函数将概率值转化到区间为[0,100]的分数值。
(5)
本框架提出的安全性评估可以通用的适配任何一种身份认证方法并能得出标准统一的量化评估结果,即给出一个在[0,100]区间内的打分值,这是现有研究工作所不具备的。
可靠性是指身份认证系统错误地拒绝合法用户的频率,本框架将基于身份认证系统错误地拒绝合法用户的概率对可靠性进行量化评估。这里包含两种情况:一种是身份认证系统本身的不可靠性使得合法用户的正确认证过程被错误地识别为非法用户;另一种是合法用户在认证过程中未按照正确的流程或输错了密码使得系统判断出错。在第二种情况中,用户错误的频率不可预知,只能通过历史登录数据来估计。因此,在初始阶段的量化评估中,本框架将只考虑认证系统本身的可靠性。在收集到实时用户认证数据后,可以利用数据驱动的更新模型来估计并实时更新可靠性评估结果。
单因子身份认证方法错误拒绝合法用户的概率就是该身份认证方法所采用的方案或者算法本身的误拒绝率。而对于多因子组合成的身份认证方法,任何一个因子的误拒绝都会导致整个认证机制的误拒绝。因此多因子身份认证方法误拒绝的概率是其中每一个因子的误拒绝概率的并集。对于初始的评估本身就未考虑到用户误操作而导致的误拒绝概率,可以用系统误拒绝率的加和来表示最坏情况下的系统误拒绝率,其中的概率误差可以弥补未考虑到的用户误差。令FRi表示合法用户被第i个认证因子错误拒绝的认证,则整体的概率为:
(6)
最后,利用负对数的形式将结果映射到[0,100]的区间内作为可靠性的量化结果打分值:
R=-log(Pr[FFR])
(7)
易用性指认证方法的便利程度和用户的使用体验。针对下述标准,本框架通过衡量不同身份认证方式能为用户提供的便利程度来评估其易用性。
(1) 设置时间 用户在使用身份认证方法前需要初始化认证秘密,例如设定口令、输入指纹、录入人脸图像等。不同的身份认证方法对应不同的设定步骤,因而带来不同的使用复杂程度。本框架用设置时间衡量身份认证方法在初始化阶段的易用性。由于初始化通常只需要进行一次,因此可以对其设置非常小的权重。
(2) 交互时间 用户在进行身份认证时,针对不同的认证机制需要不同的交互方式,例如输入口令、接触指纹识别器、扫脸、插入额外的第三方设备等。此处用交互时间来衡量身份认证机制在使用时对用户的友好程度。交互时间的计算从用户开启认证到认证机制给出认证通过或认证失败的反馈结果为止。多因子身份认证方法的交互时间将涵盖用户完成其中每一个认证因子的认证步骤所耗费的时间。
(3) 用户维护其认证秘密需要的操作 对于单因子身份认证方法如口令认证,用户需要记忆一串文本密码;对于由第三方设备生成的一次性验证码,用户在认证时需要携带额外的设备;对于基于生物识别的认证方案,用户通常不需要额外的操作就能维护认证所需的秘密。对于多因子身份认证方式,其整体所需要耗费的用户操作是其中每一个认证因子所耗费的用户操作的交集。同时,不同的用户操作对应的用户成本和用户体验也有差别。因此,框架将综合考虑为维护认证对应的秘密需要的操作数量和每一种操作对应的用户体验友好程度,其数量越多,或者操作对用户的负担感更重,则易用性越差。
(4) 认证方式的可重用性 可重用性是指认证方式是否可以同时被用于多个网站或服务。若身份认证方法可以做到跨服务通用,则其对用户带来的整体友好度会更佳。对于多因子身份认证方法,如果其中的某个认证因子是不可重用的,那么整个多因子认证方案也是不可重用的。
(5) 用户满意度 用户满意程度表示用户本身对不同身份认证方法的使用体验和感受。当用户的评价数量足够多时,此维度将是权重占比最高的度量维度。
上述五个维度依次给出评级,最后将五个维度的度量结果加权平均即为易用性评估结果。此结果只是初始的模糊评估结果,在用户使用过程中,本文提出的数据驱动的更新框架可以根据用户给出的易用性反馈来动态调整易用性的评估结果。
对于上述五个维度,用ui表示第i个维度的评估结果;令Uui、Wui分别表示对第i个维度的打分和权重值,其中Uui∈[0,100],Wui∈[0,1]并且∑Wui=1。整体的易用性评估结果可以表示为:
U=∑(Uui×Wui)i∈{1,2,…,5}
(8)
可访问性指目标用户是否能无障碍地根据其意愿和偏好来访问身份认证方法,其评估取决于身份认证方法要求用户与之交互的方式。本框架主要考虑如下五种交互机制:
1) 说出一些短语或单词,如语音识别;
2) 与可视屏幕信息交互;
3) 用键盘打字或用鼠标点击;
4) 提供身体部位的生物识别信息;
5) 接听电话或电话代码。
单个认证因子可以同时支持几种不同的交互机制。因此,其可访问性是支持的交互方式的集合。在判断某用户是否可以无障碍地使用某种身份认证方法时,只需要确定该身份认证因子支持的交互方式集合与用户意愿的交互方式集合之间是否存在交集。对于多因子身份认证方法则需要先确定其中每个认证因子支持的交互机制集合与用户意愿的交互机制集合之间是否存在交集。如果其中有任何一个认证因子是该用户无法访问的,那么整个认证机制对该用户的可访问性将为零。如果用户对于其中的某些交互机制是可以进行但不愿意采用的,则该认证方法将是可访问的,但可访问性的评分将比较低。因此每种身份认证方法都用三种等级来评估其可访问性。
令向量μ=(μ1,μ2,μ3,μ4,μ5)表示用户对上述五种交互机制的偏好程度,其中μi∈{0,1,2}。令向量υJ=(υ1,υ2,υ3,υ4,υ5)表示身份认证因子对上述五种交互机制是否支持,其中υi∈{0,1}。首先分别计算向量μ和每一个因子的向量υJ的点积,然后取结果中的最大值即aj=max(μ,υJ)作为认证因子j的可访问性分值。最后利用式(9)计算身份认证方法整体的可访问性度量:
(9)
本框架将评估身份认证方法所需要购买的设备和部署身份验证系统的费用作为成本的度量。具体的评估标准包括身份认证因子带来的额外部署成本,超出正常服务部署、额外运营成本,需要的支持服务成本和设备成本。对每个维度将给出评估等级,并将所有维度评估结果的加权和作为总体评估结果。
(1) 额外部署成本 部署整个身份认证系统的成本,包括购买认证技术或特殊服务(如短信验证码服务)以及部署辅助设备和软件组件的费用。
(2) 运营成本 在认证系统的工作和维护期间产生的操作成本。这可以通过身份认证系统在通信开销方面消耗的带宽成本,对特殊服务如短信验证码服务的成本等反映出来。
(3) 帮助和支持服务成本 某些身份认证方法很难设置或恢复,用户在使用过程中可能会遇到麻烦。此时,身份认证服务提供者需要为用户维护支持团队。
(4) 设备成本 对于例如基于设备等的特殊身份认证方法,用户需要持有额外的物理设备才能完成认证,这会导致用户和身份认证提供商需要采购额外的物理设备。对于多因子身份认证方案,其综合的设备成本将是每一种认证因子引入的设备成本的交集的总和。
基于专家经验的初始量化评估模型,本文提出了数据驱动的量化评估结果的更新模型,针对安全性、可靠性和易用性进行实时更新。
首先构建监控用户认证记录的监测模型来鉴别恶意认证请求、合法用户的成功认证请求和合法用户的失败认证请求,并根据这三类数据动态的更新量化评估结果,其基本结构如图2所示。其中基于规则的检测模型和基于数据的检测模型用于检测恶意认证请求并鉴别被破解的用户账号。在未收集到足够多用户数据的初始阶段使用基于规则的检测模型。随着用户认证数据的累积,基于数据的检测模型将训练一个鉴别恶意认证请求的增量数据驱动模型,并逐渐取代基于规则的检测模型。基于规则和基于数据的两种模型可能对同一认证请求给出相反的检测结果,或者两种模型都无法得出检测结果。这时将引入管理员与用户标记模型,即对于未被标记的或标记冲突的认证请求,由用户在查看认证记录时标记该认证请求是否由该用户发起,并由网站管理者进行辅助判断。最后的决策模型将综合基于规则的检测模型、基于数据的检测模型和管理员与用户标记模型这三个模块的标记结果,给出综合的认证请求的标记结果。
图2 认证请求的审计与恶意认证请求检测模型
利用上述检测模型可以评估身份认证方法对应的总用户数量以及其中账号被破解的用户数量。两者的商即为该身份认证方法被破解的估计概率,由此能实时更新安全性得分。通过计算合法认证请求的数量和失败的合法认证请求的数量,可以估计身份认证方法的错误拒绝概率并改进其可靠性得分。由于观察到的安全性和可靠性结果可能随时间而变化,本模型采用标量卡尔曼滤波器来滤除观察误差和概率本身的误差从而得到自适应的动态更新结果。
本文提供示例平台收集用户的使用反馈用于易用性评估的更新。类似的反馈平台可以作为身份认证提供者站点的一部分进行部署。用户就其使用过的身份认证方法给出五星评级和反馈。通过将初始量化框架给出的可用性评估结果也转换为五星评级结果,可以利用贝叶斯平均来综合专家评估结果和用户使用反馈,从而得出数据驱动的易用性评估结果。
通常有两种情况表明帐户已被盗用:一种是攻击者获取了密码,然后通过其他设备尝试登录;另一种是攻击者直接控制用户的设备并通过受感染的设备登录。仅从服务器端很难判断第二种情况为合法用户或攻击者,但可以通过登录次数和成功率检测暴力破解。当多于20次登录请求且认证成功率低于95%时,则该账户很可能正在被暴力攻击[13],因此首先构建暴力攻击检测模块来监测认证请求次数及其成功率。为了检测从其他设备发起认证请求的攻击,本模型提出基于规则的检测模型来区分合法的和恶意的认证请求。
每个新注册的用户将被分配一个为期五天的启动阶段,其间发起认证请求且成功登录的设备和IP将被添加为可信IP地址和设备组。此后的认证请求如果来源IP未知且不在可信列表中,将检查从最近一次成功认证的请求IP到当前IP的转换是否可能,称为IP一致性检测。通过获取IP地址对应的经纬度、国家和地区、网络服务提供商等信息来计算两个IP地址的物理位置的距离;再根据两次认证请求之间的时间间隔,判读该物理移动是否是可能从而辅助判断未知IP地址对应的认证请求是否合法。然而IP的不一致不一定代表恶意攻击,还需要解析发起认证请求的用户代理(User Agent),称为客户端一致性检测。通过分析用户代理,检查认证请求来源的浏览器名称和版本以及操作系统信息,并与启动阶段保留的可信设备比对来辅助判断认证请求是否由合法用户发起。本模型还利用Javed[14]提出的方法来检查某个未知用户代理是否只是对浏览器或操作系统的升级。此外,合法用户的正常认证请求通常在分钟和秒钟两个维度上均匀分布[13],而自动化的登录请求则在分钟和秒钟的分布上存在明显特征。因此,模型将抽取认证请求的时间戳并利用皮尔斯卡方检测评估其时间分布是否满足均匀分布,称为时间戳一致性检测,并且此检测可以从用户和IP地址两个维度分别进行。如果认证请求能同时通过暴力攻击检测、IP一致性检测、客户端一致性检测以及时间戳一致性检测这四种检测,则认为该认证请求合法。若IP是可信的且认证请求的时间满足均匀分布,则认为该请求合法。如果时间戳一致性检测没有通过且客户端和IP检测有一项没有通过,则标记为恶意请求。对于其余的情况,模型将检测任务转至管理员和用户标记模块和基于数据的检测模块做进一步的判断。
本节以某网站的身份验证方法为例介绍本基于专家经验的量化评估框架的合理性和有效性。某网站为不同的操作提供不同的认证流程。对于查看余额等操作,网站只需要基于短信验证码的身份认证。对于修改套餐等操作,则需要6位PIN码和短信验证码组成的双因子身份认证。首先利用贝叶斯网络评估身份认证方法的安全性,对短信验证码的贝叶斯网络如图3(a)左所示,其在五个评估维度上的综合量化评估结果如图3(a)右的雷达图所示。对于短信验证码和6位PIN码组成的多因子身份认证方法,其贝叶斯网络如图3(b)左所示,综合量化评估结果如图3(b)右所示。评估结果显示两种身份验证方法均能够匹配对应服务的安全性要求。但这两种认证方案都仅刚好满足安全性需求,若该网站要部署涉及到更多资金安全或风险更高的服务时,其对应的身份认证方法需要提高。
(a)
(b)图3 针对某网站的两种认证类型的示例评估
此外,本文提出的框架还能列出所有满足安全性要求的认证方法。此处预设了口令、RSA令牌和图形口令等其他几种身份认证因子用于演示。仍以该网站为例,对于普通登录服务,有四种单因子认证方法满足安全性要求,结果如图4(a)所示。这四种可选项在五个维度上的对比如图4(a)的雷达图所示。对于套餐修改服务,图4(b)的右半部分展示了在示例系统中可供选择的身份认证方案。图4(b)的雷达图比较了所有可选项中有最佳易用性和更低成本的两种方案。这两种方案在易用性和成本方面有同样优秀的表现,但口令与短信验证码的组合比短信验证码与6位PIN码的组合有更强的安全性。
(a)(b)图4 根据安全性需求的可选身份认证方式系统示例
本文提出了数据驱动的自适应身份认证量化评估框架,从安全性、可靠性、易用性、可访问性、和成本五个维度进行综合的量化分析和评估,并将评估结果以雷达图的形式展示。本文还提出了基于增量数据驱动的动态更新模型用于根据用户的实际认证数据改进量化评估结果。利用本文框架,网站管理员可以综合量化评估对所选择的身份认证方案,并能根据网站或服务的安全性等选择合适的身份认证方案。