با رمزگذاری سرتاسر، داده‌های پیام را ایمن کنید

لایه انتقال Android، همراه با کل اتصال بین سرور شما، باطن‌های FCM، و دستگاه‌های کارخواه، بااستفاده از امنیت لایه انتقال (TLS) ایمن می‌شود. این کار رمزگذاری نقطه به نقطه قوی برای همه داده‌ها درحین انتقال فراهم می‌کند و از رهگیری آن‌ها در شبکه محافظت می‌کند. این مدل امنیتی قوی برای اکثر برنامه‌ها مناسب است. می‌توانید جزئیات بیشتر را در سند معماری FCM پیدا کنید.

یکی از محدودیت‌های رمزگذاری نقطه‌به‌نقطه این است که در کل مسیر رمزگذاری نمی‌شود و فقط فرستنده و گیرنده می‌توانند پیام را رمزگشایی کنند. به همین دلیل است که FCM توصیه می‌کند برای ارتباطات حساس به حریم خصوصی مانند پیام‌های گپ یا تراکنش‌های اصالت‌سنجی از رمزگذاری سرتاسر استفاده کنید. برای اینکه بیشترین بهره را از رمزگذاری سرتاسر ببرید، باید آن را در سطح بالاتری، مثلاً در سرورها و کد برنامه، پیاده‌سازی کنید.

افزودن رمزگذاری سرتاسر برای داده‌های حساس

برای برنامه‌هایی که داده‌های بسیار حساس را مدیریت می‌کنند، مانند پیام‌های خصوصی یا اطلاعات اعتباری شخصی، می‌توانید بااستفاده از رمزگذاری سرتاسر (E2EE) یک لایه محافظتی اضافی اضافه کنید. این فرایند شامل رمزگذاری محتوای پیام در سرور شما قبل‌از ارسال آن به FCM و رمزگشایی آن در برنامه شما در دستگاه کاربر است. این ویژگی با پیام‌های داده FCM کار می‌کند، زیرا محموله‌های اعلان استاندارد توسط سیستم‌عامل مدیریت می‌شوند و نمی‌توانند قبل‌از نمایش توسط برنامه شما رمزگشایی شوند.

توجه داشته باشید که FCM راهکار داخلی برای رمزگذاری سرتاسر ارائه نمی‌دهد. مسئولیت پیاده‌سازی این لایه امنیتی در برنامه‌تان برعهده شما است. کتابخانه‌ها و پروتکل‌های خارجی‌ای برای این منظور طراحی شده‌اند، مثل Capillary یا DTLS.

نمونه مفهومی

در اینجا نحوه تغییر بار داده FCM data هنگام استفاده از «رمزگذاری سرتاسر» نشان داده شده است.

پیش‌از رمزگذاری (بار استاندارد):

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

پس‌از رمزگذاری (پایه‌بار رمزگذاری سرتاسر):

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

اگر رمزگذاری سرتاسری را به‌درستی پیاده‌سازی کرده باشید، برنامه کارخواه تنها طرفی است که می‌تواند بار داده رمزگذاری‌شده را رمزگشایی کند تا پیام اصلی را آشکار کند.

جایگزین: واکشی مستقیم محتوا از سرور شما

اگر رمزگذاری سرتاسر برای برنامه‌تان مناسب نیست، می‌توانید به‌جای آن پیام‌های داده خالی ارسال کنید. این پیام‌ها به‌عنوان سیگنالی برای برنامه عمل می‌کنند تا محتوا را مستقیماً از سرورهای شما واکشی کند. این یعنی داده‌های حساس فقط بین برنامه شما و سرورهایتان منتقل می‌شود و برای انتقال داده، FCM را دور می‌زند.

یکی از معایب این روش تأخیر احتمالی ناشی از اتصال برنامه به سرور شما برای بازیابی داده‌ها است. وقتی برنامه‌ای پیام داده دریافت می‌کند، معمولاً فقط چند ثانیه فرصت دارد تا قبل‌از رفتن به پس‌زمینه، اعلانی را نمایش دهد. ممکن است واکشی داده‌ها از سرور شما در این پنجره تکمیل نشود. موفقیت این واکشی داده به عواملی مانند اتصال دستگاه کاربر بستگی دارد.

بنابراین، برای موقعیت‌هایی که واکشی داده ممکن است خیلی طول بکشد، جایگزین‌هایی برای تجربه کاربری درنظر بگیرید. برای مثال، می‌توانید اعلانی عمومی مثل «پیام جدیدی دارید» نمایش دهید و سپس وقتی محتوای کامل بازیابی شد، آن را به‌روز کنید.