Если вы объясните свое приложение более подробно, я могу обнаружить, что я здесь не на своем месте, но сейчас я сделаю некоторые предположения относительно вашего варианта использования и модели угрозы.
Насколько я понимаю, у вас есть некоторая конфиденциальная информация, которую вы хотите синхронизировать между мобильным устройством с прерывистой связью и некоторым удаленным сервисом. Услуга доступна только для аутентифицированных пользователей, и пользователи должны аутентифицировать себя на мобильном устройстве, чтобы получить доступ к его копии информации, даже если она находится в автономном режиме.
Если вам нужна надежная защита, зашифруйте копию мобильного устройства с помощью шифрования на основе пароля.
Вы можете использовать тот же пароль, который использовался для аутентификации в сервисе, но в целом я бы не использовал один и тот же ключ для разных целей. Лучшим подходом было бы иметь главный пароль шифрования для мобильного устройства, которое шифрует мобильную базу данных, а также «пароль», используемый для аутентификации пользователя в службе синхронизации. Обратите внимание, что пароль аутентификации службы может фактически быть закрытым ключом для аутентификации SSL-клиента SSL или символьным паролем.
Вам придется оценить риск наличия только одного пароля, но во многих случаях, я думаю, это удобство, которое предлагает пользователю, в сочетании с безопасностью, которую обеспечивает один надежный мастер-пароль, а не два слабых, но легко запоминающиеся пароли - это хороший баланс.
Обратите внимание, что этот подход позволит пользователю, чей доступ к службе был аннулирован, продолжать получать доступ к своей локальной копии, но без каких-либо новых обновлений. Вы могли бы включить какое-то понятие ограничения времени, которое должно применяться мобильным программным обеспечением, но решительный злоумышленник может обойти это.
Если вам просто нужна защита игрушек, ваше предложение о сохранении правильного хеша на мобильном устройстве является адекватным, и действительно не имеет значения, хешируете ли вы настоящий пароль или альтернативный, потому что, если вы используете правильный хеш, это им потребуется несколько миллиардов лет, чтобы найти коллизию паролей, которая позволила бы им получить доступ к удаленному сервису.
Однако, если злоумышленник может увидеть хэш пароля, что мешает ему также посмотреть синхронизированные данные? Зачем им нужно восстанавливать пароль? Шифрование мобильной базы данных предотвратит это.