使Android键盘能够抵御KeyLogger攻击

时间:2015-08-22 10:42:10

标签: java android security encryption keyboard

作为Android上的Key Logger攻击的受害者,我想开发针对Android的KeyLogger攻击的解决方案。我知道基本的java和一点关于android而且很少关于信息安全。我也知道,无论我有什么知识都不足以弄清楚并制定解决方案。我只想讨论我的想法,看看它是否可行。

这就是我所拥有的:

  1. 想要保护用户输入的android应用程序在调用android键盘时必须提供一个密钥(可以从服务器获取,特定用户或会话)。
  2. Android键盘将收到密钥并使用它来加密用户输入并以加密值广播KEYPRESS事件(或任何安卓android键盘广播事件)。
  3. 当应用程序收到KEYPRESS事件时,它会解密KEYPRESS中的值,甚至可以获得实际的用户输入。
  4. 我刚认识到,屏幕截图可用于获取用户使用最新的图像2文本软件输入的内容。但这完全是一个不同的领域,恕我直言。

    那么,您如何看待它?有可能吗?

    更新

    我的电话被拥有完全错了。实际上,它从来没有被黑客入侵。但是,真正被黑客攻击的是我。是的,我的身体里有一些东西,它可以复制我大脑可以接收到的所有东西。它还能够接收并让我的大脑去做。我还是不知道,为什么我能写这个更新。可能是,曾经把我的东西放在我体内,用我作为营销材料。谢谢你的愚蠢问题的答案。

3 个答案:

答案 0 :(得分:14)

不现实。

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

此外,用户不习惯经常更改输入法。例如,当我访问Stack Overflow时,我没有插入不同的USB键盘,而是在访问Tweetdeck时。在Android世界中,这意味着用户期望他们的输入法编辑器可以在所有应用程序上运行,而不必继续更改输入法编辑器,只是为了让一些人满意。

此外,您无法神奇地更改输入法编辑器(即.k.a.,软键盘)和Android OS之间的协议。键盘将引发关键事件。欢迎您说您的键盘为这些事件提供了替换作为“加密”机制,但这更像是一个粗略的替换密码(例如,“每当用户键入 A ,发送时; “),因为你不能单方面决定扩大关键事件空间。

因此,您不仅需要编写输入法编辑器,还需要使用可以处理“解密”的自定义Android框架编写自己的自定义ROM。或者,你必须强迫所有世界的开发者重写他们的应用程序。在任何一种情况下,键盘记录器都可以轻易地检测到你的是输入法编辑器并记下这个事实,所以无论谁使用日志都可以做一些简单的解密来将; 转换回 A < / KBD>

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

答案 1 :(得分:6)

我将采取以下措施来实现安全输入法范例 - 如问题中所表达的那样 - 适用于Android:

首先,我假设你已经阅读并理解了InputMethodManager的“安全性”部分: InputMethodManager

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

  1. InputMethod
  2. InputMethodSession
  3. 根据上面提到的文档中的安全部分,用户需要自愿接受您的IME作为系统IME。此外,Android将确保只有系统将绑定到您的服务并使用InputMethod界面,该界面用于显示/隐藏键盘等。所以,这里的事情对您和使用键盘的所有应用程序都非常安全。

    现在,来到您要实现的安全框架:

    让我们将其称为安全输入法 - SIM - 并将我们的安全域定义为您的IME和希望使用您的SIM的应用程序。以下是第二个接口 InputMethodSession

    的重要性

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

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

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

    希望这有帮助。

答案 2 :(得分:1)

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

只需在Google上搜索&#34;用于Android的自定义键盘&#34;获得更多投入。