Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«iOS. ΠŸΡ€ΠΈΠ΅ΠΌΡ‹ программирования». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 82

Автор Π’Π°Π½Π΄Π°Π΄ Нахавандипур

ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ security Π² ΠΎΠΊΠ½Π΅ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π° для Π²Ρ‹Π±ΠΎΡ€ΠΊΠΈ Ρ€ΠΎΠ²Π½ΠΎ Ρ‚ΠΎΠΉ ΠΆΠ΅ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ. Если ввСсти Π² ΠΎΠΊΠ½Π΅ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ:


security find-generic-password β€” help


Ρ‚ΠΎ получится ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Ρ‚Π°ΠΊΠΎΠΉ Π²Ρ‹Π²ΠΎΠ΄:


Usage: find-generic-password [-a account] [-s service]

[options…] [-g] [keychain…]

β€” a Match Β«accountΒ» string

β€” c Match Β«creatorΒ» (four-character code)

β€” C Match Β«typeΒ» (four-character code)

β€” D Match Β«kindΒ» string

β€” G Match Β«valueΒ» string (generic attribute)

β€” j Match Β«commentΒ» string

β€” l Match Β«labelΒ» string

β€” s Match Β«serviceΒ» string

β€” g Display the password for the item found

β€” w Display only the password on stdout

If no keychains are specified to search, the default search list is used.

Find a generic password item.


Π˜Ρ‚Π°ΠΊ, Ссли ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Π΅ security Ρ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌΡ‹Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΎΠ΄ΠΈΠ½ Π·Π° Π΄Ρ€ΡƒΠ³ΠΈΠΌ, Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ свойства ΠΈΠ½Ρ‚Π΅Ρ€Π΅ΡΡƒΡŽΡ‰Π΅Π³ΠΎ вас пароля (см. рис. 8.3):


security find-generic-password

β€” a Β«AirPortΒ»

β€” s Β«com.apple.network.wlan.ssid.206-NETΒ»

β€” D Β«AirPort network passwordΒ»

β€” l Β«206-NETΒ»

β€” g login.keychain


Как Π±Ρ‹Π»ΠΎ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Ρ€Π°Π½Π΅Π΅, ΠΊΠΎΠΌΠ°Π½Π΄Π° β€” g запросит ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ security ΠΎΡ‚ΠΎΠ±Ρ€Π°Π·ΠΈΡ‚ΡŒ ΠΏΠ°Ρ€ΠΎΠ»ΡŒ, ассоциированный с ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΌ элСмСнтом (ΠΏΡ€ΠΈ Π½Π°Π»ΠΈΡ‡ΠΈΠΈ Ρ‚Π°ΠΊΠΎΠ³ΠΎ пароля). Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, послС Π²Π²ΠΎΠ΄Π° этой ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² ΠΎΠΊΠ½ΠΎ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π° Π²Π°ΠΌ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΎ ввСсти ΠΏΠ°Ρ€ΠΎΠ»ΡŒ ΠΊ вашСй ΡƒΡ‡Π΅Ρ‚Π½ΠΎΠΉ записи ΠΏΠ΅Ρ€Π΅Π΄ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ΅Π½ΠΈΠ΅ΠΌ Ρ€Π°Π±ΠΎΡ‚Ρ‹. Аналогичным ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΌΡ‹ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π»ΠΈ ΠΏΠ°Ρ€ΠΎΠ»ΡŒ ΠΊ ΡƒΡ‡Π΅Ρ‚Π½ΠΎΠΉ записи, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ‚ΠΎΠ±Ρ€Π°Π·ΠΈΡ‚ΡŒ ΠΏΠ°Ρ€ΠΎΠ»ΡŒ Π½Π° рис. 8.3.

