Kantong kunci untuk Perlindungan data
Kunci untuk file dan kelas Perlindungan Data rantai kunci dikumpulkan serta dikelola di kantong kunci di iOS, iPadOS, tvOS, dan watchOS. Sistem operasi ini menggunakan kantong kunci berikut: pengguna, perangkat, cadangan, eskrow, dan Cadangan iCloud.
Kantong kunci pengguna
Kantong kunci pengguna adalah tempat kunci kelas terbungkus yang digunakan di operasi normal perangkat disimpan. Misalnya, saat kode sandi dimasukkan, NSFileProtectionComplete akan dimuat dari kantong kunci pengguna dan dibuka bungkusnya. Itu merupakan file daftar properti biner (.plist) yang disimpan di kelas Tanpa Perlindungan.
Untuk perangkat dengan SoCs yang lebih awal dari A9, konten file .plist dienkripsi dengan kunci yang disimpan di Penyimpanan Dapat Dihapus. Untuk meneruskan keamanan ke kantong kunci, kunci ini dihapus dan dibuat ulang setiap kali pengguna mengubah kode sandinya.
Untuk perangkat dengan SoC A9 atau lebih baru, file .plist berisi kunci yang menunjukkan bahwa kantong kunci disimpan di loker yang dilindungi oleh nilai anti-pemutaran ulang yang dikontrol Secure Enclave.
Secure Enclave mengelola kantong kunci pengguna dan dapat ditanyai perihal status kunci perangkat. Ekstensi ini melaporkan bahwa perangkat dibuka hanya jika semua kunci kelas di kantong kunci pengguna dapat diakses dan telah berhasil dibuka bungkusnya.
Kantong kunci perangkat
Kantong kunci perangkat digunakan untuk menyimpan kunci kelas terbungkus yang digunakan untuk operasi yang melibatkan data khusus perangkat. Perangkat iPadOS yang dikonfigurasi untuk penggunaan bersama kadang memerlukan akses ke info pengesahan sebelum semua pengguna masuk; oleh karena itu, kantong kunci yang tidak dilindungi oleh kode sandi pengguna akan diperlukan.
iOS dan iPadOS tidak mendukung pemisahan kriptografis atas konten sistem file per pengguna, yang berarti bahwa sistem menggunakan kunci kelas dari kantong kunci perangkat untuk membungkus kunci per file. Namun, rantai kunci menggunakan kunci kelas dari kantong kunci pengguna untuk melindungi item di rantai kunci pengguna. Di perangkat iPhone dan iPad yang dikonfigurasi untuk digunakan oleh satu pengguna (konfigurasi default), kantong kunci perangkat dan pengguna berjumlah satu dan sama, serta dilindungi oleh kode sandi pengguna.
Kantong kunci cadangan
Kantong kunci cadangan dibuat saat cadangan terenkripsi dibuat oleh Finder (macOS 10.15 atau lebih baru) atau iTunes (di macOS 10.14 atau lebih lama) dan disimpan di komputer tempat perangkat dicadangkan. Kantong kunci baru dibuat dengan kumpulan kunci baru, dan data cadangan dienkripsi ulang ke kunci baru ini. Sebagaimana dijelaskan sebelumnya, item rantai kunci non-migrasi tetap dibungkus dengan kunci turunan UID, sehingga memungkinkan item untuk dipulihkan ke perangkat tempat asal pencadangan, tapi membuatnya tidak dapat diakses di perangkat lain.
Kantong kunci—dilindungi dengan kata sandi yang diatur—dijalankan melalui 10 juta iterasi fungsi derivasi kunci PBKDF2. Meskipun pengulangan ini berjumlah besar, tidak ada keterikatan terhadap perangkat tertentu, dan oleh karena itu serangan brute-force yang paralel di banyak komputer secara teori dapat dicoba dilakukan di kantong kunci cadangan. Ancaman ini dapat dilawan dengan kata sandi yang cukup kuat.
Jika pengguna memilih untuk tidak mengenkripsi cadangan, file cadangan tidak akan dienkripsi terlepas dari kelas Perlindungan Datanya, tapi rantai kunci akan tetap dilindungi dengan kunci turunan dari UID. Ini alasan mengapa item rantai kunci dimigrasi ke perangkat baru hanya jika kata sandi cadangan diatur.
Kantong kunci eskrow
Kantong kunci eskrow digunakan untuk penyelarasan dengan Finder (di macOS 10.15 atau lebih baru) atau iTunes (macOS 10.14 atau lebih lama) melalui USB dan mobile device management (MDM). Kantong kunci ini memungkinkan Finder atau iTunes untuk mencadangkan dan menyelaraskan tanpa mengharuskan pengguna untuk memasukkan kode sandi, dan memungkinkan solusi MDM untuk menghilangkan kode sandi pengguna dari jauh. Kantong kunci disimpan di komputer yang digunakan untuk menyelaraskan dengan Finder atau iTunes, atau di solusi MDM yang mengelola perangkat dari jauh.
Kantong kunci eskrow meningkatkan pengalaman pengguna pada saat penyelarasan perangkat, yang berpotensi memerlukan akses ke semua kelas data. Saat perangkat yang dikunci kode sandi pertama kali terhubung ke Finder atau iTunes, pengguna akan diminta untuk memasukkan kode sandi. Perangkat kemudian membuat kantong kunci eskrow berisi kunci kelas yang sama dengan kunci kelas yang digunakan di perangkat, yang dilindungi oleh kunci yang baru dibuat. Kantong kunci eskrow dan kunci yang melindunginya dibagi antara perangkat dan host atau server, dengan data yang disimpan di perangkat dalam kelas Dilindungi Hingga Pengesahan Pengguna Pertama. Inilah alasan kode sandi perangkat harus dimasukkan sebelum pengguna mencadangkan dengan Finder atau iTunes untuk pertama kalinya setelah di-boot ulang.
Pada saat pembaruan perangkat lunak secara nirkabel (OTA), pengguna dimintai kode sandinya saat memulai pembaruan. Ini digunakan untuk membuat token buka sekali pakai dengan aman yang membuka kantong kunci pengguna setelah pembaruan. Token ini tidak dapat dibuat tanpa memasukkan kode sandi pengguna, dan token yang dibuat sebelumnya menjadi tidak sah jika kode sandi pengguna berubah.
Token buka sekali pakai dapat digunakan untuk penginstalan pembaruan perangkat lunak yang diawasi atau tidak diawasi. Token dienkripsi dengan kunci turunan dari nilai penghitung monoton saat ini di Secure Enclave, UUID kantong kunci, dan UID Secure Enclave.
Di SoC A9 (atau lebih baru), token Buka sekali pakai tidak lagi mengandalkan penghitung atau Penyimpanan Dapat Dihapus. Sebagai gantinya, token dilindungi oleh nilai anti-pemutaran ulang yang dikontrol Secure Enclave.
Token buka sekali pakai untuk pembaruan perangkat lunak yang diawasi kedaluwarsa setelah 20 menit. Di iOS 13 dan iPadOS 13.1, atau lebih baru, token disimpan di loker yang dilindungi oleh Secure Enclave. Sebelum iOS 13, token ini diekspor dari Secure Enclave dan ditulis ke Penyimpanan Dapat Dihapus atau dilindungi oleh mekanisme anti-pemutaran ulang Secure Enclave. Timer kebijakan menambah penghitung jika perangkat belum di-boot ulang selama 20 menit.
Pembaruan perangkat lunak yang tidak diawasi terjadi ketika sistem mendeteksi bahwa pembaruan tersedia dan saat salah satu hal berikut benar:
Pembaruan otomatis dikonfigurasi di iOS 12 atau lebih baru.
Pengguna memilih Instal Nanti saat diberi tahu mengenai pemberitahuan tersebut.
Setelah pengguna memasukkan kode sandinya, token buka sekali pakai akan dibuat dan dapat tetap berlaku di Secure Enclave hingga 8 jam. Jika pembaruan belum dijalankan, token buka sekali pakai ini akan dihapus pada setiap proses penguncian dan dibuat kembali pada setiap proses pembukaan berikutnya. Setiap proses pembukaan memulai ulang rentang waktu 8 jam. Setelah 8 jam, timer kebijakan akan membuat token buka sekali pakai menjadi tidak sah.
Kantong kunci Cadangan iCloud
Kantong kunci Cadangan iCloud mirip dengan kantong kunci cadangan. Semua kunci kelas di kantong kunci ini bersifat asimetris (menggunakan Curve25519, seperti kelas Perlindungan Data Dilindungi Kecuali Terbuka). Kantong kunci asimetri juga digunakan untuk melindungi rantai kunci yang dicadangkan untuk pemulihan Rantai Kunci iCloud.