Конфиденциальность и безопасность наших данных это то, что имеет большое значение для нас. Однако, не стоит забывать, что Apple — это большая корпорация, которая подчиняется законам и предоставляет пользовательские данные различным государственным органам, так же как Google, Microsoft и другие крупные компании. В последних обновлениях iOS 8 и OS X Yosemite было представлено несколько положительных изменений, касающихся конфиденциальности и безопасности данных, которые должны быть хорошо восприняты как пользователями, так и разработчиками.

Apple использует уникальный контроль над аппаратной составляющей своих продуктов, ПО и сервисами, чтобы предоставить пользователям наилучшую модель безопасности (детально об этом в iOS Security Paper. Кроме этого, они понимают и хотят, чтобы пользователи знали — их бизнес-модель не предусматривает использование и продажу вашей личной информации.


Компания хочет расширить свою пользовательскую базу, включая детей до 13 лет, поэтому они представили функцию Family Sharing, чтобы обеспечить безопасность личных данных детей. Также они хотят расширить свое влияние в корпоративном сегменте, с помощью Secure Enclave, Device Management и других мер безопасности.

Определение местоположения

х02

В iOS 8 были значительно обновлены API, работающие с определением местоположения через Core Location. Эти изменения касаются как разработчиков, так и обычных пользователей.

Новый тип разрешений “While In Use”

Теперь для того, чтобы получить доступ к определению местоположения пользователя приложения должны выдавать новый запрос “While [app is] In Use”.

Приложение сможет как повысить, так и понизить тип разрешения и будет выдавать запрос на подтверждение до тех пор, пока пользователь не запретит ему доступ. При этом разработчики смогут перенаправить пользователя в системные настройки прямо из своего приложения, вместо того, чтобы показывать пошаговые инструкции, как это было раньше.

Доступ к мониторингу местоположения

х03

Теперь вы четко будете видеть, что приложения, использующие тип разрешений “While In Use” определяют ваше местоположение, работая в фоне — этом случае в статусбаре будет указано имя приложения (он будет синего цвета, как при при использовании режима модема, записи аудио или во время звонка).

х04

Для нативных iOS-приложений это будет разрешено по умолчанию.

х05

Система будет информировать вас и контролировать приложения, использующие этот тип разрешений, показывая предупреждение, когда приложение в фоне попытается использовать ваше местоположение. В этом же предупреждении пользователь сможет либо позволить приложению использовать местоположение, либо запретить ему доступ.

Обязательное объяснение целей доступа

Для получения доступа к местоположению, у приложений должны быть веские основания, при этом они должны быть ясно изложены для пользователя и представлены в описании, иначе такие приложения будут отклонены цензорами App Store.

Все это направлено на сохранение неприкосновенности частной жизни пользователей — то, о чем так много говорили на WWDC. Восстановить утраченное доверие очень сложно и ничто так негативно не отразится на вашем бизнесе, как недоверие пользователей.

Технические детали

Как упоминалось выше, для использования Core Location и других API, обязательно добавлять в Info.plist строку описания цели (локализуемую) с типом разрешения.

Соответствующие ключи Info.plist выглядят следующим образом:

  • `NSLocationAlwaysUsageDescription`
  • `NSLocationWhenInUseUsageDescription`

У Core Location Manager теперь есть два новых метода блокирования, которые должны быть объявлены при использовании мониторинга местоположения (startUpdatingLocation и др.):

  • `requestAlwaysAuthorization`
  • `requestWhenInUseAuthorization`

Тип разрешений “When Is Use” не предоставляет доступ к:

  • мониторингу региона
  • глобальным изменениям местоположения
  • новым API Visits
  • инициации отслеживания вашего местоположения в фоне
  • фоновому обновлению контента

Вы можете ссылаться на новый экран настроек приватности в iOS, используя URL UIApplicationOpenSettingsURLString.

Камера

х06

Доступ к камере, также возможен только с согласия пользователя. С точки зрения разработчиков, это означает, что теперь им придется подумать, в какой момент отображать предупреждение с описанием целей приложения.

Технические детали

Новым классом, использующимся для описания целей доступа к камере является NSCameraUseDescription.

Доступ к камере вызовет диалог подтверждения и до тех пор, пока пользователь не даст свое согласие, приложение не получит никаких данных.

Контакты

х07

Доступ к Контактам также был изменен и теперь охватывает ситуации, когда вам нужно выбрать единственный контакт для отправки или приглашения друга.

Это отличное нововведение, поскольку теперь у вас будет меньше причин предоставлять сторонним приложениям доступ к вашему списку контактов. Также стоит отметить, что приложения видят всего лишь статическую копию контакта и не получат доступа ко всем будущим изменениям (как это происходит сейчас).

Теперь API Контактов поддерживает фильтрацию списка контактов. Это будет полезно, чтобы выделить из списка контакты, не содержащие email или по любому другому заданному условию.

Также теперь будет возможно запросить выборку только определенного типа данных, поскольку нет смысла показывать приложению номера телефонов, если ему нужен только email. Кроме того, данные можно фильтровать даже по значению, например только людей с почтой на @apple.com.

Такие методы фильтрации хороши для ограничения доступа к полной информации, которую получают приложения, а также для уменьшения беспорядка в несоответствующих свойствах.

Технические детали

Использование некоторых методов, как например ABPeoplePickerNavigationControllerDelegate, в будущих релизах iOS 8 не рекомендуется:

  • `peoplePickerNavigationController:shouldContinueAfterSelectingPerson:`
  • `peoplePickerNavigationController:shouldContinueAfterSelectingPerson:property:identifier:`

Другие (ABPeoplePickerNavigationController), будут заменены новыми:

  • `peoplePickerNavigationController:didSelectPerson:`
  • `peoplePickerNavigationController:didSelectPerson:property`

Также будет три новых свойства для настройки NSPredicates и фильтрации контактов:

  • `predicateForEnablingPerson` — определяет может ли контакт быть выбран или нет
  • `predicateForSelectionOfPerson` — выбирает указанное свойство или контакт в целом
  • `predicateForSelectionOfProperty` — определяет, какие из свойств могут быть отображены

Дети

х08

Apple уже предоставляет детям до 13 лет специальные учетные записи Game Center, позволяющие ограничить доступ к чату, псевдонимам, шэрингу фото и без рекламы. Родительский контроль также доступен и некоторые учебные заведения предоставляют студентам Apple ID, которые имеют разумные ограничения, такие как использование данных в целях рекламы.

х09

Теперь, благодаря Family Sharing в iOS 8, родители смогут создавать Apple ID для своих детей и делиться с ними купленным контентом.

Суть Family Sharing заключается в следующем:

  • Создание семейства Apple ID
  • Обмен всеми вашими покупками (приложения, книги и др.)
  • Запрос покупки —если ребенок нажимает «Купить», родители должны подтвердить запрос и купить приложение для них

Роль в пользовательском опыте

С функцией «Ask to Buy» все покупки внутри приложений получают неограниченное время для их подтверждения, поскольку родители должны одобрить покупку. Это касается любых приложений, поэтому разработчикам необходимо предусмотреть проверку статуса покупки или, возможно, запретить покупки, после определенного списания со счета. В этих случаях будет отображаться замок (как родительских ограничений, так и корпоративных).

Разработчики также должны будут предусмотреть ситуации, когда доступ «ограничен», в дополнение к тем, когда он «запрещен». Это значит, что не должно быть каких-либо инструкций об активации доступа, поскольку у пользователя может даже не быть прав для этих изменений.

Роль в конфиденциальности

С точки зрения конфиденциальности, разработчики получат больше детей, использующий их приложения, независимо от того, созданы ли они для них или нет.

Детские приложения должны соответствовать политике конфиденциальности и ни в коем случае не собирать никаких пользовательских данных (Personally Identifiable Information (PII)).

Закон о защите конфиденциальности детей в Интернете (The Children’s Online Privacy Protection Act (COPPA)) невероятно строг с теми данными, которые попадают в категорию персональных (PII) и это нужно иметь ввиду, поскольку он ограничивает даже использование Bluetooth.

Действие COPPA распространяется на те приложения, пользователей которых можно четко отнести к возрастной группе моложе 13 лет. Несмотря на то, что он действует на территории США, скорее всего, в других странах будут приняты подобные законы, основанные на нем и если ваши приложения будут соответствовать COPPA, они автоматически должны удовлетворять и другим аналогичным законам.

Примечание. Недавно представленная функция App Bundle (наборы приложений) не позволяет смешивать в бандлах обычные приложения и приложения для детей. Также имейте в виду, что использование Game Center и функции Ask to Buy, сделает приложения несовместимыми с требованиями COPPA.

Рекомендации относительно приложений для детей

Не собирайте никаких пользовательских данных и избегайте следующего:

  • Логины
  • Местоположение, Контакты, Фото, Bluetooth, Микрофон, Камера, HealthKit, Соцсети
  • Push-уведомления

Отключите возможности и функции, основывающиеся на возрасте:

  • Считывание возраста и его безопасное хранение (в iCloud) допускается
  • Приложение должно быть применимо пользователями моложе 13 лет или оно будет отклонено в App Store

Подтверждение согласия от родителей:

  • проконсультируйтесь с юристом
  • используйте в качестве возрастного ограничения запрос email родителей, по которому они могут заполнить необходимые документы
  • Родители должны иметь возможность просмотреть и удалить персональные данные (PII)
  • Родители должны иметь возможность прекратить сбор персональных данных
  • Если персональные данные больше не используются, они должны быть удалены

И в заключение к этому разделу. Предоставить ваше приложение для детей, на рассмотрение юристов, будет хорошей идеей. Не забывайте, что в разных странах совершеннолетием считается различный возраст, поэтому полезно приспособить возрастные ограничения к App Store определенной страны.

Safari

х10

Safari для iOS и для OS X также получили некоторые обновления настроек приватности. Например, теперь автоматическое перенаправление в App Store из рекламных баннеров невозможно без согласия пользователя.

Блокировка Cookies для неактивных сайтов

Это означает, что если вы открыли сайт foo.com, то доступ к чтению и записи Cookies будет только у него. Любые другие сайты, вставленные через iframe или ссылающиеся на него, не будут иметь доступа даже к собственным Cookies.

Улучшения Связки ключей

Safari теперь поддерживает новые значения для автозаполения (username, current-password, new-password), чтобы лучше понять требования форм в различных ситуациях.

Для лучшего понимания регистрации, входа или изменения пароля, Safari знает, когда предлагать надежные пароли, а когда обновлять сохраненные. Таким образом, они будут доступны на всех устройствах пользователя и это прекрасный баланс между безопасностью и удобством.

х11

В iOS 8 нативные приложения будут иметь доступ к учетным данным сайтов, хранящихся в Связке ключей. Поэтому, приложения вроде Vimeo, смогут полностью обходиться без входа в аккаунт, если пользователь залогинивался на сайте Vimeo через браузер, поддерживающий Связку ключей.

Для того, чтобы инициировать диалог подтверждения для использования сохраненных в Связке ключей учетных данных, в приложении обязательно должна быть функция “Domain Pairing” и она должна быть объявлена, как описано ниже.

Это работает в обоих направлениях, то есть, если пользователь сначала установит приложение и войдет в свой аккаунт — учетные данные будут сохранены в Связке ключей и позже, когда он вход будет осуществляться через браузер — повторный вход уже не потребуется.

Технические детали

Вот несколько рекомендаций для объявления намерений в ваших формах:

  • Регистрация — `username` и `new-password`
  • Вход — `username` и `current-password`
  • Изменение пароля — `username` (только чтение), `current-password` и `new-password`

Domain Pairing

Приложения могут получить учетные данные в Связке ключей только для тех сайтов, к которым им был предоставлен доступ. Подведем итог:
1. Для приложения Vimeo объявлен доступ к vimeo.com
2. iOS считытывает и проверяет зашифрованный файл с vimeo.com
3. Файл должен содержать идентификатор приложения Vimeo

Для дополнительной информации о том, как зашифровать файл, запросить учетные данные из своего приложения и другим деталям, смотрите сессию #506 с WWDC 2014, под названием “Your App, Your Website, and Safari”

Аутентификация и Связка ключей

х12

Связка ключей — это специализированная база данных для хранения и использования конфиденциальной информации в iOS и OS X. Apple сделала ее еще более безопасной на iOS, объединив с Secure Enclave — защищенным от несанкционированного доступа криптографическим сопроцессором, который содержит уникальные для каждого устройства ключи шифрования, являющиеся неизменными и неизвестными даже самой Apple (доступно только на iPhone 5S/iPad Air/Mini с Touch ID).

Связка ключей

Связка ключей делает синхронизацию данных между устройствами действительно удобной и легкой:

  • App Groups предоставляет более гибкие возможности обмена между приложениями одного и того же разработчика
  • простой обмен между приложением и расширением — виджеты социальных сетей не требуют аутентификации отдельно от приложения, с которым они связаны

Однако, иногда безопасность важнее удобства. В данный момент Связка ключей позволяет предотвратить копирование учетных данных с вашего устройства и они не включаются в резервные копии. Теперь к этому также добавится следующее:

  • для получения доступа к данным, пользователь должен будет дать свое подтверждение.
  • для подтверждения используется Touch ID, с возможность ввода пароля устройства.
  • учетные данные станут недоступны, если пароль устройства будет отключен.

Самый безопасный сценарий потребовал бы отметку данных, как используемых исключительно на устройстве и доступных только через аутентификацию Touch ID. Кроме того, доступ к ним должен быть прекращен, как только будет отключен пароль устройства.

И не забывайте — вы можете хранить в Связке ключей любую текстовую информацию, а не только логин и пароль. Apple использует это для синхронизации ключей Wi-Fi, необходимых для подключения к сети, между устройствами. Например, если вы подключились к защищенной беспроводной сети с вашего MacBook, через несколько секунд (как только пройдет синхронизация) вы сможете подключиться к ней со своего iPhone, экономя время на ввод сложных паролей с клавиатуры мобильного устройства.

Touch ID

Теперь вы можете использовать Touch ID, чтобы предоставлять доступ только владельцу устройства.

Использование Связки ключей в этом случае не обязательно и это будет очень полезно для различных банковских приложений, чтобы заменить обычные PIN-коды, на аутентификацию с помощью Touch ID. Это невероятно быстрый, удобный и более безопасный способ подтвердить личность пользователя.

Способ, заменяющий вход через Touch ID, вы можете выбрать по своему усмотрению: пароль, sms-код или любой другой механизм двухуровневой аутентификации.

HomeKit

х13

HomeKit — это новинка iOS 8, которая должна сделать ее совместимой с Интернетом вещей (Internet of Things) и сделать их взаимодействие более простым и удобным.

Сейчас проблема состоит в том, что устройства различных производителей очень сложно координировать и наладить их «общение» друг с другом, поскольку все они говорят на разных «языках» и требуют различные проприетарные приложения.

Это также создает дополнительную нагрузку на производителя аппаратной составляющей, который должен инвестировать не только в создание базового ПО для управления устройством, но и в создание и поддежку приложений для простых пользователей. Но это забота производителей, потребитель не должен беспокоиться еще и о совместимости устройств.

HomeKit позволит вам просто сказать Siri: «включи ночной режим», который будет управлять (даже если вы вдали от дома) многими устройствами различных производителей и быть увереным при этом, что все двери заперты, освещение в доме отключено (а наружное наоборот — включено), камеры начинают записывать происходящее и множество других вещей.

Всё это с помощью единственной голосовой команды, без необходимости открывать какие-либо приложения и независимо от того, аксессуары какого производителя вы используете.

«Мы не думаем, что хранение ваших личных данных на стороне будет хорошей идеей. Мы считаем, что очень важно отнестись к вашей персональной информации со всей серьезностью.» — Кевин Маклафлин, руководитель отдела Wireless Software Engineering.

Что касается безопасности и вашей частной жизни, здесь есть 4 ключевых момента:

  • данные хранятся только на вашем устройстве
  • команды управления инициируются только с вашего устройства
  • используются передовые технологии непрерывного шифрования
  • для HomeKit-приложений обязательно соблюдение условий Политики конфиденциальности

Мы относимся к безопасности и приватности пользователей очень серьезно. Этому вопросу было уделено много внимания, затрачено много усилий и времени, пока мы не удостоверились, что имеем отличное решение.» — Кевин Маклафлин, руководитель отдела Wireless Software Engineering.

Все связки устройств в HomeKit работают безопасно, поскольку приватность и безопасность данный имеют наивысший приоритет.

В HomeKit внедрен механизм Perfect forward secrecy, который хоть и не является новым, но очень хорошо зарекомендовал себя. API HomeKit не могут работать в фоновом режиме, чтобы обеспечить дополнительную гарантию, что ним управляет сам пользователь, а не приложения злоумышленников.

В приложение могут поступать уведомления о любых изменениях аксессуаров (например — открытие двери), гарантируя, что пользователь будет знать о них.

Стоит отметить тот факт, что Apple сделала обязательной команду идентификации для всех аксессуаров HomeKit, чтобы проложить своеобразный мостик между цифровым и физическим миром. Это позволяет вам дать команду Siri определить, например, лампочку и нужная лампа при этом мигнет.

Технические детали

Будет лучше если вы сами ознакомитесь с документацией, посмотрите 213-ю сессию с WWDC 2014, под наванием «Introducing HomeKit» и посетите страничку, посвященную HomeKit, которая содержит информацию для разработчиков приложений и устройств.

Вот самые основные моменты оттуда:

  • API HomeKit могут работать только в foreground-режиме, чтобы гарантировать контроль со стороны пользователя
  • для ускорения процесса разработки используйте встроенный браузер аксессуаров
  • в HomeKit обязательны методы делегирования для обеспечения целостности базы данных
  • приложения могут подписываться на различные события, например включение определенной лампочки
  • элементы могут быть сгруппированы, например, по комнатам (Кухня); зонам (нижний этаж); службам (потолочный свет) или действиям (Ночной режим).
  • действия могут активироваться вручную, по расписанию, настраиваться на повтор и т.д.
  • устройства несовместимые с HomeKit, могут быть использованы через адаптеры HomeKit Bridge
  • HomeKit может быть расширен, но Siri поддерживает только базовую функциональность
  • аксессуары могут быть доступны через Wi-Fi или BLuetooth LE
  • аксессуары могут иметь следующие характеристики:
  • только чтение, например для наружной температуры
  • чтение и запись, например для подстройки температуры термостата
  • только запись (обязательна на всех устройствах), например для идентификации устройства.

HealthKit

х14

Еще одна новинка iOS 8, которая принесет последовательный опыт, безопасность и конфиденциальность для данных, касающихся здоровья и фитнеса.

В данный момент все данные разобщены и небезопасно хранятся в различных приложениях. У пользователей нет надлежащего контроля над ними, после того как фитнес-приложение будет удалено. Сейчас приватность не главный приоритет, поскольку фрагментированность данных и управление ними — это практика, которую нужно менять. Это вызывает опасения потому, что такие данные очень ценные и ними жаждут воспользоваться для своих целей страховые компании, банки и рекламодатели.

Только представьте, что Facebook может сделать с поведенческой информацией, собранной Moves — приложением, которое фиксирует посещаемые места и финтес-данные о тысячах пользователей Android и iOS.

В то время как HealthKit — это защищенный контейнер, который надежно зашифрован и находится у вас в кармане. Он всегда в поле вашего зрения и под вашим контролем, с помощью встроенного фронтенда — приложения Health в iOS 8.

Конфиденциальность превыше всего

х15

Apple понимает, что доверие пользователей, это самое ценное в бизнесе, поэтому ее инженеры и дизайнеры при создании HealthKit особое внимание уделяли приватности.

HealthKit построен таким образом, что приложения не смогут отличить пользователей, которые предпочли скрыть свой уровень сахара в крови, о тех, которые не имеют этого типа данных вообще. Это делает сбор данных определенных категорий пользователей сложнее, ограничивая объем доступной информации.

Ограничения можно задать как по типу данных, так и по определенным приложениям. Они получают права только на чтение, только на запись или на чтение и запись, но изменить или удалить данные, созданные другими приложениями они не смогут. Например, пользователь может использовать приложение Health для просмотра общего количества сожженных калорий, информация о которых собирается из разных приложений. При этом у каждого отдельного приложения не будет доступа к полному набору данных.

Как описано выше, разрешения очень детализированы и вместо обычных предупреждений, HealthKit использует список Authorization Sheet, позволяющий контролировать все приложения, запросившие доступ к данным, которые сгруппированы в нем по типу разрешений (чтение/запись).

Политика конфиденциальности обязательна для всех приложений HealthKit и должна быть описана на сайте и странице приложения в App Store, как и в случае с приложениями для детей, HomeKit и клавиатурами.

Health App

х16

Приложение Health позволяет пользователю просматривать более 60 различных типов данных и управлять доступом к каждому из них (от даты рождения, до уровня калия в крови).

х17

Также это приложение используется для того, чтобы указать какая информация будет включена в вашу медицинскую карту (Medical ID), которая после настройки станет доступной с экрана блокировки (свайп в сторону на экране ввода пароля).

Это интересное дополнение, поскольку вы сможете добавить туда экстренные телефонные номера, группу крови, статус донорства, различные противопоказания и другую полезную информацию, которая будет доступна для медперсонала, без разблокировки вашего устройства.

Технические детали

Документация все еще довольно скудная и, насколько я понял, здесь не будет никакого вмешательства в вашу приватность.

Приятно, что использовать HealthKit API достаточно просто. С его помощью можно легко определить еденицы измерения, преобразовать их, использовать статистику, хранение и поиск.

Единицы измерения и их преобразование

Базовые и комплексные единицы определяются классом HKUnit.

Базовые единицы классифицированы в типы, такие как масса (HKUnit.gramUnit()), длина (HKUnit.meterUnit()), энергия (HKUnit.jouleUnit()), температура (HKUnit.degreeCelsiusUnit()).

Комплексные единицы измерения, такие как грамм на децилитр, могут быть заданы с помощью класса форматов, т.е. g/dL.

HKQuantity(unit:HKUnit.meterUnit(), doubleValue: 1.79)

Количество задается с помощью Unit и Value, как указано выше.

Совместимость преобразование количества можно проверить через meterQuantity.isCompatibleWithUnit(HKUnit.secondUnit().

Локализация

Новые средства форматирования единиц (NSMassFormatter, NSLengthFormatter, NSEnergyFormatter) обработают детали локализации за вас.

Например, NSMassFormatter.forPersonMassUse = YES автоматически переведет массу в стоуны и фунты для Великобритании и США, оставив килограммы для всего остального мира.

Хранение данных

Все ваши данные хранятся в HealthKit Store (HKHealthStore) и являются подклассами неизменного HKObject. Главный класс предлагает способ хранения каталогов метаданных и источников, которые унаследованы подклассами HKSample и HKCorrelation.

Корреляция (HKCorrelation) объектов — это набор общих, взаимосвязанных метаданных, которые по одиночке не имеют смысла (например, отдельный удар сердца).

Объекты могут иметь категорию (постоянную, например, дату рождения) или количественный тип (изменяются в течение длительного времени, например шаги, уровень калия и т.д.).

Данные могут быть конкретно указаны, например: «Температура тела в градусах Фаренгейта с ушного термометра Braun с серийным номером #1234. Собирать значения от 98.8 с выборкой, начиная с 10:00:00 AM и до 10:00:10 AM».

Эти метаданные могли бы позволить вам изолировать информацию с дефектных или менее точных устройств, основываясь на их серийном номере.

Примечание. HealthKit автоматически обрабатывает ситуации, когда одни и те же данные (например, количество шагов) поступают из нескольких источников. Без дедупликации этот сценарий привел бы к дублированию и завышению показателей.

Извлечение данных

HealthKit облегчает запросы и отслеживание изменений в больших массивах данных. Это очеспечивается с помощью HKQuery и HKObserverQuery для отслеживания изменений, а также HKAnchoredObjectQuery, который важен для нумерования страниц в списках результатов.

HKObject может обладать богатыми возможностями, чтобы отличить данные, поступающие с определенного устройства с помощью, например, серийного номера.

Статистика

Класс HKStatistics помогает со сбором средних, минимальных, максимальных показателей, суммируя или разбивая их по различным источникам.

Более продвинутые HKStatisticsCollection и HKStatisticsCollectionQuery, позволяют определять временные диапазоны, шаблоны интервалов и другой более углубленный анализ.

CloudKit

х18

CloudKit — бэкенд сервиса Apple, имеющий сходство с Facebook Parse, однако он отвечает за учетные записи и передачу данных, предоставляя все вычисления самому устройству и не отождествляя личность пользователей. Это, пожалуй, самое деликатное изменение конфиденциальности в iOS.

Его преимущество состоит в том, что он очень хорошо интегрирован в Xcode, iTunes Connect, iOS и OS X. Как и во всех Kit-фреймворках, это позволяет разработчикам сосредоточиться на том, что делает их приложения уникальными и не думать фундаментальных вещах, которые нужны для их запуска.

Очевидно, это ключевой агргумент и, в то же время, компромисс между безопасностью и удобством.

Конфиденциальность учетных записей

CloudKit не предоставляет приложениям доступ к вашему реальному Apple ID или информации из других приложений. Вместо этого, CloudKit создает случайный идентификатор пользователя на основе приложения и не предоставляет другим приложениям доступ к вашей личной информации, находящейся за пределами контейнера CloudKit.

Примечание. CloudKit будет создавать анонимный аккаунт, доступный только для чтения и без привязки к Apple ID. Другие пользователи смогут получить доступ к вашим данным для обмена и только в режиме чтения.

Теоретически, разработчик вредоносного ПО мог бы сопоставить анонимный CloudKit идентификатор из «Приложения 1», постоянному идентификатору (такому как email, Twitter, Facebook и т.п.), доступному в «Приложении 2», через рекламный идентификатор (Advertising ID), который будет одинаковым для всех приложений с одного устройства.

При этом не стоит забывать, что пользователь может сбросить или отключить рекламный идентификатор, поскольку его использование ограничено и должно быть оправдано (этому уделяется внимание цензоров в App Store). Однако, таким оправданием может служить использование iAds, к тому же, мало кто знает о его существовании и о том, что его можно отключить, а по умолчанию он включен для всех пользователей старше 13 лет.

Поиск друзей

х19

Функция Friend Discovery будет работать в составе CloudKit. Пользователь может указать отображать ли его информацию в определенных приложениях, что при желании позволит сохранить вашу анонимность перед разработчиками остальных приложений. Под информацией имеется в виду случайный идентификатор пользователя, его имя и фамилия.

Friend Discovery работает без открытия персональной информации (PII), такой как email, приложениям. Поиск соответствия выполняют серверы CloudKit, отвечающие за эти данные, поэтому приложения и сторонние разработчики никак не вовлечены в этот процесс.

Опционально, CloudKit может выполнить поиск по предоставленным пользователями email. При этом выполнение процесса шифруется, он выполняется на сервере (а не на устройстве) и данные отправляются по безопасному соединению.

Примечание. Двухуровневая аутентификация iCloud не обязательна, поэтому большинство учетных записей защищены обычным паролем. Этим пользуются злоумышленники и будут делать это снова и снова, поскольку учетные записи содержат всё больше информации.

Безопасность и конфиденциальность данных

Каждое приложение имеет доступ к одному или нескольким CloudKit-контейнерам, принадлежащим его разработчику.

Контейнеры имеют две базы данных, одна из которых общая, а вторая приватная. Записи, содержащиеся в них, могут быть структурированными или в виде массивов и подобно Core Data, не затрагивают деталей.

По умолчанию, общие записи могут быть прочитаны любым пользователем, созданы — аутентифицированным пользователем, а изменены — только их владельцем.

Неаутентифицированным пользователям (не имеющим аккаунта iCloud) можно предоставить права для чтения, но они никогда не смогут создать или записать данные ни в приватную, ни в общую базу данных.

Приложение может получить доступ к приватным базам данных, принадлежащих только текущему пользователю.

Для предотвращения фишинга, записями пользователей управляет CloudKit. Приватная база данных может содержать записи только одного пользователя, в общих — возможно хранения записей нескольких пользователей. Получить доступ к общим базам данных можно с помощью анонимного идентификатора.

Технические детали

CloudKit используется Apple для того, чтобы создать новые iCloud-приложения и, в первую очередь, является технологией передачи и не предназначен для постоянного хранения данных, так что Core Data и другие локальные решения остаются в силе.

Квоты

Использованием квот для публичных и общих баз данных управляют пользователи и разработчики, соовтветственно.

Управление

iCloud Dashboard позволяет разработчикам управлять существующими iCloud-контейнерами, создавать новые, через Developer Dashboard, используя идентификатор приложения (App ID).

Записи

Записи CloudKit (CKRecords) имеют те же свойства, что и plist, плюс CLLocation, который позволяет делать запросы определения местоположения, а также CKReference и CKAsset. Они автоматически будут генерироваться в процессе разработки.

Зоны записей

Зоны записей позволяют группировать записи. CKAssets собирает устаревшие данные с помощью CLoudKit и поддерживает дельта аплоад, включая другие каскады, вроде Core Data, которые также будут удалены.

Подписки

Приложения могут получать уведомления об изменениях записей CloudKit через APNS. Доступ к push-уведомлениям (которые отличаются от пользовательских уведомлений) у приложений теперь есть по умолчанию.

Больше информации по этому разделу можно найти в сессиях WWDC #208 и #231.

(via)