Как обезопасить данные о намерениях при отправке их между приложениями - PullRequest
11 голосов
/ 04 октября 2011

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

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

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

Заранее спасибо.

Ответы [ 3 ]

5 голосов
/ 04 октября 2011

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

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

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

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

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


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

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

0 голосов
/ 04 октября 2011

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

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

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

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

0 голосов
/ 04 октября 2011

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

...