Anahtar zinciri verilerini koruma
Pek çok uygulamanın parolalar ve anahtarlar ya da oturum açma jetonları gibi diğer kısa ama hassas veri parçacıklarını işlemesi gerekir. Anahtar zinciri, bu öğeleri saklamak için güvenli bir yol sunar. Farklı Apple işletim sistemleri, farklı anahtar zinciri koruma sınıflarıyla ilişkili güvenceleri uygulamak için farklı mekanizmalar kullanır. macOS’te (Apple Silicon yongalı Mac dahil olmak üzere) bu güvenceleri uygulamak için Veri Koruma doğrudan kullanılmaz.
Genel Bakış
Anahtar zinciri öğeleri iki farklı AES 256 GCM anahtarı kullanılarak şifrelenir: bir tablo anahtarı (üst veri) ve bir satıra özel anahtar (sır anahtarı). Anahtar zinciri üst verileri (kSecValue dışındaki tüm özellikler), aramaları hızlandırmak amacıyla üst veri anahtarıyla ve sır değeri (kSecValueData) sır anahtarıyla şifrelenir. Üst veri anahtarı Secure Enclave tarafından korunur ancak anahtar zincirinin hızlı sorgularına izin vermek için uygulama işlemcisinde önbelleğe alınır. Sır anahtarının her zaman Secure Enclave üzerinden geçmesi gerekir.
Anahtar zinciri, dosya sisteminde saklanan bir SQLite veri tabanı olarak uygulanır. Tek bir veri tabanı vardır ve her işlemin veya uygulamanın hangi anahtar zinciri öğelerine erişebileceğini securityd
arka plan programı belirler. Anahtar zinciri erişimi API’leri, arka plan programına çağrı yapar ve o da uygulamanın “Keychain-access-groups”, “application-identifier” ve “application-group” yetki anahtarlarını sorgular. Erişim grupları, erişimi tek bir işlemle sınırlamak yerine anahtar zinciri öğelerinin uygulamalar arasında paylaşılmasına olanak tanır.
Anahtar zinciri öğeleri yalnızca aynı geliştiriciye ait uygulamalar arasında paylaşılabilir. Anahtar zinciri öğelerinin paylaşılması için üçüncü parti uygulamalar, kendilerine Apple Geliştirici Programı tarafından uygulama grupları yoluyla ayrılmış bir ön ekle erişim gruplarını kullanır. Ön ek gereksinimi ve uygulama grubunun benzersizliği; kod imzalama, hazırlık profilleri ve Apple Geliştirici Programı aracılığıyla uygulanır.
Anahtar zinciri verileri, dosya için Veri Koruma’da kullanılana benzer bir sınıf yapısı kullanılarak korunur. Bu sınıfların davranışları, dosya Veri Koruma sınıflarınınkine eşdeğerdir ancak bu sınıflar ayrı anahtarlar ve işlevler kullanır.
Kullanılabilirlik | Dosya verilerini koruma | Anahtar zinciri verilerini koruma | |||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Kilitli değilken | NSFileProtectionComplete | kSecAttrAccessibleWhenUnlocked | |||||||||
Kilitliyken | NSFileProtectionCompleteUnlessOpen | Yok | |||||||||
İlk kilit açma işleminden sonra | NSFileProtectionCompleteUntilFirstUserAuthentication | kSecAttrAccessibleAfterFirstUnlock | |||||||||
Her zaman | NSFileProtectionNone | kSecAttrAccessibleAlways | |||||||||
Parola etkin | Yok | kSecAttrAccessibleWhenPasscodeSetThisDeviceOnly |
Arka planda yenileme servislerini kullanan uygulamalar, arka plan güncellemeleri sırasında erişilmesi gereken anahtar zinciri öğeleri için kSecAttrAccessibleAfterFirstUnlock kullanabilir.
kSecAttrAccessibleWhenPasscodeSetThisDeviceOnly sınıfı, kSecAttrAccessibleWhenUnlocked ile aynı şekilde davranır ancak yalnızca aygıt parolayla ayarlandığı zaman kullanılabilir. Bu sınıf yalnızca sistem anahtar çantasında vardır; sınıf:
iCloud Anahtar Zinciri ile eşzamanlanmaz
Yedeklenmez
Emanet anahtar çantalarına dahil edilmez
Parola silinirse veya sıfırlanırsa sınıf anahtarları atılarak öğeler kullanılamaz hâle getirilir.
Diğer anahtar zinciri sınıflarında, yedekleme sırasında aygıttan kopyalanırken her zaman UID ile korunan ve farklı bir aygıta geri yüklendiği takdirde onu kullanılamaz hâle getiren “Yalnızca bu aygıt” karşılığı bulunur. Apple, güvence altına alınan bilgi türüne ve iOS ve iPadOS tarafından gereksinim duyulmasına bağlı olan anahtar zinciri sınıfları seçerek güvenlikle kullanılabilirliği dikkatle dengelemiştir. Örneğin, bir VPN sertifikası aygıtın sürekli bağlantıyı koruyabilmesi için her zaman kullanılabilir olmalıdır; ancak “aktarılamaz” olarak sınıflandırıldığından başka bir aygıta taşınamaz.
Anahtar zinciri veri sınıfı korumaları
Anahtar zinciri öğeleri için aşağıda listelenen sınıf korumaları uygulanır.
Öğe | Erişilebilir |
---|---|
Wi-Fi parolaları | İlk kilit açma işleminden sonra |
Mail hesapları | İlk kilit açma işleminden sonra |
Microsoft Exchange ActiveSync hesapları | İlk kilit açma işleminden sonra |
VPN parolaları | İlk kilit açma işleminden sonra |
LDAP, CalDAV, CardDAV | İlk kilit açma işleminden sonra |
Sosyal ağ hesabı jetonları | İlk kilit açma işleminden sonra |
Handoff duyuru şifreleme anahtarları | İlk kilit açma işleminden sonra |
iCloud jetonu | İlk kilit açma işleminden sonra |
iMessage anahtarları | İlk kilit açma işleminden sonra |
Ev paylaşımı parolası | Kilitli değilken |
Safari parolaları | Kilitli değilken |
Safari yer imleri | Kilitli değilken |
Finder/iTunes yedeklemesi | Kilitli değilken, aktarılamaz |
Konfigürasyon profili tarafından yüklenen gizli anahtarlar | Kilitli değilken, aktarılamaz |
VPN sertifikaları | Her zaman, aktarılamaz |
Bluetooth® anahtarları | Her zaman, aktarılamaz |
Apple Anında İletme Bildirim servisi (APNs) jetonu | Her zaman, aktarılamaz |
iCloud sertifikaları ve gizli anahtar | Her zaman, aktarılamaz |
SIM PIN | Her zaman, aktarılamaz |
Konfigürasyon profili tarafından yüklenen sertifikalar | Her zaman |
Bul jetonu | Her zaman |
Sesli Mesaj | Her zaman |
Anahtar zincirine erişim denetimi
Anahtar zincirleri, erişilebilirlik ve kimlik doğrulama gereksinimlerine yönelik politikaları ayarlamak için erişim denetim listelerini (ACL) kullanabilir. Öğeler, kendilerine Face ID veya Touch ID kullanılarak kimlik doğrulaması yapılmadan veya aygıtın parolası girilmeden erişilemeyeceğini belirterek kullanıcı varlığını gerektiren koşullar belirleyebilir. Öğelere erişim, öğe eklendikten sonra Face ID veya Touch ID kaydının değişmediği belirtilerek de sınırlanabilir. Bu sınırlama, bir saldırganın anahtar zinciri öğesine erişmek için kendi parmak izini eklemesini önlemeye yardımcı olur. ACL’ler Secure Enclave içinde değerlendirilir ve yalnızca kendileriyle ilgili belirtilen sınırlamalara uyuluyorsa çekirdeğe verilir.
macOS’te anahtar zinciri mimarisi
macOS; kullanıcı adlarını ve parolaları, dijital kimlikleri, şifreleme anahtarlarını ve güvenli notları kolay ve güvenli bir şekilde saklamak için anahtar zincirine erişim de sağlar. Anahtar zincirine, /Uygulamalar/İzlenceler klasöründeki Anahtar Zinciri Erişimi uygulaması açılarak erişilebilir. Anahtar zinciri kullanmak, her kaynak için kimlik bilgilerini girme (hatta anımsama) zorunluluğunu ortadan kaldırır. Başlangıçta her Mac kullanıcısı için saptanmış bir anahtar zinciri yaratılır; kullanıcılar belirli amaçlara yönelik başka anahtar zincirleri de yaratabilir.
macOS, kullanıcı anahtar zincirlerine güvenmenin yanı sıra ağ kimlik bilgileri ve açık anahtar altyapısı (PKI) kimlikleri gibi kullanıcıya özel olmayan kimlik doğrulama varlıklarını içeren sistem düzeyinde birkaç anahtar zincirine daha güvenir. Bu anahtar zincirlerinden biri olan Sistem Kökleri, değişmez bir öğedir ve çevrimiçi banka ve e-ticaret işlemleri gibi yaygın görevleri kolaylaştırmak için internet PKI kök sertifika otoritesi (CA) sertifikalarını saklar. Kullanıcı, benzer şekilde dahili sitelerin ve servislerin doğrulanmasına yardımcı olması için dahili olarak hazırlanan CA sertifikalarını yönetilen Mac bilgisayarlarına dağıtabilir.