本文会讲解一些关于keytap工具的技术细节。我也会分享一些自己关于这个项目的几点想法。这个项目已经开源,源码在这里可以下载。
描述
该工具的主要目标是利用敲击键盘时产生的声音作为一种边信道攻击来猜测输入文本的内容。为了达到这个目标,该算法以训练集作为输入,这个训练集包括音频记录和记录期间你敲了哪些键盘按键。通过这些数据,该算法可以学习到不同按键敲击的声音,之后就可以通过捕获的音频来尝试识别敲键盘的声音。训练数据集的收集非常具体,采集收据的根据也就是键盘、麦克风还有两者之间的相对位置。任何因素发生了变化,这个 *** 就变得毫无意义了。不过好在,当前的 *** 可以进行实时预测。
这个 *** 涉及到的主要步骤如下:
· 收集训练数据
· 创建预测模型,不断学习
· 检测到键盘输入
· 预测具体的每一个输入键
收集训练数据
这个收集训练数据的 *** 已经忽略了两次键盘敲击之间的声音。我们只保留实际按键前和按键后75-100ms的音频。这样做可能会有点不太精确,因为键盘敲击的延迟时间是随机的,程序捕获这种事件,也会受到硬件和软件因素的影响。
举个例子,下图是敲击我键盘上的字母“g”的完整声波:
从图中可以看到,在按键峰值之后,还有一个释放按键的峰值。而keytap直接忽略了这个释放峰值。这个可能会提取到额外的信息,不过为了简单起见,释放峰值的这个数据就直接放弃不用了。所以,最终字母“g”这个按键的训练数据声波图如下:
当然,这个75ms的间隙对打字速度有一定的限制,如果在这个时间段内,按键有重叠的话,不同按键的训练数据就会混杂在一起。
从上图中还可以观察到一点就是某个按键的训练声波图越多越好,结合多个声波图,可以帮助减少环境噪音。而且,每个人按键的声音可能稍有不同,这就取决于用户按键的方式了。所以,你可能会捕获到某个按键的不同的声音。
创建预测模型
这时候就体现出人们的非凡创造性了,可以通过机器学习,人工智能和神经 *** 等技术来创建预测模型。不过keytap使用了最简单的一种办法。对于每一个训练按键,我们执行以下3个步骤:
1.对齐收集到的波形峰值。这有助于避免检测按键之前的随机延迟时间,前面解释过了。
2.基于相似性度量来优化声波的对齐方式,因为有时候,声波的峰值并不是更佳指标,所以我们要选择一个更加精确的 *** 。
3.对其波形进行简单加权平均。权重由相似性度量定义。
我们并没有直接跳到步骤2,而是要先执行之一步,因为相似性度量的计算是很吃CPU的。而步骤1已经有效的缩小了对齐的范围并减少了计算量。
步骤3之后,我们最终会得到每个按键的平均波形。之后会将其与捕获到的数据进行对比并预测最有可能的输入按键。
keytap中使用的相似性度量是交叉相关(CC),公式如下:
这里的Ai和Bi是被比较的两种波形的波形样本。CC值越高,波形越相似。当然也可以使用其他的相似性度量的测试 *** 。
不同按键之间间隔的计时信息其实也可以加入到预测模型中,不过我避免了使用这种 *** ,因为它更加难以实现。
检测键盘输入
keytap使用相对简单的阈值技术来检测原始音频中的按键事件。显然,当用户敲击按键时,我们预计会有一个很高的峰值,这也正是我们想要的效果。阈值相对于过去几百毫秒的样本平均强度而言是自适应的。
这个 *** 并不是十分完美,但我现在还不知道更有效的 *** 来检测按键事件。
预测敲了哪些按键
一旦确定了可能的按键事件,我们就可以定位到波形的峰值位置,计算该部分波形与训练数据中所有平均波形的相似性度量。我们允许在峰值附近有小范围的调整(前面提到过)。我们认为相似性度量更高的将对应的是敲击的按键。
几点观察
我注意到即时这个算法没有检测到敲击的正确按键,它仍然能够预测到附近的按键,意思也就是定位到了正确键的下一个键。对于这个现象,我认为有下面两种解释:
1.键盘上相邻的按键发出的声音类似
2.在这个 *** 中,键相对于麦克风的位置对预测起着决定性的作用
我认为之一种解释不太可能,所以很可能是第二种解释。
另外,我还观察到机械键盘比非机械键盘更容易遭受这种键盘窃听攻击。
keytap2
我很笃定肯定有一种实现预测的 *** 是根本不需要收集训练数据的。假如用户使用某种已知语言来输入文本,比如英语,那么关于该语言的N元模型统计信息和按键检测的相似性度量值结合起来就足够检测出输入的文本了。实际上,归根到底这其实就是破解置换密码的一种攻击。
keytap2尝试着去证明这种攻击。我也在做这方面的研究,但是我卡在了基于他们的CC公式对按键进行聚类分析的部分。但我认为至少我已经准备好了置换密码破解工作。如果在实际中破解成功的话,我将会提供更多的细节。
结束语
科学文献上,关于这个主题的论文有很多。其中有一篇论文中的一个特别的 *** 给了我很大的启发,就是Don’t Skype&Type!大家有兴趣的可以看看。但大多数情况下,我都是自己独立解决了问题,没有阅读别人论文中的细节和他们的研究成果,我觉得自己解决问题更有意思,更有挑战性。
老实说,真没想到这篇文章会受到巨大的关注,完全在意料之外。这一切始于我在一篇Hacker News中发布的一条评论,然后被一个著名的开发工程师注意到了。然后,我的Twitter消息就炸了。
不管怎样,希望这篇文章对大家有所帮助,谢谢!
假如发明条记本电脑的键盘存在妨碍,发起将电脑整机送至对应品牌的官方售后处事中心,由专业的维修工葛宜峰程师举办全面检测,确认妨碍以及维修改换处理惩罚。品牌电脑的整。 我的电脑是遐想的,型号是B5...
支付宝蚂蚁庄园每日一题,今天将给大家带来的题目是:为什么一般ATM机上的键盘都是金属的?是不是有很多小伙伴想知道呢,想了解答案的小伙伴快和小编一起来看看吧! 为什么一般ATM机上的键盘都是金属的?...
都只有键盘之间的映射,也不能.求一个合适的软件啦,谢谢了是要控制器映射。。 JoyToKey 使用游戏控制器来模拟键盘操作它将游戏控制器输入转换为键盘或鼠标输入。使用 JoyToKey,您就可以...
你是不是经常遇到键盘出现按键失灵和错乱的情况?今天小编就来教大家怎么解决,暂时还没遇到这个问题的小伙伴们,建议收藏备用哟~ 数字小键盘失灵 台式机 台式电脑上的数字小键盘失灵的话,很可能是你...
很多人使用笔记本,因为其轻便小巧,无需额外杂乱的电线烦扰。但是笔记本键盘相比台式机,非常脆弱,而且更换费用较贵,因此熟悉电脑的小伙伴或是游戏玩家会单独配备一台无线键盘代替使用,可以延缓笔记本键盘的使用...
电脑如何打开软键盘,只需6个步骤即可。软键盘是对于真实电脑键盘的一种模拟,在很多时候我们都会有遇到需要打开软键盘。那么电脑如何打开软键盘?下面花火网小编就为大家详细介绍电脑调出软键盘方法。 电脑...