#iphone #security #ios4
#iPhone #Безопасность #ios4
Вопрос:
Мы пишем приложение для iPhone iOS4, которое содержит базу данных SQLite, которая зашифрована и для чтения которой требуется ключ. База данных содержит данные, предоставленные разработчику, она не содержит никаких пользовательских данных.
Проблема, с которой мы сталкиваемся, заключается в том, как согласовать доставку ключа и / или хранить ли ключ на устройстве, когда он прибудет, / где хранить ключ. Это было бы сделано без какого-либо взаимодействия с пользователем.
Есть ли способ безопасно вставить ключ и запросить ключ из связки ключей во время выполнения, чтобы, например, если приложение окажется на устройстве, поврежденном в результате взлома, ключ не мог быть извлечен злым человеком?
У меня есть сомнения, что все это можно сделать безопасно, но я здесь не эксперт. Например, в некоторых местах исходного кода нам нужно было бы запросить ключ из цепочки для ключей.
Заранее сердечно благодарю вас за ваши соображения.
Комментарии:
1. На устройствах с корневыми операционными системами ставки не принимаются, поскольку решительный злоумышленник с аппаратным доступом может удалить всю память сразу после того, как ваше приложение считает данные из цепочки для ключей или после того, как вы расшифруете любую базу данных.
Ответ №1:
Когда вы говорите «ключ», вы имеете в виду ключ в строковом формате? Если да, то да, поместите его в связку ключей. SHFFKeychainUtils предоставляют простой интерфейс для хранения строковых значений в связке ключей iOS.
Лучший способ сделать это — запросить ключ у пользователя при запуске приложения, а затем использовать эту NSString для шифрования базы данных (или сохранить его в связке ключей для беспроблемного запуска).