Π’ iOS, ΠΏΡ€ΠΈΡ‚ΠΎΠΌ Ρ‡Ρ‚ΠΎ Π²ΠΎ всСй ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмС примСняСтся Сдиная глобальная ΠΎΠ±Π»Π°ΡΡ‚ΡŒ дСйствия связки ΠΊΠ»ΡŽΡ‡Π΅ΠΉ, ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ всС Ρ€Π°Π²Π½ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ ΠΈ Π·Π°ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ лишь Π½Π° нСбольшом экранированном участкС связки ΠΊΠ»ΡŽΡ‡Π΅ΠΉ (ΠΏΠΎ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡƒ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π² пСсочницС). Π”Π²Π° прилоТСния, написанныС ΠΎΠ΄Π½ΠΈΠΌ ΠΈ Ρ‚Π΅ΠΌ ΠΆΠ΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠΌ (ΠΈ подписанныС ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΌ ΠΏΡ€ΠΎΡ„ΠΈΠ»Π΅ΠΌ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ с ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈ Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ ΠΏΠΎΡ€Ρ‚Π°Π»Π° для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π² iOS), ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ доступ ΠΊ ΠΎΠ±Ρ‰Π΅ΠΉ раздСляСмой области связки ΠΊΠ»ΡŽΡ‡Π΅ΠΉ, Π½ΠΎ ΠΏΡ€ΠΈ этом ΡΠΎΡ…Ρ€Π°Π½ΡΡŽΡ‚ ΠΈ собствСнный ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½Ρ‹ΠΉ доступ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΊ своСй связкС ΠΊΠ»ΡŽΡ‡Π΅ΠΉ. Π˜Ρ‚Π°ΠΊ, Π΄Π²Π° прилоТСния, App X ΠΈ App Y, написанныС ΠΎΠ΄Π½ΠΈΠΌ ΠΈ Ρ‚Π΅ΠΌ ΠΆΠ΅ iOS-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠΌ, ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ областям связки ΠΊΠ»ΡŽΡ‡Π΅ΠΉ.

β€’ App X β€” ΠΊ области связки ΠΊΠ»ΡŽΡ‡Π΅ΠΉ прилоТСния App X.

β€’ App Y β€” ΠΊ области связки ΠΊΠ»ΡŽΡ‡Π΅ΠΉ прилоТСния App Y.

β€’ ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ App X ΠΈ App Y ΠΎΠ±Π»Π°Π΄Π°ΡŽΡ‚ доступом ΠΊ ΠΎΠ±Ρ‰Π΅ΠΌΡƒ раздСляСмому участку связки ΠΊΠ»ΡŽΡ‡Π΅ΠΉ (с ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ Π³Ρ€ΡƒΠΏΠΏ доступа, Ссли программист ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ сконфигурируСт Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ для этого прилоТСния).

β€’ App X Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΈΠ· связки ΠΊΠ»ΡŽΡ‡Π΅ΠΉ прилоТСния App Y, Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ App Y Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ прилоТСния App X.


ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Π°Ρ систСма iOS просматриваСт Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ прилоТСния, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Ρ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌΡ‹ΠΉ Ρ‚ΠΈΠΏ доступа. Π Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ для ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΊΠΎΠ΄ΠΈΡ€ΡƒΡŽΡ‚ΡΡ Π² ΠΏΡ€ΠΎΡ„ΠΈΠ»Π΅ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ использовался ΠΏΡ€ΠΈ подписывании прилоТСния. Допустим, ΠΌΡ‹ создали Π½ΠΎΠ²Ρ‹ΠΉ ΠΏΡ€ΠΎΡ„ΠΈΠ»ΡŒ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ KeychainTest_Dev.mobileprovision. Π­Ρ‚ΠΎΡ‚ ΠΏΡ€ΠΎΡ„ΠΈΠ»ΡŒ Π±Ρ‹Π» Ρ€Π°Π·ΠΌΠ΅Ρ‰Π΅Π½ Π½Π° Π Π°Π±ΠΎΡ‡Π΅ΠΌ столС. Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·Π²Π»Π΅Ρ‡ΡŒ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ Π΄Π°Π½Π½ΠΎΠΌΡƒ ΠΏΡ€ΠΎΡ„ΠΈΠ»ΡŽ, Π²ΠΎΡ‚ Ρ‚Π°ΠΊ:


cd ~/Desktop


Π­Ρ‚Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° Π²Ρ‹Π²Π΅Π΄Π΅Ρ‚ вас Π½Π° Π Π°Π±ΠΎΡ‡ΠΈΠΉ стол. Π£ΠΆΠ΅ здСсь Π½ΡƒΠΆΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΈΠ· профиля ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ:


security cms β€” D -i KeychainTest_Dev.mobileprovision | grep β€” A12 Β«EntitlementsΒ»

Показанная здСсь ΠΊΠΎΠΌΠ°Π½Π΄Π° security Π΄Π΅ΠΊΠΎΠ΄ΠΈΡ€ΡƒΠ΅Ρ‚ вСсь ΠΏΡ€ΠΎΡ„ΠΈΠ»ΡŒ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ, послС Ρ‡Π΅Π³ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π° grep просмотрит Ρ€Π°Π·Π΄Π΅Π» Entitlements (Π Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ) Π² ΠΏΡ€ΠΎΡ„ΠΈΠ»Π΅ ΠΈ считаСт 12 строк тСкста ΠΎΡ‚ Π½Π°Ρ‡Π°Π»Π° этого Ρ€Π°Π·Π΄Π΅Π»Π°. Если Π² вашСм Ρ€Π°Π·Π΄Π΅Π»Π΅ с Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡΠΌΠΈ содСрТится большС ΠΈΠ»ΠΈ мСньшС тСкста, Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ β€” A12.

