2016-04-27 4 views
6

Есть ли понятные примеры использования KeyStore в Android?Как сохранить защищенную строку в Android?

Я не могу понять, как мне защитить свой пароль/токен/anything_else в приложении Android в устройстве ROOTED от использования хакерами, имеющими физический доступ к устройству.

Я понимаю, что могу сгенерировать KeyPair с некоторыми ALIAS и использовать его как закрытый ключ как пароль базы данных, например, но меня интересует: может ли любой хакер прочитать этот ALIAS из моего декомпилированного apk (потому что я не могу сфотографировать псевдоним string) и создать другое приложение, которое использует тот же ALIAS, чтобы получить privateKey из android KeyStore?

Любые решения?

+0

пока что только решение, которое я нашел, - это сохранить мои данные в базе данных, зашифрованной SqlCipher. Доступ с помощью ormLite, сохранение пароля в методе NDK как постоянный. В моем DbHelper расширяет OrmLiteOpenHelper. Я инициализирую DB паролем, который возвращает метод из NDK. в методе NDK это просто возвращает «секретный пароль». Bulletproof Android book говорит, что получить эту константу из NDK сложнее, потому что вы должны разобрать ее, а не просто декомпилировать, как Java-код. Любые мысли об этом? –

ответ

2

Я не могу понять, как мне защитить свой пароль/токен/anything_else в приложении Android в устройстве ROOTED от использования хакерами, имеющими физический доступ к устройству.

Вы не можете. Client Authenticity is Not the Server's Problem.

Предположим, вы храните зашифрованное значение в своем приложении, а не сохраняете значение напрямую. Где ключ к расшифровке этого значения? Приложение обязательно должно будет расшифровать это значение. Теперь все, что нужно хакеру, это загрузить ваш .apk, подключить его к Lobotomy, и они быстро поймут, что происходит.

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

0

Нужно ли хранить ключ в приложении?

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

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

  • Нет связанных вопросов^_^