لایه انتقال اندروید ، به همراه کل اتصال بین سرور، بکاندهای FCM و دستگاههای کلاینت شما، با استفاده از امنیت لایه انتقال (TLS) ایمن شده است. این امر رمزگذاری قوی نقطه به نقطه را برای تمام دادهها در حین انتقال فراهم میکند و از رهگیری آنها در شبکه محافظت میکند. این مدل امنیتی قوی برای اکثر برنامهها مناسب است. میتوانید جزئیات بیشتر را در مستندات معماری FCM بیابید.
یکی از محدودیتهای رمزگذاری نقطه به نقطه این است که برای کل مسیر رمزگذاری نمیشود، جایی که فقط فرستنده و گیرنده میتوانند پیام را رمزگشایی کنند. به همین دلیل است که FCM استفاده از رمزگذاری سرتاسری را برای ارتباطات حساس به حریم خصوصی مانند پیامهای چت یا انتقالهای احراز هویت توصیه میکند. برای اینکه از رمزگذاری سرتاسری بیشترین بهره را ببرید، باید آن را در سطح بالاتری، مانند درون سرورها و کد برنامه خود، پیادهسازی کنید.
رمزگذاری سرتاسری را برای دادههای حساس اضافه کنید
برای برنامههایی که با دادههای بسیار حساس، مانند پیامهای خصوصی یا اطلاعات شخصی، کار میکنند، میتوانید با رمزگذاری سرتاسری (E2EE) یک لایه حفاظتی اضافی اضافه کنید. این فرآیند شامل رمزگذاری بار داده پیام روی سرور شما قبل از ارسال آن به FCM و رمزگشایی آن در برنامه شما روی دستگاه کاربر است. این روش با پیامهای داده FCM کار میکند، زیرا بارهای داده اعلان استاندارد توسط سیستم عامل مدیریت میشوند و نمیتوانند قبل از نمایش توسط برنامه شما رمزگشایی شوند.
توجه داشته باشید که FCM یک راهکار داخلی برای رمزگذاری سرتاسری ارائه نمیدهد. شما مسئول پیادهسازی این لایه امنیتی در برنامه خود هستید. کتابخانهها و پروتکلهای خارجی برای این منظور طراحی شدهاند، مانند Capillary یا DTLS .
مثال مفهومی
در اینجا نحوه تغییر بار data FCM هنگام استفاده از E2EE آورده شده است.
قبل از رمزگذاری (بار داده استاندارد):
{
"token": "DEVICE_REGISTRATION_TOKEN",
"data": {
"sender": "user123",
"message_body": "Your 2FA code is 555-123",
"timestamp": "1661299200"
}
}
پس از رمزگذاری (بار داده E2EE):
{
"token": "DEVICE_REGISTRATION_TOKEN",
"data": {
"encrypted_payload": "aG9va2Vk...so much encrypted gibberish...ZW5jcnlwdA=="
}
}
اگر رمزگذاری e2e خود را به درستی پیادهسازی کرده باشید، برنامه کلاینت تنها طرفی است که قادر به رمزگشایی بار رمزگذاری شده برای آشکار کردن پیام اصلی است.
جایگزین: دریافت مستقیم محتوا از سرور شما
اگر رمزگذاری سرتاسری برای برنامه شما مناسب نیست، میتوانید پیامهای داده خالی ارسال کنید. این پیامها به عنوان سیگنالی برای برنامه عمل میکنند تا محتوا را مستقیماً از سرورهای شما دریافت کند. این بدان معناست که دادههای حساس فقط بین برنامه شما و سرورهای شما منتقل میشوند و FCM برای انتقال دادهها دور میزنند.
یکی از معایب این روش، تأخیر احتمالی ناشی از اتصال برنامه به سرور شما برای بازیابی دادهها است. وقتی برنامهای یک پیام داده دریافت میکند، معمولاً فقط چند ثانیه فرصت دارد تا قبل از خاموش شدن، یک اعلان نمایش دهد. ممکن است دریافت دادهها از سرور شما در این پنجره کامل نشود. موفقیت این دریافت دادهها به عواملی مانند اتصال دستگاه کاربر بستگی دارد.
بنابراین، برای موقعیتهایی که دریافت دادهها ممکن است خیلی طول بکشد، گزینههای جایگزین تجربه کاربری را در نظر بگیرید. برای مثال، میتوانید یک اعلان عمومی مانند «شما یک پیام جدید دارید» نمایش دهید و سپس پس از بازیابی کامل محتوا، آن را بهروزرسانی کنید.