Шифрование CoreData с помощью CloudKit - PullRequest
0 голосов
/ 02 ноября 2019

Каков наилучший подход для шифрования значений в CoreData?

Почему мне нужно шифровать данные, когда Apple уже шифрует контейнер приложений? Я хочу синхронизировать данные с iCloud. Данные в iCloud также зашифрованы, но не зашифрованы. [iCloud Security] .
Apple шифрует данные собственным ключом. CoreData внутренне использует SQLite, который хранит базу данных в виде открытого текста. Если эти данные синхронизируются с iCloud, они все еще уязвимы перед тем, как будут зашифрованы собственным ключом Apple. Как можно сохранить данные в iCloud также зашифрованными, не беспокоясь о собственном шифровании Apple?

Один из подходов, которые я пробовал, - использование ValueTransformers:
Я пытался использовать ValueTransformers для шифрования таких полей, какDateOfBirth и пароли пользователей. Теперь, поскольку информация записывается в двоичном виде в базу данных SQLite, это решает одну из проблем. но проблема с ValueTransformer заключается в том, что атрибут dataType становится Transformable, и я не могу использовать NSPredicate в этом поле. Например, я не могу искать пользователей, родившихся в определенном году. Похоже, что NSPredicate не работает с преобразуемыми данными, поскольку они хранятся в виде двоичных данных в CoreData SQL.

Можно ли зашифровать данные перед синхронизацией с iCloud и расшифровать их при получении обратно отICloud? В этом году на WWDC 2019 Apple объявила о поддержке iCloud с CloudKit. Есть ли способ сделать шифрование перед синхронизацией данных с CloudKit? Любые другие ресурсы будут полезны.

...