অ্যান্ড্রয়েড ট্রান্সপোর্ট লেয়ার , আপনার সার্ভার, FCM ব্যাকএন্ড এবং ক্লায়েন্ট ডিভাইসের মধ্যে সম্পূর্ণ সংযোগ সহ, ট্রান্সপোর্ট লেয়ার সিকিউরিটি (TLS) ব্যবহার করে সুরক্ষিত। এটি ট্রানজিটের সময় সমস্ত ডেটার জন্য শক্তিশালী পয়েন্ট-টু-পয়েন্ট এনক্রিপশন প্রদান করে, নেটওয়ার্কে আটকানো থেকে রক্ষা করে। এই শক্তিশালী সুরক্ষা মডেলটি বেশিরভাগ অ্যাপ্লিকেশনের জন্য উপযুক্ত। আপনি FCM আর্কিটেকচার ডকুমেন্টেশনে আরও বিশদ জানতে পারেন।
পয়েন্ট টু পয়েন্ট এনক্রিপশনের একটি সীমাবদ্ধতা হল এটি সম্পূর্ণ পাথের জন্য এনক্রিপ্ট করা হয় না যেখানে কেবল প্রেরক এবং প্রাপক বার্তাটি ডিকোড করতে পারেন। এই কারণেই FCM চ্যাট বার্তা বা প্রমাণীকরণ লেনদেনের মতো গোপনীয়তা সংবেদনশীল যোগাযোগের জন্য এন্ড টু এন্ড এনক্রিপশন ব্যবহার করার পরামর্শ দেয়। এন্ড টু এন্ড এনক্রিপশন সর্বাধিক পেতে, এটিকে উচ্চতর স্তরে প্রয়োগ করতে হবে, যেমন আপনার সার্ভার এবং অ্যাপ কোডের মধ্যে।
সংবেদনশীল ডেটার জন্য এন্ড-টু-এন্ড এনক্রিপশন যোগ করুন
বিশেষ করে সংবেদনশীল ডেটা, যেমন ব্যক্তিগত বার্তা বা ব্যক্তিগত শংসাপত্র পরিচালনাকারী অ্যাপ্লিকেশনগুলির জন্য, আপনি এন্ড-টু-এন্ড এনক্রিপশন (E2EE) সহ সুরক্ষার একটি অতিরিক্ত স্তর যুক্ত করতে পারেন। এই প্রক্রিয়াটিতে FCM এ পাঠানোর আগে আপনার সার্ভারে বার্তা পেলোড এনক্রিপ্ট করা এবং ব্যবহারকারীর ডিভাইসে আপনার অ্যাপের মধ্যে এটি ডিক্রিপ্ট করা জড়িত। এটি FCM ডেটা বার্তাগুলির সাথে কাজ করে, কারণ স্ট্যান্ডার্ড নোটিফিকেশন পেলোডগুলি অপারেটিং সিস্টেম দ্বারা পরিচালিত হয় এবং প্রদর্শিত হওয়ার আগে আপনার অ্যাপ দ্বারা ডিক্রিপ্ট করা যায় না।
মনে রাখবেন যে FCM এন্ড-টু-এন্ড এনক্রিপশনের জন্য কোনও অন্তর্নির্মিত সমাধান প্রদান করে না। আপনার অ্যাপ্লিকেশনের মধ্যে এই সুরক্ষা স্তরটি বাস্তবায়নের জন্য আপনি দায়ী। এই উদ্দেশ্যে ডিজাইন করা বহিরাগত লাইব্রেরি এবং প্রোটোকল রয়েছে, যেমন ক্যাপিলারি বা 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 বাইপাস করে।
এই পদ্ধতির একটি অসুবিধা হল, অ্যাপটি আপনার সার্ভারের সাথে সংযোগ স্থাপনের ফলে ডেটা পুনরুদ্ধার করতে বিলম্ব হতে পারে। যখন কোনও অ্যাপ কোনও ডেটা বার্তা পায়, তখন সাধারণত ব্যাকগ্রাউন্ডে বিজ্ঞপ্তি প্রদর্শনের জন্য মাত্র কয়েক সেকেন্ড সময় লাগে। আপনার সার্ভার থেকে ডেটা আনা এই উইন্ডোর মধ্যে সম্পূর্ণ নাও হতে পারে। এই ডেটা আনার সাফল্য ব্যবহারকারীর ডিভাইস সংযোগের মতো বিষয়গুলির উপর নির্ভর করে।
অতএব, যেখানে ডেটা আনতে খুব বেশি সময় লাগতে পারে, সেক্ষেত্রে ব্যবহারকারীর অভিজ্ঞতার বিকল্পগুলি বিবেচনা করুন। উদাহরণস্বরূপ, আপনি "আপনার কাছে একটি নতুন বার্তা আছে" এর মতো একটি সাধারণ বিজ্ঞপ্তি প্রদর্শন করতে পারেন এবং সম্পূর্ণ সামগ্রী পুনরুদ্ধার হয়ে গেলে এটি আপডেট করতে পারেন।