私の知る限りNSURLCredentialStorage、より便利な API を備えたキーチェーン サービスの単なるラッパーです。だからこそ使いたい。しかし、キーチェーンが提供するデータ保護機能も活用したいと考えてkSecAttrAccessibleWhenUnlockedThisDeviceOnlyいます。
NSURLCredentialStorage を使用して資格情報を保存するときに、この属性を設定する方法はありますか?
答えはイエスです。作成したキーホルダーアイテムを調べてみNSURLCredentialStorageました。これはクラスkSecClassInternetPasswordであり、アクセス キーkSecAttrAccessibleが「ak」に設定されています。これはkSecAttrAccessibleWhenUnlocked. したがって、デバイスがロックされている間、パスワードは復号化されません。
唯一の欠点は、それを変更してバックアップ データのセキュリティ レベルを高めるNSURLCredentialStorage方法がないことです。kSecAttrAccessibleWhenUnlockedThisDeviceOnly下位レベルのキーチェーン API (つまりSecItemUpdate) を使用して、キーチェーン アイテムでその属性を手動でのみ変更できます。