Π’Ρ‹Π²ΠΎΠ΄ этой ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ Π² зависимости ΠΎΡ‚ вашСго профиля:


<key>Entitlements</key>

<dict>

<key>application-identifier</key>

<string>F3FU372W5M.com.pixolity.ios.cookbook.KeychainTest</string>

<key>com.apple.developer.default-data-protection</key>

<string>NSFileProtectionComplete</string>

<key>get-task-allow</key>

<true/>

<key>keychain-access-groups</key>

<array>

<string>F3FU372W5M.*</string>

</array>

</dict>


Π‘Π°ΠΌΡ‹ΠΉ Π²Π°ΠΆΠ½Ρ‹ΠΉ Ρ€Π°Π·Π΄Π΅Π», ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ нас здСсь интСрСсуСт, называСтся keychain-access-groups. Π—Π΄Π΅ΡΡŒ ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ Π³Ρ€ΡƒΠΏΠΏΡ‹ доступа ΠΊ нашим элСмСнтам ΠΈΠ· связки ΠΊΠ»ΡŽΡ‡Π΅ΠΉ. Π­Ρ‚ΠΎ Π³Ρ€ΡƒΠΏΠΏΠΎΠ²ΠΎΠΉ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ для всСх ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹Ρ… ΠΎΠ΄Π½ΠΈΠΌ ΠΈ Ρ‚Π΅ΠΌ ΠΆΠ΅ программистом. Π—Π΄Π΅ΡΡŒ F3FU372W5M β€” это ΠΌΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Π½Ρ‹ΠΉ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ с ΠΏΠΎΡ€Ρ‚Π°Π»Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ для iOS. Π˜Π΄ΡƒΡ‰ΠΈΠΉ Π΄Π°Π»Π΅Π΅ астСриск ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, Π² ΠΊΠ°ΠΊΠΈΠ΅ Π³Ρ€ΡƒΠΏΠΏΡ‹ доступа я ΠΌΠΎΠ³Ρƒ ΠΏΠΎΠ·ΠΆΠ΅ ΠΏΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ Ρ‚Π΅ элСмСнты, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ трСбуСтся Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π² Π·Π°Ρ‰ΠΈΡ‰Π΅Π½Π½ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅. Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС астСриск ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ Π»ΡŽΠ±ΡƒΡŽ Π³Ρ€ΡƒΠΏΠΏΡƒ. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ это ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ доступ ΠΊ элСмСнтам связок ΠΊΠ»ΡŽΡ‡Π΅ΠΉ любого прилоТСния, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½ΠΎ Ρ‡Π»Π΅Π½Π°ΠΌΠΈ Π²Ρ‹ΡˆΠ΅ΡƒΠΏΠΎΠΌΡΠ½ΡƒΡ‚ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹. НС Π²ΠΎΠ»Π½ΡƒΠΉΡ‚Π΅ΡΡŒ, Ссли ΠΏΠΎΠΊΠ° Π½Π΅ совсСм ΡƒΠ»Π°Π²Π»ΠΈΠ²Π°Π΅Ρ‚Π΅ ΡΡƒΡ‚ΡŒ. Π’ этой Π³Π»Π°Π²Π΅ Π²Ρ‹ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ ΠΈΠ·ΡƒΡ‡ΠΈΡ‚Π΅ Ρ‚Π΅ΠΌΡƒ бСзопасности Π² iOS, Π² частности, ΠΊ ΠΊΠΎΠ½Ρ†Ρƒ Π³Π»Π°Π²Ρ‹ Π±ΡƒΠ΄Π΅Ρ‚Π΅ Π·Π½Π°Ρ‚ΡŒ всС Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΠ΅ ΠΎΠ± использовании связок ΠΊΠ»ΡŽΡ‡Π΅ΠΉ Π² iOS.

