Datenschutz aufrüsten: Umstellung von Pin-Links von HTTP auf HTTPS

Pinterest Engineering
Pinterest Engineering

Follow

Nov 19, 2019 – 4 min read

Maria de Angelis | Summer 2019 Pinterest Engineer Intern

HTTPS sollte überall sein. Ihre Website läuft wahrscheinlich über HTTPS und bietet Ihren Nutzern eine sichere, verschlüsselte Verbindung, aber was ist mit all den ausgehenden Links? Können Sie garantieren, dass sie alle HTTPS verwenden? In diesem Beitrag beschreiben wir die Schritte, die wir unternommen haben, um Pin-Links von HTTP auf HTTPS umzustellen, indem wir die Smarter Encryption-Technologie von DuckDuckGo genutzt haben.

Warum HTTPS?

Pinterest läuft zwar vollständig über HTTPS, ist aber für die meisten Nutzer nicht das endgültige Ziel. Als Ort, an dem Pinner entdecken und tun können, was sie lieben, ist Pinterest die Ausgangsbasis für das Erreichen anderer Websites. Daher sind wir dafür verantwortlich, Pinner auf HTTPS-Websites umzuleiten, wann immer wir können. Dazu gehört auch, ausgehende Pin-Links von HTTP auf HTTPS umzustellen, wenn dies möglich ist, und den prozentualen Anteil des Traffics über HTTPS zu maximieren.

Der Grund dafür, dass es überhaupt HTTP-Traffic gibt, ist einfach, dass viele Pins auf diese Weise erstellt wurden. Wenn ein Pinner auf einen Pin-Link klickt, wird er auf die HTTP-Website weitergeleitet, wenn der Inhalt mit einer HTTP-URL erstellt wurde. Wenn die Website jedoch HTTPS unterstützt, wollen wir den Nutzer stattdessen zur HTTPS-Version schicken. Wir beschlossen, ein Online-Upgrade auf HTTPS vorzunehmen, um das Ergebnis auf allen Pinterest-Oberflächen zu maximieren.

Nach den Verbesserungen laufen nun etwa 80 % des ausgehenden Datenverkehrs über HTTPS, was einer Steigerung von über 30 % entspricht.

Um sicherzustellen, dass diese Änderung keine Auswirkungen auf wichtige Metriken hat, führten wir ein Experiment durch, bei dem wir diese Änderungen für 1 % der Nutzer freigaben und sie mit einer entsprechenden Kontrollgruppe verglichen. Wir haben festgestellt, dass es keine Veränderung bei den Benchmark-Pinterest-Kennzahlen gab, also werden wir das Experiment für weitere Pinterest-Nutzer durchführen.

Abbildung 1: Die Pins dieses Pinterest-Boards sind nach dem Protokoll ihrer Links farblich kodiert. HTTPS-Links sind grün und HTTP-Links sind rot. Wenn das Experiment im zweiten Bild aktiviert ist, werden die meisten roten Pins grün, weil ihre Links auf HTTPS umgestellt werden können.

Smarter Encryption by DuckDuckGo

Um so effizient wie möglich zu arbeiten, haben wir die Smarter Encryption-Technologie von DuckDuckGo integriert, die automatisch verschlüsselte Verbindungen zu Websites verwendet, wenn diese verfügbar sind. DuckDuckGo war für uns die perfekte Lösung, da das Unternehmen eine umfassende Liste aktualisierbarer Websites führt, die durch den Vergleich der HTTP- und HTTPS-Version einer Website erstellt wird, und eine Website zur HTTPS-Upgrade-Liste hinzufügt, wenn die beiden Versionen identisch sind. Wir können diese Liste dann regelmäßig abrufen und einlesen.

Pinterest-Architektur

Wenn ein Nutzer durch seinen Pinterest-Homefeed scrollt, wird in der API-Schicht eine Anfrage zum Abrufen von Pins gestellt, die dann den Apache Thrift-Dienst PinAndBoardService aufruft, der anschließend Pins aus der MySQL-Datenbank abruft.

Abbildung 2: Eine vereinfachte Darstellung der Architektur des Pin-Abrufs. Die API-Schicht stellt eine Anfrage an den PinAndBoardService, der dann den Pin aus dem Cache oder aus MySQL abruft.

Übersicht

Um die Konvertierung von Pin-Links zu implementieren, müssen wir:

  1. Auslösen, ob das Experiment in der API-Schicht ausgeführt werden soll oder nicht.
  2. Wenn das Experiment aktiviert ist, rufen Sie einen neu hinzugefügten Endpunkt in PinAndBoardService in der API-Schicht auf.
  3. In dem neuen PinAndBoardService-Endpunkt prüfen Sie, ob die URL eines Pins mit HTTP beginnt, wenn er aus der Datenbank oder dem Cache geholt wird; in diesem Fall sollte er nach Möglichkeit auf HTTPS umgestellt werden.
  4. Überprüfen Sie, ob ein Pin auf HTTPS aktualisiert werden kann, indem Sie die Domäne aus der URL entfernen und prüfen, ob die Domäne in einer Liste sicherer Domänen enthalten ist, die von DuckDuckGo’s Smarter Encryption bereitgestellt wird.
  5. Führen Sie die Konvertierung durch und aktualisieren Sie den Link, damit alle nachgeschalteten Dienste die sichere Version erhalten.
  6. Wir haben uns aus mehreren Gründen dafür entschieden, die Linkkonvertierung in PinAndBoardService und nicht direkt in der MySQL-Datenbank durchzuführen:
  7. Wenn wir einen HTTP-Link in der MySQL-Schicht auf HTTPS aktualisieren und die Domäne später kein HTTPS mehr unterstützt, würde der Pin-Link unterbrochen, und wir könnten die Änderung nicht nachvollziehen, da der Link dauerhaft geändert worden wäre. Um dieses Problem zu lösen, hätten wir sowohl den alten als auch den neuen Link in MySQL speichern können, aber das wäre weniger platzsparend gewesen als der derzeitige Ansatz.
  8. Obwohl wir die Konvertierung jedes Mal durchführen müssen, wenn ein Pin aus der Datenbank geholt wird (unabhängig davon, ob er bereits aktualisiert wurde), können wir im Allgemeinen redundante Abrufe vermeiden, da Pins in hohem Maße zwischengespeichert werden.

Nächste Schritte

Im weiteren Verlauf prüfen wir, ob wir Pins bei der Erstellung dauerhaft auf sichere HTTPS-Links umstellen können – ein großer Schritt in Richtung universelle HTTPS-Nutzung und erhöhte Sicherheit für alle Nutzer unserer Plattform. Wir verfolgen auch die Links, die wir derzeit nicht aktualisieren können, um möglicherweise zu DuckDuckGo’s Smarter Encryption beizutragen, um das Nutzererlebnis für alle Nutzer zu verbessern.

Dankeschön

Riesengroßes Dankeschön an Emanuele Cesena (mein großartiger Praktikumsmentor) und den Rest des Sicherheitsteams bei Pinterest! Ein großes Dankeschön geht auch an die Teams von CoreService, Storage & Caching und API für die Unterstützung und an DuckDuckGo für die Bereitstellung eines frühen Zugangs zu ihrer Smarter Encryption-Technologie.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.