Как защитить данные Intent при отправке через приложения

Я работаю над аспектами безопасности моего приложения для Android.

Я хотел бы узнать о способах защиты данных Intent и дополнительных компонентов при отправке их из одного приложения в другое, чтобы никакое другое приложение, кроме этих двух, не могло его отслеживать.

Одним из подходов грубой силы было бы использовать шифрование-дешифрование для Android для кодирования данных о намерениях, есть ли лучший способ добиться того же?

Спасибо заранее.

Ответ 1

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

Вам может потребоваться добавить дополнительный шаг безопасности к этой схеме:

  • Сначала отправьте намерение "Задача" удаленной деятельности (он должен, например, склеить случайную строку, которую вы предоставили, используя общую кодовую фразу и отправить ее обратно вам)

  • Если этот первый шаг безопасности одобрен, вы можете свободно отправлять незашифрованные сообщения в это удаленное приложение, используя его полностью квалифицированную активность.

Это довольно низкая защита, возможно, это достаточно для ваших нужд.


Пожалуйста, посмотрите комментарий CommonsWare ниже.

Еще один безопасный способ может заключаться в том, чтобы закодировать свою деятельность как Bound Service, сохраняя шаг Challenge, но внутри более частного общения.

Ответ 2

Я предполагаю, что если вы используете явное намерение, то есть задаете класс, к которому нужно отправить намерение, тогда никакой другой класс не сможет перехватить это намерение и посмотреть на его данные. Однако этот метод может потерпеть неудачу, если имя класса в приложении, которое вы пытаетесь отправить информацию, на изменения.

Ответ 3

Если намерение указывает цель, являющуюся частью пакета приложений отправителя, тогда у других приложений не будет возможности ее захватить, она будет доставлена ​​предполагаемому получателю.

С другой стороны, если вы отправляете намерение другому приложению, нет гарантии, что получателем намерения будет выполнение, которое вы ожидаете: если вы отправляете свое намерение на com.mycompany.security.SecureReceiver, но вместо вашего приложения другое приложение устанавливается с данным описанием класса, чем вы отправите свое намерение в это приложение.

Также Android - открытая система. Если кто-то компилирует свою собственную инфраструктуру приложения, он может манипулировать системой доставки Intent.

Вы хотите защитить свои данные от пользователя или от вредоносных приложений?