এন্ড-টু-এন্ড এনক্রিপশনের মাধ্যমে আপনার মেসেজ ডেটা সুরক্ষিত রাখা

Android ট্রান্সপোর্ট লেয়ার, আপনার সার্ভার, FCM ব্যাকএন্ড এবং ক্লায়েন্ট ডিভাইসের মধ্যে সম্পূর্ণ কানেকশন ট্রান্সপোর্ট লেয়ার সিকিউরিটি (TLS) ব্যবহার করে সুরক্ষিত করা হয়। এটি ট্রানজিটে থাকা সব ডেটার জন্য শক্তিশালী পয়েন্ট-টু-পয়েন্ট এনক্রিপশন প্রদান করে, যাতে নেটওয়ার্কে ডেটা ইন্টারসেপ্ট করা না যায়। এই শক্তিশালী নিরাপত্তা মডেলটি বেশিরভাগ অ্যাপ্লিকেশনের জন্য উপযুক্ত। আপনি FCM আর্কিটেকচার ডকুমেন্টেশন থেকে আরও বিবরণ পেতে পারেন।

পয়েন্ট-টু-পয়েন্ট এনক্রিপশনের একটি সীমাবদ্ধতা হল যে এটি সম্পূর্ণ পথের জন্য এনক্রিপ্ট করা হয় না যেখানে শুধুমাত্র প্রেরক এবং প্রাপক মেসেজ ডিকোড করতে পারেন। এই কারণে, চ্যাট মেসেজ বা যাচাইকরণ ট্রানজ্যাকশনের মতো গোপনীয়তা সংবেদনশীল যোগাযোগের জন্য FCM এন্ড-টু-এন্ড এনক্রিপশন ব্যবহার করার সাজেশন দেয়। এন্ড-টু-এন্ড এনক্রিপশন থেকে সর্বাধিক সুবিধা পেতে, এটি আরও উচ্চ স্তরে প্রয়োগ করতে হবে, যেমন আপনার সার্ভার এবং অ্যাপ কোডের মধ্যে।

সংবেদনশীল ডেটার জন্য এন্ড-টু-এন্ড এনক্রিপশন যোগ করুন

ব্যক্তিগত মেসেজ বা ব্যক্তিগত ক্রেডেনশিয়ালের মতো বিশেষ সংবেদনশীল ডেটা ম্যানেজ করে এমন অ্যাপ্লিকেশনের জন্য, আপনি এন্ড-টু-এন্ড এনক্রিপশন (E2EE)-এর মাধ্যমে সুরক্ষার অতিরিক্ত স্তর যোগ করতে পারেন। এই প্রসেসে, FCM-এ পাঠানোর আগে আপনার সার্ভারে মেসেজ পেলোড এনক্রিপ্ট করা হয় এবং ব্যবহারকারীর ডিভাইসে আপনার অ্যাপের মধ্যে এটি ডিক্রিপ্ট করা হয়। এটি FCM ডেটা মেসেজের সাথে কাজ করে, কারণ স্ট্যান্ডার্ড বিজ্ঞপ্তি পেলোড অপারেটিং সিস্টেম দ্বারা ম্যানেজ করা হয় এবং দেখানোর আগে আপনার অ্যাপের মাধ্যমে ডিক্রিপ্ট করা যায় না।

মনে রাখবেন যে FCM এন্ড-টু-এন্ড এনক্রিপশনের জন্য কোনও বিল্ট-ইন সমাধান প্রদান করে না। আপনার অ্যাপ্লিকেশনে এই নিরাপত্তা স্তর প্রয়োগ করার জন্য আপনি দায়িত্বপ্রাপ্ত। এই উদ্দেশ্যে ডিজাইন করা এক্সটার্নাল লাইব্রেরি ও প্রোটোকল আছে, যেমন Capillary বা DTLS।

কনসেপ্টচুয়াল উদাহরণ

E2EE ব্যবহার করার সময় FCM data পেলোড কীভাবে পরিবর্তিত হয় তা এখানে দেওয়া হল।

এনক্রিপশনের আগে (স্ট্যান্ডার্ড পেলোড):

    {
      "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 বাইপাস করা হয়।

এই পদ্ধতির একটি অসুবিধা হল, ডেটা ফিরিয়ে আনার জন্য আপনার সার্ভারের সাথে অ্যাপ কানেক্ট করার সময় সম্ভাব্য দেরি হতে পারে। কোনও অ্যাপ ডেটা মেসেজ পেলে, ব্যাকগ্রাউন্ডে চলে যাওয়ার আগে বিজ্ঞপ্তি দেখানোর জন্য সাধারণত মাত্র কয়েক সেকেন্ড সময় পায়। আপনার সার্ভার থেকে ডেটা ফেচ করার প্রসেস এই উইন্ডোর মধ্যে সম্পূর্ণ নাও হতে পারে। এই ডেটা ফেচ করার সাফল্য ব্যবহারকারীর ডিভাইস কানেক্টিভিটির মতো বিষয়ের উপর নির্ভর করে।

তাই, ডেটা ফেচ করতে অনেক সময় লাগলে, ব্যবহারকারীর অভিজ্ঞতা উন্নত করার জন্য বিকল্প উপায় খুঁজুন। যেমন, আপনি "আপনার কাছে একটি নতুন মেসেজ এসেছে" এই ধরনের সাধারণ বিজ্ঞপ্তি দেখাতে পারেন এবং সম্পূর্ণ কন্টেন্ট পাওয়া গেলে এটি আপডেট করতে পারেন।