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

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

পয়েন্ট-টু-পয়েন্ট এনক্রিপশনের একটি সীমাবদ্ধতা হলো, এটি তার সম্পূর্ণ পথ জুড়ে এনক্রিপ্টেড থাকে না, যেখানে শুধুমাত্র প্রেরক এবং প্রাপকই বার্তাটি ডিকোড করতে পারেন। এই কারণেই 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 এড়িয়ে যাওয়া হয়।

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

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