从技术和法律的角度来看,我认为该主张有些荒谬,如果他们能够成功执行其主张,我会感到非常惊讶。或者,考虑到可能的影响,如果他们甚至尝试过(他们可能只是在虚张声势)。
到目前为止,我会礼貌地告诉他们走开,忘记整件事。
事实是什么?
有人指控您的朋友与某人分享了他的密码,或多或少是出乎意料的。指控基于一些非常可疑的数字(可能是秘密的?你的朋友在他们指控他之前知道这件事吗?)使用某种未指定且可能不可靠的系统记录。
您的朋友作证说他没有分享他的帐户信息,并且强有力的间接证据(所有登录都来自他的家用计算机或他的工作计算机,并且来自他工作的时间)证实了他的证词。
举证责任在于提供商坚持认为用户违反了服务条款,除非他们有确凿的证据,否则任何此类指控充其量都是诽谤(这是可诉的,因此我怀疑他们会试图提出指控)。
假设测量足够准确,匹配的击键模式的存在是同一个人的指标。然而,不匹配的击键模式的存在是毫无意义的指标。它可以在任何时候简单、实时地显示,同一个人可以在一两分钟内产生十几种不同的打字模式。
您的现代 iPhone 配备了指纹传感器。这是一种更复杂的生物特征认证机制,错误率要低得多,故意作弊要困难得多(假设你使用右手手指),但它经常失败——在我的手机上,大约每 10 次尝试就会失败。
现在,按照这个 Web 应用程序提供商的逻辑,Apple 应该报警,因为我偷了我的 iPhone——大约每天两次!毕竟有确凿的证据……指纹不匹配,所以显然我不是合法拥有者。这是荒唐的。
根据您居住的地方,仅仅秘密记录击键可能已经给提供商带来了严重的麻烦(他们最好不要在美国)。
从技术角度来看,桌面应用程序可以在典型的 Windows PC 上以大约 15 毫秒的分辨率记录击键动态。如果您安装一个低级键盘挂钩或驱动程序(祝您在 Javascript 或浏览器插件中这样做,祝您好运),您可以做得更好,但是合理地接收消息并将消息时间记录为 15.6 毫秒就可以了。
GetMessageTime()
在收到消息后立即调用,WM_KEYDOWN
或者WM_KEYUP
几乎是获取消息时间的最准确方法(您可以使用 QPC,但有什么用......准确性受到消息的限制,该消息已经包含时间戳,更高分辨率的计时器只会给出更多的数字,但不是更精确)。
如果我在一个简单的 10 行程序中执行此操作,该程序除了在键入"the quick brown fox jumps"时打印出消息时间并取增量,那么我得到的结果是我的停留时间是 2 个滴答声 +/- 1 滴答,我的飞行时间是 3 滴答 +/- 1 滴答(以 15.6 毫秒为单位表示)。
除非您的密码有几千个字符,否则这太不精确了,无法说出任何内容。十几个击键,每个需要 2 或 3 个滴答声?打扰一下?为了确凿的、确凿的证据?你也可以阅读茶叶。
是的,可以通过调整系统调度程序的间隔来提高准确性。但同样,这超出了您在浏览器中运行的某些东西的范围。此外,考虑到对于浏览器插件或一段 Javascript,浏览器的逻辑介于接收事件和您看到它们之间。这将导致未知的(并且可能是不确定的)延迟,进一步模糊测量。