Slide 1

Slide 1 text

ݸਓ৘ใΛѻ͏ΞϓϦͱ҉߸Խʹ͍ͭͯ iOSDC 2017 Talk

Slide 2

Slide 2 text

ࣗݾ঺հ • ࢛ํɹ༟ʢγΧλ ώϩγʣ • Sansanגࣜձࣾॴଐ • ๏ਓ޲໊͚ࢗ؅ཧΞϓϦʰSansanʱͷ։ൃνʔϜϦʔμʔ ݉iOSΞϓϦ։ൃΤϯδχΞ • ݩւ্ࣗӴୂһ • ݸਓ৘ใอޢ࢜

Slide 3

Slide 3 text

લஈ • ࣗࣾαʔϏεͷձࣾ • BtoB • ݸਓ৘ใΛѻ͏ΞϓϦͱ҉߸Խͷ͓࿩ • ։ൃνʔϜϦʔμʔࢹ఺

Slide 4

Slide 4 text

ࠓ೔ͷΞδΣϯμ • ݸਓ৘ใอޢ͕࢜ޠΔݸਓ৘ใʹ͍ͭͯ • iOSΞϓϦͷ҉߸ԽͰؾΛ͚ͭΔϙΠϯτ • BtoBΞϓϦͷέʔεελσΟ

Slide 5

Slide 5 text

Έͳ͞ΜͷΞϓϦͰ͸ ݸਓ৘ใΛѻ͍ͬͯ·͔͢ʁ

Slide 6

Slide 6 text

ͦ΋ͦ΋ݸਓ৘ใͱ͸?

Slide 7

Slide 7 text

ݸਓ৘ใͱ͸ • ੜଘ͢Δݸਓͷ৘ใ • ಛఆͷݸਓΛࣝผ͢Δ͜ͱ͕Ͱ͖Δ΋ͷ ‣ 1ͭͰ͸ݸਓΛࣝผͰ͖ͳͯ͘΋ɺଞͷ৘ใ ͱ߹ΘͤΔ͜ͱͰݸਓͷࣝผ͕ՄೳʹͳΔ ΋ͷ΋ݸਓ৘ใ

Slide 8

Slide 8 text

ྫ͑͹

Slide 9

Slide 9 text

• ࢯ໊ • ϝʔϧΞυϨε • ೥ྸ • ੑผ • ॅॴ • ి࿩൪߸ • إࣸਅೖΓͷΞΠίϯը૾ • Ґஔ৘ใ ~ͳͲͷ૊Έ߹Θͤ

Slide 10

Slide 10 text

ͳͥΞϓϦͰݸਓ৘ใΛकΔͷ͔ʁ • ݸਓ৘ใऔѻࣄۀऀ͸ݸਓ৘ใΛ؅ཧ͢Δٛ຿ ͕͋Δ • ݸਓ৘ใྲྀग़ͳͲͷϦεΫ • اۀ͕ΞϓϦΛಋೖ͢ΔࡍͷηΩϡϦςΟج४ ΛΫϦΞͰ͖ͳ͍ ‣ αʔϏεͷར༻֦େνϟϯεΛಀ͢

Slide 11

Slide 11 text

ΞϓϦͰ҉߸Խͯ͠कΔ΂͖΋ͷ

Slide 12

Slide 12 text

ΞϓϦͰ҉߸Խͯ͠कΔ΂͖΋ͷ • WebAPI΍WebViewͳͲͷ௨৴ • ϩʔΧϧʹอଘ͢ΔϑΝΠϧ΍σʔλ

Slide 13

Slide 13 text

WebAPI΍WebViewͳͲͷ௨৴ • SSL௨৴Λ࢖ͬͯ௨৴಺༰Λ҉߸Խ͢Δ • ϓϩΩγΛར༻ͨ͠தؒऀ߈ܸͳͲ΋͋Δ ͷͰ100%Ͱ͸ͳ͍ • ΞϓϦଆͰ͸։ൃ࣌ʹATSΛແޮʹ͢Δઃఆ ͳͲ͕ϓϩμΫγϣϯʹೖΒͳ͍Α͏஫ҙ

Slide 14

Slide 14 text

ϩʔΧϧʹอଘ͢ΔϑΝΠϧ΍σʔλ • ՄೳͰ͋Ε͹ݸਓ৘ใ͸ۃྗϩʔΧϧʹอଘ ͠ͳ͍͜ͱ͕๬·͍͠ ‣ ͔͠͠ɺΦϑϥΠϯ࣌ͰͷΞϓϦར༻΍ɺ σʔλऔಘʹ͕͔͔࣌ؒΔ৔߹ͳͲɺརศ ੑͷͨΊʹϩʔΧϧʹஔ͔͟ΔΛಘͳ͍έʔ ε͕͋Δ

Slide 15

Slide 15 text

ϩʔΧϧʹอଘ͢ΔϑΝΠϧʹ͍ͭͯ • iOSΞϓϦ͸αϯυϘοΫεߏ଄ • جຊతʹଞͷ App ʹ͔Βɺอଘͨ͠ϑΝΠϧ ʹΞΫηε͞ΕΔ͜ͱ͸ͳ͍ • iOS8.3͔Βݫ֨Խ͞Εͨ • Appάϧʔϓͷڞ༗ίϯςφͳͲྫ֎΋͋Δ

Slide 16

Slide 16 text

