プライバシーのパワーアップ。 Upgrading Pin Links from HTTP to HTTPS

Pinterest Engineering
Pinterest Engineering

Follow

11月19日のことです。 2019 – 4 min read

Maria de Angelis | Summer 2019 Pinterest Engineer Intern

HTTPS はどこでもあるはずです。 あなたの Web サイトはおそらく HTTPS で動作し、ユーザーに安全で暗号化された接続を提供しますが、すべての送信リンクはどうでしょうか。 すべてのリンクが HTTPS を使用していることを保証できますか? この投稿では、DuckDuckGo の Smarter Encryption テクノロジーを活用して、ピンへのリンクを HTTP から HTTPS にアップグレードした手順を説明します。

Why HTTPS?

Pinterest は完全に HTTPS で動作していますが、ほとんどのユーザーにとって最終目的地ではありません。 Pinterestは、Pinnerが好きなものを発見して実行する場所として、他のWebサイトに到達するための出発点となっています。 これには、可能な限り、ピンへの送信リンクを HTTP から HTTPS にアップグレードし、HTTPS を介したトラフィックの割合を最大化することが含まれます。 Pinner が Pin のリンクをクリックすると、コンテンツが HTTP URL で作成されている場合、HTTP サイトに送信されます。 しかし、そのサイトが HTTPS に対応している場合は、代わりに HTTPS バージョンにユーザーを送りたいのです。 改善後、アウトバウンド トラフィックの約 80% が HTTPS を介して行われるようになり、30% 以上増加しました。

この変更が重要な指標に干渉しないようにするため、この変更をユーザーの 1% に解放し、同等のコントロール グループと比較する実験を実施しました。 ベンチマークとなるPinterestの指標に変化がないことがわかったので、より多くのPinterestユーザーにこの実験をリリースしていきます。

Figure 1: このPinterestボード内のPinはリンク先のプロトコルによりカラーコード化されています。 HTTPSのリンクは緑、HTTPのリンクは赤で表示されます。 2971>

Smarter Encryption by DuckDuckGo

できるだけ効率的に作業するために、DuckDuckGo の Smarter Encryption テクノロジーを統合し、ウェブサイトへの接続が可能な場合は自動的に暗号化を使用できるようにしました。 DuckDuckGo は、アップグレード可能なサイトの包括的なリストを保持しており、サイトの HTTP バージョンと HTTPS バージョンを比較し、2 つのバージョンが同じ場合は HTTPS アップグレード リストにサイトを追加することで生成されるので、私たちにとって完璧なソリューションとなりました。 2971>

Pinterest Architecture

Pinterest のホームフィードをユーザーがスクロールすると、API レイヤーでピンを取得する要求が行われ、Apache Thrift サービスの PinAndBoardService を呼び出し、その後 MySQL データベースからピンをフェッチします。

図 2: Pin フェッチアーキテクチャの簡略図です。 API層はPinAndBoardServiceにリクエストを行い、キャッシュまたはMySQLからPinを取得する。

概要

ピンリンク変換を実装するために、次のことを行う。

  • 実験が有効な場合、API レイヤーの PinAndBoardService に新しく追加されたエンドポイントを呼び出します。
  • 新しい PinAndBoardService のエンドポイントでは、データベースまたはキャッシュから取得したときにピンの URL が HTTP で始まるかどうかをチェックし、その場合は可能なら HTTPS にアップグレードする必要があります。
  • ピン が HTTPS にアップグレード可能かどうかを確認するには、URL からドメインを削除し、そのドメインが DuckDuckGo の Smarter Encryption が提供する安全なドメインのリストに含まれているかどうかをチェックします。
  • MySQL データベースで直接ではなく、PinAndBoardService でリンク変換を実行することにしたのは、いくつかの理由があります。
  • MySQL レイヤーで HTTP リンクを HTTPS にアップグレードして後でそのドメインが HTTPS をサポートしなくなると、ピン リンクは壊れて、リンクは永久に変更されているので変更を追跡できなくなる可能性がありました。 この問題を解決するために、MySQL に古いリンクと新しいリンクの両方を格納することができましたが、現在のアプローチよりもスペース効率が悪くなります。
  • データベースから Pin をフェッチするたびに(それがすでにアップグレードされているかどうかにかかわらず)変換を実行しなければなりませんが、Pin は高度にキャッシュされるため、通常、重複フェッチを回避することができます。
  • Next steps

    As we move forward, we are exploring permanently upgrade Pins to secure HTTPS links upon creation, a big step towards universal HTTPS usage and increased security for all users on our platform.これは、ピン作成時に安全な HTTPS リンクに恒久的にアップグレードすることを検討しています。 また、すべてのユーザーのユーザー エクスペリエンスを向上させるために、DuckDuckGo の Smarter Encryption に貢献できるよう、現在アップグレードできないリンクの追跡も行っています。 また、サポートを提供してくれた CoreService、Storage & Caching、および API チーム、そして Smarter Encryption テクノロジーへの早期アクセスを提供してくれた DuckDuckGo にも多大な感謝を捧げます。

    コメントを残す

    メールアドレスが公開されることはありません。