Шифровать информацию на устройствах Android (разумно защитить от доступа пользователя) - PullRequest
1 голос
/ 17 июня 2011

Мы создаем приложение для Android, игру-викторину, в которую мы хотели бы кешировать вопросы + ответы, когда пользователь не в сети. Проблема в том, что нам нужно будет скрывать эти данные от пользователя, пока она не ответит на вопросы. В противном случае обман был бы очень легким, что повредило бы игре. Затем можно извлечь все вопросы + ответы и автоматически отправить ответы на сервер API.

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

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

Вопрос состоит в следующем: Знаете ли вы, как обычным пользователям затруднить извлечение секрета из APK - то есть сделать почти невозможным написание автоматического извлечения ключей?

Мои лучшие догадки на данный момент:

  • Скрыть некоторую информацию в базе данных и использовать ее в качестве соли для ключа
  • Добавить несколько бит информации с устройства в виде соли (IMEI, адрес электронной почты, серийный номер, ...) - возможно, вместе с обфускацией трудно будет понять, как применяется соль?

1 Ответ

1 голос
/ 17 июня 2011

Вы можете использовать отдельный ключ для каждого вопроса, который зависит от ответа на предыдущий вопрос. Поэтому невозможно расшифровать вопрос 2, если вы уже не ответили на вопрос 1.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...