WebAuthn / FIDO2: Bekreftelse av Apple anonym attest

Vær oppmerksom på at dette er et forhåndsinnlegg, og krever forhåndsforståelse av FIDO2-attestasjonene. (Du kan lese mer om dem her.)

Eplet faller ikke langt fra Packed… TPM…

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

Som ordtaket sier, er det nesten akkurat det samme som Pakket attest, med nonce i attestasjonssertifikatet … som TPM … Uten videre, la oss verifisere det, skal vi?

Hvis du merker attStmt og den inneholder “x5c”, det er en FULL attest. FULLT betyr i utgangspunktet at det er en attest som lenker til produsenten. Den er signert av batch-privatnøkkel, hvem som er den offentlige nøkkelen som er i et batch-sertifikat, som er lenket til root-attest for apple-attest. Generelt har sertifikater utvidelsen authorInfoAccess , som hjelper med å finne roten, men Apple bestemte seg for å ikke gjøre det. Likevel ga rask googling oss det nødvendige rotsertifikatet

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

Bekreftet attest

  1. Sammenkobling authData med clientDataHash for å opprette nonceBase
  2. Hash nonceBase med SHA-256 for å opprette forventetNonce
  3. Trekk ut blad (første) cert fra “x5c” som attCert og dekoder det
  4. Sjekk at attCert er av versjon 3 (ASN1 INT 2)
  5. Kontroller at attCert grunnleggende begrensninger for CA er satt til FALSE
  6. Kontroller at sertifikatet inneholder

AppleAnonymousAttestation OID 1.2.840.113635.100.8.2 utvidelse

  • Dekoder AppleAnonymousAttestation-utvidelse, og kontroller at nonce inneholder forventetNonce
  • Apple har ennå ikke publisert skjema for utvidelsen (per JAN 2021. Ja, menneskelig type overlevde på en eller annen måte), så i stedet publiserer jeg det her:

    NOT A OFFICIAL APPLE SCHEMA
    Dekodet utvidelse

    8. Dekoder authData , trekk ut offentlig nøkkel, og kontroller at det samsvarer med offentlig nøkkel i attCert .

    9. Legg til “Apple WebAuthn Root CA” -sertifikat til x5c og valider sertifikatstien

    10. Gå tilbake til å drikke og spise. Det er første januar. Nyttår er ikke over ennå.

    Merknader:

    • Per 05/01/2021 returnerer Apple feil AAGUID på 0x00 {16}. Dette ble løst i den siste oppdateringen, men den har ikke spredt seg til iOS-buildene. Nye AAGUID er f24a8e70d0d3f82c293732523cc4de5a

    Utdrag

    Finn alle utdrag i vårt ferske nye arkiv https://github.com / WebAuthnWorks / webauthn-snippets

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

    Lisens

    Denne artikkelen er lisensiert under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) . Så du er fri til å lese, dele osv. Hvis du er interessert i kommersiell bruk av denne artikkelen, eller ønsker å oversette den til et annet språk, kan du kontakte yuriy (at) webauthn (dot) works

    Kodeprøvene er lisensiert under MIT-lisens .