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

আপনার সার্ভার, FCM ব্যাকএন্ড ও ক্লায়েন্ট ডিভাইসের মধ্যে সম্পূর্ণ কানেকশনের সাথে Android ট্রান্সপোর্ট লেয়ার, ট্রান্সপোর্ট লেয়ার সিকিউরিটি (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=="
    }
  }

আপনি যদি সঠিকভাবে এন্ড-টু-এন্ড এনক্রিপশন প্রয়োগ করে থাকেন, তাহলে ক্লায়েন্ট অ্যাপ্লিকেশন হল একমাত্র পার্টি যে এনক্রিপ্ট করা পেলোড ডিক্রিপ্ট করে আসল মেসেজ দেখাতে পারবে।

বিকল্প: আপনার সার্ভার থেকে সরাসরি কন্টেন্ট আনা

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

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

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