Секрети безпеки iOS: Як Apple захищає інформацію та ваші персональні дані
Чи дійсно зламати iPhone набагато складніше, ніж здається?
Серед юзерів техніки Apple давно побутує догма, що про кіберзагрози можна забути. Маркетингова стратегія Apple дійсно побудована навколо концепції замкненого саду (walled garden) і принципу Security-by-Design. Компанія суворо контролює додатки в App Store, обмежує прямий доступ програм до файлової системи та створює потужні апаратні бар'єри.
Все це реалізовано через тісну, безшовну синергію трьох рівнів: власних архітектурних рішень у чипах Apple Silicon, гібридного ядра операційної системи XNU та низькорівневих криптографічних протоколів.
Чим більше заглиблюєшся в тему, тим більше вимальовується картина, як усе це працює разом. У цій статті пропонуємо цим і зайнятись — оглянути синергію різних способів захисту Apple, те, як вони працюють і як усе це склеюється разом.
Апаратний захист даних: Secure Enclave
Перший рубіж захисту інформації в iOS закладено безпосередньо в кремній чипсетів Apple Silicon. У цій системі Secure Enclave Processor (SEP) — головний. Це фізично ізольований співпроцесор, побудований на окремому ядрі ARM. SEP функціонує автономно від центрального CPU та виконує власну мікроопераційну систему SEPOS.
Для гарантії повної ізоляції SEP використовує власну зашифровану оперативну пам'ять (TZ0 RAM), доступ до якої блокується для основного ядра системи на апаратному рівні.
Простими словами: навіть якщо зловмисник отримає абсолютні права рівня ядра (kernel_task) через 0-day експлойт, він не матиме прямого доступу до даних, які обробляє Secure Enclave (наприклад, математичних моделей біометрії Face ID й Touch ID).
Окрему роль має також апаратний криптографічний двигун (Hardware AES Engine). Це фізичний контролер, розміщений безпосередньо на шині даних між контролером пам'яті й накопичувачем (NVMe). Він здійснює шифрування та розшифрування всіх блоків даних «на льоту». Так він повністю знімає це навантаження з основних обчислювальних ядер CPU.
В цій апаратній криптографії найважливішим є UID (Unique ID) — 256-бітний ключ, який записується в кремній чипа на етапі виробництва. Ключ UID — абсолютно унікальний для кожного пристрою. Його неможливо зчитати програмно, через системні утиліти або навіть зсередини прошивки SEPOS.
Детальніше про інженерні рішення співпроцесора можна прочитати в офіційній документації Apple Platform Security: Secure Enclave architecture.
Захист файлів у пам'яті: Data Protection API та ієрархія ключів
Що цікаво, апаратне шифрування, про яке йшла мова вище, — це лише базовий рівень оборони. Apple також розмежовує доступ до окремих файлів у файловій системі. В APFS (Apple File System) використовується технологія Data Protection API, побудована на каскадній ієрархії криптографічних ключів, яка прив'язує можливість зчитати конкретний файл до апаратного чипа.
Кожен файл на диску зашифрований власним унікальним пер-файловим ключем ($K_{\text{file}}$). Цей ключ не зберігається у відкритому вигляді, а зашифровується іншим ключем відповідного класу ($K_{\text{class}}$).
Ну і самі ключі класів теж знаходяться в спеціальному зашифрованому сховищі. До того ж вони генеруються шляхом криптографічного об'єднання пароля користувача та унікального для пристрою апаратного ключа UID.
А ще Apple дозволяє iOS-розробниками присвоювати файлам різні класи захисту.
- NSFileProtectionComplete — найвищий рівень ізоляції. Відповідний ключ класу вивантажується та повністю стирається з оперативної пам'яті Secure Enclave негайно після заблокування екрана. Будь-які спроби фонового додатка зчитати файл на заблокованому пристрої зазнають невдачі.
- NSFileProtectionCompleteUnlessOpen — ключ видаляється під час блокування, але якщо файл уже був відкритий дескриптором процесу до цього, додаток зможе дописати в нього дані (наприклад, під час запису логів або завантаження великого файлу).
- NSFileProtectionCompleteUntilFirstUserAuthentication — клас за замовчуванням для більшості додатків. Ключ генерується при першому розблокуванні пристрою після перезавантаження та утримується в пам'яті до вимкнення живлення. Це дозволяє фоновим сервісам і месенджерам обробляти нові дані, коли екран вимкнений.
Завдяки такій архітектурі, навіть якщо зловмисник знайде спосіб зробити повний зліпок оперативної пам'яті (RAM Dump) заблокованого смартфона, розшифрувати критичні файли класу NSFileProtectionComplete буде неможливо — необхідних ключів просто фізично не існує.
Апаратний захист від експлойтів та переповнення пам'яті
У дослідженні Microsoft Security Response Center (MSRC), понад 70% усіх критичних вразливостей в ПЗ виникають через помилки керування пам'яттю.
В системному програмуванні це відкриває шлях для атак типу ROP (Return-Oriented Programming) та JOP (Jump-Oriented Programming), коли зловмисники підміняють вказівники адреси виконання в стек-кадрі та примушують ядро виконувати сторонній код.
Для блокування цих векторів атак Apple впровадила в архітектуру чипів апаратну мітигацію PAC (Pointer Authentication Codes). Принцип її роботи такий:
- В 64-бітній архітектурі під віртуальну адресу пам'яті реально використовується лише частина бітів (зазвичай 48 біт). Невикористані верхні біти вказівника заповнюються криптографічним кодом перевірки цілісності (Message Authentication Code, MAC).
- Перед виконанням інструкції переходу за вказівником процесор за допомогою спеціальних апаратних команд перевіряє підпис, використовуючи секретний апаратний ключ і поточний контекст виконання:
- $$\text{Pointer} + \text{Context} + \text{Secret Key} \longrightarrow \text{PAC}$$
Простими словами: якщо хакер намагається перезаписати адреси в пам'яті через переповнення буфера, підпис стає недійсним. А якщо спробувати використати спотворений вказівник, процесор фіксує помилку автентифікації та генерує апаратне виключення. А це викликає негайне аварійне завершення процесу (Kernel Panic).
Інноваційні фічі захисту: Lockdown Mode, PQ3 та Private Cloud Compute
Сучасний захист інформації враховує не лише наявні загрози. Потрібно прогнозувати атаки наперед. Зрештою квантовий криптоаналіз все ближче, а витоки даних під час обчислень у хмарі — частіші.
В iOS є фіча Lockdown Mode — блокування процесів на системному рівні. Коли вона увімкнена, ОС відключає цілий ряд складних підсистем, які найчастіше стають мішенню для zero-click експлойтів. Зокрема у вебрушії WebKit повністю вимикається JIT-компіляція (Just-In-Time) JavaScript — джерело багатьох вразливостей. Також блокується автоматична обробка складних типів шрифтів та медіавкладень в iMessage, а контролер USB блокує будь-які дротові з'єднання даних, якщо екран пристрою заблоковано.
Для протидії квантовим загрозам Apple впровадила протокол PQ3 для iMessage. Це гібридна постквантова криптографічна система Рівня 3 (Level 3 Security), яка комбінує класичні алгоритми ECDH із постквантовою алгоритмікою на основі теорії решіток (Lattice-based cryptography).
Простими словами: PQ3 постійно змінює ключі всередині чату. Таким чином розшифрувати перехоплений трафік не зможуть навіть квантові комп'ютери. А ще цікаво, що всі ці обчислення винесені в хмару та обробляються поза смартфоном.
Фізичний захист пристрою: Stolen Device Protection та виклики форензики
Захист інформації потрібен і тоді, коли зловмисник отримує доступ безпосередньо до заліза або дізнається PIN-код. Для цього є механізм Stolen Device Protection. Він переносить принцип Zero-Trust на рівень фізичної взаємодії.
Якщо телефон перебуває поза знайомими географічними локаціями, система повністю блокує можливість використання текстового пароля для доступу до зв'язки ключів (Keychain), налаштувань Apple ID або збережених платіжних карт. Вимагається виключно біометричне сканування, а за нього вже відповідає Secure Enclave.
З погляду цифрової форензики, такі заходи в поєднанні з апаратним лічильником спроб введення пароля унеможливлюють прямий перебір. А якщо згадати, що Secure Enclave знищує майстер-ключ розшифровки накопичувача після 10 невдалих спроб, витягнути сирі дані з фізичного пристрою без використання екстремально дорогих апаратних 0-day експлойтів стає практично нездійсненним завданням.