Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Privacy保護施策への対応@オレシカvol16

Hiroyuki Hoshi
November 18, 2021
940

 Privacy保護施策への対応@オレシカvol16

オレシカナイトVol16登壇スライド
https://cyberagent.connpass.com/event/227271/

Hiroyuki Hoshi

November 18, 2021
Tweet

Transcript

  1. 自己紹介 星博之 株式会社サイバーエージェント メディア統括本部 Ameba事業部 サーバサイドエンジニア 2012/04 サイバーエージェント中途入社 • 2012/04〜 ゲーム部門 ◦

    サーバサイド • 2013/02〜 Amebaピグ ◦ サーバサイド / EM / Webフロント / Unity • 2018/07〜 Ameba広告 ◦ サーバサイド / Webフロント ◦ 計測 / Tracking / Privacy
  2. Privacy保護 各ベンダの保護施策いくつかピックアップ WebKit(Safariなど) • ThirdPartyCookie Full Blocking ◦ iOS 13.4(2020/03)〜 •

    CNAME Cloaking制限 ◦ iOS 14.2(2020/11)〜 ◦ 制限対象の場合、Cookieの有効期限が7日 • PCM(Private Click Measurement) ◦ iOS 14.5(2021/04)〜 ◦ (ThirdPartyCookieがブロックされた上での)Conversion計測を行うための仕組み ◦ First-Party adsが対象 ▪ CV通知(AttributionReport)がPublisherに送られる ▪ 3rdPartyのAd Networkが、Publisher各社と連携するのは厳しそう
  3. ATT(App Tracking Transparency) • iOS14.5(2021/04)〜 • IDFA含めたトラッキング許可のダイアログ • ユーザが許可しないと、無効なIDFA(0の羅列)となる •

    前述のPCM拡張も含めて、PSLの運用が大変なことに。。 Privacy保護 各ベンダの保護施策いくつかピックアップ iOS15(2021/09) iCloud+ Private Relay • IPアドレスが匿名のIPアドレスに置き換わる • iCloudプランの契約が必要 • iOS15.1時点でもPublic Betaでデフォルトオフ • Proxyを2つ経由 1. IPアドレスから地域に変換 2. 該当地域のIPアドレスをランダムに抽出し、匿名のIPアドレスを割り当て
  4. Privacy Sandbox概要 Privacy Sandbox ChromiumのPrivacy保護プロジェクト ミッション: Create a thriving web

    ecosystem that is respectful of users and private by default. ユーザを尊重したデフォルトPrivateな繁栄したウェブ・エコシステムを創造する そのために克服する主な課題はクロスサイトトラッキング 現在のクロスサイトトラッキングを健全な形で置き換えられるように 様々な新しい機能を導入し、 最終的にはサードパーティCookieを廃止する。 併せてFingerPrinting、CacheInspection, LinkDecoration、etc… といったCookieを使用しないクロスサイトトラッキング手法を制限していく
  5. Privacy Sandbox概要 2023年後半にThirdPartyCookieを段階的に廃止 発表当初から2年ほどの遅れ。 英国CMA(英国の競争・市場庁)とのコミットメントに則る • No data advantage for

    Google advertising products ◦ Googleの広告製品にデータ利点はナシ ▪ Chromeの閲覧履歴を使用しない ▪ GAのデータを利用してユーザトラッキングをすることもしない • No self-preferencing ◦ Google側にPrivacy Sandboxでの優遇措置・利点はナシ マイルストーン Stage1 (2022後半に開始) • 各種テストの完了後、Publisher / 広告事業者がサービス移行するための時間を確保 • 9ヶ月間を予定 • 導入状況やフィードバックを確認した上で、Stage2へ移行 Stage2 (2023半ばに開始) • 2023年後半から3ヶ月掛けてThirdPartyCookieのサポートを段階的に終了 ドキュメント • https://privacysandbox.com/ ◦ 概要・背景・timelineなど • https://developer.chrome.com/docs/privacy-sandbox/ ◦ 開発者向け。技術的な詳細・実装ガイダンスなど
  6. Privacy Sandbox概要 大きく3つの軸とそれに紐づく様々な提案がある 1. クロスサイトトラッキングで実現していた機能の置き換え a. SSOやパーソナライズ広告など、 サードパーティCookie前提で開発されている機能などをPrivacyを考慮して可 能な限り置き換える。 b.

    最終的な理想状態は、今と変わらないWeb体験。 c. さらに、不快な広告などはWeb体験が変わらない状態でOFFすることができる ように。 2. サードパーティCookieの停止 a. 最終的には責任をもって削除する。 3. 回避策への対策 a. Cookieを利用したクロスサイトトラッキングを制限するため、 FingerPrintingといった、ユーザがコントロールできない手法でトラッキング されることが懸念される。 b. こういった部分にも新機能を提供し健全化を推進する。
  7. Privacy Sandbox概要 1. クロスサイトトラッキングで実現していた機能の置き換え 関連UseCase - Spam、Fraud、Dos対策 - Trust Token

    API - 広告コンバージョン計測 - Attribution Reporting API(Conversion Measurement API) - Aggregated Reporting API - 広告ターゲティング - 興味関心ベース - FLoC - リマーケティング・リターゲティング - TURTLEDOVE - FLEDGE - Federated login - WebID
  8. Privacy Sandbox概要 3. 回避策への対策 重点項目 - FingerPrinting - Privacy Budget

    - Passive FingerPrinting Surfaceの削除 - Client Language Selection - User-Agent Client Hints - Surfaceエントロピーの低減 - Device Sensors - Battery Level - IP Blindness - Cache inspection - Partitioning HTTP Cache - Connection Pools - DNS Cache, Sessions Tickets, HTTP Server properties - Other caches
  9. Privacy Sandbox概要 3. 回避策への対策 重点項目 - Navigation tracking - Referer

    clamping - デフォルトReferrer Policyの変更 - Chrome v.85で導入済み - https://web.dev/referrer-best-practices/ - Network Level tracking - DNS - SNI - Moar TLS
  10. UA文字列の削減 • 7フェーズに分けて段階的に削減。 • ReverseOriginTrialにオプトインすれば、すべての段階が終わるまで影響を受けない。 • すべての段階の完了は、2023/05の想定 • すべての段階の完了後もUser-Agent文字列だけで以下の取得は可能 ◦

    ブラウザのメジャーバージョン ◦ プラットフォーム名 ◦ モバイル判定 • 2021/06時点では以下のUser-Agent文字列の変更予定は無い ◦ Android WebView ◦ Chrome for iOS 先にまとめ デスクトップ Androidモバイル Androidタブレット navigator.platform
  11. フェーズ1 ・Chrome M92(2021/07/20) ・DeveloperToolで警告でるようになる フェーズ2 ・Chrome M95(2021/10/19)-M100(2022/03/29) ・OriginTrial開始 フェーズ3 ・Chrome

    M100(2022/03/29) ・Reverse Origin Trial(デプリケーション トライアル)開始  ・ 登録することで、削減の影響をM113まで受けない ・M101(2022/04/26)までに登録 フェーズ4 ・Chrome M101(2022/04/26) ・MINOR.BUILD.PATCHのバージョン番号が「0.0.0」になる UA文字列の削減 各フェーズについて フェーズ5 ・Chrome M107(2022/10/25) ・デスクトップが対象 ・PlatformとCPUアーキテクチャを関連する固定値に変更 フェーズ6 ・Chrome M110(2023/02/07) ・Androidモバイル・タブレットが対象 ・デバイスモデルを「K」の固定値に変更 ・AndroidVersionを「10」の固定値に変更 フェーズ7 ・Chrome M113(2023/05/02) ・ReverseOriginTrial終了 ・すべてのページにUser-Agent文字列削減が適用される  ・ここまでに対応完了させる必要 ※Chrome versionとリリース日はこちらを参考にしています
  12. User-Agent Client Hints (UA-CH) Clinet Hints項目 参考:WICG Draft Report ua-client-hints

    項目 内容 リクエストヘッダフィールド デフォ ルト Sample値 brand ブラウザ名 Sec-CH-UA ◯ "Chromium";v="86", "\"Not\\A;Brand";v="99", "Google Chrome";v="86" significant version 重要バージョン full version ビルドバージョン Sec-CH-UA-Full-Version(非推奨) Sec-CH-UA-Full-Version-List x "86.0.4240.80" platform brand OS名 Sec-CH-UA-Platform ◦ "Android" platform version OSバージョン Sec-CH-UA-Platform-Version x "8.0" platform architecture CPU architecture Sec-CH-UA-Arch x "x86" platform bitness CPU architecture bit Sec-CH-UA-Bitness x "64" model デバイスモデル Sec-CH-UA-Model x "Pixel 2" mobileness モバイル判定 Sec-CH-UA-Mobile ◯ ?1
  13. User-Agent Client Hints (UA-CH) 大きく以下の2つの方法で取得する 1. リクエストヘッダ 2. JavaScript API

    取得方法 navigator.userAgentData navigator.userAgentData.getHighEntropyValues -------------リクエストヘッダ ---------------------- sec-ch-ua: " Not;A Brand";v="99", "Google Chrome";v="91", "Chromium";v="91" sec-ch-ua-mobile: ?1
  14. User-Agent Client Hints (UA-CH) • https必須 • デフォルトで以下のフィールドが送られる ◦ Sec-CH-UA

    ◦ Sec-CH-UA-Mobile ◦ Sec-CH-UA-Platform • オプトインすることで以下のフィールドが送られる ◦ Sec-CH-UA-Full-Version (非推奨 Sec-CH-UA-Full-Version-Listに置き換え) ◦ Sec-CH-UA-Full-Version-List ◦ Sec-CH-UA-Platform-Version ◦ Sec-CH-UA-Arch ◦ Sec-CH-UA-Bitness ◦ Sec-CH-UA-Model • 高エントロピー(高識別性)な情報はデフォルトでは送らない ◦ [email protected] : GoogleGroup リクエストヘッダでの取得
  15. User-Agent Client Hints (UA-CH) オプトインの方法は以下のいずれか 1. レスポンスヘッダのAccept-CH 2. metaタグ リクエストヘッダでのデフォルト以外の取得

    -------------レスポンスヘッダ ---------------------- Accept-CH: Sec-CH-UA-Model <meta http-equiv="Accept-CH" content="Viewport-Width, Width" /> 参考:web.dev user-agent-client-hints
  16. User-Agent Client Hints (UA-CH) レスポンスヘッダのAccept-CHでオプトイン リクエストヘッダでの取得 例:Sec-CH-UA-Modelを指定 website.com blank https://website.com

    -------------リクエストヘッダ ---------------------- sec-ch-ua: " Not;A Brand";v="99", "Google Chrome";v="91", "Chromium";v="91" sec-ch-ua-mobile: ?1 レスポンス -------------レスポンスヘッダ ---------------------- Accept-CH: Sec-CH-UA-Model https://website.com/ex/ -------------リクエストヘッダ ---------------------- sec-ch-ua: " Not;A Brand";v="99", "Google Chrome";v="91", "Chromium";v="91" sec-ch-ua-mobile: ?1 sec-ch-ua-model: "SM-G900P"
  17. User-Agent Client Hints (UA-CH) blank https://website.com ----------------------リクエストヘッダ ---------------------- sec-ch-ua: "

    Not;A Brand";v="99", "Google Chrome";v="91", "Chromium";v="91" sec-ch-ua-mobile: ?1 レスポンス ----------------------レスポンスヘッダ ---------------------- Accept-CH: Sec-CH-UA-Model, Sec-CH-UA-Platform-Version Permissions-Policy: ch-ua-model=(self "https://ad.com"), ch-ua-platform-version=(self "https://ad.com") https://ad.com/ad ----------------------リクエストヘッダ ---------------------- sec-ch-ua: " Not;A Brand";v="99", "Google Chrome";v="91", "Chromium";v="91" sec-ch-ua-mobile: ?1 sec-ch-ua-model: "SM-G900P" sec-ch-ua-platform-version: "5.0" ad.com website.com Cross-Originへのdelegate リクエストヘッダでの取得 例:Sec-CH-UA-Model、Sec-CH-UA-Platform-Versionを指定 配信メディア側(website.com) での対応が必要
  18. User-Agent Client Hints (UA-CH) • 構造化フィールドで指定 • iframe Permissions-Policy 参考:w3c/webappsec-permissions-policy

       Migrate to User-Agent Client Hints • HTTP Header ・「self」はPolicyを指定するorigin ・「*」は全てのoriginに適用 ・「()」は全てのoriginを拒否 • Permission-Policyでのコントロールドラフト ◦ https://wicg.github.io/client-hints-infrastructure/#policy-controlled-client-hints-features
  19. User-Agent Client Hints (UA-CH) • Origin側でオプトインしていないと、Cross-Originにdelegateできない (Permissions-Policyの指定だけだとダメ) 補足:2021/10(Chrome M95)時点での動作 blank

    https://website.com ----------------------リクエストヘッダ ---------------------- sec-ch-ua: " Not;A Brand";v="99", "Google Chrome";v="91", "Chromium";v="91" sec-ch-ua-mobile: ?1 レスポンス ----------------------レスポンスヘッダ ---------------------- Accept-CH: Sec-CH-UA-Model, Sec-CH-UA-Platform-Version Permissions-Policy: ch-ua-model=(self "https://ad.com"), ch-ua-platform-version=(self "https://ad.com") https://ad.com/ad ----------------------リクエストヘッダ ---------------------- sec-ch-ua: " Not;A Brand";v="99", "Google Chrome";v="91", "Chromium";v="91" sec-ch-ua-mobile: ?1 sec-ch-ua-model: "SM-G900P" sec-ch-ua-platform-version: "5.0" ad.com website.com 例:Sec-CH-UA-Model、Sec-CH-UA-Platform-Versionを指定
  20. User-Agent Client Hints (UA-CH) • Origin側でオプトイン・Cross-OriginへdelegateしていればCross-Origin 側でのオプトインは不要。初回リクエストから乗ってくる 補足:2021/10(Chrome M95)時点での動作 blank

    https://website.com ----------------------リクエストヘッダ ---------------------- sec-ch-ua: " Not;A Brand";v="99", "Google Chrome";v="91", "Chromium";v="91" sec-ch-ua-mobile: ?1 レスポンス ----------------------レスポンスヘッダ ---------------------- Accept-CH: Sec-CH-UA-Model, Sec-CH-UA-Platform-Version Permissions-Policy: ch-ua-model=(self "https://ad.com"), ch-ua-platform-version=(self "https://ad.com") https://ad.com/ad ----------------------リクエストヘッダ ---------------------- sec-ch-ua: " Not;A Brand";v="99", "Google Chrome";v="91", "Chromium";v="91" sec-ch-ua-mobile: ?1 sec-ch-ua-model: "SM-G900P" sec-ch-ua-platform-version: "5.0" ad.com website.com 例:Sec-CH-UA-Model、Sec-CH-UA-Platform-Versionを指定
  21. User-Agent Client Hints (UA-CH) • ブラウザセッションの間 • 別のHintが指定されるまで Life-Timeとリセットタイミング 参考:web.dev

    user-agent-client-hints -------------レスポンスヘッダ ------------- Accept-CH: Sec-CH-UA-Platform -------------リクエストヘッダ ------------- sec-ch-ua-platform: "Mac OS X" -------------レスポンスヘッダ ------------- Accept-CH: Sec-CH-UA-Arch -------------リクエストヘッダ ------------- sec-ch-ua-arch: "x86" UA-Arch で上書き Sec-CH-UA-Platform 送られない
  22. User-Agent Client Hints (UA-CH) TLS GREASEの概念を取り込む • 詳細 brand(Sec-CH-UA)についてのブラウザ実装要件 •

    brandに複数の値を含める必要がある。値の少なくとも1つは任意の値。 • 任意の値を追加するとき、値には以下を追加する。 ◦ escaped double-quote ◦ commas ◦ semi-colons • brandの値の順序は時間の経過と共に変化しなければならない。 • Chrome M86 例 ◦ "Chromium";v="86", "\"Not\\A;Brand";v="99", "Google Chrome";v="86" 準拠しているかの基準になり、問題がある場合、早期に気が付けるように。 GREASE(Generate Random Extensions And Sustain Extensibility) 参考:WICG ua-client-hints#grease
  23. User-Agent Client Hints (UA-CH) PrivacyBudgetで制限される可能性がある (すごくざっくり)PrivacyBudget • まだあまり固まってない模様。 • domain単位のPrivacy情報の利用を計測(ユーザ単位ではなくdomain単位)

    ◦ IPアドレス/User-Agent/accept-language/etc... • 予算(Budget)が無くなると正しい値が取れなくなる • PrivacySandboxの提案に含まれている 参考:WICG ua-client-hints#persistent-user-tracking 参考:PrivacyBudget 考察:PrivacyBudgetとの兼ね合い Privacy情報取得 さらに Privacy情報取得 正しく情報が 取得できなくなる 予算:100 予算:50 予算:0
  24. User-Agent Client Hints (UA-CH) • JavaScriptのSDKで取得してパラメータに付与。 • 自社のメディアにはPermissions-Policyの設定でdelegateできそうだが、それ以外で は難易度高そう。 •

    特に顧客サイトでの計測では、すべての顧客に設定してもらうのはかなり難しそう。 考察:広告の場合は結局JavaScriptで取得する? https://website.com website.com ad.com lp.com https://lp.com 広告Clickで遷移 全てのサイトに delegateしてもらう 難易度が高い 全てのサイトに delegateしてもらう のは難易度が高い 配信メディア 顧客サイト
  25. User-Agent Client Hints (UA-CH) • SSP側でUA文字列をParseしている場合、以下の項目に影響ありそう ◦ BidRequest.device.ua ◦ BidRequest.device.osv

    ◦ BidRequest.device.model • 現時点では、指針らしきものはみつけられず。。 • フェーズ4:Chrome M101(2022/04/26)から影響を受ける想定 ◦ MINOR.BUILD.PATCHのバージョン番号が「0.0.0」になる 考察:OpenRTBでの影響(DSP目線)