小心被你敲键盘的声音出卖

访客3年前关于黑客接单1092

本文会讲解一些关于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消息就炸了。
不管怎样,希望这篇文章对大家有所帮助,谢谢!

标签: 键盘

相关文章

电脑键盘锁?笔记本键盘不能用怎么办?

电脑键盘锁?笔记本键盘不能用怎么办?

笔记本键盘锁住怎么办?笔记本键盘不能使用该如何解决?下面就给大家分享笔记本键盘锁住无法使用的解锁方法。 屏幕键盘解锁: 1、鼠标点击“开始”按钮打开“开始”菜单,点击打开“运行”,输入“osk”并...

蚂蚁庄园7月1日庄园小课堂答案 为什么ATM机上的键盘都是金属的?

支付宝蚂蚁庄园每日一题,今天将给大家带来的题目是:为什么一般ATM机上的键盘都是金属的?是不是有很多小伙伴想知道呢,想了解答案的小伙伴快和小编一起来看看吧! 为什么一般ATM机上的键盘都是金属的?...

软键盘怎么打开?如何调出输入法中的软键盘?

软键盘怎么打开?如何调出输入法中的软键盘?

简介:智能输入法都带有软键盘,利用软键盘同样可以输入文字和符号。 工具:百度输入法 1.同时按住Ctrl和Shift的组合键,激活百度输入法 2.在输入法图标上右击 3.点击【软键盘】...

查询女朋友开房记录

雷柏双十一狂欢活动已经正式开启,11月10日到11月11日活动期间,不仅有单品直降,领券还可以最高减200元,近期打算购买外设产品的朋友不妨关注一下雷柏双十一狂欢活动。...

笔记本键盘失灵怎么办(部分键盘没反应处理方法)

笔记本键盘失灵怎么办(部分键盘没反应处理方法)

用户反应说条记本电脑的键盘溘然没有任何反应的问题,对付电脑新手会不知所措。无法解除键盘自己呈现问题的环境下,如那里理惩罚?下面小编教你win7系统条记本键盘失灵如何修复吧。 条记本键盘是电脑的一个不行...

电脑左箭头怎么打出来(电脑键盘怎么打符号) 子晨SEO博客

电脑左箭头怎么打出来(电脑键盘怎么打符号) 子晨SEO博客

hello列位伴侣们周六愉快,我是90小哥爱数码。 那么本日呢?我要与各人一起来分享一下,怎么样才气够在我们的电脑傍边来打出各类百般的一些非凡的箭头标记。那么说到箭头标记呢,在我们的电脑中是常常被...