Шифрование - отправка - сохранение - получение файлов в iOS
У меня есть приложение iMessage, которое отправляет файлы. Данные сохраняются на серверах iCloud с помощью CloudKit. Все работает хорошо.
Теперь я хочу добавить новый уровень безопасности. Я хочу зашифровать данные перед отправкой в iCloud.
Проблема в том, что использование пар public/private key невозможно:
- В iMessage расширение не может идентифицировать пользователей.
- Нельзя открывать сеанс реального времени между участниками беседы для обмена ключами.
Ни один из приведенных ниже вариантов не является достаточно сильным, чтобы защитить данные:
- Используйте ключевое шифрование, жестко закодированное в приложении.
- Создайте случайный ключ, зашифруйте данные с ним и сохраните его с данными на серверах iCloud, чтобы его можно было загрузить с помощью файла для его расшифровки.
iCloud может быть безопасным, но данные пользователей могут быть личными/чувствительными, поэтому я хочу добавить новый уровень безопасности + это для меня интересное упражнение.
Может ли кто-нибудь помочь найти правильный метод шифрования?
Ответы
Ответ 1
Я наткнулся на это решение на GitHub. Мы кратко рассмотрели код и не совсем поняли его, если само сообщение зашифровано при отправке, но наверняка доступ к его содержимому защищен, так что только владелец устройства может получить к нему доступ. Раскрою ответ, как только я углублюсь в него, но сейчас я предлагаю вам углубиться в него, чтобы увидеть, получил ли он ту функциональность, которая вам нужна, или, по крайней мере, подходит ли указанный подход к вашим потребностям, хотя и с некоторыми ограничениями.
Ответ 2
Вы можете отправить ключ в URL пользовательского MSMessage вместе с адресом CloudKit. Ключ и адрес URL могут быть закодированы в формате base-64 как URL данных, поэтому только ваше приложение знает, как декодировать.
Таким образом, по крайней мере, кто-то должен знать, как декодировать ваш стандартный URL-адрес, прежде чем получить ключ шифрования.