Perlindungan data rantai kunci
Banyak app yang harus menangani kata sandi dan data pendek namun sensitif lainnya, seperti kunci dan token masuk. Rantai kunci menyediakan cara yang aman untuk menyimpan item ini. Berbagai sistem operasi Apple menggunakan mekanisme berbeda untuk memperkuat jaminan terkait dengan kelas perlindungan rantai kunci yang berbeda. Di macOS (termasuk Mac dengan Apple silicon), Perlindungan Data tidak digunakan secara langsung untuk memperkuat jaminan ini.
Tinjauan
Item rantai kunci dienkripsi menggunakan dua kunci AES-256-GCM yang berbeda, kunci tabel (metadata), dan kunci per baris (kunci rahasia). Metadata rantai kunci (semua atribut selain kSecValue) dienkripsi dengan kunci metadata untuk mempercepat pencarian, dan nilai rahasia (kSecValueData) dienkripsi dengan kunci rahasia. Kunci metadata dilindungi oleh Secure Enclave, tapi disimpan dalam cache di Prosesor Aplikasi untuk memungkinkan dijalankannya permintaan cepat rantai kunci. Kunci rahasia selalu memerlukan perpindahan bolak-balik melalui Secure Enclave.
Rantai kunci diterapkan sebagai database SQLite, yang disimpan di sistem file. Hanya ada satu database, dan daemon securityd
menentukan item rantai kunci mana yang dapat diakses tiap proses atau app. API Akses Rantai Kunci membuat panggilan ke daemon, yang meminta hak “Keychain-access-groups”, “application-identifier”, dan “application-group” milik app. Alih-alih membatasi akses ke satu proses, grup akses mengizinkan item rantai kunci untuk dibagikan antar-app.
Item rantai kunci hanya dapat dibagikan antar-app dari pengembang yang sama. Untuk membagikan item rantai kunci, app pihak ketiga menggunakan grup akses dengan prefiks yang disediakan melalui Apple Developer Program di grup aplikasinya. Persyaratan prefiks dan keunikan grup aplikasi diberlakukan melalui penandatanganan kode, penyediaan profil, dan Apple Developer Program.
Data rantai kunci dilindungi menggunakan struktur kelas yang mirip dengan yang digunakan di Perlindungan Data file. Kelas ini memiliki perilaku yang sama dengan kelas Perlindungan Data file tapi menggunakan kunci dan fungsi yang khas.
Ketersediaan | Perlindungan data file | Perlindungan data rantai kunci | |||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Saat terbuka | NSFileProtectionComplete | kSecAttrAccessibleWhenUnlocked | |||||||||
Saat dikunci | NSFileProtectionComplete UnlessOpen | ||||||||||
Setelah pertama kali dibuka | NSFileProtectionComplete UntilFirstUserAuthentication | kSecAttrAccessibleAfterFirstUnlock | |||||||||
Selalu | NSFileProtectionNone | kSecAttrAccessibleAlways | |||||||||
Kode sandi diaktifkan | kSecAttrAccessibleWhen PasscodeSetThisDeviceOnly |
App yang menggunakan layanan penyegaran latar belakang dapat menggunakan kSecAttrAccessibleAfterFirstUnlock untuk item rantai kunci yang harus diakses saat pembaruan latar belakang.
Kelas kSecAttrAccessibleWhenPasscodeSetThisDeviceOnly berperilaku sama dengan kSecAttrAccessibleWhenUnlocked, namun hanya tersedia saat perangkat dikonfigurasi dengan kode sandi. Kelas ini hanya terdapat di kantong kunci sistem; kelas ini:
Tidak diselaraskan ke Rantai Kunci iCloud
Tidak dicadangkan
Tidak disertakan di kantong kunci eskrow
Jika kode sandi dihapus atau diatur ulang, item menjadi tidak berguna dengan menghapus kunci kelas.
Kelas rantai kunci lainnya memiliki versi “Hanya perangkat ini”, yang selalu dilindungi dengan UID saat disalin dari perangkat selama pencadangan, membuatnya tidak berguna jika dipulihkan ke perangkat lain. Apple memiliki keamanan dan kegunaan yang berimbang dengan memilih kelas rantai kunci yang berbeda-beda menurut jenis informasi yang diamankan dan saat diperlukan oleh iOS dan iPadOS.
Perlindungan kelas data rantai kunci
Perlindungan kelas yang tercantum di bawah diberlakukan untuk item rantai kunci.
Item | Dapat Diakses |
---|---|
Kata sandi Wi-Fi | Setelah pertama kali dibuka |
Akun Mail | Setelah pertama kali dibuka |
Akun Microsoft Exchange ActiveSync | Setelah pertama kali dibuka |
Kata sandi VPN | Setelah pertama kali dibuka |
LDAP, CalDAV, CardDAV | Setelah pertama kali dibuka |
Token akun jejaring sosial | Setelah pertama kali dibuka |
Kunci enkripsi iklan Handoff | Setelah pertama kali dibuka |
Token iCloud | Setelah pertama kali dibuka |
Kunci iMessage | Setelah pertama kali dibuka |
Kata sandi berbagi rumah | Saat terbuka |
Kata sandi Safari | Saat terbuka |
Penanda Safari | Saat terbuka |
Cadangan Finder/iTunes | Saat dibuka, non-migrasi |
Sertifikat VPN | Setelah dibuka pertama kali, non-migrasi |
Kunci Bluetooth® | Selalu, non-migrasi |
Token layanan Pemberitahuan Push Apple (APN) | Selalu, non-migrasi |
Sertifikat iCloud dan kunci pribadi | Selalu, non-migrasi |
PIN SIM | Selalu, non-migrasi |
Token Lacak | Selalu |
Pesan Suara | Selalu |
Di macOS, semua item rantai kunci yang diinstal oleh profil konfigurasi selalu tersedia. Di iOS dan iPadOS, item rantai kunci yang diinstal oleh profil konfigurasi memilki aksesibilitas yang berbeda tergantung jenisnya, bagaimana item dirujuk, dan kapan item diinstal. Secara default, item rantai kunci yang diinstal menggunakan profil konfigurasi tersedia setelah dibuka pertama kali dan non-migrasi. Namun, item rantai kunci yang diinstal oleh profil konfigurasi selalu tersedia jika:
Diinstal sebelum meningkatkan ke iOS 15, iPadOS 15, atau lebih baru
Merupakan sertifikat (bukan identitas)
Merupakan identitas yang dirujuk oleh
IdentityCertificateUUID
di muatancom.apple.mdm
Kontrol akses rantai kunci
Rantai kunci dapat menggunakan daftar kontrol akses (ACL) untuk mengatur kebijakan aksesibilitas dan persyaratan pengesahan. Item dapat menciptakan situasi yang memerlukan keberadaan pengguna dengan menetapkan bahwa item tidak dapat diakses kecuali disahkan menggunakan Face ID, Touch ID, atau memasukkan kode sandi atau kata sandi perangkat. Akses ke item juga dapat dibatasi dengan menetapkan bahwa pendaftaran Face ID atau Touch ID belum berubah sejak item ditambahkan. Pembatasan ini membantu mencegah penyerang untuk menambahkan sidik jari mereka untuk mengakses item rantai kunci. ACL dievaluasi di dalam Secure Enclave dan dilepaskan ke kernel hanya jika batasannya yang ditetapkan dipenuhi.
Arsitektur rantai kunci di macOS
macOS juga menyediakan akses ke rantai kunci untuk menyimpan dengan mudah dan aman nama pengguna dan kata sandi, identitas digital, kunci enkripsi, serta catatan aman. Rantai kunci dapat diakses dengan membuka app Akses Rantai Kunci di /Aplikasi/Utilitas/. Dengan menggunakan rantai kunci, pengguna tidak perlu memasukkan—atau bahkan mengingat—info pengesahan untuk setiap sumber. Rantai kunci default awal dibuat untuk setiap pengguna Mac, meskipun pengguna dapat membuat rantai kunci lain untuk tujuan tertentu.
Selain bergantung pada rantai kunci pengguna, macOS mengandalkan sejumlah rantai kunci tingkat sistem yang memelihara aset pengesahan yang tidak bersifat khusus untuk pengguna, seperti info pengesahan jaringan dan identitas infrastruktur kunci publik (PKI). Salah satu rantai kunci ini, Dasar Sistem, bersifat tetap dan menyimpan sertifikat otoritas sertifikat dasar (CA) PKI internet untuk memfasilitasi tugas umum seperti perbankan online dan perdagangan elektronik. Sama halnya, pengguna dapat menyebarkan sertifikat CA yang disediakan secara internal ke komputer Mac untuk membantu validasi situs dan layanan internal.