Как защитить данные Intent при отправке через приложения
Я работаю над аспектами безопасности моего приложения для Android.
Я хотел бы узнать о способах защиты данных Intent и дополнительных компонентов при отправке их из одного приложения в другое, чтобы никакое другое приложение, кроме этих двух, не могло его отслеживать.
Одним из подходов грубой силы было бы использовать шифрование-дешифрование для Android для кодирования данных о намерениях, есть ли лучший способ добиться того же?
Спасибо заранее.
Ответы
Ответ 1
Как указано в других ответах, хотя вы можете отправить намерение на полностью квалифицированную активность, ничто не мешает кому-либо создавать приложение с тем же пакетом.
Вам может потребоваться добавить дополнительный шаг безопасности к этой схеме:
-
Сначала отправьте намерение "Задача" удаленной деятельности (он должен, например, склеить случайную строку, которую вы предоставили, используя общую кодовую фразу и отправить ее обратно вам)
-
Если этот первый шаг безопасности одобрен, вы можете свободно отправлять незашифрованные сообщения в это удаленное приложение, используя его полностью квалифицированную активность.
Это довольно низкая защита, возможно, это достаточно для ваших нужд.
Пожалуйста, посмотрите комментарий CommonsWare ниже.
Еще один безопасный способ может заключаться в том, чтобы закодировать свою деятельность как Bound Service, сохраняя шаг Challenge, но внутри более частного общения.
Ответ 2
Я предполагаю, что если вы используете явное намерение, то есть задаете класс, к которому нужно отправить намерение, тогда никакой другой класс не сможет перехватить это намерение и посмотреть на его данные.
Однако этот метод может потерпеть неудачу, если имя класса в приложении, которое вы пытаетесь отправить информацию, на изменения.
Ответ 3
Если намерение указывает цель, являющуюся частью пакета приложений отправителя, тогда у других приложений не будет возможности ее захватить, она будет доставлена предполагаемому получателю.
С другой стороны, если вы отправляете намерение другому приложению, нет гарантии, что получателем намерения будет выполнение, которое вы ожидаете: если вы отправляете свое намерение на com.mycompany.security.SecureReceiver, но вместо вашего приложения другое приложение устанавливается с данным описанием класса, чем вы отправите свое намерение в это приложение.
Также Android - открытая система. Если кто-то компилирует свою собственную инфраструктуру приложения, он может манипулировать системой доставки Intent.
Вы хотите защитить свои данные от пользователя или от вредоносных приложений?