WebAuthn / FIDO2:Apple匿名認証の確認

これは事前の投稿であり、FIDO2認証について事前に理解しておく必要があることに注意してください。 (詳細については、こちらをご覧ください。)

リンゴはPacked…TPM…

https:// commons.wikimedia.org/wiki/File:Apple\_and\_Orange\_-\_they\_do\_not\_compare.jpg

証明が進むにつれて、それはすべてほぼまったく同じですパックされたアテステーション、アテステーション証明書にナンスが含まれています… TPMのように…さらに面倒なことはせずに、確認しましょう。

attStmt で、「x5c」が含まれています。これは完全な認証です。 FULLは基本的に、メーカーにチェーンする証明書であることを意味します。これは、公開鍵がバッチ証明書に含まれているバッチ秘密鍵によって署名されています。この秘密鍵は、アップルの認証ルート証明書にチェーンされています。通常、証明書にはルートを見つけるのに役立つ authorityInfoAccess 拡張子が付いていますが、Appleはそうしないことにしました。それでも、すばやくグーグルすると、必要なルート証明書が得られました

https://www.apple.com/certificateauthority/Apple\_WebAuthn\_Root\_CA.pem

認証の確認

  1. authData を clientDataHash を作成して nonceBase
  2. nonceBase をSHA-256でハッシュして、 expectedNonce
  3. 「x5c」から attCert をデコードして
  4. attCert がバージョン3(ASN1 INT 2)であることを確認します
  5. CAの attCert 基本制約がFALSEに設定されていることを確認します
  6. 確認します証明書に

AppleAnonymousAttestation OID 1.2.840.113635.100.8.2 拡張機能

  • AppleAnonymousAttestation拡張機能をデコードし、 nonce expectedNonce
  • Appleはまだ拡張機能のスキーマを公開していません(2021年1月現在。はい、人類はどういうわけか生き残った)、代わりにここに私がそれを公開しています:

    公式のアップルスキーマではありません
    デコードされた拡張機能

    8。 authData をデコードし、公開鍵を抽出して、 attCert

    9。 「AppleWebAuthnルートCA」証明書を x5c に追加し、証明書パスを検証します

    10。飲酒と食事に戻ります。 1月1日です。新年はまだ終わっていません。

    注:

    • 2021年5月1日の時点で、Appleは0x00 {16}の間違ったAAGUIDを返します。これは最新のパッチで修正されましたが、iOSビルドには反映されていません。新しいAAGUIDはf24a8e70d0d3f82c293732523cc4de5aです

    スニペット

    新しいリポジトリ https://github.comですべてのスニペットを検索します/ WebAuthnWorks / webauthn-snippets

    https://github.com/WebAuthnWorks /webauthn-snippets/blob/main/code-samples/verify.apple.attestation.js

    ライセンス

    この記事は Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International(CC BY-NC-ND 4.0)の下でライセンスされています。したがって、自由に読んだり、共有したりできます。この記事の商用利用に興味がある場合、または別の言語に翻訳したい場合は、yuriy(at)webauthn(dot)works

    に連絡してください。 コードサンプルは MITライセンス