Представители команды разработчиков Apple Янник Сиерра и Яков Джейкобс 5 июня на WWDC 2019 — Всемирной конференции разработчиков Apple — рассказали об изменениях в политике безопасности Apple в преддверии выпуска операционной системы iOS 13. Криптографические операции теперь станут неотъемлемой частью системы безопасности iOS. Пользователи смогут сохранять конфиденциальность, которая в последние годы становится роскошью. Все это стало возможным благодаря новому продукту от Apple под названием CryptoKit — специального криптографического фреймворка для разработчиков. Что из себя представляет CryptoKit и как именно будут шифроваться данные?

Янник Сиерра назвал основные задачи, которые решает новая политика безопасности Apple:

 Защита информации на устройстве

 Защита параметров доступа и приватных ключей

 Защищенный обмен данными между пользователями и устройствами

 Защищенные подключения к сети

 Удаленная аутентификация

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

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

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

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

Свои приватные ключи пользователи смогут хранить в специальном хранилище — Keychain.

Преимущества CryptoKit

Отдельно о том, как работает и для чего нужен фреймворк CryptoKit, рассказал на примере нескольких кейсов другой разработчик Appple — Яков Джейкобс.

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

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

Также CryptoKit упрощает создание криптографических ключей. На скриншоте сверху изображен код для их создания с помощью обычных фреймворков, а ниже в одну строчку — код для создания ключей с помощью Apple CryptoKit. В частности, новый фреймворк Apple автоматически удаляет созданный ключ из памяти, для этого не нужно (как в обычных фреймворках) писать строчку для удаления ключа — «Zeroise the key».

Функционал фреймворка

Пользователи могут использовать CryptoKit для проведения таких операций, как вычисление хэша, создание ключей и шифрование. Фреймворк использует библиотеку шифрования Apple Сorecrypto и написан на коде Ассемблер. Он использует алгоритмы хэширования SHA-512, SHA-256, SHA-386.

Кроме того, фреймворк может:

 Вычислять и преобразовывать криптографические элементы и проверять их подлинность;

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

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

Аутентификационное шифрование

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

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

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

Цифровые подписи

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

Вначале в приложении создается приватный ключ.

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

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

Сервер идентифицирует подпись и проводит транзакцию.

А вот так выглядит эта операция в виде кода на CryptoKit.

Secure Enclave

Secure Enclave — элемент приложения для управления ключами. Он хранит приватные ключи на смартфоне и делает так, что приватные ключи доступны только в том случае, если устройство разблокировано. Благодаря Secure Enclave, пользователи iPhone смогут управлять своими приватными ключами.

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

Пользователь может задать дополнительные условия для доступа к ключу (local authentication). Например, перевод $10 Бобу, как на скрине выше.

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

Полное видео презентации доступно по ссылке.