Zum Hauptinhalt springen




Trust Tokens ist eine neue API zur Bekämpfung von Betrug und zur Unterscheidung von Bots von echten Menschen ohne passive Verfolgung.


Aktualisiert

Es erscheint in:
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:

fetch ( 'https: //issuer.example/issue' , {
trustToken : {
Typ : 'Token-Anfrage'
}}
} ) ;

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:

fetch ( 'https: //issuer.example/redeem' , {
trustToken : {
Typ : 'srr-token-redemption'
}}
} ) ;

Mit diesem Code:

  1. Der Browser fordert eine Einlösung an.
  2. 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.
  3. 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:

fetch ( 'foo.example / get-content' , {
trustToken : {
Typ : 'send-srr' ,
Aussteller : 'https: //issuer.example'
}}
} ) ;

Mit diesem Code:

  1. foo.example Sie erhalten die SRR, und jetzt haben Sie einen Hinweis darauf
    issuer.example dachte, dieser Benutzer sei ein Mensch.
  2. 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.examplekann der Aussteller vertrauenswürdige Token für den Benutzer erhalten, indem er a
fetch () Anfrage mit einem neuen trustToken Parameter:

fetch ( 'issuer.example / .well-unknown / trust-token' , {
trustToken : {
Typ : 'Token-Anfrage' ,
Emittent : < Emittent >
}}
} ) . dann ( ... )

Dies ruft eine Erweiterung des auf Datenschutzausweis Broadcast-Protokoll mit a neues Krypto-Primitiv:

  1. Generieren Sie eine Reihe von Pseudozufallszahlen, die als bekannt sind Nonces.

  2. 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.

  3. 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 = Dokument abwarten . hasTrustToken ( < Emittent > ) ;

Wenn Token verfügbar sind, kann die Website des Herausgebers diese einlösen, um einen signierten Einlösungsdatensatz zu erhalten:

fetch ( 'issuer.example / .well-unknown / trust-token' , {
...
trustToken : {
Typ : 'srr-token-redemption' ,
Emittent : 'issuer.example' ,
refreshPolicy : 'keine'
}}
...
} ) . dann ( ... )

Die Publisher-Site kann dann den SRR mithilfe der folgenden API an die von ihr gestellten Anforderungen senden:

holen ( ' ' , {
...
trustToken : {
Typ : 'send-srr' ,
Emittent : < Emittent > ,
}}
...
} ) . dann ( ... ) ;

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