Passordovervåking
Passordovervåking er en funksjon som sammenligner passord lagret i brukerens nøkkelring for autoutfylling av passord mot en kontinuerlig oppdatert og moderert liste med passord som kjent har blitt eksponert i lekkasjer fra forskjellige internettorganisasjoner. Hvis funksjonen slås på, sammenligner den overvåkende protokollen kontinuerlig passordene i brukerens nøkkelring for autoutfylling av passord mot den modererte listen.
Slik fungerer overvåking
Brukerens enhet gjennomfører kontinuerlig ringdistribusjonskontroller av brukerens passord, og sender forespørsler med et intervall som er uavhengig av brukerens passord eller passordadministratorens bruksmønstre. Dette bidrar til å sørge for at verifiseringstilstander forblir oppdatert med den gjeldende modererte listen med lekkede passord. For å bidra til å forhindre lekkasje av informasjon om hvor mange unike passord en bruker har, utføres forespørslene gruppevis og parallelt. Et fast antall passord verifiseres parallelt i hver kontroll, og hvis brukeren har færre enn dette tallet, genereres det tilfeldige passord som legges til i forespørslene for å utgjøre forskjellen.
Slik sammenlignes passord
Passord sammenlignes i en todelt prosess. Passordene som er mest vanlig å lekke, ligger i en lokal liste på brukerens enhet. Hvis brukerens passord dukker opp på listen, varsles brukeren umiddelbart uten noe ekstern interaksjon. Dette er utviklet for å sikre at det ikke lekkes noe informasjon om passordene til en bruker som er mest utsatt for passordlekkasje.
Hvis passordet ikke ligger i listen med passord som lekkes oftest, sammenlignes det med passord som lekkes sjeldnere.
Sammenligning av brukernes passord mot en moderert liste
Å verifisere om et passord som ikke er i den lokale listen, samsvarer, involverer noe interaksjon med Apple-tjenere. For å bidra til å sikre at legitime brukeres passord ikke sendes til Apple, rulles det ut en form for kryptografisk private set intersection som sammenligner brukernes passord mot et stort sett med lekkede passord. Dette er utviklet for å sørge for at lite informasjon deles med Apple for passord med mindre risiko for lekkasje. For en brukers passord er denne informasjonen begrenset til et 15-bit-prefiks av en kryptografisk hash. Hvis passordene som lekkes oftest, fjernes fra denne interaktive prosessen ved bruk av den lokale listen med passord som lekkes oftest, reduseres deltaverdien i relativ frekvens av passord i nettjenestesamlingene, noe som gjør det vanskelig å utlede brukerpassord fra disse søkene.
Den underliggende protokollen deler opp listen med modererte passord, som inneholdt omtrent 1,5 milliarder passord da dette ble skrevet, i 215 forskjellige samlinger. Samlingen der et passord hører til, er basert på første 15 bit av SHA256-hashverdien til passordet. I tillegg er hvert lekket passord, pw, forbundet med et elliptisk kurvepunkt på NIST P256-kurven: Ppw = ⍺·HSWU(pw), der ⍺ er en hemmelig, tilfeldig nøkkel som kun Apple kjenner til, og HSWU er en tilfeldig orakelfunksjon som tilordner passord til kurvepunkter basert på Shallue-van de Woestijne-Ulas-metoden. Denne transformasjonen er designet for å skjule verdiene til passord kalkulert, og den bidrar til å hindre avsløring av nylig lekkede passord via Passordovervåking.
For å beregne «private set intersection» fastslår brukerens enhet samlingen som brukerens passord hører til, ved å bruke λ, 15-bit-prefikset til SHA256(upw), der upw er ett av brukerens passord. Enheten genererer sin egen tilfeldige konstant, β, og sender punktet Pc = β·HSWU(upw) til tjeneren, sammen med en forespørsel om samlingen som tilsvarer λ. Her skjuler β informasjon om brukerens passord og begrenser for λ informasjonen som eksponeres fra passordet til Apple. Til slutt tar tjeneren punktet sendt av brukerens enhet, beregner ⍺Pc = ⍺β·HSWU(upw), og returnerer det, sammen med den relevante samlingen med punkter – Bλ = { Ppw | SHA256(pw) begynner med prefiks λ} – til enheten.
Den returnerte informasjonen tillater enheten å beregne B’λ = {β·Ppw | Ppw ∈ Bλ}, og fastslår at brukerens passord har blitt lekket hvis ⍺Pc ∈ B'λ.