Безпека та шифрування
Розширений Keychain, CryptoKit, SSL Pinning, біометрична автентифікація, secure coding, ATS
1Який механізм iOS слід використовувати для безпечного зберігання конфіденційних токенів автентифікації?
Який механізм iOS слід використовувати для безпечного зберігання конфіденційних токенів автентифікації?
Відповідь
Keychain — це власна система безпечного зберігання iOS, розроблена спеціально для конфіденційних даних. Вона автоматично шифрує дані та керує доступом відповідно до визначених політик контролю. UserDefaults ніколи не слід використовувати для секретів, оскільки він зберігає дані у відкритому вигляді. Keychain також пропонує розширені функції, такі як біометричний доступ і безпечна синхронізація з iCloud.
2Який атрибут Keychain гарантує, що дані залишаються недоступними, поки пристрій заблоковано?
Який атрибут Keychain гарантує, що дані залишаються недоступними, поки пристрій заблоковано?
Відповідь
kSecAttrAccessibleWhenUnlocked гарантує, що доступ до даних можливий лише тоді, коли пристрій розблоковано. Це забезпечує захист, навіть якщо до Keychain звертається фоновий процес. Apple рекомендує це значення для конфіденційних токенів. Інші варіанти, як-от WhenUnlockedThisDeviceOnly, забезпечують додатковий захист, запобігаючи синхронізації з iCloud.
3Який клас CryptoKit слід використовувати для симетричного шифрування AES-256?
Який клас CryptoKit слід використовувати для симетричного шифрування AES-256?
Відповідь
SymmetricKey у CryptoKit керує симетричними ключами, тоді як AES.GCM (Galois/Counter Mode) виконує автентифіковане шифрування. GCM є кращим, оскільки він забезпечує і конфіденційність, і автентифікацію, запобігаючи атакам маніпуляції. Цей підхід безпечніший за ChaCha20Poly1305 у контекстах, що не вимагають екстремальної продуктивності на старих пристроях.
Яка головна перевага асиметричного шифрування над симетричним?
Яка фундаментальна різниця між хешуванням і шифруванням з точки зору безпеки?
+17 питань зі співбесід
Інші теми співбесід iOS
Основи Swift
Основи мови Swift
Основи UIKit
Життєвий цикл UIViewController
UserDefaults & Keychain
Життєвий цикл застосунку
Auto Layout & Constraints
UITableView & UICollectionView
Основи SwiftUI
Керування станом у SwiftUI
Навігація SwiftUI
Networking & URLSession
Codable та парсинг JSON
Core Data
Протоколо-орієнтоване програмування
Архітектура MVVM
Push-сповіщення
Модульне тестування та XCTest
Тестування інтерфейсу користувача
Xcode і система збірки
Swift Package Manager
Memory Management & ARC
Combine Framework
Concurrency & async/await
iOS Design Patterns
Оптимізація продуктивності
SwiftUI Advanced
Архітектура застосунків iOS
Опануй iOS для наступної співбесіди
Отримай доступ до всіх питань, flashcards, технічних тестів, вправ code review та симуляторів співбесід.
Почни безкоштовно