ateiob Каждый раз, когда вы сохраняете мастер-пароль в приложении, на самом деле посторонним пользователям становится немного труднее получить доступ к зашифрованным данным.
Во-первых, мы можем согласиться с тем, что шифрование данных с помощью «мастер-ключа», встроенного в приложение, и сохранение этих данных на телефоне открыто для обратной обработки «мастер-ключа» и дешифрования данных.
Во-вторых, я думаю, мы можем согласиться с тем, что шифрование данных с использованием секретного пароля и последующее удаление секретного пароля должно быть достаточно безопасным с использованием надежного шифрования, 256-битных ключей и надежных паролей. Оба метода применяются для программирования на мобильных устройствах. На самом деле, iOS поддерживает ОБА потребности из коробки.
[keychainData setObject:@"password" forKey:(id)kSecValueData];
Возможно, пример из реального мира может помочь.
Скажем, если в нехватке памяти необходимо сохранить и защитить временное поле данных, его можно зашифровать с помощью мастер-пароля и очистить, когда пользователь очистит поле временных данных. Поле временных данных никогда не сохраняется в виде простого текста.
Таким образом, в приложение встроено два пароля: главный пароль для временного краткосрочного шифрования и секретный пароль, который обычно должен вводить пользователь для хранения долгосрочных зашифрованных данных.
Наконец, если вы шифруете файлы, рассмотрите возможность добавления другого уровня косвенности. Таким образом, текущий секретный пароль используется для шифрования случайного ключа, который используется для шифрования всех файлов пользователя. Это позволяет пользователю изменять секретный пароль без необходимости расшифровывать, шифровать все зашифрованные файлы.