2013-07-18 2 views
4

Я нахожусь в процессе создания приложения, которое будет отправлять и получать данные с сервера. Достаточно просто. В случае разъединенной связи я также начал программировать функциональность хранения данных до тех пор, пока не будет достигнута связь. Эти данные будут храниться локально в базе данных SQLite.Encryption conundrum

Данные (а не таблица) зашифровываются, и я буду хранить индивидуальную потребительскую соль/IV серверную сторону.

В этом суть моей проблемы. Если у пользователя нет возможности подключения, он не может подключиться к моему серверу, чтобы получить их соль/IV, и если я буду хранить их отдельные ключи на устройстве где-нибудь, тогда это достаточно просто, чтобы кто-нибудь мог заглянуть!

Есть ли обычная практика, которую я мог бы использовать для обеспечения безопасности данных? Мне трудно поверить, что нет надежного хранения данных без подключения к Интернету, но опять же, я относительно новичок в этом деле по работе с сервером.

+1

Возможный дубликат [Насколько безопасны файлы SQLite и SharedPreferences на Android?] (Http://stackoverflow.com/questions/3608883/how-secure-are-sqlite-and-sharedpreferences-files-on-android) –

+0

Эта ссылка «Насколько безопасна» полезна, но не дублируется. –

+0

Шифруйте данные дважды с сервером, зная, как было выполнено первое локальное шифрование? Первое шифрование, конечно, не имело бы соли. –

ответ

1

Просто для того, чтобы играть адвоката дьявола: кто скажет, что сервер не скомпрометирован и доставляет секретный ключ/соль/IV от злоумышленника? Это может быть сделано с помощью взломанной точки доступа, например, или с помощью некоторых вредоносных программ для Android, которые перенаправляют имена узлов на разные IP-адреса, которые заменяют ваш сервер.

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

Если у пользователя есть корневая или скомпрометированная система, вы не должны винить, и я думаю, что пользователю гораздо больше беспокоиться.

Кроме того, вы должны задать себе вопрос, если ваше приложение, в частности, стоит злоумышленнику для изучения, адресации и использования.

+0

Приложение будет иметь дело с деньгами и некоторой довольно конфиденциальной информацией, поэтому я могу определенно увидеть, кто-то хочет изменить информацию, прежде чем информация будет отправлена ​​на сервер. Я не могу точно вдаваться в подробности, но просто поверь мне, когда я скажу, что это вызовет серьезные проблемы. Я никогда не думал о том, что вы должны были сказать о безопасности, однако, и вы правы. Я не обязан гарантировать, что пользователь сохраняет свое собственное устройство в безопасности. Спасибо за ваш ответ, друг. – Matal