2013-02-13 3 views
1

Как работает SQLCipher для Android-приложений? http://sqlcipher.net/design/SQLCipher security

Как я понял, все зависит от ключа PRAGMA, и этот ключ должен быть сохранен в приложении, возможно, в двоичном формате.

Однако это небезопасно, так как каждый может декомпилировать файл .apk на корневом телефоне. Может, я что-то пропустил?

спасибо.

ответ

1

Да, крепление ключа является сложной частью. В идеале это (частично) предоставляется паролем, который вводит пользователь при входе в приложение, но это не всегда идеально, поэтому иногда вам приходится прибегать к широкомасштабному подходу «безопасность по неизвестности» и собирать ключ из бит и куски, спрятанные здесь и там.

+0

Ну, я выпустил, что нет 100% безопасного решения для сохранения конфиденциальных данных. Я не могу позволить пользователю вводить ключ, потому что я хочу скрыть эти данные от пользователя. Спасибо за ваше время. – Streetboy

2

Как я понял, все зависит от ключа PRAGMA, и этот ключ должен быть сохранен в приложении, возможно, в двоичном формате.

No.

Может быть, я что-то пропустил?

Ключ приходит от пользователя, в виде ключевой фразы о том, что пользователь. В SQLCipher для Android, это ключевая фраза передается методами, как getReadableDatabase() на пересмотренной версии SQLiteOpenHelper.

1

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

К сожалению, некоторые приложения по-прежнему предпочитают использовать SQLCipher со встроенными ключами в качестве элементарной формы DRM, т. Е. Затруднить случайным пользователям просмотр данных. Однако это не обеспечивает существенной безопасности.

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

0

Я генерирую ключевую форму secureRandom, а затем сохраняю ключ на KeyStore (BKS). Для KeyStore я генерирую пароль, используя: случайную информацию, информацию о пользователе, информацию об устройстве и пароль.

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