WebAuthn / FIDO2: Ověření Apple Anonymous Attestation

Vezměte prosím na vědomí, že se jedná o příspěvek předem a vyžaduje předchozí znalost atestací FIDO2. (Více o nich si můžete přečíst zde.)

Jablko nespadá daleko od Packed… TPM…

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

Podle přísloví je to téměř úplně stejné jako Zabalené osvědčení s nonce v osvědčení o osvědčení… jako TPM… Bez dalších okolků to ověřme, že?

Pokud zaškrtnete attStmt a obsahuje „x5c“, jedná se o CELÉ osvědčení. FULL v podstatě znamená, že se jedná o osvědčení, které se vztahuje k výrobci. Je podepsán dávkovým soukromým klíčem, jehož veřejný klíč je v dávkovém certifikátu, který je připoután ke kořenovému certifikátu Apple Attestation. Obecně mají certifikáty příponu AuthorityInfoAccess , která pomáhá najít kořenový adresář, ale Apple se rozhodl to neudělat. Rychlé googlování nám nicméně poskytlo potřebný kořenový certifikát

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

Ověření osvědčení

  1. Zřetězit authData s clientDataHash k vytvoření nonceBase
  2. Hash nonceBase pomocí SHA-256 k vytvoření expectNonce
  3. Extrahovat list (první) cert z „x5c“ jako attCert a dekódujte jej
  4. Zkontrolujte, zda attCert je verze 3 (ASN1 INT 2)
  5. Zkontrolujte, zda attCert základní omezení pro CA je nastaveno na FALSE
  6. Zkontrolujte, že certifikát obsahuje

AppleAnonymousAttestation OID 1.2.840.113635.100.8.2 rozšíření

  • Dekódujte rozšíření AppleAnonymousAttestation a zkontrolujte, zda nonce obsahuje expectNonce
  • Apple dosud nezveřejnil schéma rozšíření (od JAN 2021. Ano, lidský druh nějak přežil), takže ho místo toho zveřejňuji:

    NENÍ OFICIÁLNÍ SCHÉMA JABLKA
    Dekódovaná přípona

    8. Dekódujte authData , extrahujte veřejný klíč a zkontrolujte, zda se shoduje s veřejným klíčem v attCert .

    9. Připojte certifikát „Apple WebAuthn Root CA“ k x5c a ověřte cestu k certifikátu

    10. Vraťte se k pití a jídlu. Je první leden. Nový rok ještě neskončil.

    Poznámky:

    • Od 1. 1.21 vrátí Apple nesprávný AAGUID 0x00 {16}. To bylo opraveno v nejnovější aktualizaci, ale to se nerozšíří do sestavení iOS. Nový AAGUID je f24a8e70d0d3f82c293732523cc4de5a

    fragmenty

    Najít všechny úryvky v našem novém novém úložišti https://github.com / WebAuthnWorks / webauthn-snippets

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

    Licence

    Tento článek podléhá licenci Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) . Můžete tedy číst, sdílet atd. Máte-li zájem o komerční využití tohoto článku nebo jej chcete přeložit do jiného jazyka, obraťte se na yuriy (at) webauthn (tečka) funguje

    Ukázky kódu jsou licencovány pod Licence MIT .