Π‘ΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊ Π²Π°ΡˆΠ΅ΠΌΡƒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡŽ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ Security (Π‘Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ), ΠΏΠ΅Ρ€Π΅Π΄ Ρ‚Π΅ΠΌ ΠΊΠ°ΠΊ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΊ ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΡŽ Ρ€Π°Π·Π΄Π΅Π»ΠΎΠ² этой Π³Π»Π°Π²Ρ‹. Π‘ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ ΠΏΡ€ΠΈΠ΅ΠΌΠΎΠ², описанных Π² Π΄Π°Π½Π½ΠΎΠΉ Π³Π»Π°Π²Π΅, Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ со слуТбами связки ΠΊΠ»ΡŽΡ‡Π΅ΠΉ Π² iOS, Π° для этого Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ° Security. Π’ iOS SDK 7 появилась концСпция ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Ссли Π²Ρ‹ просто ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚Π΅ ΠΎΠ±ΠΎΠ±Ρ‰Π°ΡŽΡ‰ΠΈΠΉ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ° бСзопасности Π² ваш ΠΏΡ€ΠΎΠ΅ΠΊΡ‚, LLVM сам свяТСт вашС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ с Π½ΡƒΠΆΠ½Ρ‹ΠΌ ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΌ бСзопасности β€” Π΄Π΅Π»Π°Ρ‚ΡŒ это Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ Π½Π΅ придСтся. Π’Π°ΠΌ всСго лишь понадобится Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π² настройках сборки Π°ΠΊΡ‚ΠΈΠ²ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π° функция Enable Modules (Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ), Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ:


#import <Security/Security.h>


Π’ Xcode 5 Ρ‚Π°ΠΊΠΆΠ΅ появилась ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° «возмоТностСй» (Capabilities). Π­Ρ‚ΠΎ новая Π²ΠΊΠ»Π°Π΄ΠΊΠ°, располоТСнная рядом с Π²ΠΊΠ»Π°Π΄ΠΊΠΎΠΉ Build Settings (Настройки сборки). Π—Π΄Π΅ΡΡŒ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ с Π»Π΅Π³ΠΊΠΎΡΡ‚ΡŒΡŽ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΊ Π²Π°ΡˆΠ΅ΠΌΡƒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡŽ ΠΈ Π΄Π°ΠΆΠ΅ Π°ΠΊΡ‚ΠΈΠ²ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ связку ΠΊΠ»ΡŽΡ‡Π΅ΠΉ Π±Π΅Π· особых Ρ…Π»ΠΎΠΏΠΎΡ‚. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, работая Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π²Ρ‹ тСряСтС доступ практичСски ΠΊΠΎ всСм дСталям ΠΈ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ собствСнныС ΠΏΡ€ΠΎΡ„ΠΈΠ»ΠΈ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ. Π’ вашСм распоряТСнии Π±ΡƒΠ΄ΡƒΡ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π΄ΠΆΠΎΠΊΠ΅Ρ€Π½Ρ‹Π΅ ΠΏΡ€ΠΎΡ„ΠΈΠ»ΠΈ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ ΠΌΡ‹ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π½Π΅ ΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡΡ, рСализуя Π² прилоТСниях ΠΏΡƒΡˆ-увСдомлСния ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ возмоТности. Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΡŽ хотя Π±Ρ‹ ΠΏΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡ‚ΡŒΡΡ с этой Π½ΠΎΠ²ΠΎΠΉ Π²ΠΊΠ»Π°Π΄ΠΊΠΎΠΉ. ΠŸΡ€ΠΎΡΡ‚ΠΎ Ρ‰Π΅Π»ΠΊΠ½ΠΈΡ‚Π΅ Π½Π° Ρ„Π°ΠΉΠ»Π΅ с вашим ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠΌ Π² Xcode, посмотритС Π½Π° ΠΏΡ€Π°Π²ΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ экрана ΠΈ Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ Capabilities (ВозмоТности). Π—Π°Ρ‚Π΅ΠΌ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ iCloud ΠΈ Keychain Access.

8.1. ΠžΠ±Π΅ΡΠΏΠ΅Ρ‡Π΅Π½ΠΈΠ΅ бСзопасности ΠΈ Π·Π°Ρ‰ΠΈΡ‚Ρ‹ Π² прилоТСниях

ΠŸΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΊΠ° Π·Π°Π΄Π°Ρ‡ΠΈ

ВрСбуСтся ΡΠΎΡ…Ρ€Π°Π½ΡΡ‚ΡŒ значСния Π² связкС ΠΊΠ»ΡŽΡ‡Π΅ΠΉ ΠΈ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ бСзопасноС Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ….

РСшСниС

Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ ΠΏΡ€ΠΎΡ„ΠΈΠ»ΡŒ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π°ΠΊΡ‚ΠΈΠ²ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π° Π·Π°Ρ‰ΠΈΡ‚Π° Ρ„Π°ΠΉΠ»ΠΎΠ².

ΠžΠ±ΡΡƒΠΆΠ΄Π΅Π½ΠΈΠ΅

