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

基礎から理解する!来年春までに対応すべきプライバシーの変更点 / Understanding the Fundamentals Privacy Changes to Address by Next Spring

kamimi
September 02, 2023

基礎から理解する!来年春までに対応すべきプライバシーの変更点 / Understanding the Fundamentals Privacy Changes to Address by Next Spring

iOSDC 2023 で発表したトークです。
https://fortee.jp/iosdc-japan-2023/proposal/d88b8692-7b99-4e2b-bdea-55d94b2c9952

WWDC23 に関するプライバシーについてまとめた記事はこちらです。あわせてご参照ください。
https://zenn.dev/kamimi01/articles/f8acb9cf2a8461

kamimi

September 02, 2023
Tweet

More Decks by kamimi

Other Decks in Programming

Transcript

  1. • גࣜձࣾϠϓϦ / iOS ΤϯδχΞ • OS όʔδϣϯΞοϓରԠɺϏϧυࣗಈԽͷվળ 👩💻 •

    “ॻ͘” ͜ͱ͕εΩʢιʔείʔυ΋ࣗવจ΋ʣ📝 • Swift OpenAPI Generator ʹ͍ͭͯύϯϑݪߘॻ͖·ͨ͠ʂ ˏ kamimiʛ͔ΈΈ ΈͯͶ👇
  2. ໨࣍ 1. ʲ෮शฤʳࠓ·Ͱͷ iOS ΞϓϦ։ൃʹ͓͚ΔϓϥΠόγʔͷ֓ཁͱରԠ 1. ̐ͭͷப 2. Transparency and

    control 3. ϠϓϦͰͷࣄྫ 2. ʲ༧शฤʳ͜Ε͔Βͷ iOS ΞϓϦ։ൃʹ͓͚ΔϓϥΠόγʔͷ֓ཁͱରԠ 1. Privacy manifests 2. ίʔυॺ໊ 3. ϠϓϦͰͷࣄྫ 3. ·ͱΊ
  3. ϓϥΠόγʔʹؔ͢Δ̐ͭͷபʢpillarsʣ 1. On-device processing • σʔλΛαʔόʔʹૹ৴ͤͣɺϩʔΧϧͰॲཧ͢Δ 2. Data minimization •

    ඞཁͳσʔλ͚ͩΛཁٻͯ͠࢖༻͢Δ 3. Security protections • ϓϥΠόγʔอޢΛ͓͜ͳ͏ 4. Transparency and control • Ϣʔβʔ͕σʔλΛཧղ͠ɺ؅ཧͰ͖ΔΑ͏ʹ͢Δ
  4. ϓϥΠόγʔʹؔ͢Δ̐ͭͷபʢpillarsʣ 1. On-device processing • σʔλΛαʔόʔʹૹ৴ͤͣɺϩʔΧϧͰॲཧ͢Δ 2. Data minimization •

    ඞཁͳσʔλ͚ͩΛཁٻͯ͠࢖༻͢Δ 3. Security protections • ϓϥΠόγʔอޢΛ͓͜ͳ͏ 4. Transparency and control • Ϣʔβʔ͕σʔλΛཧղ͠ɺ؅ཧͰ͖ΔΑ͏ʹ͢Δ
  5. Transparency and control • ΞϓϦͷಁ໌ੑ • App Privacy ΍ iOS

    14.5 Ҏ߱ͷ App Tracking TransparencyʢҎԼ ATTʣ
 ͳͲ • WebͰͷಁ໌ੑ • Safari Ͱ͓͜ͳΘΕ͍ͯΔ Intelligent Tracking PreventionʢITPʣͳͲ
  6. Transparency and control • ΞϓϦͷಁ໌ੑ • App Privacy ΍ iOS

    14.5 Ҏ߱ͷ App Tracking TransparencyʢҎԼ ATTʣ
 ͳͲ • WebͰͷಁ໌ੑ • Safari Ͱ͓͜ͳΘΕ͍ͯΔ Intelligent Tracking Prevention ͳͲ
  7. App Tracking Transparency ͷτϥοΩϯά • τϥοΩϯάͱ͸ ࢀߟɿʰUser privacy and data

    useʱʢApple Developerʣ τϥοΩϯάͱ͸ɺࣗ෼ͷΞϓϦͰऩूͨ͠Ϣʔβʔ΍
 σόΠεʹؔ͢ΔσʔλΛɺλʔήοτ޿ࠂ΍޿ࠂޮՌଌఆΛ ໨తͱͯ͠ɺଞࣾͷΞϓϦ΍WebαΠτɺ·ͨ͸ΦϑϥΠϯͷ ϓϩύςΟ͔Βऩू͞ΕͨϢʔβʔ΍σόΠεʹؔ͢Δσʔλ ʹඥ෇͚ΔߦҝΛࢦ͠·͢ɻ
  8. App Tracking Transparency ʹରԠ͠ͳ͍৔߹ • ରԠ͠ͳ͍ or ڐՄͯ͠΋Β͑ͳ͍ͱɾɾɾ • IDFA

    ʢ޿ࠂࣝผࢠʣ͕औಘͰ͖ͳ͍ • IDFA ͕औಘͰ͖ͳ͍ͱɾɾɾ • ద੾ͳ޿ࠂ͕දࣔͰ͖ͳ͍͜ͱʹΑΓɺ
 જࡏϢʔβʔΛಀ͢ͳͲػձଛࣦʹͭͳ͕Γ͏Δ
  9. App Tracking Transparency ͷڐ୚཰Λ্͛ΔͨΊͷ޻෉ • ڐ୚཰ɿ*໿41%ʢ2021೥࣌఺ʣ • ޻෉Ͱ͖Δ͜ͱ • ATT

    ϙοϓΞοϓͷจࣈྻɺ
 දࣔλΠϛϯά • ϓϨϙοϓΞοϓ • ϙετϙοϓΞοϓ *ࢀরɿʰ[ॳظௐࠪ] ATTͷΦϓτΠϯ཰͸શମͷ41%ͱ༧૝Λ͸Δ͔ʹ্ճΔʱʢ2021. AppsFlyerʣ
  10. ϠϓϦͷཪଆͷ͘͠Έ • ΞϓϦ͝ͱʹػೳ͕ҟͳΔͨΊɺATT ରԠཁ൱΋ App Privacy ͷઃఆ΋
 ΞϓϦ͝ͱʹҟͳΔ ATT ରԠཁ൱

    App Privacy ඞཁ ෆཁ ඞཁ • Ґஔ৘ใʢτϥοΩϯά͋Γʣ • σόΠεIDʢτϥοΩϯά͋Γʣ • ਍அʢτϥοΩϯάͳ͠ʣ • ࢖༻ঢ়گσʔλʢτϥοΩϯά͋Γʣ • ϢʔβʔIDʢτϥοΩϯά͋Γʣ
  11. Privacy manifests • PrivacyInfo.xcprivacy ͱ͍͏ plist
 ʢϑΝΠϧ໊มߋ͸NGʣ • ΞϓϦ΍ SDK

    Ͱѻ͏
 ϓϥΠόγʔσʔλΛఆٛ ࢀߟɿʰGet started with privacy manifestsʱʢApple Developerʣ
  12. Privacy manifests Ͱఆٛ͢Δ̏छྨͷ߲໨ • ̏छྨͷఆٛ • ऩू͢Δσʔλ • Required Reason

    APIs • τϥοΩϯά ࢀߟɿʰGet started with privacy manifestsʱʢApple Developerʣ
  13. Privacy manifests Ͱఆٛ͢Δ߲໨̎ͭ໨ɿRequired Reason APIs • Required Reason APIs •

    ໨తɿϑΟϯΨʔϓϦϯτରࡦ • ఆٛ͢Δ߲໨ 1. ࢖༻͢Δ API ͷछྨ 2. ࢖༻໨త
  14. Required Reason APIs ʹ֘౰͢Δ API • API ͷछྨʢϑΟϯΨʔϓϦϯτʹͳΓ͏Δσʔλ΁ͷΞΫηεʣ • ϑΝΠϧλΠϜελϯϓ

    • γεςϜىಈ࣌ؒ • σΟεΫ༰ྔ • ΞΫςΟϒͳΩʔϘʔυ • UserDefaults
  15. Required Reason APIs ʹ֘౰͢Δ API • API ͷछྨ • υΩϡϝϯτʹ

    API ͝ͱͷ
 ৄࡉ͕هࡌ͞Ε͍ͯΔ ࢀߟɿʰDescribing use of required reason APIʱ
  16. Required Reason APIs ʹ͸ UserDefaults ΋ؚ·ΕΔ • UserDefaults ΋ର৅ •

    ଟ͘ͷΞϓϦͰ
 Privacy manifests ͷ४උ͕
 ඞཁʹͳΔ ࢀߟɿʰDescribing use of required reason APIʱ
  17. UserDefaults ͰϑΟϯΨʔϓϦϯτʹ࢖༻͞Ε͏Δσʔλ͕औಘͰ͖Δ • UserDefaults ͰϑΟϯΨʔϓϦϯτʹ
 ࢖༻͞Ε͏Δσʔλ͕औಘՄೳ • ͨͱ͑͹ AppleKeyboards ΩʔΛ࢖༻


    ͨ͠ΩʔϘʔυ৘ใͷऔಘ ࢀߟɿʰHow to retrieve the list of all installed keyboards in Swift?ʱʢstack over fl owʣ
 ʰDevice Identi fi ers and Fingerprinting on iOSʱʢNSHipsterʣ UserDefaults.standard.object( forKey: "AppleKeyboards" ) Optional(<__NSArrayM 0x280f34b40>( en_JP@hw=Automatic;sw=QWERTY, ja_JP-Kana@sw=Kana;hw=Automatic, en_US@sw=QWERTY;hw=Automatic, emoji@sw=Emoji, zh_Hant-Pinyin@sw=Pinyin- Traditional;hw=Automatic ) ) ιʔείʔυ ࣮ࡍʹऔಘͰ͖Δ஋ʢkamimi ϓϥΠϕʔτ୺຤ʣ
  18. ࣅͨ API Ͱ͋Δ activeInputModes ΋ಉ͘͡ର৅ • AppleKeyboards Ͱऔಘ͢Δσʔλͱ
 ࣅͨ API

    Ͱ͋Δ activeInputModes ΋ 
 Required Reason APIs ʹ֘౰ ࢀߟɿʰactiveInputModesʱʢApple Developerʣ ࢖༻͢Δ৔߹͸ PrivacyInfo.xcprivacyʢPrivacy manifestʣ ʹఆٛ͢ΔΑ͏ʹͱهࡌ͋Γ
  19. Required Reason APIs ͷ۩ମతͳఆٛํ๏ • ͨͱ͑͹ UserDefaults ͷ৔߹ • API

    Type ʹʮUserDefaultsʯ
 Λઃఆ ʮUserDefaultsʯΛઃఆ
  20. Required Reason APIs ͷ۩ମతͳఆٛํ๏ • ͨͱ͑͹ UserDefaults ͷ৔߹ • API

    Reasons ʹʮCA92.1ʯ
 Λઃఆ ʮCA92.1: Access info from same app, per documentationʯΛઃఆ
  21. Privacy manifests Ͱఆٛ͢Δ߲໨̏ͭ໨ɿτϥοΩϯά • τϥοΩϯά • ఆٛ͢Δ߲໨ 1. τϥοΩϯάͷ༗ແ 2.

    τϥοΩϯάΛߦ͍ͬͯΔΤϯυϙΠϯτͷυϝΠϯ
 ʢInstruments Ͱ֬ೝՄೳʣ ίί
  22. SDK ͝ͱʹϓϥΠόγʔσʔλͷѻ͍͕ग़ྗ͞ΕΔ • Privacy Report • Ͳͷ SDK ʹ
 ؚ·Ε͍ͯΔσʔλͳͷ͔΋


    ग़ྗ͞ΕΔ ExampleAdvertising.framework ʹ
 ؚ·Ε͍ͯΔ Privacy manifest ExampleSharing.framework ʹ
 ؚ·Ε͍ͯΔ Privacy manifest
  23. ୭͕ Privacy manifests ʹରԠ͢΂͖͔ʁ • ϓϥΠόγʔσʔλΛѻ͏ΞϓϦ΍SDK • SDK ͸ Privacy

    Impacting SDKs ʹ֘౰͢Δ৔߹͸ඞਢ
 ʢͦͷυΩϡϝϯτ͸ 2023/8/21 ࣌఺Ͱ͸ະެ։ 😇ʣ • ⚠ ΞϓϦʹؚ·ΕΔ SDK ͕ѻ͏ϓϥΠόγʔσʔλͷఆٛΛɺ
 ΞϓϦଆͰ͓͜ͳ͏ඞཁ͸ͳ͍ • SDK ଆ͸ SDK ଆಠࣗͷ Privacy manifests Λ࣋ͭͨΊ
  24. ίʔυॺ໊ͷ໨తͱ Xcode Ͱͷݕূ • Xcode ্ͰݕূՄೳʹͳΔʢ15.0Ҏ߱ʣ
 ʢXcode ӈͷΠϯεϖΫλʣ • ΞϓϦ։ൃऀ͸ɺ҆શͳSDKͰ͋Δ͜ͱ


    ͕Θ্͔ͬͨͰ SDKΛ࢖༻Ͱ͖Δ • Privacy Impacting SDKs ͸ରԠඞਢ ࢀߟɿʰVerify app dependencies with digital signaturesʱʢApple Developerʣ
  25. ϠϓϦͰରԠ͢Δࡍͷݕ౼߲໨ɿPrivacy manifests ͷඞཁ༗ແ ɹɹऩू͢Δσʔλͷఆٛ͸ඞཁ͔ʁ • ✅ YESɿϓϥΠόγʔσʔλΛѻ͍ͬͯΔͨΊ • ରԠɿΞϓϦ͝ͱʹ manifests

    ʹऩू͢ΔσʔλΛఆٛ͠ɺϏϧυ͢Δ
 ʢΞϓϦ਺͕ଟ͘ख࡞ۀ͸ݫ͍ͨ͠ΊɺϏϧυࣗಈԽʹ૊ΈࠐΉ͜ͱΛ ݕ౼தʣ
  26. ϠϓϦͰରԠ͢Δࡍͷݕ౼߲໨ɿPrivacy manifests ͷඞཁ༗ແ ɹɹRequired Reason APIs ͷఆٛ͸ඞཁ͔ʁ • ✅ YESɿUserDefaults

    ͳͲ֘౰͢Δ API Λ࢖༻͍ͯ͠ΔͨΊ • ରԠɿ࢖༻͢Δ API Λఆٛ͠ɺͦΕͧΕͷ࢖༻໨తΛ֬ೝɾఆٛ͢Δ
  27. ϠϓϦͰରԠ͢Δࡍͷݕ౼߲໨ɿ·ͱΊ Privacy manifests ͸ඞཁ͔ʁ ऩू͢Δσʔλͷఆٛ͸ඞཁ͔ʁ Required Reason APIs ͷఆٛ͸ඞཁ͔ʁ τϥοΩϯάͷఆٛ͸ඞཁ͔ʁ

    ίʔυॺ໊Λ͢΂͖͔ʁ ✅ YES ✅ YES ✅ YES 🤔 ݕ౼த
 ʢ͕͓ͩͦΒ͘YESʣ 🙅 ϠϓϦͷΞϓϦ͸NO
 ʢ͕֤ͩछ SDK ͷରԠ֬ೝɾඞཁʹ Ԡͯ͡ΞοϓσʔτରԠ͕ඞཁʣ
  28. ͨͩ͠·ͩෆ໌఺ɾվળཁ๬΋͋Γɾɾɾ • ͨͩ͠·ͩෆ໌఺΋ɾɾɾ🤔 • Q: Ͳͷ SDK ͕ Privacy Impacting

    SDKs ʹ֘౰͢Δͷ͔ʁ • → Apple ͕υΩϡϝϯτΛެ։͢Δ·Ͱ଴ͪ • Q: Ͳͷ୯ҐͰ Privacy manifests Λอ࣋͢΂͖ͳͷ͔ʁ • վળͯ͠΄͍͜͠ͱ΋ɾɾɾ🙏 • Q: Privacy manifests ΛݩʹɺApp Store Connect ͷ App Privacy ΛࣗಈͰೖྗ ͯ͘͠Εͳ͍ͷ͔ʁ
  29. ରԠࣄ߲ ΞϓϦ։ൃऀ SDK ։ൃऀ ऩू͢Δσʔλͷఆٛ ˚ ʢApple ͕ఆΊΔ
 ϓϥΠόγʔσʔλΛѻ͏৔߹ʣ ˚

    ʢApple ͕ఆΊΔ
 ϓϥΠόγʔσʔλΛѻ͏৔߹ʣ Required Reason API ͷఆٛ ˚ ʢRequired Reason API Λ ࢖༻͢Δ৔߹ʣ ˚ ʢRequired Reason API Λ ࢖༻͢Δ৔߹ʣ τϥοΩϯάυϝΠϯͷఆٛ ˚ ʢτϥοΩϯάΛߦ͏৔߹ʣ ˚ ʢτϥοΩϯάΛߦ͏৔߹ʣ ίʔυॺ໊ X
 ʢΞϓϦͰ࢖༻͍ͯ͠Δ SDK ʹ
 Ԡͯ͡ରԠ͕ඞཁʣ ˚ ʢPrivacy-Impacting SDKs ʹ
 ֘౰͢Δ৔߹ʣ དྷ೥य़·ͰͷϓϥΠόγʔରԠ·ͱΊ ɿඞཁɹɹɹɿ৔߹ʹΑͬͯඞཁɹɹXɿෆཁ
  30. ຊτʔΫͷ·ͱΊ • Apple ʹΑΔϓϥΠόγʔपΓͷن੍͸೥ʑڧ·͍ͬͯΔ • ظݶ͕ܾ·͍ͬͯΔɺ͔ͭεςʔΫϗϧμʔ͕ଟ͘ͳΓ͕ͪͳͷͰɺૣΊૣΊͷରԠΛ • Transparency and control

    पΓͷҎԼͷରԠ͕ɺདྷ೥य़·Ͱʹඞཁ • Privacy manifestsʢΞϓϦ/ SDK ։ൃऀʣ • ίʔυॺ໊ʢSDK ։ൃऀʣ • ࠓ೥΋ATTͷ࣌΄ͲͰ͸ͳ͍ͱ͸͍͑ɺӨڹ͸େ͖ͦ͏