2017-09-12 7 views
11

タッチIDがkSecAccessControlTouchIDAnyのアクセスがフレームワークKeychainAccessでどのように機能しているのか分かりましたが、iOS 11のFace IDでこれを行う方法を理解できませんでした。それを解決するためのドキュメントがまだ見つかりません(多分、ドキュメントはまだ出ていませんか?)。フェイスIDキーチェーンからの値の書き込みと読み取り

私はstackoverflowに尋ねています:キーチェーンにFace IDで保護された値を書き込む方法とそれらを元に戻す方法?

最小限の例が良いでしょう。

+1

Appleは[非キーチェーンの例](https://developer.apple.com/documentation/localauthentication/)を提供していますが、キーチェーンは同じであると思います。 FaceIDはiPhone Xデバイス、他のデバイスのTouchIdで自動的に使用されます。特定のコードは必要ありません。 – Paulw11

+0

@ Paulw11私はその例を見てきました。ケースが「TouchIDAny」と呼ばれているので、それが箱から出るかどうか本当に不思議です。これはOSによって処理される '1 << 1'値だけかもしれません。 – BennX

+1

私はそれが想像します。 APIはFace IDが存在する前に作成されたため、名前でFace IDを参照できませんでした。私は最終的に "BiometricId"を参照するアップデートがあると思うが、FaceIDはApplePayのTouchIDを置き換え、デバイスのロックを解除するので、他のアプリケーションのTouchIDをシームレスに置き換えると仮定するのが理にかなっている。 – Paulw11

答えて

5

これは今(ベータ版以降)のXcode 9.1で動作するように表示されます。

ここでは例とテスト容易:この例では、顔IDのために更新されていないにもかかわらず

https://developer.apple.com/library/content/samplecode/KeychainTouchID/Introduction/Intro.html

、フェイスIDで保護されたキーチェーン項目を格納するために動作するように表示されます。

説明したように、これはXcode 9.0 GMでは機能しません。

+1

info.plistにNSFaceIDUsageDescriptionキーを追加すると、サンプルコードがFace IDで正常に機能します。それから、「アプリがFace IDのために更新されていません」という警告アラートは表示されません。 –

3

Appleがローカル認証APIにFace IDサポートを追加したが、まだKeychain ACLを追加していないように見える。

ローカル認証を使用してFace IDプロンプトを表示し、成功した場合はキーチェーンに直接アクセスします。私たちがTouch ID用に持っている適切なKeyChain ACL APIと同じくらい安全ではありませんが、これまでに私が考え出した最良の解決策です。

​​ https://developer.apple.com/documentation/localauthentication/labiometrytype?changes=latest_minor

+3

私は、より高いセキュリティレベルを提供し、実際に保護される必要のあるユーザー固有のデータの安全性の低いデータ記憶域を持っているという感覚を顧客に与えるという考えが嫌いです。 Face IDの全体のポイントは、セキュリティのレベルを上げることであり、この「回避策」はあまり安全性が低くなります。 – BennX

+2

Appleはセキュリティ文書をリリースしました。 "Keychainのアイテムは、フェイスIDで保護された でもかまいませんが、セキュアエンクレーブでは顔の一致またはデバイスのパスコードによってのみ解放されます。" https://images.apple.com/business/docs/FaceID_Security_Guide.pdf – m0ng0

関連する問題