Trust Tokens ist eine neue API zur Bekämpfung von Betrug und zur Unterscheidung von Bots von echten Menschen ohne passive Verfolgung.
Aktualisiert
Gesichert und geladen
Zusammenfassung
Mit vertrauenswürdigen Token kann ein Ursprung einem vertrauenswürdigen Benutzer kryptografische Token ausstellen. Die Token werden vom Browser des Benutzers gespeichert. Der Browser kann die Token in anderen Kontexten verwenden, um die Authentizität des Benutzers zu bewerten.
Mit der Trust Token-API kann das Vertrauen eines Benutzers in einen Kontext (z. B. gmail.com) an einen anderen Kontext (z. B. eine auf nytimes.com geschaltete Anzeige) übergeben werden, ohne den Benutzer zu identifizieren oder die beiden Identitäten zu verknüpfen.
Warum brauchen wir Trust Tokens?
Das Web benötigt Möglichkeiten, um Vertrauenssignale zu erstellen, die zeigen, dass ein Benutzer der ist, von dem er sagt, dass er er ist, und nicht ein Bot, der vorgibt, ein Mensch zu sein, oder ein böswilliger Dritter, der eine reale Person oder einen Dienst betrogen hat. Der Schutz vor Betrug ist besonders wichtig für Werbetreibende, Anzeigenanbieter und CDNs.
Leider nutzen viele der vorhandenen Mechanismen zur Messung und Verbreitung der Vertrauenswürdigkeit (um beispielsweise festzustellen, ob eine Interaktion mit einem Standort von einem echten Menschen stammt) Techniken, die auch für den Fingerabdruck verwendet werden können.
Schlüsselbegriff:
Fingerabdrücke Ermöglicht Websites das Identifizieren und Verfolgen einzelner Benutzer, indem sie Daten zu ihrem Gerät, Betriebssystem und Browsereinstellungen (z. B. Spracheinstellungen) abrufen.
User-Agentund verfügbare Schriftarten) oder Änderungen des Gerätestatus. Dies kann auf dem Server durch Überprüfen der Anforderungsheader oder auf dem Client mit JavaScript erfolgen.
Beim Fingerabdruck werden Mechanismen verwendet, die den Benutzern nicht bekannt sind und die sie nicht steuern können. Websites wie Panoptikum y
amiunique.org Zeigen Sie, wie Fingerabdruckdaten kombiniert werden können, um Sie als Einzelperson zu identifizieren.
Die API muss den Datenschutz gewährleisten, damit sich das Vertrauen auf Websites ausbreiten kann, ohne einzelne Benutzer zu verfolgen.
Was ist im Trust Tokens-Vorschlag enthalten?
Das Web basiert auf der Generierung von Vertrauenssignalen zur Erkennung von Betrug und Spam. Eine Möglichkeit, dies zu tun, besteht darin, die Navigation mit globalen Benutzer-IDs zwischen Websites zu verfolgen. Für eine API, die die Privatsphäre schützt, ist dies nicht akzeptabel.
Vom Vorschlag
Erklärer:
Diese API schlägt einen neuen Speicherbereich nach Herkunft für kryptografische Token im "Privacy Pass" -Stil vor, auf die in Kontexten von Drittanbietern zugegriffen werden kann. Diese Token sind nicht personalisiert und können nicht zum Verfolgen von Benutzern verwendet werden. Sie sind jedoch kryptografisch signiert, sodass sie nicht gefälscht werden können.
Wenn sich ein Ursprung in einem Kontext befindet, in dem er dem Benutzer vertraut, kann er eine Reihe von Token an den Browser ausgeben, die zu einem späteren Zeitpunkt in einem Kontext "ausgegeben" werden können, in dem der Benutzer unbekannt oder weniger vertrauenswürdig wäre. Grundsätzlich sind Token nicht voneinander zu unterscheiden, sodass Websites Benutzer nicht über sie verfolgen können.
Darüber hinaus schlagen wir einen Erweiterungsmechanismus für den Browser vor, um ausgehende Anforderungen mit Schlüsseln zu signieren, die mit einer bestimmten Tokeneinlösung verknüpft sind.
Beispiel für die Verwendung der API
Das Folgende ist eine Anpassung von
Beispielcode im API-Erklärer.
Stellen Sie sich vor, ein Benutzer besucht eine Nachrichten-Website (publisher.example
), die Werbung von einem Drittanbieter-Werbenetzwerk enthält (foo.example
). Der Benutzer hat zuvor eine Social-Media-Site verwendet, auf der Vertrauens-Token ausgegeben werden (issuer.example
).
Die folgende Sequenz zeigt, wie vertrauenswürdige Token funktionieren.
1. Der Benutzer besucht issuer.example
.
2. issuer.example
überprüft, ob der Benutzer ein Mensch ist und führt das folgende JavaScript aus:
holen('https://issuer.example/issue', {
trustToken: {
Art: 'token-request'
}
});
3. Der Browser des Benutzers speichert die zugeordneten Vertrauens-Token issuer.example
.
4. Einige Zeit später besucht der Benutzer publisher.example
.
5. publisher.example
will wissen, ob der Benutzer ein Mensch ist, also fragen sie
issuer.example
Ausführen des folgenden JavaScript:
holen('https://issuer.example/redeem', {
trustToken: {
Art: 'srr-token-redemption'
}
});
Mit diesem Code:
- Der Browser fordert eine Einlösung an.
- Der Aussteller gibt einen SRR (Signed Redemption Record) zurück, der angibt, dass er jemals ein gültiges Token für diesen Browser ausgestellt hat.
- Wenn das zurückgegebene Versprechen gelöst ist, kann der SRR in nachfolgenden Ressourcenanforderungen verwendet werden.
6. publisher.example
Anschließend können Sie das folgende JavaScript in einem Dokument der obersten Ebene ausführen:
holen('foo.example/get-content', {
trustToken: {
Art: 'send-srr',
issuer: 'https://issuer.example'
}
});
Mit diesem Code:
foo.example
Sie erhalten die SRR, und jetzt haben Sie einen Hinweis darauf
issuer.example
dachte, dieser Benutzer sei ein Mensch.foo.example
entsprechend reagieren.
Möglicherweise haben Sie einen Kaufverlauf mit einer E-Commerce-Website, Aufzeichnungen auf einer Standortplattform oder einen Kontoverlauf bei einer Bank. Emittenten können auch andere Faktoren berücksichtigen, z. B. wie lange Sie ein Konto haben oder andere Interaktionen (wie CAPTCHA oder Formularübermittlung), die das Vertrauen des Emittenten in die Wahrscheinlichkeit erhöhen, dass es sich um einen echten Menschen handelt.
Ausgabe vertrauenswürdiger Token
Wenn ein vertrauenswürdiger Token-Aussteller den Benutzer als vertrauenswürdig erachtet, z
issuer.example
kann der Aussteller vertrauenswürdige Token für den Benutzer erhalten, indem er a
fetch ()
Anfrage mit einem neuen trustToken
Parameter:
holen('issuer.example/.well-known/trust-token', {
trustToken: {
Art: 'token-request',
issuer: <issuer>
}
}).then(...)
Dies ruft eine Erweiterung des auf Datenschutzausweis Broadcast-Protokoll mit a neues Krypto-Primitiv:
-
Generieren Sie eine Reihe von Pseudozufallszahlen, die als bekannt sind Nonces.
-
Blenden Sie die Nonces aus (codieren Sie sie so, dass der Emittent ihren Inhalt nicht sehen kann) und hängen Sie sie an die Anforderung in a an
Sec-Trust-Token
Header. -
Senden Sie eine POST-Anfrage an den angegebenen Endpunkt.
Der Endpunkt antwortet mit blinden Token (Signaturen auf den blinden Nonces), dann werden die Token entlarvt und der Browser speichert sie intern zusammen mit den zugehörigen Nonces als vertrauenswürdige Token.
Einlösung vertrauenswürdiger Token
Eine Publisher-Site (wie publisher.example
Im obigen Beispiel können Sie überprüfen, ob dem Benutzer Vertrauens-Token zur Verfügung stehen:
const userHasTokens = erwarten Dokument.hasTrustToken(<issuer>);
Wenn Token verfügbar sind, kann die Website des Herausgebers diese einlösen, um einen signierten Einlösungsdatensatz zu erhalten:
holen('issuer.example/.well-known/trust-token', {
...
trustToken: {
Art: 'srr-token-redemption',
issuer: 'issuer.example',
refreshPolicy: 'none'
}
...
}).then(...)
Die Publisher-Site kann dann den SRR mithilfe der folgenden API an die von ihr gestellten Anforderungen senden:
holen('<url>', {
...
trustToken: {
Art: 'send-srr',
issuer: <issuer>,
}
...
}).then(...);
Der Herausgeber muss den SRR in Anfragen einbeziehen, für die ein Vertrauens-Token erforderlich ist, z. B. das Veröffentlichen eines Kommentars, das Liken einer Seite oder das Abstimmen in einer Umfrage.
Auf vertrauenswürdige Token kann nur über die Optionen Abrufen, XHR und HTML zugegriffen werden
item: kann nicht direkt aufgerufen werden.
Datenschutzüberlegungen
Die Token sind so konzipiert, dass sie nicht miteinander verbunden werden können. Ein Aussteller kann aggregierte Informationen über die von seinen Benutzern besuchten Websites abrufen, die Ausgabe jedoch nicht mit der Einlösung verknüpfen: Wenn ein Benutzer ein Token einlöst, kann der Aussteller das Token nicht von anderen von ihm erstellten Token unterscheiden. Vertrauenswürdige Token existieren derzeit jedoch nicht im luftleeren Raum. Es gibt andere Möglichkeiten, wie ein Aussteller theoretisch die Identität eines Benutzers über mehrere Websites hinweg abgleichen kann, z. B. Cookies von Drittanbietern und verdeckte Tracking-Techniken. Es ist wichtig, dass Standorte diesen Ökosystemübergang verstehen, wenn sie ihre Unterstützung planen. Dies ist ein allgemeiner Aspekt des Übergangs für viele Privacy Sandbox-APIs, daher wird hier nicht weiter darauf eingegangen.
Sicherheitsüberlegungen
Vertrauen in die Token-Erschöpfung: Eine böswillige Site kann das Token-Angebot eines Benutzers von einem bestimmten Aussteller absichtlich erschöpfen. Es gibt verschiedene Abhilfemaßnahmen gegen diese Art von Angriff, z. B. die Möglichkeit für Emittenten, viele Token gleichzeitig bereitzustellen, sodass Benutzer über eine ausreichende Versorgung verfügen, um sicherzustellen, dass Browser nur ein Token pro Seitenaufruf der obersten Ebene einlösen.
Vermeidung doppelter Ausgaben: Malware kann versuchen, auf alle vertrauenswürdigen Token eines Benutzers zuzugreifen. Die Token werden jedoch im Laufe der Zeit aufgebraucht, da jede Einlösung an denselben Token-Aussteller gesendet wird, der überprüfen kann, ob jedes Token nur einmal verwendet wird. Um das Risiko zu minimieren, könnten Emittenten auch weniger Token unterzeichnen.
Anforderungsmechanismen
Möglicherweise können SRRs außerhalb von gesendet werden fetch ()
Zum Beispiel bei Navigationsanfragen. Sites können auch Ausstellerdaten in HTTP-Antwortheader aufnehmen, um das Einlösen von Token parallel zum Laden der Seite zu ermöglichen.
Um es noch einmal zu wiederholen: Dieser Vorschlag benötigt Ihre Kommentare! Wenn Sie Kommentare haben, bitte
ein Problem erstellen im Trust Token erklärendes Repository.
Erfahren Sie mehr
Vielen Dank an Kayce Basques, David Van Cleve, Steven Valdez, Tancrède Lepoint und Marshall Vale für ihre Hilfe beim Schreiben und Überprüfen dieses Beitrags.