《Beware, Your Hands Reveal Your Secrets !》2014年ACM
摘要
- 利用基于视频的侧信道对智能手机上键入文本进行解码的攻击研究——假设对手能够利用屏幕显示中的某些信息(屏幕反射、键入内容的低分辨率视频)
- 本文介绍一种针对智能手机上PIN码输入过程的新侧信道攻击,该攻击依靠打字过程中手的时空动态来解码打字文本
- 在200个PIN输入过程的视频数据集上实验,结果显示,该攻击在第一次尝试中平均破解了50%以上的PIN,在10次尝试中平均破解了85%以上的PIN
- 攻击可以在不引起怀疑的情况下进行——攻击者不必将摄像机对准屏幕——本文相信它极有可能被窃取敏感私人信息的攻击者采用
- 论文呼吁社区更仔细地审视现在无处不在的支持相机的设备带来的风险
介绍
传统上通过阻挡攻击者观看屏幕、键盘的方法来防止敏感信息被窃取
对于智能手机、自动柜员机和PIN驱动门锁来说,人们普遍认为,如果能阻止攻击者查看输入控制台,则攻击者无法窃取信息(包括PIN、密码等)
本文认为,随着最近用户计算习惯的改变以及视频记录和处理技术的进步,这种直接观测攻击(
direct observation attack
)无法通过以上的简单方法挫败本文展示一种技术,完全依赖于用户在智能手机上打字时的手部时空动态来重建输入的文本——核心在于键盘在电话屏幕上的位置时确定的,按键的大小固定,按键在键盘上的位置也是固定的
给定视频片段,捕捉:
用户在PIN输入过程中的一部分手
正在进行打字的智能手机的背面
图a为本文研究的场景;图c表示用户将手伸出车窗使用自动取款机取款
以上所有情况,受害者用一个手指键入PIN(个人识别码)的事实使对手能够轻松地将手的移动映射到键入的密钥
攻击将打字时手的位置映射到PIN码输入过程中的已知几何形状和键盘位置
本文是第一个从手的视频记录重建打字文本,而不使用任何关于被按下的键或屏幕上显示的内容的信息
Ours is the first attack to reconstruct typed text from a video recording of the hands without using any information about the keys being pressed or the content displayed on the screen.
使用包含200个PIN输入视频的数据集(四种摄像机配置);最佳性能摄像机配置捕获的视频片段显示,第一次猜测能猜出62%的PIN,十次猜测能猜到94%的PIN
提出一些相关的问题:是否应该重新考虑传统的确定性键盘设计?应否在部分装置(如atm)附近全面禁止摄影机?用户如何区分无害和危险的视频记录?
在实践中,要使攻击成为可能,必须满足以下关于对手和目标的假设:
- 获得目标的视频记录
- 能够从视频记录中,提取输入PIN的视频片段
- 键盘几何结构已知
贡献:
- 根据输入密码时看到的手部动作来解码用户的密码
- 使用街头普通用户通常拥有的一组摄像机拍摄的视频,评估了攻击对用户群体的大量PIN数据集的影响
相关工作
- 与本文关系最密切的可能是Xu等人的工作[7](《Seeing double: Reconstructing obscured typed input from repeated compromising reflections》2013 CCS)
- 根据指尖和正在打字的屏幕的低分辨率视频,对触摸屏上键入的文本进行解码
- 记录指尖的摄像机离受害者非常远
- 与本文的差异:
- Xu训练了一个分类器来学习键入特定键时屏幕的外观,以确定当前的按键是什么——如果攻击者无法看到屏幕,Xu的攻击会失败;本文的攻击不使用任何关于打字时屏幕的内容或外观信息,只对用来打字的手的任何部分和正在打字的手机的一部分进行录像
- 为检测按键事件的发生,Xu的方法需要通过图像处理技术来分析和建模指尖在屏幕上的形状、轨迹;本文的攻击仅使用通用的对象跟踪技术,依赖手和手机之间相对运动的简单几何表示来确定打字事件的发生。
- Balzarotti等人[2](《Clearshot: Eavesdropping on keyboard input from video》2008,SSP)利用直接拍摄键盘的视频片段,利用多种语言和图像分析技术从视频中自动恢复键入的文本。
- 首先识别在给定视频帧中没有被手遮挡的键盘区域,以在后面的分析中排除位于该区域的所有键(这些键肯定没有被按下)
- 根据键盘子集和使用语言和上下文相关技术,确定键入的单词
- 与本文的差异:Balzarotti使用直接指向键盘的摄像机,能在受害者打字时直接观察按键,本文只使用了关于手的运动的隐含信息
- 一些论文研究通过图像序列对手进行跟踪
- Yang等人[10]设计一种基于图像序列中运动轨迹的手势识别算法
- Stenger等人[11]和Beh等人[12]分别使用贝叶斯理论和基于规则的方法对手部跟踪进行建模
- 本文使用现有的目标跟踪方法(TLD)
- 一些论文研究通过智能手机传感器的输出来恢复键盘上键入的文本序列
- Cai等人[13]和Owusu等人[14]使用智能手机加速度计的输出来实施密码推断攻击
- Miluzzo等人[15]和Xu等人[16]使用陀螺仪读数来增强加速度计的输出
- Simon等人[17]通过手机麦克风和前置摄像头的输出推断输入的PIN——麦克风用于检测触摸事件的发生(记录触摸事件期间发生的振动而产生的音频信号),在触摸事件发生瞬间的电话方位用于推断发生敲击的键盘区域。电话方位通过对比视频中打字期间胸部和面部的连续帧来估计
- 与本文的差异:差异在于攻击所覆盖的范围,本文的攻击比基于传感器的侧信道攻击更具威胁性
攻击细节
攻击场景
- 图1显示本文攻击的6个场景,在所有情况下,攻击者都无法清楚地看到输入键盘,且相机记录了打字的手和设备的某个部分
- 此场景常出现在用户注意到存在视频记录,保持一个设备不被摄像机直接看到的姿势
- 本文将重点放在图1a上,即用户一只手拿着手机,另一只手打字。这个场景会产生一种欺骗性的安全感,并且这种握持手机的方式在使用更宽手机的人群中更为常见
数据收集
- 参与者和相机设置:
- 收集两个数据集:15名志愿者的30个PIN输入视频组成训练集,50名志愿者的200个PIN输入视频组成测试集(每个志愿者的4个视频使用不同的摄像机记录)
- 实验过程中,参与者在手机上输入PIN,使用Nexus 5相机和索尼摄像机记录PIN的输入过程,志愿者在手机上输入文本时,相机摆放在距离志愿者4到5米的地方。
- 索尼摄像机的三种配置:2倍变焦(索尼2X);4倍变焦(索尼4X);6倍变焦(索尼6X)
- Nexus 5使用4倍变焦,对比数字变焦和等效的光学变焦的效果
- PIN输入过程
- 每个用户制定一个PIN,在我们的手机上练习输入,直到习惯(平均而言,每个用户的PIN需要10次练习)
- 94%的PIN由4位数字组成,最长的PIN由7位数字组成
——本文没有对参与者输入的PIn长度施加任何限制——iPhone这样的流行手机长期以来一直使用这种PIN长度作为默认长度 - 基于摄像机和目标之间的紧密接近,实验密切模拟了在社交聚会中使用智能手机、摄像机进行的视频录制。
- 给定目标在手机上输入PIN的视频记录,攻击背后的基本直觉:
- 跟踪打字的手的一个点,手指触摸手机的视频帧很可能是被跟踪的点最靠近手机的视频帧,称为按键帧
- 分析被跟踪的点在按键帧上的相对位置,识别与按键帧对应的按键
摄像机准备
- 给定PIN输入过程的视频记录,首先剪切出需要的视频片段——通过观看每个视频并使用视频软件进行手动裁剪
- 处理后的视频在PIN输入之前有200到300毫秒,在PIN输入过程之后有200到300毫秒——保证攻击算法接收到高质量的输入
- 使用一个视频编辑器从处理后的视频中提取帧,将帧输入跟踪模块
手和电话追踪
根据提取的帧序列,使用跟踪学习检测(Tracking Learning Detection,TLD)框架来跨帧跟踪手和手机上选定点的位置
TLD是一个开源工具(
http://kahlan.eps.surrey.ac.uk/featurespace/tld/
),有3个模块:一个跨帧跟踪对象的跟踪器,一个定位对象外观的检测器,一个学习器,用于估计检测的错误以将其反馈给检测器使其更新参考模板对于每个视频,运行两个TLD实例,一个在手上跟踪我们的兴趣点(尽可能靠近手机),另一个在电话上跟踪另一个兴趣点,要求兴趣点在整个视频中都可见,并且与视频中其他点存在差异
图2总结预处理和跟踪步骤:
- 对于给定的帧,如果与被跟踪点相关联的跟踪置信度(对于每一帧,TLD输出一个介于0和1之间的置信度度量,定义了模板和与之比较的对象之间的相似性)未能满足阈值,则选择另一个点,并对提取的所有帧重新执行整个跟踪操作
- 设置置信阈值0.5
图3是一个典型的跟踪场景。蓝色边框和红色边框中心的点分别在手机和手上被追踪,每一帧中的坐标是x和y的值,相对位置在每一帧中由$\triangle x$和$\triangle y$表示。当两个跟踪点都满足置信阈值时,才会计算相对位置
计算每一帧中被跟踪点的相对位置之后,视频被简化为结构化数组,该结构化数组对每一帧存储帧id和被跟踪的两个点的相对位置:如果数组包含20帧,第一帧的id为1,第二帧的id为2,依此类推。这种结构化数组称为AFrames,是最终PIN破解过程的输入之一
最终PIN破解过程分为两步:检测按键帧,将按键帧映射到虚拟键盘相应的按键
攻击过程
检测按键帧
算法1总结检测按键帧的方法,该算法认为“在按键发生的瞬间,手很可能离手机最近”
本文分析了按键帧与非按键帧的区别特征:图3为典型的按键事件,中间的帧(图)对应于按键的发生,而它之前的帧和它之后的帧分别对应于按键之前和之后的瞬间。在这一粒度的时间尺度上(一秒30帧),分析的几乎所有按键都具有以下特征:
- $\triangle X_{f(k-1)}$、$\triangle X_{f(k)}$、$\triangle X_{f(k+1)}$分别表示在三个连续帧中手相对于手机的水平位置(X)——手和手机上的点指代手和手机
- 假设第二帧为按键帧,则有:$\triangle X_{f(k-1)}-\triangle X_{f(k)}>0$且$\triangle X_{f(k+1)}-\triangle X_{f(k)}>0$
- 二者的分布函数如图4所示,0表示没有按键,1表示存在按键
在宏观水平上分析手的运动(即$\triangle x$在粗略的时间尺度上测量,如说0.5+秒),此特征并不直观——手的运动方向取决于被按下键的相对位置,但以1帧的粒度进行观察,手指触摸屏幕之前和之后的行为将取决于用户点击电话屏幕的方法:对于类似图3所示的姿势打字的用户,手指和电话之间的交互通常为右手手掌以某个角度面对电话屏幕,手掌上被监控的点在点击之前的瞬间,手朝向电话的移动将总是导致该点向电话左上角移动,因此$\triangle x$将会减小,同样的在手指离开屏幕的瞬间,手掌上的点总是远离手机的
如果打字时手掌和手机完全平行,则不一定有此特征——但人们使用手机时总是屏幕对着脸,打字的手以某个角度接触手机
纠正按键帧的检测错误
上述的方法必然存在例外,例如手指非常靠近屏幕但没有触摸按键,相关的移动仍然满足检测标准——如图4所示,其概率在横轴小于0时存在大于零的情况
检测机制如下:
删除潜在的错误按键帧:如图6所示,点C、D和E比指定为候选帧的任何其他局部最小值(如A、B、F和G)彼此更接近。因为人们一般不会打字快于某个阈值(即算法1中的MinTh),利用这一条件检查这些点是否可能实际上不对应于按键帧。如果帧序列中的帧不是按键帧,则将其从候选帧集合删除。最终剩余的帧集合指定为SFrame
这里是怎么确定C、D、E到底删除谁??
估计丢失按键帧的位置:确定SFrame中的任何两个相邻帧之间的距离是否比在最大人类打字速度的约束下预期发生的距离更远。若两帧的距离超过最大帧间距离阈值(称为MaxTh),则在两帧之间的中点插入丢失的帧。例如,SFrame序列中相邻帧的id为1和9,间距8大于MaxTh,则插入id为5的帧。MaxTh和MinTh的设置标准基于一项人群研究——95%的按键间隔在6到20帧之间(如图7),因此分别设置为20和6
估计丢失边界键的按键帧位置(即,确定按键和第一个按键对应的帧):解决这个问题的方法依赖于视频在预处理阶段被剪切的长度。本文所有的视频都是在最后一次按键后有保留6到9帧(200到300毫秒),据此估计视频在最后一次按键之后的平均帧数。例如,计算当前视频的按键帧距离$\alpha$,之后计算视频中最后一个按键帧和原始数组AFrame的最后一帧距离$\beta$($\beta$在视频预处理时生成),如果$\beta > 1.5\alpha$则插入一个按键帧作为确认按键的帧——在最后一个按键帧的距离$\alpha$处插入;对于第一个按键缺失的情况,有类似的操作
纠正以上错误后,最终的结构化数组称为FFames,输入后面的PIN推断模块
映射到具体按键
FFrame序列中的按键帧被映射到键盘上的实际按键,分为两步:
- 估计垂直平面上键盘的大小
- 关联每个按键框与键盘网格上的行和列
第一步:
- 图8说明了如何利用手机背面的可识别功能估计键盘的大小
- 根据物理手机的实际宽度和图片中手机的宽度$x$计算放大率
- 根据放大率计算图8c的长度$AB$。图8a所示的距离$y$实际是长度$AB$在垂直面上的投影。
- 比较长度$y$和$AB$,可以得到手机倾斜角度$\theta$。
- 根据$\theta$和长度$PQ$(通过比较键盘的已知长宽比和已知距离$x$获得),计算$P’Q$(键盘长度在垂直线面上的投影)
- 最终,键盘由它在垂直平面上的投影来表示,即矩形$PSP’Q’$
建立FFrame到键盘的映射函数:
在PIN输入的过程中,最后按下的键是确认键,因此可以假设最后一个按键帧对应于确认键——FFrame序列最后一个元素对应于确认键
图9说明了从4位PIN中提取的按键帧是如何映射到按键帧
FFrame序列中,最后一帧的坐标为$(\triangle x_5,\triangle y_5)$,对于倒数第二个帧,坐标映射映射过程为$(\triangle x_4’,\triangle y_4’)\leftarrow (\triangle x_5,\triangle y_5)-(\triangle x_4,\triangle y_4)$
不一定依赖于确认键——输入过程中触摸手机上任何可见的点都可以用来固定坐标。例如,在手机上输入或浏览之前,用户通常点击解锁键来切换手机屏幕,这也可以作为定位过程的参考点
算法2为PIN推理算法
- rowTh为每行键盘的高度(键盘的高度分为四个相当的段)
- colTh为每个列的宽度(键盘的宽度分为三个相等的段)
- 算法第四行到第六行将FFrame中最后一帧的坐标映射到确认键的坐标,对于其他帧,进行上述的坐标转换
- 如果转换后值太小(小于rowTh),则认为该键和确认键的行相同。根据和rowTh的倍数关系,得到按键与确认键所在行的位置关系;列的处理类似
- 最终行和列的标识用于确定PIN
打字出错的影响:
- 受害者在输入PIN的过程中必须在某个时候按下delete键,或者受害者完整输入PIN后在身份验证失败后才知道PIN出错
- 以上两个情况,本文的攻击都会自动从错误中恢复:
- 当在算法返回的键列表中看到一个delete按键时,忽略在delete key之前键入的键
- 第二个情况下, 算法可以检测到两个确认键
攻击性能评估
行列预测的准确性
本文的攻击将PIN的推理视为行列预测问题
表1和表2为行和列预测性能的混淆矩阵
- 列的预测更为准确
- 因为按键的高度几乎是按键宽度的一半,因此手的移动很容易在行与行之间被混淆
- 索尼6X的平均性能更好,因为更高的缩放倍数可以更好追踪打字的手
按键级别的准确性
表3和表4表现了攻击在按键识别上的准确率。行列的预测准确性其实孤立了行和列,而按键级别的准确性给出了行和列的综合攻击效果
大多数按键上都达到了80%以上的准确率
PIN级别的准确性
PIN类型和拿手机姿势的影响
表7将PIN分为四类:
- 从相邻列中抽取两个或多个相邻数字
- 从相邻列中抽取两个或多个相邻数字
- 在PIN的相邻位置有重复数字
- 其余PIN
- 这样分类来分析在相对有限的手部运动下,本文攻击的表现
表8显示攻击性能和手机的姿态存在关系。当$\theta$太大,手指位置做垂直投影时,不同的投影结果的距离较短,在按键检测过程中容易出错
可能的防御和结论
- 本文设计并评估了一种侧信道攻击,攻击基于输入PIN期间手和电话位置的视频片段,重建PIN
- 虽然本文的攻击集中在PIN上,本文认为类似的攻击理念很有可能会出现在对安卓的pattern-based lock攻击中——分析在绘图过程中手机和手在点之间的相对运动,使用观察到的图案和图案模板数据库之间的简单比较来恢复图案
- 本文攻击的成功取决于两个主要因素
- 给定特定类型和型号的PIN输入设备,数字键盘具有非常确定的设计
- PIN的输入遵循非常不同的动作序列,使得攻击者可以容易地确定给定目标何时在电话上输入PIN
- 键盘UI的随机化(键盘的位置、键盘上各个键的相对位置)将克服第一个因素带来的脆弱性