لایه حمل و نقل Android ، همراه با کل اتصال بین سرور، پشتیبانهای 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 Payload):
{
"token": "DEVICE_REGISTRATION_TOKEN",
"data": {
"encrypted_payload": "aG9va2Vk...so much encrypted gibberish...ZW5jcnlwdA=="
}
}
اگر رمزگذاری e2e خود را به درستی پیادهسازی کردهاید، برنامه مشتری تنها طرفی است که قادر به رمزگشایی محموله رمزگذاریشده برای آشکار کردن پیام اصلی است.
جایگزین: واکشی مستقیم محتوا از سرور شما
اگر رمزگذاری سرتاسر برای برنامه شما مناسب نیست، میتوانید پیامهای داده خالی ارسال کنید. این پیام ها به عنوان سیگنالی برای برنامه عمل می کنند تا محتوا را مستقیماً از سرورهای شما دریافت کند. این بدان معنی است که داده های حساس فقط بین برنامه و سرورهای شما منتقل می شوند و برای انتقال داده FCM عبور می کنند.
اشکال این روش تاخیر احتمالی ناشی از اتصال برنامه به سرور شما برای بازیابی اطلاعات است. هنگامی که یک برنامه یک پیام داده دریافت می کند، معمولاً فقط چند ثانیه فرصت دارد تا یک اعلان را قبل از قرار گرفتن در پس زمینه نمایش دهد. ممکن است واکشی داده ها از سرور شما در این پنجره کامل نشود. موفقیت این واکشی داده به عواملی مانند اتصال دستگاه کاربر بستگی دارد.
بنابراین، برای موقعیتهایی که واکشی دادهها ممکن است خیلی طول بکشد، گزینههای جایگزین تجربه کاربر را در نظر بگیرید. به عنوان مثال، میتوانید یک اعلان عمومی مانند «پیام جدیدی دارید» را نمایش دهید و پس از بازیابی محتوای کامل، آن را بهروزرسانی کنید.