Uçtan uca şifrelemeyle mesaj verilerinizin güvenliğini sağlama

Android Taşıma Katmanı ile sunucunuz, FCM arka uçları ve istemci cihazlar arasındaki bağlantının tamamı Taşıma Katmanı Güvenliği (TLS) kullanılarak korunur. Bu sayede, aktarım sırasında tüm veriler için güçlü bir noktadan noktaya şifreleme sağlanır ve veriler ağda ele geçirilmeye karşı korunur. Bu güçlü güvenlik modeli, uygulamaların büyük çoğunluğu için uygundur. FCM Mimarisi belgelerinde daha fazla bilgi bulabilirsiniz.

Noktadan noktaya şifrelemenin sınırlamalarından biri, mesajın yalnızca gönderen ve alıcı tarafından çözülebileceği tüm yol boyunca şifrelenmemesidir. Bu nedenle FCM, sohbet mesajları veya kimlik doğrulama işlemleri gibi gizlilik açısından hassas iletişimler için uçtan uca şifreleme kullanılmasını önerir. Uçtan uca şifrelemeden en iyi şekilde yararlanmak için bu özelliğin sunucularınız ve uygulama kodunuz gibi daha yüksek bir düzeyde uygulanması gerekir.

Hassas veriler için uçtan uca şifreleme ekleme

Özel mesajlar veya kişisel kimlik bilgileri gibi özellikle hassas verileri işleyen uygulamalar için uçtan uca şifreleme (E2EE) ile ek bir koruma katmanı ekleyebilirsiniz. Bu işlem, ileti yükünün FCM hizmetine gönderilmeden önce sunucunuzda şifrelenmesini ve kullanıcının cihazındaki uygulamanızda şifresinin çözülmesini içerir. Bu, FCM veri mesajlarıyla çalışır. Standart bildirim yükleri işletim sistemi tarafından işlenir ve görüntülenmeden önce uygulamanız tarafından şifresi çözülemez.

FCM, uçtan uca şifreleme için yerleşik bir çözüm sunmaz. Bu güvenlik katmanını uygulamanızda kullanmak sizin sorumluluğunuzdadır. Bu amaçla tasarlanmış Capillary veya DTLS gibi harici kitaplıklar ve protokoller vardır.

Kavramsal Örnek

Uçtan uca şifreleme kullanıldığında FCM data yükünün nasıl değiştiğini aşağıda görebilirsiniz.

Şifrelemeden Önce (Standart Yük):

    {
      "token": "DEVICE_REGISTRATION_TOKEN",
      "data": {
        "sender": "user123",
        "message_body": "Your 2FA code is 555-123",
        "timestamp": "1661299200"
      }
    }

Şifrelemeden sonra (E2EE yükü):

  {
    "token": "DEVICE_REGISTRATION_TOKEN",
    "data": {
      "encrypted_payload": "aG9va2Vk...so much encrypted gibberish...ZW5jcnlwdA=="
    }
  }

Uçtan uca şifrelemeyi doğru şekilde uyguladıysanız şifrelenmiş yükün şifresini çözerek orijinal mesajı gösterebilecek tek taraf istemci uygulamadır.

Alternatif: İçeriği doğrudan sunucunuzdan getirme

Uygulamanız için uçtan uca şifreleme uygun değilse boş veri mesajları gönderebilirsiniz. Bu mesajlar, uygulamanın içeriği doğrudan sunucularınızdan getirmesi için bir sinyal görevi görür. Bu, hassas verilerin yalnızca uygulamanız ile sunucularınız arasında taşındığı ve veri aktarımı için FCM'in kullanılmadığı anlamına gelir.

Bu yöntemin dezavantajı, uygulamanın verileri almak için sunucunuza bağlanmasından kaynaklanan olası gecikmedir. Bir uygulama veri mesajı aldığında, arka plana alınmadan önce bildirimi görüntülemek için genellikle yalnızca birkaç saniyesi olur. Sunucunuzdan veri alma işlemi bu süre içinde tamamlanamayabilir. Bu veri alma işleminin başarısı, kullanıcının cihaz bağlantısı gibi faktörlere bağlıdır.

Bu nedenle, veri getirme işleminin çok uzun sürebileceği durumlar için kullanıcı deneyimi alternatiflerini değerlendirin. Örneğin, "Yeni bir mesajınız var" gibi genel bir bildirim gösterip tüm içerik alındıktan sonra bildirimi güncelleyebilirsiniz.