Veri Koruma için anahtar çantaları
iOS’te, iPadOS’te, tvOS’te ve watchOS’te dosya ve anahtar zinciri Veri Koruma sınıflarındaki anahtarlar, anahtar çantalarında toplanır ve yönetilir. Bu işletim sistemleri şu anahtar çantalarını kullanır: kullanıcı, aygıt, yedekleme, emanet ve iCloud Yedekleme.
Kullanıcı anahtar çantası
Kullanıcı anahtar çantası, aygıtın normal işleyişinde kullanılan paketlenmiş sınıf anahtarlarının saklandığı yerdir. Örneğin bir parola girildiğinde NSFileProtectionComplete, kullanıcı anahtar çantasından yüklenir ve paketi açılır. Koruma Yok sınıfında saklanan ikili bir özellik listesi (.plist) dosyasıdır.
A9’dan önceki SoC’lere sahip aygıtlarda bu .plist dosyasının içeriği, Silinebilir Saklama Alanı’nda tutulan bir anahtarla şifrelenir. Anahtar çantalarına daha fazla güvenlik sağlamak için kullanıcı, parolasını her değiştirdiğinde bu anahtar silinir ve yeniden oluşturulur.
A9 veya daha yeni SoC’lere sahip aygıtlar için bu .plist dosyası, anahtar çantasının Secure Enclave denetimindeki yeniden göndermeyi önleme değeri tarafından korunan bir kasada saklandığını belirten bir anahtar içerir.
Secure Enclave, kullanıcı anahtar çantasını yönetir ve aygıtın kilit durumuna ilişkin olarak sorgulanabilir. Yalnızca kullanıcı anahtar çantasındaki tüm sınıf anahtarlarına erişilebiliyorsa ve bu anahtarların paketi başarılı bir şekilde açılırsa aygıtın kilidinin açıldığını bildirir.
Aygıt anahtar çantası
Aygıt anahtar çantası, aygıta özel verileri ilgilendiren işlemler için kullanılan paketlenmiş sınıf anahtarlarını saklamak için kullanılır. Paylaşılan kullanım için ayarlanmış iPadOS aygıtlarının kimi zaman kullanıcılar oturum açmadan önce kimlik bilgilerine erişmesi gerekir; bunun için kullanıcı parolasıyla korunmayan bir anahtar çantası gerekir.
iOS ve iPadOS, kullanıcıya özel dosya sistemi içeriğinin şifreli ayrılmasını desteklemez; bu durumda sistem dosyaya özel anahtarları paketlemek için aygıt anahtar çantasındaki sınıf anahtarlarını kullanır. Buna karşılık anahtar zinciri, kullanıcının anahtar zincirindeki öğeleri korumak için kullanıcı anahtar çantasındaki sınıf anahtarlarını kullanır. Tek bir kullanıcı tarafından kullanılmak üzere ayarlanmış iPhone ve iPad aygıtlarında (saptanmış konfigürasyon), aygıt anahtar çantası ve kullanıcı anahtar çantası aynıdır ve kullanıcı parolasıyla korunur.
Yedekleme anahtar çantası
Yedekleme anahtar çantası, Finder (macOS 10.15 veya daha yenisinde) ya da iTunes (macOS 10.14 veya daha eskisinde) tarafından şifreli bir yedekleme oluşturulup aygıtın yedeklendiği bilgisayarda saklandığında yaratılır. Yeni bir anahtar kümesi içeren yeni bir anahtar çantası yaratılır ve yedeklenen veriler bu yeni anahtarlarla yeniden şifrelenir. Daha önce açıklandığı gibi, aktarılamayan anahtar zinciri öğeleri UID’den türetilen anahtarla paketlenmiş kalır ve böylece özgün olarak yedeklendikleri aygıta geri yüklenmelerine izin verilirken farklı bir aygıtta erişilemez hâle gelmeleri sağlanır.
Anahtar çantası (ayarlanmış parolayla korunan) için PBKDF2 anahtar türetme işlevi 10 milyon kez çalıştırılır. Bu büyük yineleme sayısına karşın belirli bir aygıtla bağlantı olmadığından, teorik olarak yedekleme anahtar çantasına pek çok bilgisayarda paralel olarak gerçekleştirilen bir deneme yanılma saldırısı düzenlenebilir. Bu tehdit yeterince güçlü bir parolayla azaltılabilir.
Kullanıcı yedeklemeyi şifrelememeyi seçerse Veri Koruma sınıfları ne olursa olsun dosyalar şifrelenmez ancak anahtar zinciri, UID’den türetilen bir anahtarla korunmaya devam eder. Anahtar zinciri öğelerinin ancak yedekleme parolası ayarlanmışsa yeni bir aygıta aktarılmasının nedeni budur.
Emanet anahtar çantası
Emanet anahtar çantası, Finder (macOS 10.15 veya daha yenisi) ya da iTunes (macOS 10.14 veya daha eskisi) ile USB ve mobil aygıt yönetimi (MDM) aracılığıyla eşzamanlama için kullanılır. Bu anahtar çantası, kullanıcının parola girmesini gerektirmeden Finder’ın veya iTunes’un yedekleme yapmasını ve MDM çözümünün kullanıcının parolasını uzaktan silmesini sağlar. Finder veya iTunes ile eşzamanlama için kullanılan bilgisayarda veya aygıtı uzaktan yöneten MDM çözümünde saklanır.
Emanet anahtar çantası, potansiyel olarak tüm veri sınıflarına erişimi gerektiren aygıt eşzamanlaması sırasında kullanıcı deneyimini iyileştirir. Parolayla kilitlenmiş bir aygıt Finder’a veya iTunes’a ilk kez bağlandığında kullanıcının parola girmesi istenir. Aygıt daha sonra aygıtta kullanılan sınıf anahtarlarının aynısını içeren ve yeni oluşturulan bir anahtarla korunan bir emanet anahtar çantası yaratır. Emanet anahtar çantası ve bunu koruyan anahtar, aygıtla ana bilgisayar veya sunucu arasında bölünür; aygıttaki veriler İlk Kullanıcı Kimlik Doğrulamasına Kadar Korumalı sınıfında saklanır. Bu nedenle yeniden başlatma işleminden sonra kullanıcı Finder veya iTunes ile ilk kez yedekleme yapmadan önce aygıt parolasının girilmesi gerekir.
Kablosuz (OTA) yazılım güncellemesi durumunda, güncelleme başlatılırken kullanıcının parolasını girmesi istenir. Bu parola güvenli bir şekilde tek kullanımlık kilit açma jetonu yaratmak için kullanılır ve güncellemeden sonra kullanıcı anahtar çantasının kilidi bununla açılır. Bu jeton kullanıcı parolası girilmeden oluşturulamaz ve kullanıcı parolası değiştiği takdirde önceden oluşturulan jetonlar geçersiz kılınır.
Tek kullanımlık kilit açma jetonları, katılımlı veya katılımsız yazılım güncelleme yüklemesine yöneliktir. Secure Enclave’deki tekdüze sayacın geçerli değerinden, anahtar çantasının UUID’sinden ve Secure Enclave UID’sinden türetilen bir anahtarla şifrelenirler.
A9 (veya daha yeni) SoC’lerde, tek kullanımlık kilit açma jetonu artık sayaçlara veya Silinebilir Saklama Alanı’na güvenmez. Bunun yerine, Secure Enclave tarafından denetlenen yeniden göndermeyi önleme değeri tarafından korunur.
Katılımlı yazılım güncellemelerine yönelik tek kullanımlık kilit açma jetonunun süresi 20 dakika sonra dolar. iOS 13, iPadOS 13.1 veya daha yenisinde bu jeton Secure Enclave tarafından korunan bir kasada saklanır. iOS 13’ten önce bu jeton, Secure Enclave’den dışa aktarılır ve Silinebilir Saklama Alanı’na yazılır veya Secure Enclave yeniden göndermeyi önleme mekanizması ile korunurdu. Aygıt 20 dakika içinde yeniden başlatılmamışsa politika sayacı jeton sayacını artırırdı.
Sistem bir güncelleme olduğunu algılarsa ve aşağıdakilerden biri doğruysa gözetimsiz yazılım güncellemeleri gerçekleşir:
iOS 12 veya daha yenisinde otomatik güncellemeler ayarlandığında.
Kullanıcı, güncelleme bildirildiği zaman Sonra Yükle’yi seçtiğinde.
Kullanıcı parolasını girdikten sonra, tek kullanımlık kilit açma jetonu oluşturulur ve Secure Enclave’de 8 saate kadar geçerli kalabilir. Güncelleme henüz gerçekleşmediyse bu tek kullanımlık kilit açma jetonu her kilitlemede ortadan kaldırılır ve devamındaki her kilit açmada yeniden yaratılır. Her kilit açma 8 saatlik pencereyi yeniden başlatır. 8 saatten sonra, politika zamanlayıcısı tek kullanımlık kilit açma jetonunu geçersiz kılar.
iCloud Yedekleme anahtar çantası
iCloud Yedekleme anahtar çantası, yedekleme anahtar çantasına benzer. Bu anahtar çantasındaki tüm sınıf anahtarları asimetriktir (Açık Olmadığı Sürece Korumalı Veri Koruma sınıfında olduğu gibi Curve25519 kullanılır). Asimetrik anahtar çantası, iCloud Anahtar Zinciri kurtarması için yedeklenen anahtar zincirini korumak için de kullanılır.