Passwortüberwachung
Die Passwortüberwachung (Password Monitoring) ist eine Funktion, die Passwörter, die im Schlüsselbund zum automatischen Ausfüllen von Passwörtern hinterlegt sind, mit einer kuratierten und fortlaufend aktualisierten Liste solcher Passwörter abgleicht, die infolge von Datenlecks bei anderen Online-Organisationen kompromittiert wurden. Wenn die Funktion aktiviert ist, gleicht das Überwachungsprotokoll fortlaufend die Passwörter im Schlüsselbund für das automatische Ausfüllen von Passwörtern mit der kuratierten Liste ab.
So funktioniert die Überwachung
Das Gerät des Benutzers führt fortlaufend Round-Robin-Prüfungen für die Passwörter eines Benutzers durch, wobei das Abfrageintervall unabhängig von den Passwörtern des Benutzers oder der Verwendungsmuster eines Passwortmanagers ist. Auf diese Weise wird sichergestellt, dass jeder einzelne Prüfstatus stets mit dem neuesten Stand der aktuellen kuratierten Liste kompromittierter Passwörter korrespondiert. Um Informations- und Datenlecks im Zusammenhang damit vorzubeugen, wie viele eindeutige Passwörter ein Benutzer hat, werden die Anfragen zu Stapeln zusammengefasst und parallel ausgeführt. Bei jeder Prüfung wird eine fest vorgegebene Anzahl von Passwörtern parallel überprüft. Liegt die Anzahl der Passwörter eines Benutzers unter dieser vorgegebenen Anzahl, werden zum Ausgleich der Differenz zufällige Passwörter generiert und zu den Anfragen hinzugefügt.
Wie Passwörter abgeglichen werden
Das Abgleichen der Passwörter erfolgt in einem zweiteiligen Prozess. Die am häufigsten kompromittierten Passwörter befinden sich in einer lokalen Liste auf dem Gerät des Benutzers. Wenn das Passwort des Benutzers in dieser Liste auftaucht, wird der Benutzer sofort und ohne weitere Interaktion von außen benachrichtigt. Dadurch wird sichergestellt, dass keine Informationen über Passwörter des Benutzers nach außen dringen, die infolge einer Passwortlücke ein besonders hohes Risiko darstellen.
Wenn das Passwort nicht in der Liste der sehr häufig kompromittierten Passwörter enthalten ist, wird es mit einer Liste seltener kompromittierter Passwörter abgeglichen.
Vergleich von Benutzerpasswörtern mit einer kuratierten Liste
Für die Prüfung, ob ein nicht in der lokalen Liste enthaltenes Passwort zu einer Übereinstimmung mit der externen Quelle führt, ist die Interaktion mit Apple-Servern erforderlich. Damit sichergestellt ist, dass legitime Passwörter des Benutzers nicht an Apple gesendet werden, wird ein kryptografisches privates Set als Schnittmenge bereitgestellt, sodass die Passwörter des Benutzers mit einer großen Anzahl kompromittierter Passwörter abgeglichen werden. Auf diese Weise wird sichergestellt, dass über Passwörter, bei denen das Risiko, kompromittiert zu werden, gering ist, nur wenige Informationen mit Apple geteilt werden. Genau genommen sind bei Benutzerpasswörtern diese Informationen auf das 15-Bit-Präfix eines kryptografischen Hash-Werts beschränkt. Durch das Heraushalten der am häufigsten kompromittierten Passwörter aus diesem interaktiven Prozess und durch die Verwendung der lokalen Liste häufig kompromittierter Passwörter verringert sich das Delta bei der relativen Häufigkeit der Passwörter in den Buckets der Webdienste. Dies erschwert es, die Passwörter von Benutzern aus diesen Listen abzuleiten.
Das zugrunde liegende Protokoll partitioniert die Liste der kuratierten Passwörter, die zum Zeitpunkt der Redaktion dieses Dokuments ca. 1,5 Milliarden Passwörter umfasst, in 215 einzelne Buckets. Das Bucket, zu dem ein Passwort zugewiesen wird, wird anhand der ersten 15 Bit des SHA-256-Hash-Werts des Passworts ermittelt. Außerdem wird jedes kompromittierte Passwort („pw“) einem Punkt auf der elliptischen NIST P256-Kurve zugeordnet: Ppw = ⍺·HSWU(pw) – Dabei ist „⍺“ ein geheimer zufälliger Schlüssel, der nur Apple bekannt ist, und HSWU eine Orakelfunktion (Zufallsgenerator), die Passwörter nach der Shallue-van de Woestijne-Ulas-Methode Kurvenpunkten zuordnet. Diese Transformation ist darauf ausgelegt, mit rechnerischen Mitteln die Werte von Passwörtern zu verbergen und die Offenlegung neu kompromittierter Passwörter im Zuge der Passwortüberwachung zu verhindern.
Zur Berechnung der Schnittmenge für das private Set ermittelt das Gerät des Benutzers den Bucket, zu dem das Benutzerpasswort gehört; hierfür wird „λ“, das 15-Bit-Präfix von SHA-256(upw) verwendet, wobei „upw“ für eines der Passwörter des Benutzers steht. Das Gerät generiert eine eigene Zufallskonstante „β“ und sendet den Punkt „Pc = β·HSWU(upw)“ zusammen mit einer Anforderung für den Bucket, der „λ“ entspricht, an den Server. „β“ bewirkt, dass Apple die Informationen über das Benutzerpasswort vorenthalten werden und dass die Informationen, die Apple gegenüber offengelegt werden, auf „λ“ beschränkt bleiben. Der Server übernimmt den vom Gerät des Benutzers gesendeten Punkt, berechnet „⍺Pc = ⍺β·HSWU(upw)“ und meldet das Ergebnis zusammen mit dem zugehörigen Bucket von Punkten – „Bλ = { Ppw | SHA256(pw) beginnt mit Prefix λ}“ – zurück an das Gerät.
Anhand dieser zurückgemeldeten Informationen kann das Gerät „B’λ = {β·Ppw | Ppw ∈ Bλ}“ berechnen und im Falle, dass „⍺Pc ∈ B'λ“ zutrifft, bestätigen, dass das Passwort des Benutzers Gegenstand eines Datenlecks war und kompromittiert wurde.