今天分享的论文主题为针对基于口令的登录服务的安全测量,由来自康奈尔大学、威斯康星大学麦迪逊分校等的研究人员共同完成。用户口令(password)安全性分析是一类很有价值但又极其敏感的研究工作,其实验过程将不可避免地收集用户口令信息,对用户而言存在严重的隐私风险。本论文设计并实现了第一个可以“安全”(即严格地保护用户隐私)地测量分析用户口令的框架,Gossamer。相比于已有工作以记录口令统计信息(如安全强度指标)而非口令原文的形式保护用户隐私,Gossamer进一步衡量了统计信息的安全性,即统计信息本身是否还将一定程度上泄露原始口令的信息。通过精心选择“更安全”的统计指标,Gossamer即使在实验日志数据被攻击者获取的前提下,依然可以有效地保护用户隐私。最后,通过在美国两所大学实际部署该系统,获得了很多有趣的发现。该论文已被网络安全领域顶级会议USENIX Security 2022录用(录用率:17.2%)。
全文共约3500字,阅读时间约9分钟。
【背景介绍】
当前流行的登录系统高度依赖基于口令的身份验证机制。如图表1所示,用户需要将其用户名和口令输入到 Web 客户端的表单中,由Web 客户端将其与其他信息(如HTTP头、Cookies、IP和user agent等)一起通过HTTPS提交到登录服务器。收到客户端提交的数据后,服务器首先计算口令的哈希值,随后检查由用户名和口令哈希值组成的键值对是否存在于登录数据库中。如果存在,则允许用户登录或进行下一步的身份检查;否则,用户的登录请求将失败。
图表1 基于口令的登录场景示例
用户口令的安全强度是此类身份验证机制安全性的关键因素之一。通过了解真实世界中用户使用的登录信息安全特征,从业者可以针对性地制定更加安全的登录策略。然而,鉴于口令信息天然的高敏感性,此前学术界在该领域的研究相对有限。已有研究根据数据收集方式是否直接针对真实用户口令可以分为两类:
-
收集公开的网站泄露数据集&问卷调查:研究 [9,10,11]基于已公开网站泄露数据(例如[7][8]),对用户口令分布情况进行了分析;利用在线问卷(例如Amazon Mechanical Turk,AMT [15] )方式,一些工作研究[12,13]了用户在不同情况下如何设置口令,不同的情况包括口令要求(例如必须包含大小写和数字)、口令强度计(视觉提示,高中低)和口令阻止列表(标记常用口令为非法)。
-
在用户软件或登录服务器安装插件:此类数据收集方式可以直接测量真实的用户口令,避免与真实口令存在差异而对研究产生影响。例如,Florencio为50万志愿者安装了Windows Live Toolbar组件,并分析其在85天内的口令行为[1];Bonneau等人利用雅虎的登录服务器接收登录请求(包括用户口令),并根据用户人口统计构建口令特征直方图[2];Chatterjee等人对Dropbox[14](一款免费的网络文件同步工具)应对登录失败情况的代码做了修改,以测试对提交的口令应用拼写错误更正是否会产生正确的口令[3]。
尽管已经有很多研究工作针对口令本身的安全性进行分析,但是如何在不侵犯用户隐私以及不影响口令服务器性能的前提下,安全地进行口令数据的收集,依然是个非常困难的问题。因为用户口令数据高度敏感,一旦泄露,会直接危害到用户的隐私,甚至造成经济财产损失。因此在针对口令数据进行分析时,需要格外小心,以避免隐私和伦理问题,例如绝不能以任何形式存储明文口令、数据长期存储时一定要加密等。因此,设计并实现一个通用的可以安全分析口令数据的系统是非常困难且具有挑战性的。
【系统设计】
为解决用户侧口令研究的数据收集问题,本文设计并实现了第一个可以安全测量 Web 场景下口令信息的框架,Gossamer。Gossamer 可以在不侵犯用户隐私、不影响登录服务器性能的同时,允许安全人员进行有意义的口令数据分析。
图表2 Gossamer的系统架构示意图
Gossamer 的系统架构如图表2所示,主要包括相互独立的三个部分:1)测量服务(Mesurement Service);2)分析服务(Analysis Service);3)部署在登录服务器上的一个轻量级的挂钩。具体来说,挂钩会从登录服务器接收到的每一个登录请求中抽取关键信息,如用户名、口令、IP地址、HTTP头中的部分信息(如cookies、user-agent等)、时间戳、登录结果(成功或失败)等,并将其转发给测量服务。测量服务会将一些极度敏感信息加密(例如,用户名和口令),将其密文和其他信息的明文存储到基于内存实现的临时数据库(Eph.)中,然后基于这些信息计算出有价值且相对不敏感的口令衍生信息,并存储在持久数据库(Pers.)中。研究人员随后可以通过分析服务访问持久数据库来获得这些口令衍生信息,进而了解用户登录行为,同时避免直接接触口令信息。
Gossamer最突出的特点便是可以“安全”地测量口令信息,即确保测量实验不会侵犯用户隐私。为此,作者精心设计了Gossamer的实现流程。首先,为保证网络传输过程不泄露隐私信息,Gossamer所有组件之间的网络通信均使用 TLS 进行加密。在此基础上,作者还期望Gossamer可以抵抗潜在的攻击威胁,即使其在:1)测量服务模块和分析服务模块分别(或都)被攻击者控制导致或者2)日志泄露的情况下,依然能够保护用户隐私。具体而言,Gossamer的设计严格遵守了以下四项安全原则:
-
口令数据的最低权限访问(Least privilege access to password data.):研究人员只能收到分析登录行为所必需的信息,严格限制明文口令等敏感信息的可访问范围;
-
有界泄露日志记录(Bounded-leakage logging):有关用户口令的统计信息经过精心设计,以确保在系统被攻击者成功入侵后仍然能够保护用户口令的安全;
-
定期删除( Periodic deletion):系统会删除所有超过24小时的原始敏感数据,以降低系统被入侵时数据泄露的风险;
-
重新启动的安全考虑(Safe-on-reboot)[4]:重新启动后,所有的敏感数据都会被有效地销毁,因为这些敏感数据要么仅存储在易失性内存中,要么被加密后存储在磁盘上,但是加密密钥仅存储在易失性内存中。
特别地,由于出于隐私保护的考虑,明文口令不能直接提供给研究人员分析,Gossamer将仅记录一些关于明文口令的统计特征信息。然而,即使原始口令已被转化为统计数据,若攻击者获取了该信息,依然存在通过某种计算方法、依据统计信息推测出原始口令特征、进而破坏用户隐私安全的可能。因此,作者对Gossamer记录的特征信息本身的安全性也进行了评估,并根据评估结果选取、调整了特征记录的方式。
举例来说,口令强度分数(zxcvbn)[5]是常用的一种衡量口令强度的指标,其将口令强度划分为五个等级(1-5),分数越高,说明口令强度越高。但该指标记录的信息过于具体,可为攻击者破解口令提供便利。例如,攻击者可以预先构造一个口令猜测列表,假设其得知目标口令的zxcvbn强度分数为4(即强度很高),便可删去猜测列表中强度低于4的弱口令,从而减小猜测列表规模、提高攻击速度。为此,作者提出了二值化的zxcvbn强度分数记录形式,即将原始取值范围缩小到[0,1],降低不同口令强度分数的差异度,并通过模拟实验验证了二值化处理带来的安全性提升。图表3展示了攻击者在得知原始zxcvbn强度分数和二值化zxcvbn强度分数情况下,相比于没有任何信息时猜测口令成功率的提升。可以看出,存储原始强度分数最多可以使攻击成功率提高20个百分点,而存储二值化强度分数则只能提升两个百分点。因此,Gossamer选择存储二值化的zxcvbn强度分数。更多类似的指标安全性评估细节请参考原文。
图表 3 Gossamer记录的口令特征信息对猜测成功率的相对提升
最终,Gossamer存储的口令统计指标信息和具体存储形式如图表4所示,包括四类:1)基础统计数据(Basic Statistics);2)口令信息填充(Credential Stuffing);3)口令信息滥用与字典猜测攻击(Credentail Spraying & Dictionary-based Guessing);4)口令信息微调(Credential Tweaking )。论文后续对口令安全性的分析将基于上述统计信息进行。
图表 4 在临时数据库(Eph.)和持久(Pers.)数据库中记录的指标,⨉表示以明文形式存储,⨂表示以加密形式存储
【系统部署与发现】
图表 5 两所大学每天成功和失败的登录尝试情况
有关安全性的发现
论文针对收集到的数据,进行了针对口令安全性的分析,并发现了一些安全问题,包括:
-
虽然使用已泄露口令会加剧口令被破解的安全风险,但在论文观察到的结果中来看,这仍然是一个非常严重的问题。论文观察到在U1和U2分别有23位和254位用户在使用已被泄露的口令,并且分别有2k和1k用户在使用与已泄露口令非常相似的口令。
-
同时,两所大学遭受的暴力猜测攻击所使用的口令很多都来自泄露口令数据集,这证实了泄露的口令会被用于实际的攻击。
论文根据这个现象,也提供了防御措施,例如,采用Pal提出的基于口令相似性的口令泄露预警系统(breach alerting system)[6],可以有效防止用户使用与已泄露口令相似口令的风险。
有关可用性的发现
同时,论文还针对口令的可用性进行了分析,得到了如下的发现:
-
口令输入错误非常常见。U1 的数据中超过1/3的失败请求是由于口令输入错误导致,而且移动设备场景下口令输入错误会更多;
-
口令重试行为非常频繁。例如在U1,作者在22%的成功登录会话和14%的失败登录会话中,观察到了口令重试现象;
-
双因素认证会降低可用性。具体来说,使用Duo[7]的用户比仅使用口令的用户,成功登录的时间平均要多花 14 秒。
针对可用性的问题,论文也提供了一些建议。比如,使用口令管理器可以有效地减少输入错误和重试现象。此外,论文发现很多用户会执着地重复输入错误的口令,而目前主流的用户锁定策略大都会限制重试次数,如果能够将策略调整为限制提交的不同口令的次数,将会有效提高可用性,同时,因为执行口令猜测攻击的计算机程序不太可能会连续输入重复的错误口令,因此这种做法并不会降低口令系统的安全性。
【总结】
本文设计、构建并部署了Gossamer,这是一个用于安全记录用户在登录时提交的口令统计信息的框架,并结合了系统安全机制和基于仿真的方法,以评估不同测量指标的安全风险。论文在两所大学的实际部署并验证了Gossamer的实用性,并且回答了基于口令的身份验证机制在安全性、可用性方面的一些问题。
参考文献
原文始发于微信公众号(NISL实验室):【论文分享】Gossamer:安全地测量基于口令的登录服务
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论