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

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

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

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

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

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

مثال مفهومی

در اینجا نحوه تغییر بار FCM data هنگام استفاده از 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=="
    }
  }

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

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

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

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

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