Лучший способ управлять паролем, который должен храниться в приложении sqlite для iPhone - PullRequest
0 голосов
/ 11 августа 2011

У меня есть приложение для iPhone, которое должно работать в автономном режиме, и его нужно использовать для нескольких пользователей на одном устройстве.

Я храню пропуск в базе данных sqlite. Он должен быть там ... потому что база данных синхронизируется с другой в обычном сервере sql box.

Итак, я прочитал имена пользователей и пароль от главной базы данных и отправил эту информацию обратно на iPhone bd. Когда пользователь входит в систему, приложение читает с локального диска. Пользователь работает в автономном режиме, а затем снова синхронизируется с главным bd.

1 Ответ

2 голосов
/ 12 августа 2011

Я не совсем уверен, какой у вас вопрос ...

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

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

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

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


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


В конце дняBlackBerry все еще срывает яблоко в безопасности.


ОБНОВЛЕНИЕ : мой комментарий будет слишком длинным.

@ mamcx: Я не думаю, что выВы понимаете масштаб проблемы, которую вы имеете. ЛЮБЫЕ данные на устройстве могут быть скомпрометированы, включая пароли, хранящиеся в цепочке для ключей .Это действительно не так сложно на iPhone.

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

ВСЕ информация, необходимая для этого, хранится на устройстве из-за его отключенного характера.Это включает в себя алгоритм хеширования и соль.

Теперь предположим, что устройство украдено ИЛИ внутренний сотрудник решает надеть черную шляпу.Вытащить все данные просто.Это может быть сделано неразрушающим способом, и устройство можно вернуть обратно , чтобы никто не знал, что оно пропало .На этом этапе хакер имеет столько времени, сколько он хочет создать радужные таблицы для взлома паролей.Черт, есть «компании», которые будут арендовать время на разных облаках, чтобы построить радужные таблицы для вас .

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

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

...