1) Требуется подключение к Интернету
1.1) Push-уведомления. Отличным способом безопасного обмена данными может быть использование (тихих) push-сервисов от Apple, которые используют apns и отправляют данные через https - подробнее 3.1
1.2) Более или менее аналогичный подход также используется при распространении новых пользовательских сертификатов на уже развернутые приложения, если переустановка приложения невозможна, И приложение все равно требует рабочего подключения к Интернету.
Оборотная сторона: требуется рабочее сетевое соединение, и в основном информация поступает в приложение, когда оно уже выполняется => кажется, не подходит для вашего случая. (см. шаг 4)
2) Статические данные (поскольку без сетевого подключения / коммуникационного партнера обмен не будет)
Шифрование данных с помощью закрытого ключа, предоставляемого в самом пакете. Будь то строка или хеш, который можно реконструировать с помощью функций, которые вы внедрили в свое приложение. Начиная с iOS9, довольно сложно декомпилировать приложения iOS, и в основном вы будете в основном смотреть в предоставленные файлы заголовков. Поэтому, если у вас была такая функция, строка, хеш-значение или что-то еще, убедитесь, что вы поместили ее в свой .m-файл!
Но опять же: если информация не зависит от устройства или пользователя, а просто секрет в вашей собственной микросреде, действительный на всех устройствах, вам придется предоставить зашифрованные данные И метод дешифрования в одном пакете, если нет процесса обновления. / обмен информацией или что-то еще, о чем вы можете подумать.
Подходит для шифрования: iOS System.Security https://developer.apple.com/reference/security или просто openssl
Разница между описанным вами подходом к связке ключей заключается в следующем: у вас есть значение, которое БУДЕТ зашифровано и надежно сохранено. (2) описывает подход к зашифрованному и хранимому (в связке) полубезопасному значению, которое БУДЕТ расшифровываться.
3) Обмен информацией
Вы описываете важные данные, хэшированные другим экземпляром. Здорово! - Обязательно убедитесь, что экземпляр, с которым вы разговариваете, действительно является тем экземпляром, который вы ожидаете (предотвращение перехвата сети с закреплением сертификата ssl и т. Д., Но даже здесь у вас может быть злоумышленник (люди-посередине)). И у вас (вероятно) будет сертификат, предоставляемый в вашем пакете приложений, чтобы гарантировать подлинность коммуникационного сервера - вот и все, данные, которые должны обеспечивать безопасный процесс между определенными экземплярами вашей микросреды. Тем не менее, эти данные предоставляются в пакете вашего приложения.
3.1 Расширенный безопасный обмен информацией - Silent Push Используйте серверы Apple для обмена своими секретами с этой целью. Если вам просто нужно обмениваться небольшими порциями данных. Я бы рекомендовал использовать тихие push-уведомления для пользователя, они работают даже без явного разрешения пользователя. Огромное преимущество: в случае изменения ваших секретов или ключей вы можете как можно скорее сообщить пользователям об изменении. Скорее всего, им потребуется изменение только тогда, когда они получат новые данные, которые в большинстве случаев должны надежно работать. Исключение: обмен данными в локальных сетях или через bluetooth, в этом случае я бы рекомендовал предоставить пользователю уведомление о необходимости обновить локальный ключ дешифрования. Или обменяйте ключ в этом же формате. Еще раз: я утекаю некоторую подробную информацию об архитектуре вашей среды. Оборотная сторона: вы не знаете, использовал ли пользователь ваше приложение в первый раз, пока пользователь не «скажет» вам об этом. https://developer.apple.com/library/content/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/APNSOverview.html#//apple_ref/doc/uid/TP40008194-CH8-SW1
3.1 Расширенный безопасный обмен информацией - покупка в приложении Используйте бесплатную покупку в приложении, чтобы пользователь мог получить данные на свой телефон. Хороший момент: вы можете легко предоставлять большие фрагменты данных, так как это должен быть активный запрос пользователя, пользователь ожидает определенное время обработки и также должен знать, что требуется рабочее подключение к Интернету. Обратная сторона: пользователю придется выбрать это специально. Раньше приложение не работало должным образом. https://developer.apple.com/library/content/documentation/NetworkingInternet/Conceptual/StoreKitGuide/Introduction.html#//apple_ref/doc/uid/TP40008267
Таким образом, он лишь незначительно отличается от подхода (2) по своей основной идее.
Вкратце: можете ли вы предоставить дополнительную информацию, какие данные вам нужно зашифровать / вы хотите безопасно хранить и будет ли у вас сетевой обмен или нет?
Здесь нужна дополнительная информация :-)
Я хотел бы еще раз подчеркнуть, что приложение на iOS уже не так просто расшифровать, даже декомпиляция не даст всего, как вы ожидаете. Например, инструменты дешифрования, такие как dumpdecrypt, работали должным образом только до iOS 8.4.
person
Lepidopteron
schedule
30.03.2017