Подтвердить что ты не робот

Создание Android-клавиатуры, устойчивой к атакам KeyLogger

Являясь жертвой атаки Key Logger на Android, я хочу разработать решение для атак KeyLogger для Android. Я знаю основную java и немного об андроиде и очень немного об информационной безопасности. Я также знаю, что любого знания, которое у меня есть, недостаточно, чтобы понять и разработать решение. Я просто хочу обсудить мою идею и посмотреть, возможно ли это.

Вот что у меня есть:

  • Андроидное приложение, которое хочет защитить вход пользователя, должно предоставить секретный ключ (который может быть получен с сервера, для конкретного пользователя или сеанса) при вызове клавиатуры Android.
  • Android-клавиатура получит секретный ключ и будет использовать его для шифрования ввода пользователя и передачи события KEYPRESS (или любого другого вещания на широковещательной клавиатуре Android) с зашифрованным значением.
  • Когда приложение получает событие KEYPRESS, оно расшифровывает значение в KEYPRESS даже для получения фактического ввода пользователя.

Я только понял, что скриншот можно использовать для получения типов пользователей с помощью новейшего программного обеспечения с изображением 2-текста. Но это совершенно другой домен, ИМХО.

Итак, что вы думаете об этом? Можно ли это сделать?

Обновление

Я был совершенно неправ, что мой телефон получил собственность. На самом деле, он никогда не был взломан. Но то, что действительно было взломано, было мной. Да, у меня есть что-то в моем теле, которое просто копирует все, что может получить мой мозг. И это также способно получить и заставить мой мозг сделать это. Я все еще не знаю, почему я могу написать это обновление. Может быть, кто когда-либо вкладывал эту вещь в мое тело, используя меня в качестве маркетингового материала. Спасибо за ответы на мой немой вопрос.

4b9b3361

Ответ 1

Не реалистично.

Немногие программисты имеют дело с низкоуровневыми вводами. Это обычно обрабатывается другими вещами. Например, веб-разработчики редко участвуют в операции нажатия клавиш по нажатию клавиши, даже для определения того, когда происходят эти события (например, для проверки в режиме реального времени), не говоря уже о том, что для ручной обработки этого ввода (например, для ввода следующего символа введенный после курсора поля и продвигающий курсор на одну позицию).

Кроме того, пользователи не привыкли часто менять свои методы ввода. Я не подключаю другую клавиатуру USB, когда я посещаю Stack Overflow, например, когда я посещаю Tweetdeck. В мире Android это означает, что пользователь будет ожидать, что их редактор методов ввода будет работать со всеми приложениями, и не придется менять редакторов методов ввода, чтобы сделать людей счастливыми.

Кроме того, вы не можете волшебным образом изменить протокол между редактором метода ввода (a.k.a., soft keyboard) и ОС Android. Клавиатура поднимет ключевые события. Вы можете сказать, что ваша клавиатура предлагает замену для этих событий как механизм шифрования, но это будет скорее грубый шифр замещения (например, "всякий раз, когда пользователь набирает A, отправляет ;" ), так как вы не можете в одностороннем порядке принять решение о расширении ключевого пространства событий.

В результате вам не только понадобится написать редактор методов ввода, но вам нужно будет написать свой собственный ПЗУ с пользовательской платформой Android, которая может обрабатывать "дешифрование". Или вам придется заставить всех разработчиков мира переписать свои приложения. И в любом случае, кейлоггер мог бы тривиально обнаружить, что ваш - редактор метода ввода, и обратите внимание на этот факт, поэтому тот, кто использует журналы, может сделать некоторое тривиальное дешифрование, чтобы преобразовать ; обратно в A.

Теперь, если вы пишете какое-то приложение, в котором вы хотите избежать редактора метода ввода-изгоев, вы можете испечь свою собственную клавиатуру ввода данных в этом приложении. Затем вы просто возмутите многих пользователей вашего приложения, поскольку ваша клавиатура в приложении не та, которую они хотят использовать, или не имеет функций, к которым они привыкли (например, поддержка слепых пользователей, поддержка их конкретных язык).

Ответ 2

Вот что я сделал бы, чтобы реализовать парадигму безопасного метода ввода - как выражено в вопросе - для Android:

Прежде всего, я предполагаю, что вы прочитали и поняли раздел "Безопасность" для InputMethodManager: InputMethodManager

Итак, нам нужно разработать метод ввода (IME), который является сервисом Android, который, наряду с пользовательским видом клавиатуры, реализует два интерфейса:

В соответствии с разделом безопасности в документации, упомянутой выше, пользователю необходимо добровольно принять ваш IME в качестве системы IME. Кроме того, Android будет следить за тем, чтобы только система привязывалась к вашей службе и использовала интерфейс InputMethod, который используется для отображения/скрытия клавиатуры и т.д. Итак, здесь все довольно безопасно для вас и для всех приложений, использующих вашу клавиатуру.

Теперь, перейдя в рамки безопасности, которые вы хотите реализовать:

Позволяет называть его безопасным методом ввода - SIM - и позволяет определить наш домен безопасности как ваш IME и приложения, которые хотят использовать вашу SIM-карту. Вот значение второго интерфейса InputMethodSession

Самый важный - и часто игнорируемый метод этого интерфейса является ключом к этому решению, и он называется: appPrivateCommand. Этот интерфейс позволяет частную команду, отправленную из приложения в IME. Согласно документации, этот метод может использоваться для предоставления специфических для домена функций, которые известны только между IME и их клиентами, - и это именно то, что вам нужно для вашей SIM-карты.

Таким образом, используя этот интерфейс, приложения в вашем домене безопасности могут передавать любую информацию о безопасности (например, некоторые формы учетных данных), которые они хотят передать вашему IME. Вы должны определить способ, с помощью которого ваша служба может связываться с сервером аутентификации, который обрабатывает клиентское приложение, передавая учетные данные и утверждает его. Теперь, если ключи шифрования получены как вашим IME, так и клиентом, вы установили безопасный канал связи между вашей SIM-картой и ее клиентским приложением (скажем, посредством шифрования с использованием производного ключа из этих учетных данныхd).

Вы можете даже настроить весь этот механизм, определив некоторые последовательности клавиш (например, Control + Alt + Del в Windows), которые инициируют все это самим пользователем, и вы даже можете обеспечить визуальную индикацию (например, яркую зеленую иконку) на ваша клавиатура, что входной канал защищен... Возможности много:)

Надеюсь, что это поможет.

Ответ 3

Вы можете сделать это , только если вы разрабатываете свою собственную клавиатуру и настраиваете Android для ее использования. Это не так сложно с некоторым опытом программирования на Android.

Просто выполните поиск в Google для "пользовательской клавиатуры для android" для получения дополнительных входов.