2011-01-30 3 views
1

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

Есть ли возможность обеспечить это? Может быть, есть возможность с подписью файла apk?

Подсказка приветствуется.

С уважением, Питер

ответ

4

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

1

Для проверки работоспособности вашего программного обеспечения клиентские устройства должны иметь возможность предоставлять услуги удаленной аттестации, которая является одной из многих кучек сокращений в мире TPM. Я обнаружил, что кто-то работает над предоставлением услуг TPM, в том числе IBM IMA, который почти достаточно хорош для того, что вы хотите.

Подробнее здесь: http://www.vogue-project.de/cms/upload/vogueSoftware/Manual.pdf (Google Quickview).

Конечно, это эмуляция TPM и требует исправления ядра Android. Но, возможно, один из разных производителей хотел бы построить модель с оборудованием TPM, включенным для вас?

4

Вы пытаетесь решить известную проблему:

  1. Вы никогда не можете доверять приложение на открытом устройстве (мобильный телефон, настольный компьютер). Чтобы доверять ему, это должно быть доказательством несправедливости. Примером такого устройства является смарт-карта. Мобильные устройства, конечно, не так.

  2. Вы никогда не должны отправлять данные на устройство, которое пользователь не должен видеть. Следствием этого является то, что вся бизнес-логика должна выполняться на сервере.

  3. Все запросы на сервер должны быть аутентифицированы с учетными данными пользователя (имя пользователя/пароль) и сделаны через защищенный протокол (HTTPS/SSL).

Смежные вопросы