WebAuthn / FIDO2: Überprüfen der anonymen Apple-Bescheinigung

Bitte beachten Sie, dass dies ein Vorabbeitrag ist und ein vorheriges Verständnis der FIDO2-Bescheinigungen erfordert. (Weitere Informationen hierzu finden Sie hier.)

Der Apfel fällt nicht weit vom gepackten… TPM…

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

Wie das Sprichwort sagt, ist alles fast genau das gleiche wie Gepackte Bescheinigung mit dem Nonce im Bescheinigungszertifikat… wie TPM… Lassen Sie es uns ohne weiteres überprüfen.

Wenn Sie attStmt und es enthält „x5c“, es ist eine vollständige Bescheinigung. VOLL bedeutet im Grunde, dass es sich um eine Bescheinigung handelt, die an den Hersteller gekettet ist. Es wird mit einem privaten Batch-Schlüssel signiert, dessen öffentlicher Schlüssel sich in einem Batch-Zertifikat befindet, das mit dem Stammzertifikat der Apple-Bescheinigung verkettet ist. Im Allgemeinen haben Zertifikate die Erweiterung AuthorityInfoAccess , mit deren Hilfe das Stammverzeichnis gefunden werden kann. Apple hat jedoch beschlossen, dies nicht zu tun. Durch schnelles Googeln erhielten wir jedoch das erforderliche Stammzertifikat

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

Überprüfung der Bescheinigung

  1. Verketten Sie authData mit clientDataHash zum Erstellen von nonceBase
  2. Hash nonceBase mit SHA-256 zum Erstellen von expectedNonce
  3. Extrahieren Sie das Blattzertifikat (erstes Zertifikat) aus „x5c“ als attCert und dekodiere es
  4. Überprüfen Sie, ob attCert Version 3 (ASN1 INT 2)
  5. Überprüfen Sie, ob attCert grundlegende Einschränkungen für CA auf FALSE
  6. gesetzt sind. Überprüfen Sie dies Zertifikat enthält

AppleAnonymousAttestation OID 1.2.840.113635.100.8.2 -Erweiterung

  • Dekodieren Sie die AppleAnonymousAttestation-Erweiterung und überprüfen Sie, ob nonce expectedNonce
  • Apple hat das Schema für die Erweiterung noch nicht veröffentlicht (Stand JAN 2021. Ja, Die menschliche Art hat irgendwie überlebt. Deshalb veröffentliche ich sie hier:

    KEIN OFFIZIELLES APFELSCHEMA
    Dekodierte Erweiterung

    8. Dekodieren Sie authData , extrahieren Sie den öffentlichen Schlüssel und überprüfen Sie, ob der öffentliche Schlüssel im attCert .

    9. Hängen Sie das Zertifikat „Apple WebAuthn Root CA“ an das x5c an und überprüfen Sie den Zertifikatpfad

    10. Geh zurück zum Trinken und Essen. Es ist der erste Januar. Das neue Jahr ist noch nicht vorbei.

    Hinweise:

    • Ab dem 01.05.2021 gibt Apple eine falsche AAGUID von 0x00 {16} zurück. Dies wurde im neuesten Patch behoben, aber nicht auf die iOS-Builds übertragen. Neue AAGUID ist f24a8e70d0d3f82c293732523cc4de5a

    Snippets

    Finden Sie alle Snippets in unserem neuen Repository https://github.com / WebAuthnWorks / webauthn-snippets

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

    Lizenz

    Dieser Artikel ist lizenziert unter Creative Commons Namensnennung-Keine kommerzielle Nutzung-Keine Bearbeitung 4.0 International (CC BY-NC-ND 4.0) . Sie können diesen Artikel also frei lesen, teilen usw. Wenn Sie an einer kommerziellen Nutzung dieses Artikels interessiert sind oder ihn in eine andere Sprache übersetzen möchten, wenden Sie sich bitte an yuriy (at) webauthn (dot) works

    Die Codebeispiele sind unter MIT-Lizenz .