Я пытаюсь скрыть 2 секрета, которые я использую в одном из моих приложений.
Как я понимаю, цепочка для ключей - хорошее место, но я не могу добавить их, прежде чем отправить приложение.
Я думал об этом сценарии -
- Предварительно засев секреты в моем приложении CoreData Database, распространяя их в других сущностях, чтобы скрыть их. (У меня уже есть начальная БД в этом приложении).
- Когда приложение запускается в первый раз, генерируйте и перемещайте ключи в связку ключей.
- Удалить записи из CoreData.
Это безопасно или хакер может увидеть это и получить эти ключи?
* ТРЕТЬЕ РЕДАКТИРОВАНИЕ ** Извините, что не объяснил этот сценарий с самого начала - Приложение имеет много уровней, каждый уровень содержит файлы (аудио, видео, изображения). Пользователь может приобрести уровень (IAP), и после завершения покупки мне нужно загрузить файлы на свое устройство.
Для iOS6 файлы хранятся с новой функцией Apple "Hosted Content". Для iOS5 файлы хранятся в Amazon S3.
Таким образом, во всем этом процессе у меня есть 2 ключа: 1. Ключ IAP, для проверки покупки в Apple IAP. 2. Клавиши S3, для получения файлов от S3 для пользователей iOS5:
NSString *secretAccessKey = @"xxxxxxxxx";
NSString *accessKey = @"xxxxxxxxx";
Нужно ли вообще защищать эти ключи? Я боюсь, что люди смогут получить файлы с S3 без покупки уровней. Или что хакеры смогут создать взломанную версию со всеми предварительно загруженными уровнями внутри.