iPhone и обработка безопасной доставки ключей

#iphone #security #ios4

#iPhone #Безопасность #ios4

Вопрос:

Мы пишем приложение для iPhone iOS4, которое содержит базу данных SQLite, которая зашифрована и для чтения которой требуется ключ. База данных содержит данные, предоставленные разработчику, она не содержит никаких пользовательских данных.

Проблема, с которой мы сталкиваемся, заключается в том, как согласовать доставку ключа и / или хранить ли ключ на устройстве, когда он прибудет, / где хранить ключ. Это было бы сделано без какого-либо взаимодействия с пользователем.

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

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

Заранее сердечно благодарю вас за ваши соображения.

Комментарии:

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

Ответ №1:

Когда вы говорите «ключ», вы имеете в виду ключ в строковом формате? Если да, то да, поместите его в связку ключей. SHFFKeychainUtils предоставляют простой интерфейс для хранения строковых значений в связке ключей iOS.

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