ΠŸΡ€ΠΎΡ„ΠΈΠ»ΠΈ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ, ΡƒΠΆΠ΅ ΡƒΠΏΠΎΠΌΠΈΠ½Π°Π²ΡˆΠΈΠ΅ΡΡ Ρ€Π°Π½Π΅Π΅ (см. Ρ€Π°Π·Π΄Π΅Π» 8.0), содСрТат Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ. Π Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ систСмС iOS, ΠΊΠ°ΠΊ вашС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ возмоТности бСзопасности, прСдоставляСмыС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмой. Π’ эмуляторС iOS ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΊΠΎΠ΄ Π±Π΅Π· подписи (отсутствуСт этап, Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹ΠΉ code signing), ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈ Π±ΡƒΠ΄ΡƒΡ‚ Π»ΠΈΡˆΠ΅Π½Ρ‹ смысла. Но ΠΏΡ€ΠΈ ΠΎΡ‚Π»Π°Π΄ΠΊΠ΅ прилоТСния ΠΈΠ»ΠΈ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠ΅ Π΅Π³ΠΎ Π² App Store Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±ΡƒΠ΄Π΅Ρ‚Π΅ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ подписано ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½Ρ‹ΠΌ ΠΏΡ€ΠΎΡ„ΠΈΠ»Π΅ΠΌ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ для схСм Debug (ΠžΡ‚Π»Π°Π΄ΠΊΠ°) ΠΈ Release (Выпуск).

Π― ΠΏΡ€ΠΎΠ΄Π΅ΠΌΠΎΠ½ΡΡ‚Ρ€ΠΈΡ€ΡƒΡŽ всС шаги, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ для создания Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ профиля Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΡ€ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΠΏΠΈΡˆΡƒ ΠΏΡ€ΠΎΡ„ΠΈΠ»ΠΈ Ad Hoc ΠΈ App Store. Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ шаги, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π²Π°Π»ΠΈΠ΄Π½Ρ‹ΠΉ ΠΏΡ€ΠΎΡ„ΠΈΠ»ΡŒ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ для Ρ†Π΅Π»Π΅ΠΉ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ (с ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ). Он Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ с прилоТСниями, Π½Π°Π΄ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π² Π΄Π°Π½Π½ΠΎΠΉ Π³Π»Π°Π²Π΅. НачнСм с создания ID прилоТСния.

ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ‚ΡΡ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΡƒΠΆΠ΅ создали для сСбя Π²Π°Π»ΠΈΠ΄Π½Ρ‹Π΅ сСртификаты Π½Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ ΠΈ распространСниС прилоТСния.

1. ΠŸΠ΅Ρ€Π΅ΠΉΠ΄ΠΈΡ‚Π΅ Π² iOS Dev Center ΠΈ Π²ΠΎΠΉΠ΄ΠΈΡ‚Π΅ Π² систСму ΠΏΠΎΠ΄ своими ΠΈΠΌΠ΅Π½Π΅ΠΌ ΠΈ ΠΏΠ°Ρ€ΠΎΠ»Π΅ΠΌ.

2. ΠΠ°ΠΉΠ΄ΠΈΡ‚Π΅ Ρ€Π°Π·Π΄Π΅Π» iOS Development Program (ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ для iOS) ΠΈ Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ Certificates, Identifiers & Profiles (Π‘Π΅Ρ€Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚Ρ‹, ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ ΠΈ ΠΏΡ€ΠΎΡ„ΠΈΠ»ΠΈ).

3. ΠΠ°ΠΉΠ΄ΠΈΡ‚Π΅ Π² Π»Π΅Π²ΠΎΠΉ части экрана ΠΎΠ±Π»Π°ΡΡ‚ΡŒ App IDs (Π˜Π΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ) ΠΈ Π½Π°ΠΆΠΌΠΈΡ‚Π΅ ΠΊΠ½ΠΎΠΏΠΊΡƒ +, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ Ρ‚Π°ΠΊΠΎΠΉ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€.

4. Π’ области Name (Имя) Π²Π²Π΅Π΄ΠΈΡ‚Π΅ имя Security App. На самом Π΄Π΅Π»Π΅ здСсь ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ любоС имя, Π½ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ ΠΏΡƒΡ‚Π°Π½ΠΈΡ†Ρ‹ Π² этой Π³Π»Π°Π²Π΅, Π»ΡƒΡ‡ΡˆΠ΅ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π΄Π°Π½Π½Ρ‹ΠΌ ΠΈΠΌΠ΅Π½Π΅ΠΌ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ я Π±ΡƒΠ΄Ρƒ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ Π² ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ….