Overvågning af adgangskoder
Overvågning af adgangskoder er en funktion, der sammenligner adgangskoder gemt i brugerens nøglering til Autoudfyld adgangskode med en liste over adgangskoder, som har vist sig at være synlige ved datalækage fra forskellige organisationer på internettet. Denne liste opdateres og kurateres løbende. Hvis funktionen er slået til, vil overvågningsprotokollen løbende sammenligne brugerens adgangskoder i nøgleringen til Autoudfyld adgangskode med den kuraterede liste.
Sådan fungerer overvågning
Brugerens enhed udfører løbende “round robin”-kontrol af en brugers adgangskoder og sender forespørgsler i et interval, der er uafhængigt af brugerens adgangskoder og mønster for brug af adgangskodeadministration. Det er med til at sikre, at godkendelsestilstandene holdes ajour med den aktuelle kuraterede liste over lækkede adgangskoder. Forespørgsler samles i batches og udføres parallelt for at bidrage til at forhindre, at der lækkes oplysninger om, hvor mange unikke adgangskoder en bruger har. Et fast antal adgangskoder kontrolleres parallelt ved hver kontrol, og hvis brugeren har færre end dette antal, genereres der tilfældige adgangskoder, som føjes til forespørgslerne for at udligne forskellen.
Sammenligning af adgangskoder
Sammenligningen af adgangskoder udføres i en totrinsproces. De adgangskoder, der hyppigst er lækket, er opført på en lokal liste på brugerens enhed. Hvis brugerens adgangskode står på denne liste, får brugeren straks besked uden nogen ekstern interaktion. Det har til formål at sikre, at der ikke lækkes nogen oplysninger om de adgangskoder, brugeren har, og som er mest udsat for risiko pga. et brud på sikkerheden omkring adgangskoder.
Hvis adgangskoden ikke er opført på listen med hyppigst lækkede adgangskoder, sammenlignes den med adgangskoder, der ikke lækkes så tit.
Sammenligning af brugeres adgangskoder med en kurateret liste
Kontrol af, om en adgangskode, der ikke står på den lokale liste, har et match, indebærer en vis interaktion med Apples servere. Som led i sikringen af, at en brugers gyldige adgangskoder ikke bliver sendt til Apple, anvendes der en form for kryptografisk privat skæringspunkt mellem sæt, som sammenligner brugerens adgangskoder med et omfattende sæt af lækkede adgangskoder. Det har til formål at sikre, at der kun deles ganske få oplysninger med Apple om de adgangskoder, som er mindre udsat for brud på datasikkerheden. Til en brugers adgangskode er oplysningerne begrænset til et 15-bit præfiks til en kryptografisk hash-værdi. Fjernelsen af de hyppigst lækkede adgangskoder fra denne interaktive proces vha. den lokale liste med de hyppigst lækkede adgangskoder reducerer delta for den relative hyppighed af adgangskoder i webtjenestens buckets, så det i praksis ikke er muligt at udlede adgangskoder ved hjælp af opslag.
Den underliggende protokol opdeler listen over kuraterede adgangskoder, som i skrivende stund omfattede ca. 1,5 milliarder adgangskoder, i 215 forskellige buckets. Den bucket, en adgangskode hører til i, er baseret på de første 15 bits i adgangskodens SHA256 hash-værdi. Desuden bliver hvert lækket adgangskode – pw – knyttet til et elliptisk kurvepunkt på NIST P256-kurven: Ppw = ⍺·HSWU(pw), hvor ⍺ er en hemmelig, tilfældig nøgle, som kun kendes af Apple, og HSWU er en Oracle-tilfældighedsfunktion, som knytter adgangskoder til kurvepunkter ud fra Shallue-van de Woestijne-Ulas-metoden. Denne transformation er designet til beregningsmæssigt at skjule adgangskoders værdier, og den er med til at forhindre afsløring af nyligt lækkede adgangskoder gennem overvågning af adgangskoder.
For at beregne det private skæringspunkt mellem sæt fastslår brugerens enhed, hvilken bucket brugerens adgangskode hører til i, ved at bruge λ, som er 15-bit præfikset til SHA256(upw), hvor upw er en af brugerens adgangskoder. Enheden genererer sin egen tilfældige konstant, β, og sender punktet Pc = β·HSWU(upw) til serveren sammen med en anmodning til den bucket, der svarer til λ. Her sørger β for at skjule oplysninger om brugerens adgangskode og for, at de oplysninger fra adgangskoden, som Apple kan se, er begrænset til λ. Til sidst tager serveren det punkt, der er sendt af brugerens enhed, beregner ⍺Pc = ⍺β·HSWU(upw) og returnerer den sammen med den relevante bucket med punkter, Bλ={ Ppw | SHA256(pw) begynder med præfiks λ} til enheden.
Ved hjælp af de returnerede oplysninger kan enheden beregne B’λ={β·Ppw | Ppw∈Bλ} og fastslå, at brugerens adgangskode er lækket, hvis ⍺Pc ∈B'λ.