ϩʔΧϧʹอଘ͢ΔϑΝΠϧʹ͍ͭͯ - ϑΝΠϧ࡞੒ ϑΝΠϧอޢͷछྨ extension FileProtectionType { @available(iOS 4.0, *) public static let none: FileProtectionType @available(iOS 4.0, *) public static let complete: FileProtectionType @available(iOS 5.0, *) public static let completeUnlessOpen: FileProtectionType @available(iOS 5.0, *) public static let completeUntilFirstUserAuthentication: FileProtectionType } // ϑΝΠϧอޢͳ͠ // ୺຤ͷϩοΫ࣌ʹ҉߸Խ // ʢϑΝΠϧΛopenͨ͠ঢ়ଶͷ৔߹Λআ͖ʣ୺຤ͷϩοΫ࣌ʹ҉߸Խ // ୺຤ͷϩοΫ͔࣌ΒϢʔβ͕ϩοΫղআ͢Δ·Ͱ҉߸Խ

Slide 17

Slide 17 text

ϩʔΧϧʹอଘ͢ΔϑΝΠϧʹ͍ͭͯ - ϑΝΠϧ࡞੒ iOS 7Ҏ߱ɺΞϓϦͷϑΝΠϧ࡞੒࣌ͷσϑΥϧτ͸҉߸Խ͕ઃఆ͞ Ε͍ͯΔ try FileManager.default.createFile(atPath: filePath, contents: nil, attributes: nil) __C.FileAttributeKey(_rawValue: NSFileProtectionKey): NSFileProtectionCompleteUntilFirstUserAuthentication ʢϑΝΠϧ࡞੒ʣ ʢϩάͰϑΝΠϧଐੑΛ֬ೝʣ

Slide 18

Slide 18 text

ϩʔΧϧʹอଘ͢ΔϑΝΠϧʹ͍ͭͯ - Data Protection ΞϓϦશମͰϑΝΠϧอޢΛ༗ޮʹ͢Δ ʢXcodeʣ ʢAppleDeveloperʣ

Slide 19

Slide 19 text

ϩʔΧϧʹอଘ͢ΔϑΝΠϧʹ͍ͭͯ - Data Protection Data ProtectionΛ༗ޮʹͯ͠ϑΝΠϧΛ࡞੒͢ΔͱσϑΥϧτ͕มΘ Δ try FileManager.default.createFile(atPath: filePath, contents: nil, attributes: nil) __C.FileAttributeKey(_rawValue: NSFileProtectionKey): NSFileProtectionComplete ʢϑΝΠϧ࡞੒ʣ ʢϩάͰϑΝΠϧଐੑΛ֬ೝʣ

Slide 20

Slide 20 text

ϩʔΧϧʹอଘ͢ΔϑΝΠϧʹ͍ͭͯ • CommonCryptoͳͲΛ࢖ͬͯࣗྗͰ҉߸Խ/ ෮߸Խ͢Δ͜ͱ΋Ͱ͖Δ • ҉߸Խ/෮߸ԽͷύϑΥʔϚϯεʹ஫ҙ • ҉߸Խ/෮߸Խʹ࢖͏ൿີ伴ΛͲ͜ʹஔ͔͕͘ ໰୊ʹ

Slide 21

Slide 21 text

ϩʔΧϧʹอଘ͢Δσʔλ • KeyChainαʔϏε ‣ σʔλΛOSʹ༬͔ͬͯ΋Β͑Δ ‣ ಉ͡σϕϩούͷ App ؒͰ͋Ε͹ڞ༗Ͱ͖Δ ‣ ΞϓϦΛΞϯΠϯετʔϧͯ͠΋ফ͑ͳ͍ ‣ େ͖ͳαΠζͷσʔλ͸ѻ͑ͳ͍ • UserDefaults ‣ ࣮ࡍ͸plistʹอଘ͞Ε͍ͯΔͷͰϑΝΠϧͱಉ͡

Slide 22

Slide 22 text

ϩʔΧϧʹอଘ͢Δσʔλ- Database - • CoreData ‣ ϑΝΠϧͷ҉߸Խ • Realm ‣ ҉߸Խػೳ͕͋Δ • FMDB/SQLite ‣ SQLCipherʢϥΠϒϥϦʣͰ҉߸Խ

Slide 23

Slide 23 text

BtoBΞϓϦͷέʔεελσΟ

Slide 24

Slide 24 text

BtoBͰ׮༰ͩͬͨͱ͜Ζ • ϩʔΧϧʹஔ͔ͳ͍Α͏ʹ͓͚ͯ͠͹େମΫϦΞͰ͖Δ • MDM΍iCloudͷϦϞʔτϫΠϓͳͲ͕ͪΌΜͱઃఆ/؅ ཧ͞Ε͍ͯΔͱ͜Ζ΋͋Δ • ʮར༻ޙ͸ຖճϩάΞ΢τ͢Δʯͱ͍ͬͨӡ༻͕औΒΕ ͍ͯͨΓ͢Δ • Jailbreak΍ύείʔυϩοΫະઃఆͳͲ͸࿦֎

Slide 25

Slide 25 text

BtoBͷγϏΞͳͱ͜Ζ • େاۀ΍ಛఆͷۀք • શࣾಋೖϞσϧ ‣ اۀ಺ͷશར༻ऀʹ؅ཧ͕ߦ͖ಧ͔ͳ͍ͨ ΊɺΞϓϦଆʹ഑ྀ͕ٻΊΒΕΔ • BYODʢඇMDMʣ͕࠾༻͞Ε͍ͯΔέʔε

Slide 26

Slide 26 text

ࢀߟ • ʰiOSͷηΩϡϦςΟʱ ‣ AppleͷϗϫΠτϖʔύʔ ‣ https://images.apple.com/jp/business- docs/iOS_Security_Guide.pdf