Önce Gizlilik Tasarımı: Not uygulamalarında paranoyak takıntı
Bu sayfa Japonca aslından makine çevirisiyle hazırlanmıştır. Japonca aslını okuyun
1. Not uygulamaları için gizlilik neden önemlidir
Çalışma fikirleri, kişisel taslaklar ve günlük kayıtlar. Not uygulaması, insanlara göstermeden önce bilgi toplar. Hızlı yazabilmek kadar önemli, nerede saklandığını ve nereye gönderildiğini anlamak önemlidir.
Bu makalede, terminaldeki şifreleme, iletişim önbelleği, ekran görüntüsü, tanılama günlüğü ve kullanım analizini ayrı ayrı açıklayacağız. Bir koruma, diğer rotaların korunmasını garanti etmez.
2 Uygulama değiştiricide notları otomatik olarak gizleme işlevi etkin değil
iOS, uygulama arka plana geçtikten sonra ekranı anlık görüntü olarak kullanır. Apple, arka plana geçerken ekrandaki gizli bilgileri kaldırmanız için size rehberlik eder.
5.8.17 kaynağında onaylandı, sceneWillResignActive ve sceneDidEnterBackground taslağı kaydeder ve gizlilik katmanı görüntüleme işlemini çağırmaz. Önceki görüntüleme işlevi kalır, ancak geçerli bir koruma olarak çalışan bir yol değildir.
Görüntülenen notlar uygulama değiştiricinin görüntüsünde kalabilir. Outbox'i şifrelemek ekran görüntüsünü gizlemez. Bu makalenin eski sürümündeki "her zaman notun içeriğini gizle" açıklamasını düzeltin.
3. geçici URLSession: İletişim önbelleğindeki disk depolama alanını azaltın
Standart URLSession önbellekleri, çerezleri ve kimlik doğrulama bilgilerini diskte depolar. Bu, genel uygulamalar için kullanışlı bir özelliktir, ancak not uygulamaları için gereksizdir ve risk oluşturabilir.
İletişim önbelleğinin terminalde kalması, hangi URL'e ve diskte ne zaman eriştiğinize dair izler olduğu anlamına gelir. Bir çerez kaydedilirse, oturum bilgilerinin terminalde kalacağı anlamına gelir.
Bu uygulama URLSessionConfiguration.ephemeral kullanıyor.
private let session: URLSession = {
let config = URLSessionConfiguration.ephemeral
config.httpCookieAcceptPolicy = .never
config.httpShouldSetCookies = false
config.urlCache = nil
return URLSession(configuration: config)
}()
- Disk önbelleği yok:Bu URL Oturumunun önbelleğini diske kaydetmeyin
- Çerezlerin kullanımını devre dışı bırak:Bu URLSession çerezleri kabul etmez ve isteği ayarlamaz
- URL önbellek devre dışı:önbellek depolama alanının kendisini
nilolarak ayarlayın - Kalıcı depolama kullanmayan yapılandırma: URLSession'ın oturum bilgilerini diske saklamayın
Bu, URLSession vb. önbelleği ile ilgili bir korumadır ve uygulamanın ayrı olarak sakladığı ve ilettiği kullanım olaylarını veya sunucu tarafındaki iletim kayıtlarını ortadan kaldıran bir işlev değildir. Kullanım analizinin tanımlayıcısı ile ilişkilendirme de bu ayardan ayrı olarak gerçekleştirilir.
4. Performans ölçüm günlüğünün çıktı aralığı
PerformanceLogger'in günlük çıkışı #if DEBUG ile çevrilidir. DEBUG'un tanımlanmadığı yapılarda, bu logger'ın günlük çıktısı işlemi dahil değildir.
Bu kaydedicinin logError'i, hatanın ayrıntılı ifadesini değil, türü kaydeder. Örneğin, URLError türünü kullanın ve dosya yolları ve kullanıcı girişi içerebilecek localizedDescription'yi olduğu gibi yayınlamayın.
Öte yandan, logEvent'e geçirilen tüm olay adlarını ve ek dizeleri otomatik olarak zararsız hale getiren bir mekanizma değildir. E-posta adresini, not gövdesini veya kimlik doğrulama bilgilerini arayana iletmemek gerekir.
Bu açıklama, tüm uygulama, harici SDK ve işletim sistemi için "sıfır günlük" garantisine genişletilmeyecektir. Şirket içi kullanım olayı iletimi ve AppsFlyer ayrı mekanizmalar olarak etkinleştirilir. Satın alma kapsamı, bu makalenin kullanım analizi SSS'sinde ve Gizlilik Politikası'nda açıklanacaktır.
5. AES-GCM Şifreleme Outbox Koruma Aralığı
İletim bekleyen notlar, terminaldeki Outbox adlı kuyrukta yönetilir. Tasarruf ederken, AES-GCM ile şifrelemek için Apple'in CryptoKit'ini kullanın. Yeni şifreleme anahtarı 256 bit ile oluşturulur.
Anahtarı Anahtar Zinciri'nde saklayın ve kSecAttrAccessibleAfterFirstUnlockThisDeviceOnly'i kullanın. Bu ayarla, yeniden başlatmadan sonra ilk kilit açmadan bir sonraki yeniden başlatmaya erişebilirsiniz ve yedeklemeyi başka bir terminale geri yüklerken anahtar aktarılmaz. Uygulama, şifreleme ve şifre çözme için anahtarı okur.
Bu, depolanan verilerin korunmasıdır ve görüntülenen ekranı gizlemez veya tüm terminal ihlallerine karşı güvenlik sağlamaz. Modeli değiştirmeden önce, lütfen gerekli notların depolama adresine ulaştığından emin olun.
E-posta iletimi kullanılırken, metin Relay API ve teslimat platformumuz tarafından işlenir ve gelen kutusunda bir e-posta olarak kalır. Terminaldeki şifreleme, posta teslimi için uçtan uca şifreleme (E2EE) anlamına gelmez. Ayrıntılar Gizlilik Politikası ve Veri Yolu'nda açıklanmıştır.
İletim bekleme kuyrukları için bkz. Outbox mimarisinin açıklaması.
6. Not gövdesinin korunması ve harici SDK'nın rolü
iOS uygulamasında, notun gövdesini şifrelemek için CryptoKit'i, anahtar depolama için Anahtarlık'ı ve gövdeyi iletmek için URLSession'ı kullanın. Network.framework bağlantı durumunu izler ve BackgroundTasks arka plan iletimini planlamaktan sorumludur.
Öte yandan, uygulama harici bir SDK da kullanır. GoogleSignIn ve Firebase Kimlik Doğrulaması, Google hesabıyla rastgele e-postaları otomatik olarak girmek için kullanılır ve Firebase Uygulama Kontrolü, arka uç API'i korumak için başlangıçta başlatılır. AppsFlyer, satın alma ve kullanım analizi için kullanılır ve kendi analiziniz için ortak olan bir kurulum tanımlayıcısı belirler.
Tasarım, olay öğesine not gövdesini içermese bile, tanımlayıcıların ve iletim kayıtlarının ilişkisi kalır. SDK da dahil olmak üzere kullanım analizinin kapsamının, metnin şifrelenmesinden ayrı olarak onaylanması gerekir. Öğeler ve kullanımlar Gizlilik Politikası'nda açıklanmıştır.
7. Koruma kapsamını belirtin
Terminalde şifreleme, iletişim önbelleğinin işlenmesi ve kullanım analizinin her birinin farklı rolleri vardır. Outbox şifrelemesi ve geçici URLSession ile bile, kullanım olaylarının toplanması kaybolmaz.
Hem hızlı bir şekilde not bırakabilmeye hem de elde edilecek bilgileri anlamaya değer veriyoruz. Kullanım analizinin hedefini, tanımlayıcısını ve ilişki kapsamını açıklayın ve uygulamadaki değişikliklere göre gözden geçirin.
Sık sorulan sorular
Kaynaklar
- Apple Geliştirici — CryptoKit Belgeleri — AES-GCM şifreleme ile Outbox veri korumasını uygulamak için kullanılır
- Apple Geliştirici — URLSession Belgeleri — Geçici (geçici) oturumlar aracılığıyla ağ iletişimi ile gizliliği güvenceye alın
- Apple Geliştirici — Güvenli Olmayan Ağ Bağlantılarını Önleme (Uygulama Aktarım Güvenliği) — TLS iletişimini zorlayarak veri aktarımı sırasında güvenliği sağlama
- Apple Geliştirici — Kodunuzdan Günlük Mesajları Oluşturma — Günlük depolama aralığı ve hassas bilgilerin işlenmesi
- Apple Geliştirici — Kullanıcı Arayüzünüzü Arka Planda Çalışmaya Hazırlama — Uygulama değiştiriciler için anlık görüntüler ve ekran bilgileri
- Apple Geliştirici — İlk Kilit Açıldıktan Sonra Anahtar Zinciri Erişimi, Yalnızca Bu Cihaz — Tuş erişim koşulları ve diğer cihazlara geçiş kısıtlamaları