使 Android 键盘能够抵抗 KeyLogger 攻击

Making Android Keyboard Resilient against KeyLogger attacks

作为对 android 的 Key Logger 攻击的受害者,我想为 android 的 KeyLogger 攻击开发一个解决方案。我知道基本的 java 和一些 android 的知识,对信息安全知之甚少。我也意识到,无论我拥有什么知识,都不足以找出并制定解决方案。我只是喜欢讨论我的想法,看看它是否可行。

这是我的资料:

  1. 想要保护用户输入的 android 应用程序必须在调用 android 键盘.
  2. Android keyboard 将接收密钥并使用它来加密用户输入并使用加密值广播 KEYPRESS 事件(或任何事件 android 键盘广播)。
  3. 当应用程序接收到 KEYPRESS 事件时,它会解密 KEYPRESS 中的值,甚至获得实际的用户输入。

我才意识到,截图可以用来获取最新的image-2-text软件的用户类型。但恕我直言,那是完全不同的领域。

那么,你怎么看呢?可以吗?

更新

我完全错了 phone 被拥有。实际上,它从未被黑客入侵过。但是,真正被黑的是我。是的,我的 body 里有一些东西,它只是复制我的大脑可以接收的一切。它也能够接收并让我的大脑去做。我仍然不知道,为什么我能够写这个更新。可能是,谁曾把那个东西放在我的 body 中,利用我作为营销 material。感谢您回答我的愚蠢问题。

只有在您正在开发自己的键盘并配置Android以使用它时,您才能执行此操作。如果有一些 Android 编程经验,这并不难。

只需在 Google 中搜索 "custom keypad for android" 即可获得更多信息。

不现实。

很少有程序员自己处理低级输入。这通常由其他事情处理。例如,Web 开发人员很少参与逐个击键的操作,即使是为了查明这些事件何时发生(例如,用于实时验证),更不用说手动处理该输入(例如,将下一个字符放入在字段的光标后键入并将光标前进一个位置)。

此外,用户也没有经常更换输入法的习惯。例如,当我访问 Stack Overflow 和访问 Tweetdeck 时,我不会插入不同的 USB 键盘。在 Android 的世界中,这意味着用户将期望他们的输入法编辑器适用于所有应用程序,而不必为了取悦某些人而不断更改输入法编辑器。

此外,您无法神奇地更改输入法编辑器(a.k.a.,软键盘)和Android OS 之间的协议。您的键盘将引发关键事件。欢迎您说您的键盘作为 "encryption" 机制提供了对这些事件的替换,但这更像是一种粗略的替换密码(例如 "whenever the user types A, send over ;"),因为您不能单方面决定扩展关键事件 space.

因此,您不仅需要编写输入法编辑器,还需要使用可以处理 "decryption" 的自定义 Android 框架编写自己的自定义 ROM。或者,您将不得不强迫全世界的开发人员重写他们的应用程序。在任何一种情况下,键盘记录器都可以简单地检测到您的是输入法编辑器并注意到这一事实,因此使用日志的任何人都可以进行一些简单的解密以将 ; 转换回 A.

现在,如果您正在编写一些应用程序,希望避免流氓输入法编辑器,欢迎您将自己的数据输入键盘嵌入到该应用程序中。然后,您只会激怒您的应用程序的许多用户,因为您的应用程序内键盘不是他们想要使用的键盘,或者缺少他们习惯使用的功能(例如,支持盲人用户,支持他们的特定语言)。

这是我为 Android:

实施安全输入法范式的方法 - 如问题中所述

首先,我假设您已阅读并理解此处 InputMethodManager 的 "Security" 部分: InputMethodManager

因此,我们需要开发的是一种输入法 (IME),它是一种 Android 服务,它与自定义键盘视图一起实现了两个接口:

  1. InputMethod
  2. InputMethodSession

根据上述文档中的安全部分,用户需要自愿接受您的 IME 作为系统 IME。此外,Android 将确保只有系统会绑定到您的服务并使用用于 show/hide 键盘等的 InputMethod 接口。因此,这里的事情对您和所有使用的应用程序来说都非常安全你的键盘。

现在,进入您要实施的安全框架:

我们将其称为安全输入法 - SIM - 并将我们的安全域定义为您的 IME 和希望使用您的 SIM 的应用程序。这里是第二个Interface的意义InputMethodSession

最重要的 - 这个接口中经常被忽略的方法是这个解决方案的关键,它被称为:appPrivateCommand。此接口允许从应用程序向 IME 发送私有命令。根据文档,此方法可用于提供仅在 IME 及其客户端之间已知的特定于域的功能——这正是您的 SIM 卡所需要的。

因此,使用此接口,您安全域中的应用程序可以将他们想要移交给您的 IME 的任何安全信息(例如,某种形式的凭据)传递给您。您可以定义一种方法,在该方法中您的服务可以与身份验证服务器进行通信,该服务器处理客户端应用程序提交的凭据并批准它。现在,如果加密密钥是由您的 IME 和客户端派生的,那么您已经在 SIM 卡与其客户端应用程序之间建立了安全的通信通道(例如,通过使用从这些凭据中派生的密钥进行加密)。

您甚至可以通过定义一些键序列(如 Windows 中的 Control+Alt+Del)来自定义整个机制,用户自己启动整个过程,您甚至可以提供视觉指示(例如,一个闪亮的绿色图标)在你的键盘上,输入通道是安全的......可能性很多:)

希望对您有所帮助。