WebAuthn / FIDO2: Verifiering av Apple anonym attest

Observera att detta är ett förhandsmeddelande och kräver en förståelse av FIDO2-intygen. (Du kan läsa mer om dem här.)

Äpplet faller inte långt från Packed… TPM…

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

Som ordspråket säger är allt nästan exakt samma som Packad attestation, med nonce i intyget certifikat … som TPM … Utan vidare, låt oss verifiera det, ska vi?

Om du markerar attStmt och den innehåller “x5c” det är ett HELT intyg. FULLT betyder i grunden att det är ett intyg som kopplas till tillverkaren. Den undertecknas av en privat batchnyckel, vars offentliga nyckel finns i ett batchcertifikat, som är kedjad till apple-intygs rotcertifikat. Generellt har certifikat autoritetInfoAccess förlängning, vilket hjälper till att hitta roten, men Apple bestämde sig för att inte göra det. Ändå gav snabb googling oss det nödvändiga rotcertifikatet

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

Verifiera intyg

  1. Sammankoppla authData med clientDataHash för att skapa nonceBase
  2. Hash nonceBase med SHA-256 för att skapa förväntatNon
  3. Extrahera blad (första) cert från “x5c” som attCert och avkoda det
  4. Kontrollera att attCert är av version 3 (ASN1 INT 2)
  5. Kontrollera att attCert grundläggande begränsningar för CA är inställda på FALSE
  6. Kontrollera att certifikatet innehåller

AppleAnonymousAttestation OID 1.2.840.113635.100.8.2 -tillägg

  • Avkoda AppleAnonymousAttestation-tillägg och kontrollera att nonce innehåller förväntadNonce
  • Apple har ännu inte publicerat ett schema för tillägget (från och med JAN 2021. Ja, mänsklig sort överlevde på något sätt), så här publicerar jag det istället:

    INTE EN OFFICIELL APPELSKEMA
    Avkodat tillägg

    8. Avkoda authData , extrahera offentlig nyckel och kontrollera att det är som matchar offentlig nyckel i attCert .

    9. Lägg till “Apple WebAuthn Root CA” -certifikat till x5c och validera certifikatsökvägen

    10. Gå tillbaka till att dricka och äta. Det är den första januari. Nytt år är inte över ännu.

    Anmärkningar:

    • Från och med 05/01/2021 returnerar Apple fel AAGUID på 0x00 {16}. Detta fixades i den senaste korrigeringen, men den har inte spridits till iOS-byggnaderna. Nytt AAGUID är f24a8e70d0d3f82c293732523cc4de5a

    Utdrag

    Hitta alla utdrag i vårt nya nya arkiv https://github.com / WebAuthnWorks / webauthn-snippets

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

    Licens

    Denna artikel är licensierad under Creative Commons Erkännande-Ickekommersiell-NoDerivativ 4.0 International (CC BY-NC-ND 4.0) . Så du är fri att läsa, dela osv. Om du är intresserad av kommersiell användning av den här artikeln eller vill översätta den till ett annat språk, vänligen kontakta yuriy (at) webauthn (dot) works

    Kodproverna licensieras under MIT-licens .