WebAuthn / FIDO2: verifica dellattestazione anonima Apple

Si prega di notare che questo è un post anticipato e richiede una comprensione preliminare delle attestazioni FIDO2. (Puoi leggere di più su di loro qui.)

La mela non cade lontano dal Packed… TPM…

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

Come dice il proverbio, è tutto quasi esattamente uguale a Attestato compresso, con il nonce nel certificato di attestazione … come TPM … Senza ulteriori indugi, verifichiamo, va bene?

Se controlli attStmt e contiene “x5c” è unattestazione COMPLETA. FULL significa fondamentalmente che è unattestazione che concatena al produttore. È firmato dalla chiave privata batch, la cui chiave pubblica si trova in un certificato batch, che è concatenata al certificato radice di attestazione Apple. In genere i certificati hanno lestensione authorityInfoAccess , che aiuta a localizzare la radice, ma Apple ha deciso di non farlo. Tuttavia, una rapida ricerca su Google ci ha fornito il certificato radice necessario

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

Verifica dellattestazione

  1. Concatena authData con clientDataHash per creare nonceBase
  2. Hash nonceBase con SHA-256 per creare non previsto
  3. Estrai il (primo) certificato da “x5c” come attCert e decodificalo
  4. Verifica che attCert sia della versione 3 (ASN1 INT 2)
  5. Verifica che attCert vincoli di base per CA sia impostato su FALSE
  6. Verifica che il certificato contiene

AppleAnonymousAttestation OID 1.2.840.113635.100.8.2 extension

  • Decodifica lestensione AppleAnonymousAttestation e verifica che nonce contenga expectedNonce
  • Apple non ha ancora pubblicato lo schema per lestensione (a partire da JAN 2021. Sì, il genere umano è sopravvissuto in qualche modo), quindi eccolo qui a pubblicarlo:

    NON UNO SCHEMA UFFICIALE DI APPLE
    Estensione decodificata

    8. Decodifica authData , estrai la chiave pubblica e verifica che corrisponda alla chiave pubblica in attCert .

    9. Aggiungi il certificato “Apple WebAuthn Root CA” al x5c e convalida il percorso del certificato

    10. Torna a bere e mangiare. È il primo gennaio. Il nuovo anno non è ancora finito.

    Note:

    • A partire dal 05/01/2021 Apple restituisce un AAGUID errato di 0x00 {16}. Questo problema è stato risolto nellultima patch, ma non si è propagato alle build iOS. Il nuovo AAGUID è f24a8e70d0d3f82c293732523cc4de5a

    Snippet

    Trova tutti gli snippet nel nostro nuovo e fresco repository https://github.com / WebAuthnWorks / webauthn-snippets

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

    Licenza

    Questo articolo è concesso in licenza con Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) . Quindi sei libero di leggere, condividere, ecc. Se sei interessato alluso commerciale di questo articolo o desideri tradurlo in una lingua diversa, contatta yuriy (at) webauthn (dot) works

    Gli esempi di codice sono concessi in licenza con Licenza MIT .