এনক্রিপশন (encryption) হল ডেটাকে এমন একটি ফর্মে রূপান্তর করার প্রক্রিয়া যা বিশেষ কী ছাড়া পড়া যায় না। মোবাইল অ্যাপ্লিকেশনে, এনক্রিপশন ব্যবহারকারীদের ব্যক্তিগত ডেটা, পেমেন্ট তথ্য এবং ব্যবসায়িক লজিককে ইন্টারসেপশন এবং ফাঁস থেকে রক্ষা করে। Statista (2024) অনুসারে, মোবাইল অ্যাপ থেকে ডেটা লঙ্ঘনের সংখ্যা দুই বছরে 38% বেড়েছে এবং 72% ক্ষেত্রে কারণ ছিল এনক্রিপশনের অনুপস্থিতি বা ভুল ব্যবহার। আধুনিক মোবাইল প্ল্যাটফর্মগুলি এনক্রিপশনের জন্য বিল্ট-ইন API সরবরাহ করে এবং তাদের ব্যবহার একটি বাধ্যতামূলক সুরক্ষা মান। Statista, 2024
মূল বিষয়
এনক্রিপশন মোবাইল অ্যাপ্লিকেশনের প্রসঙ্গে হল ডিভাইসে সঞ্চিত ডেটা (data at rest) এবং নেটওয়ার্কে প্রেরিত ডেটা (data in transit) সুরক্ষিত করতে ক্রিপ্টোগ্রাফিক অ্যালগরিদমের প্রয়োগ। ডিভাইস স্তরে, স্থানীয় স্টোরেজ এনক্রিপ্ট করা হয়: ফাইল, ডেটাবেস, SharedPreferences এবং ক্যাশে। নেটওয়ার্ক স্তরে, অ্যাপ এবং সার্ভারের মধ্যে ট্র্যাফিক TLS/HTTPS প্রোটোকলের মাধ্যমে এনক্রিপ্ট করা হয়। চূড়ান্ত লক্ষ্য হল নিশ্চিত করা যে ডিভাইসে শারীরিক অ্যাক্সেস বা ট্র্যাফিক ইন্টারসেপশন সত্ত্বেও, একজন আক্রমণকারী ক্রিপ্টোগ্রাফিক কী ছাড়া সুরক্ষিত ডেটা পড়তে পারবে না।
মোবাইল ডিভাইসগুলি ডেটা হারানোর জন্য বিশেষভাবে ঝুঁকিপূর্ণ: ফোন সহজেই হারানো, চুরি হওয়া বা ম্যালওয়্যার দ্বারা সংক্রমিত হতে পারে। Ponemon Institute (2023) অনুসারে, ডেটা লঙ্ঘনের শিকার 42% কোম্পানি মোবাইল ডিভাইসকে ঘটনার কারণ হিসেবে চিহ্নিত করে। এনক্রিপশন ছাড়া, একজন আক্রমণকারী USB-এর মাধ্যমে ডিভাইসের সাথে সংযোগ স্থাপন করতে পারে, SQLite ডেটাবেস বের করতে পারে এবং সমস্ত সঞ্চিত ডেটা পড়তে পারে। এনক্রিপশন এই সমস্যার সমাধান করে: ডেটাবেস বের করা হলেও, এর বিষয়বস্তু এনক্রিপ্টেড থাকে। অতিরিক্তভাবে, মার্কিন যুক্তরাষ্ট্র এবং ইইউতে আইন (GDPR, CCPA) রয়েছে যা ব্যক্তিগত ডেটার এনক্রিপশন প্রয়োজন করে এবং লঙ্ঘনের জন্য বার্ষিক আয়ের 4% পর্যন্ত জরিমানা আরোপ করে। ব্যবহারকারীর ডেটা নিয়ে কাজ করা যেকোনো মোবাইল অ্যাপ্লিকেশনের জন্য এনক্রিপশনের ব্যবহার শুধুমাত্র প্রযুক্তিগত নয়, আইনগত প্রয়োজনীয়তাও বটে।
সমস্ত এনক্রিপশন অ্যালগরিদম দুটি প্রধান প্রকারে বিভক্ত: প্রতিসম (এনক্রিপশন এবং ডিক্রিপশনের জন্য একটি কী) এবং অপ্রতিসম (এক জোড়া কী — পাবলিক এবং প্রাইভেট)। প্রকারের পছন্দ ব্যবহারের পরিস্থিতির উপর নির্ভর করে: স্থানীয় ডেটা এনক্রিপ্ট করতে প্রায়শই প্রতিসম অ্যালগরিদম ব্যবহার করা হয় তাদের গতির কারণে, এবং কী বিনিময় এবং প্রমাণীকরণের জন্য অপ্রতিসম ব্যবহার করা হয়।
| বৈশিষ্ট্য | প্রতিসম | অপ্রতিসম |
|---|---|---|
| কী-এর সংখ্যা | 1 (গোপন) | 2 (পাবলিক + প্রাইভেট) |
| গতি | উচ্চ (1–10 GB/s) | নিম্ন (1–10 MB/s) |
| কী বিতরণ | সমস্যাজনক — কী প্রেরণ করতে হয় | সরল — পাবলিক কী প্রকাশিত হয় |
| উদাহরণ | AES, ChaCha20 | RSA, ECDH, ECIES |
| মোবাইল ডেভেলপমেন্টে ব্যবহার | স্থানীয় ডেটা এনক্রিপশন | কী বিনিময়, ডিজিটাল স্বাক্ষর |
ব্যবহারিক ক্ষেত্রে, মোবাইল অ্যাপ্লিকেশনে হাইব্রিড এনক্রিপশন ব্যবহার করা হয়: একটি অপ্রতিসম অ্যালগরিদম (যেমন ECDH) দিয়ে পক্ষগুলি সেশন কী বিনিময় করে, এবং পরবর্তী সমস্ত ডেটা একটি প্রতিসম অ্যালগরিদম (AES বা ChaCha20) দিয়ে এনক্রিপ্ট করা হয়। এই পদ্ধতি প্রতিসম এনক্রিপশনের গতি এবং অপ্রতিসম কী বিনিময়ের সুরক্ষাকে একত্রিত করে। এই পদ্ধতি TLS 1.3, Signal Protocol এবং Apple iMessage-এর ভিত্তি।
আধুনিক মোবাইল ডেভেলপমেন্ট বেশ কয়েকটি প্রমিত এনক্রিপশন অ্যালগরিদম ব্যবহার করে, প্রতিটি নির্দিষ্ট কাজের জন্য ডিজাইন করা হয়েছে এবং এর নিজস্ব প্রয়োগের ক্ষেত্র রয়েছে।
এনক্রিপশন তিনটি মূল পরিস্থিতিতে ডেটা সুরক্ষিত করে: ডিভাইস হারানো (ডিস্ক এবং অ্যাপ কন্টেইনার এনক্রিপশন), ট্র্যাফিক ইন্টারসেপশন (TLS/HTTPS নেটওয়ার্ক প্রোটোকল) এবং সার্ভার থেকে ফাঁস (এন্ড-টু-এন্ড এনক্রিপশন)। প্রতিটি পরিস্থিতির নিজস্ব পদ্ধতি এবং সরঞ্জাম প্রয়োজন।
ডেটা অ্যাট রেস্ট — ডিভাইসের ডেটা — Android Keystore এবং iOS Keychain-এর মাধ্যমে এনক্রিপ্ট করা হয়। Android 7.0 থেকে শুরু করে, ফাইল-ভিত্তিক এনক্রিপশন (File-Based Encryption) ব্যবহার করা হয়, এবং অ্যাপগুলি AndroidX Security লাইব্রেরি থেকে EncryptedSharedPreferences এবং EncryptedFile-এর মাধ্যমে তাদের ডেটা অতিরিক্তভাবে এনক্রিপ্ট করতে পারে। iOS-এ, সমস্ত অ্যাপ ডিফল্টরূপে Data Protection API-এর সাথে কাজ করে, যা ডিভাইস পাসকোডের সাথে আবদ্ধ একটি কী দিয়ে ফাইল সিস্টেম স্তরে ফাইল এনক্রিপ্ট করে। ডেটা ইন ট্রানজিট-এর জন্য, বাধ্যতামূলক Certificate Pinning-সহ TLS 1.2/1.3 ব্যবহার করা হয়।
এন্ড-টু-এন্ড এনক্রিপশন (E2E) — ডেটা সুরক্ষার সর্বোচ্চ স্তর, যেখানে বার্তাটি প্রেরকের ডিভাইসে এনক্রিপ্ট করা হয় এবং কেবল প্রাপকের ডিভাইসে ডিক্রিপ্ট করা হয়। স্টোরেজ এবং ট্রান্সমিশন সার্ভারের বিষয়বস্তুতে অ্যাক্সেস নেই — এটি কেবল এনক্রিপ্টেড ব্লবগুলি পরিচালনা করে। মোবাইল অ্যাপ্লিকেশনের জন্য সবচেয়ে পরিচিত E2E বাস্তবায়ন হল Signal Protocol, যা প্রাথমিক কী বিনিময়ের জন্য X3DH (Extended Triple Diffie-Hellman)-এর সাথে Double Ratchet Algorithm ব্যবহার করে। Signal Protocol Perfect Forward Secrecy এবং future secrecy সরবরাহ করে: একটি কী-এর সাথে আপোস করলে পূর্ববর্তী বা পরবর্তী বার্তাগুলি প্রকাশ পায় না। Carnegie Mellon University (2023)-এর একটি গবেষণা অনুসারে, মেসেজিং অ্যাপে E2E এনক্রিপশন শুধুমাত্র TLS এনক্রিপশনের তুলনায় যোগাযোগ ফাঁসের ঝুঁকি 99.7% হ্রাস করে। GDPR এবং HIPAA-র প্রয়োজনীয়তা অনুসারে Health & Fitness এবং Finance বিভাগের অ্যাপ্লিকেশনের জন্য E2E বাধ্যতামূলক। নিজস্ব প্রকল্পে E2E বাস্তবায়নের জন্য, Signal Protocol লাইব্রেরি (Java/Swift) বা Olm (Matrix protocol) ভিত্তিক একটি লাইব্রেরি ব্যবহার করার সুপারিশ করা হয়। E2E সমাধান নির্বাচন করার সময়, প্ল্যাটফর্ম সামঞ্জস্যতা মূল্যায়ন করুন: Signal Protocol-এর অ্যাসিঙ্ক্রোনাস প্রেরণ এবং ক্লায়েন্টে কী সঞ্চয়ের সমর্থন প্রয়োজন, যা মাল্টি-ডিভাইস পরিস্থিতি জটিল করে তোলে — এই ধরনের ক্ষেত্রে, Matrix Protocol তার কক্ষ মডেলের সাথে একটি ভাল পছন্দ হতে পারে।
আসুন Android-এ Jetpack Security (AndroidX Security) ব্যবহার করে ডেটা এনক্রিপশন এবং ডিক্রিপশনের একটি উদাহরণ দেখি। লাইব্রেরিটি ফাইল এনক্রিপশনের জন্য EncryptedFile এবং সেটিংসের জন্য EncryptedSharedPreferences সরবরাহ করে।
val masterKey = MasterKey.Builder(context)
.setKeyScheme(MasterKey.KeyScheme.AES256_GCM)
.build()
val encryptedFile = EncryptedFile.Builder(
context,
File(context.filesDir, "secret.dat"),
masterKey,
EncryptedFile.FileEncryptionScheme.AES256_GCM_HKDF_4KB
).build()
encryptedFile.openFileOutput(applicationContext).use { outputStream ->
outputStream.write("Sensitive user data".toByteArray(Charsets.UTF_8))
}
MasterKey AES256-GCM ব্যবহার করে তৈরি করা হয় — সবচেয়ে নিরাপদ প্রতিসম এনক্রিপশন মোড। কী Android Keystore-এ সংরক্ষিত হয়, যা মূল প্রক্রিয়া থেকে বিচ্ছিন্ন: অ্যাপের সাথে আপোস করা হলেও, একজন আক্রমণকারী কী বের করতে পারে না। EncryptedFile কী ডেরিভেশনের জন্য HKDF-সহ AES-256-GCM স্কিম এবং 4KB পৃষ্ঠার আকার ব্যবহার করে, যা গতি এবং সুরক্ষার মধ্যে ভাল ভারসাম্য দেয়। ডেটা পড়ার জন্য, একই প্যারামিটার সহ openFileInput ব্যবহার করা হয়: লাইব্রেরি পড়ার সময় স্বয়ংক্রিয়ভাবে ডেটা ডিক্রিপ্ট করে।
iOS-এ, একই রকম কার্যকারিতা AES.GCM বা ChaChaPoly ব্যবহার করে CryptoKit (Swift)-এর মাধ্যমে প্রদান করা হয়। কী Keychain Services-এর মাধ্যমে Secure Enclave-এ সংরক্ষিত হয়। নীতিটি একই: কীগুলি কখনও সুরক্ষিত হার্ডওয়্যার স্টোরেজ ছেড়ে যায় না, এবং ডেটা ডিস্কে লেখার আগে এনক্রিপ্ট করা হয়। এই আর্কিটেকচার সংবেদনশীল ডেটা নিয়ে কাজ করা অ্যাপ্লিকেশনের জন্য OWASP MASVS (Mobile Application Security Verification Standard) স্তর L2 সুপারিশগুলি মেনে চলে। বাস্তব প্রকল্পে, টোকেনের জন্য EncryptedSharedPreferences এবং ব্যবহারকারীর ডেটার জন্য EncryptedFile-এর সংমিশ্রণ স্থানীয় এনক্রিপশনের 100% পরিস্থিতি কভার করে। অতিরিক্তভাবে, সার্ভার থেকে প্রাপ্ত কীগুলি (যেমন ECDH সেশন কী) নিয়ে কাজ করার জন্য, Android Keystore purpose = KeyProperties.PURPOSE_ENCRYPT প্যারামিটার সহ ব্যবহার করা হয়, যা নিশ্চিত করে যে কী শুধুমাত্র অনুমোদিত ক্রিপ্টোগ্রাফিক অপারেশনের জন্য ব্যবহার করা যেতে পারে এবং হার্ডওয়্যার স্টোরেজ থেকে RAM-তে প্লেইন টেক্সটে রপ্তানি করা হয় না।
প্রায়শই জিজ্ঞাসিত প্রশ্ন
GCM মোডে AES-256 হার্ডওয়্যার স্টোরেজে (Android Keystore / iOS Keychain) কী সঞ্চয় সহ স্বর্ণমান হিসাবে বিবেচিত হয়। নেটওয়ার্ক ট্র্যাফিকের জন্য — Curve25519 উপবৃত্তাকার বক্ররেখা সহ TLS 1.3। ChaCha20-Poly1305 হার্ডওয়্যার AES ছাড়া ডিভাইসে বিকল্প হিসাবে ব্যবহৃত হয়।
AES একটি প্রতিসম অ্যালগরিদম (একটি কী), দ্রুত, বড় পরিমাণ ডেটা এনক্রিপ্ট করার জন্য উপযুক্ত। RSA অপ্রতিসম (এক জোড়া কী), ধীর, কী এবং স্বাক্ষরের এনক্রিপশনের জন্য ব্যবহৃত হয়, ডেটার জন্য নয়। মোবাইল অ্যাপ্লিকেশনে AES ডেটা এনক্রিপ্ট করে, RSA কীগুলি সুরক্ষিত করে।
গোপনীয় ডেটা এনক্রিপ্ট করা প্রয়োজন: অ্যাক্সেস টোকেন, পাসওয়ার্ড, ব্যক্তিগত তথ্য, পেমেন্ট ডেটা, মেডিকেল রেকর্ড। পাবলিক ডেটা (ছবি, কন্টেন্ট) এনক্রিপ্ট না করেও রাখা যেতে পারে, তবে অ্যাপের সুরক্ষিত কন্টেইনারে সংরক্ষণ করা ভাল।
এন্ড-টু-এন্ড এনক্রিপশনে, ডেটা পাঠানোর আগে প্রেরকের ডিভাইসে এনক্রিপ্ট করা হয় এবং কেবল প্রাপকের ডিভাইসে ডিক্রিপ্ট করা হয়। সার্ভার কেবল এনক্রিপ্টেড ডেটা দেখে। Double Ratchet প্রোটোকল, যা Signal Protocol-এ বাস্তবায়িত, মোবাইল মেসেঞ্জারে সবচেয়ে সাধারণ E2E প্রক্রিয়া।
প্রযুক্তিগতভাবে সম্ভব, কিন্তু সুপারিশ করা হয় না। ডিভাইসের ডেটার জন্য, Keystore থেকে কী সহ প্রতিসম এনক্রিপশন (AES-GCM) ব্যবহার করুন। নেটওয়ার্কের জন্য, পৃথক কী সেট এবং Certificate Pinning-সহ TLS 1.3 ব্যবহার করুন। পৃথকীকরণ একটি কী ফাঁস হলে উভয় চ্যানেলের সাথে আপোস রোধ করে।
সারসংক্ষেপ
আমরা একটি মোবাইল অ্যাপ্লিকেশন টার্নকি তৈরি করব
IT Sectr 2017 সাল থেকে স্টার্টআপ এবং ব্যবসার জন্য iOS এবং Android অ্যাপ্লিকেশন তৈরি করে। আমরা আপনাকে পরামর্শ দেব এবং সেরা সমাধান প্রস্তাব করব।
আরও পড়ুন