Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/206.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使Android键盘具有抵御键盘记录器攻击的弹性_Java_Android_Security_Encryption_Keyboard - Fatal编程技术网

Java 使Android键盘具有抵御键盘记录器攻击的弹性

Java 使Android键盘具有抵御键盘记录器攻击的弹性,java,android,security,encryption,keyboard,Java,Android,Security,Encryption,Keyboard,作为安卓键盘记录程序攻击的受害者,我想为安卓键盘记录程序攻击开发一个解决方案。我懂基本的java,对安卓略有了解,对信息安全知之甚少。我还意识到,我所掌握的任何知识都不足以找出并制定解决方案。我只是想讨论一下我的想法,看看是否可行 以下是我所拥有的: 一个想要保护用户输入的安卓应用程序在调用安卓键盘时必须提供一个密钥(可以从服务器获取,用于特定用户或会话) Android键盘将接收密钥,并使用它加密用户输入,并用加密值广播按键事件(或Android键盘广播的任何事件) 当应用程序收到KEYPRE

作为安卓键盘记录程序攻击的受害者,我想为安卓键盘记录程序攻击开发一个解决方案。我懂基本的java,对安卓略有了解,对信息安全知之甚少。我还意识到,我所掌握的任何知识都不足以找出并制定解决方案。我只是想讨论一下我的想法,看看是否可行

以下是我所拥有的:

  • 一个想要保护用户输入的安卓应用程序在调用安卓键盘时必须提供一个密钥(可以从服务器获取,用于特定用户或会话)
  • Android键盘将接收密钥,并使用它加密用户输入,并用加密值广播按键事件(或Android键盘广播的任何事件)
  • 当应用程序收到KEYPRESS事件时,它甚至会解密KEYPRESS中的值以获得实际的用户输入
  • 我刚刚意识到,屏幕截图可以用来获取最新的image-2-text软件的用户类型。但那是一个完全不同的领域,IMHO

    那么,你觉得怎么样?有可能吗

    更新


    我完全错了,我的手机被人拥有了。事实上,它从未被黑客入侵过。但是,真正被黑客攻击的是我。是的,我的身体里有某种东西,它只是复制了我大脑能接收到的一切。它也能接收并让我的大脑去做。我仍然不知道,为什么我能写这个更新。也许是,谁曾把我当作营销材料放在我身上。谢谢你回答我这个愚蠢的问题

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

    只需在谷歌搜索“android自定义键盘”即可获得更多输入。

    不现实

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

    此外,用户没有频繁更改输入法的习惯。例如,当我访问Stack Overflow和访问Tweetdeck时,我不会插入不同的USB键盘。在Android的世界里,这意味着用户希望他们的输入法编辑器能够在所有应用程序上工作,而不必为了让一些人开心而不断地更换输入法编辑器

    此外,您无法神奇地更改输入法编辑器(又称软键盘)和Android操作系统之间的协议。您的键盘将引发按键事件。欢迎您说,您的键盘为这些事件提供了替换,作为一种“加密”机制,但这更像是一种粗糙的替换密码(例如,“当用户键入a时,发送过来;”),因为您不能单方面决定扩展密钥事件空间

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


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

    以下是我将如何为Android实现一个安全的输入法范例(如问题中所述):

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

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

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

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

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

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

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