AES (Advanced Encryption Standard) একটি সিমেট্রিক ব্লক সাইফার অ্যালগরিদম যা 2001 সালে মার্কিন জাতীয় মান ও প্রযুক্তি ইনস্টিটিউট (NIST) দ্বারা সরকারী মান হিসাবে গৃহীত হয়েছিল। AES অপ্রচলিত DES-কে প্রতিস্থাপন করেছে এবং তারপর থেকে ব্যাংকিং সিস্টেম থেকে মোবাইল অ্যাপ্লিকেশন পর্যন্ত বিশ্বের সবচেয়ে বিস্তৃত এনক্রিপশন অ্যালগরিদমে পরিণত হয়েছে। NIST (2023) অনুসারে, AES 256-বিট কী-র জন্য 2^256 অপারেশনের সমতুল্য সুরক্ষা প্রদান করে, যা এটিকে আধুনিক ব্রুট-ফোর্স আক্রমণের জন্য অদম্য করে তোলে। NIST FIPS 197, 2023
মূল বিষয়
AES (Advanced Encryption Standard) একটি সিমেট্রিক ব্লক সাইফার যা বেলজীয় ক্রিপ্টোগ্রাফার Joan Daemen এবং Vincent Rijmen Rijndael নামে তৈরি করেছিলেন। 2001 সালে, NIST পাঁচ বছরের পাবলিক টেস্টিং এবং বিশ্লেষণের পরে Rijndael-কে নতুন মার্কিন এনক্রিপশন মান প্রতিযোগিতার বিজয়ী হিসাবে নির্বাচিত করে। AES নির্দিষ্ট আকারের (128 বিট) ডেটা ব্লকে কাজ করে এবং তিনটি কী দৈর্ঘ্য সমর্থন করে: 128, 192 এবং 256 বিট। রূপান্তর রাউন্ডের সংখ্যা কী দৈর্ঘ্যের উপর নির্ভর করে: 128-বিট-এর জন্য 10 রাউন্ড, 192-বিট-এর জন্য 12 এবং 256-বিট-এর জন্য 14 রাউন্ড। প্রতিটি রাউন্ডে চারটি অপারেশন অন্তর্ভুক্ত: SubBytes (S-box-এর মাধ্যমে ননলিনিয়ার বাইট প্রতিস্থাপন), ShiftRows (চক্রীয় সারি স্থানান্তর), MixColumns (কলাম মিশ্রণ) এবং AddRoundKey (রাউন্ড কী XOR)।
AES-এর উন্নয়ন 1997 সালে শুরু হয় যখন NIST DES-কে প্রতিস্থাপনের জন্য একটি প্রতিযোগিতা ঘোষণা করে, যার 56-বিট কী 1998 সালে বিশেষায়িত Deep Crack ডিভাইসে 22 ঘন্টায় ক্র্যাক করা হয়েছিল। বিভিন্ন দেশের পনেরটি অ্যালগরিদম অংশ নিয়েছিল, যার মধ্যে Serpent (যুক্তরাজ্য), Twofish (মার্কিন যুক্তরাষ্ট্র) এবং RC6 (মার্কিন যুক্তরাষ্ট্র) অন্তর্ভুক্ত। 1999 সালের ফাইনালে, 5 জন প্রার্থী অবশিষ্ট ছিল। Rijndael সমস্ত প্ল্যাটফর্মে (8-বিট মাইক্রোকন্ট্রোলার থেকে 64-বিট সার্ভার পর্যন্ত) উচ্চ গতি, ক্রিপ্ট্যানালাইসিসের প্রতিরোধ এবং কম্প্যাক্ট হার্ডওয়্যার বাস্তবায়নের সমন্বয়ের কারণে জিতেছিল। 2006 সাল থেকে, AES মার্কিন সরকারি সিস্টেমে SECRET এবং TOP SECRET শ্রেণীবদ্ধ ডেটা এনক্রিপ্ট করতে ব্যবহৃত হচ্ছে। আজ, AES সমস্ত প্রধান প্রোটোকলে এমবেডেড: TLS 1.2/1.3, IPsec, SSH, Wi-Fi WPA2/WPA3 এবং Bluetooth BR/EDR।
AES 128 বিট (16 বাইট) এর ব্লকে ডেটা প্রক্রিয়া করে, যা state নামে একটি 4x4 বাইট ম্যাট্রিক্স হিসেবে সংগঠিত হয়। প্রতিটি এনক্রিপশন রাউন্ড নির্ধারক রূপান্তরের একটি ক্রম সম্পাদন করে যা সম্মিলিতভাবে তুষারপাত প্রভাব তৈরি করে: ইনপুট ডেটার একটি বিট পরিবর্তন করলে আউটপুট বিটের প্রায় 50% পরিবর্তিত হয়। এই প্রভাব AES-কে ডিফারেনশিয়াল এবং লিনিয়ার ক্রিপ্ট্যানালাইসিস — ব্লক সাইফার ভাঙ্গার প্রাথমিক পদ্ধতি — প্রতিরোধী করে তোলে।
প্রক্রিয়াটি AddRoundKey দিয়ে শুরু হয় — state-এর সাথে প্রাথমিক কী-র XOR। তারপর রাউন্ডগুলি সম্পাদিত হয়: SubBytes S-box (প্রতিস্থাপন টেবিল) থেকে মান দিয়ে প্রতিটি state বাইট প্রতিস্থাপন করে। ShiftRows দ্বিতীয় সারিটিকে 1 অবস্থান, তৃতীয়টিকে 2, চতুর্থটিকে 3 চক্রীয়ভাবে স্থানান্তর করে — এটি কলামগুলির মধ্যে মিশ্রণ নিশ্চিত করে। MixColumns গ্যালোয়া ফিল্ড GF(2^8)-এ একটি নির্দিষ্ট ম্যাট্রিক্স দিয়ে প্রতিটি state কলামকে গুণ করে, প্রতিটি আউটপুট বাইট কলামের সমস্ত চারটি ইনপুট বাইটের উপর নির্ভরশীল করে তোলে। AddRoundKey কী এক্সপ্যানশনের মাধ্যমে মূল কী থেকে প্রাপ্ত পরবর্তী রাউন্ড কী-র সাথে XOR করে। শেষ রাউন্ডে MixColumns অপারেশন থাকে না। ডিক্রিপশন বিপরীত ক্রমে InvSubBytes, InvShiftRows, InvMixColumns এবং AddRoundKey ব্যবহার করে। মোবাইল ডেভেলপারদের জন্য AES-এর অভ্যন্তরীণ কাঠামো বোঝার প্রয়োজন নেই — সঠিক প্যারামিটার সহ প্ল্যাটফর্মের বিল্ট-ইন API-কে সঠিকভাবে কীভাবে কল করতে হয় তা জানা যথেষ্ট।
AES-এর মূল বৈশিষ্ট্য যা এর ক্রিপ্টোগ্রাফিক শক্তি নিশ্চিত করে তা হল তুষারপাত প্রভাব। প্লেইনটেক্সট বা কী-তে একটি বিট পরিবর্তন করলে সাইফারটেক্সট বিটের প্রায় 50% পরিবর্তিত হয়, যা AES-কে ডিফারেনশিয়াল এবং লিনিয়ার ক্রিপ্ট্যানালাইসিসের জন্য অত্যন্ত প্রতিরোধী করে তোলে। SubBytes (S-box-এর মাধ্যমে ননলিনিয়ারিটি) এবং MixColumns (গ্যালোয়া ফিল্ড গুণনের মাধ্যমে ডিফিউশন)-এর সংমিশ্রণ এমন গাণিতিক জটিলতা তৈরি করে যে সাইফারটেক্সটের অংশ জানলেও ব্রুট ফোর্সের চেয়ে দ্রুত কী পুনরুদ্ধার করা সম্ভব নয়। NIST বিশ্লেষণ (2018) অনুসারে, AES-128-এর উপর সবচেয়ে ভালো পরিচিত আক্রমণ — biclique attack — কার্যকরী কী দৈর্ঘ্য মাত্র 2 বিট কমায় (126.2 বিটে), যা আক্রমণকারীকে কোনও ব্যবহারিক সুবিধা দেয় না। AES-256-এর জন্য, ব্রুট ফোর্সের চেয়ে ভালো কোনও ব্যবহারিকভাবে সম্ভব আক্রমণ বিদ্যমান নেই।
AES তিনটি কী আকার সমর্থন করে, প্রতিটি একটি নির্দিষ্ট ক্রিপ্টোগ্রাফিক শক্তি স্তরের সাথে সম্পর্কিত। কী আকারের পছন্দ সুরক্ষা, কর্মক্ষমতা এবং ডিভাইস সম্পদ প্রয়োজনীয়তাকে প্রভাবিত করে।
| কী আকার | রাউন্ডের সংখ্যা | সুরক্ষা স্তর | ব্যবহার |
|---|---|---|---|
| AES-128 | 10 | 128 বিট | বাণিজ্যিক অ্যাপ্লিকেশন, TLS |
| AES-192 | 12 | 192 বিট | সরকারি সিস্টেম (SECRET) |
| AES-256 | 14 | 256 বিট | TOP SECRET, আর্থিক খাত |
ব্যবহারিক নিয়ম: মোবাইল অ্যাপ্লিকেশনের জন্য ডিফল্টভাবে AES-256 ব্যবহার করুন। AES-NI সমর্থনযুক্ত আধুনিক ডিভাইসে AES-128 এবং AES-256-এর মধ্যে কর্মক্ষমতা পার্থক্য 10–15% এর বেশি নয়, তবে সুরক্ষা স্তর দ্বিগুণ হয়। কোয়ান্টাম বিশ্লেষণ (Grassl et al., 2016) অনুসারে, AES-128 ক্র্যাক করতে গ্রোভারের অ্যালগরিদমের মাধ্যমে 2^77 কোয়ান্টাম অপারেশন প্রয়োজন হবে, যেখানে AES-256-এর জন্য 2^149 প্রয়োজন হবে, যা AES-256-কে আগামী 20–30 বছরের জন্য কোয়ান্টাম আক্রমণের প্রতিরোধী করে তোলে। এমনকি AES-128 বেশিরভাগ বাণিজ্যিক দৃশ্যের জন্য পর্যাপ্ত সুরক্ষা প্রদান করে: ব্রুস স্নায়ারের অনুমান অনুসারে 128-বিট কী ব্রুট-ফোর্স করতে মহাবিশ্বে বিদ্যমান শক্তির চেয়ে বেশি শক্তির প্রয়োজন হবে। তবে, সুরক্ষা মান (GDPR, HIPAA, PCI DSS) প্রায়শই স্পষ্টভাবে AES-256 প্রয়োজন, তাই প্রোডাকশন প্রকল্পে সর্বোচ্চ কী দৈর্ঘ্য ব্যবহার করা উচিত।
AES একটি ব্লক সাইফার হিসাবে নির্দিষ্ট আকারের (128 বিট) ব্লক এনক্রিপ্ট করে। নির্বিচারে দৈর্ঘ্যের ডেটা এনক্রিপ্ট করার জন্য অপারেশন মোড ব্যবহার করা হয়। মোড নির্বাচন সুরক্ষাকে গুরুতরভাবে প্রভাবিত করে: ভুল মোড AES-এর শক্তিকে অস্বীকার করতে পারে।
মোবাইল প্রকল্পের জন্য 12-বাইট nonce সহ AES-256-GCM ব্যবহার করুন। GCM একসঙ্গে দুটি সমস্যা সমাধান করে: ডেটা এনক্রিপশন এবং প্রমাণীকরণ, যা padding oracle এবং chosen ciphertext আক্রমণ প্রতিরোধ করে। Android Keystore এবং iOS CryptoKit অতিরিক্ত ক্রিপ্টোগ্রাফিক প্রিমিটিভের প্রয়োজন ছাড়াই AES-GCM সমর্থন করে। GCM-এর সাথে কাজ করার সময়, একই কী দিয়ে কখনই nonce পুনরায় ব্যবহার না করা গুরুত্বপূর্ণ — এটি এনক্রিপশন সুরক্ষা সম্পূর্ণরূপে ধ্বংস করে। প্রতিটি এনক্রিপশনের জন্য একটি নতুন এলোমেলো nonce জেনারেট করুন এবং এটি সাইফারটেক্সটের সাথে সংরক্ষণ করুন।
আসুন Jetpack Security ব্যবহার করে Android-এ নিরাপদ AES-256-GCM বাস্তবায়নের একটি উদাহরণ দেখি। নীচের কোডটি সম্পূর্ণ চক্র প্রদর্শন করে: MasterKey-এর মাধ্যমে AES-256 কী তৈরি, অতিরিক্ত প্রমাণিত ডেটা (AAD) সহ একটি স্ট্রিং এনক্রিপ্ট এবং ডিক্রিপ্ট করা।
import androidx.security.crypto.MasterKey
import androidx.security.crypto.EncryptedSharedPreferences
val masterKey = MasterKey.Builder(context)
.setKeyScheme(MasterKey.KeyScheme.AES256_GCM)
.build()
val securePrefs = EncryptedSharedPreferences.create(
context,
"secure_prefs",
masterKey,
EncryptedSharedPreferences.PrefKeyEncryptionScheme.AES256_SIV,
EncryptedSharedPreferences.PrefValueEncryptionScheme.AES256_GCM
)
fun storeSecureData(key: String, value: String) {
securePrefs.edit().putString(key, value).apply()
}
fun readSecureData(key: String): String? {
return securePrefs.getString(key, null)
}
এই সমাধানের মূল বৈশিষ্ট্য হল AES-256-GCM দুটি স্তরে ব্যবহৃত হয়: কী-মান জোড়া (PrefValueEncryptionScheme) এনক্রিপ্ট করতে এবং কী নামগুলি (PrefKeyEncryptionScheme) সুরক্ষিত করতে যা nonce পুনঃব্যবহার প্রতিরোধী AES-256-SIV ব্যবহার করে। MasterKey AES-256-GCM অ্যালগরিদম ব্যবহার করে জেনারেট হয় এবং Android Keystore-এ সংরক্ষিত হয়, যা Trusted Execution Environment-যুক্ত ডিভাইসে হার্ডওয়্যার-সুরক্ষিত। হার্ডওয়্যার সমর্থন (TEE) ছাড়া ডিভাইসে, কী Bouncy Castle-এর মাধ্যমে এনক্রিপ্ট হয়, যা SharedPreferences-এ সংরক্ষণের চেয়ে এখনও বেশি নিরাপদ।
বড় ডেটা ভলিউমের সরাসরি এনক্রিপশনের জন্য (যেমন, ছবি বা ফাইল), AndroidX Security-এর EncryptedFile-এর মাধ্যমে AES-256-GCM ব্যবহার করুন। কী এক্সপোর্টের জন্য (যেমন, ব্যাকআপের জন্য), PBKDF2 100000+ পুনরাবৃত্তি সহ ব্যবহারকারীর পাসওয়ার্ড ব্যবহার করে অতিরিক্ত এনক্রিপশন ব্যবহার করুন।
iOS-এ, AES অপারেশনগুলি CryptoKit ফ্রেমওয়ার্ক (Swift 5.0+) এর মাধ্যমে সংগঠিত হয়। একটি AES-256 কী SymmetricKey(size: .bits256) এর মাধ্যমে তৈরি হয় এবং Secure Enclave-এ সংরক্ষিত হয় — একটি হার্ডওয়্যার ক্রিপ্টো প্রসেসর যা প্রধান CPU এবং অপারেটিং সিস্টেম থেকে বিচ্ছিন্ন। CryptoKit দুটি AES বাস্তবায়ন প্রদান করে: AES.GCM (প্রস্তাবিত) এবং AES.CBC (পুরনো ফরম্যাটের সাথে পশ্চাদগামী সামঞ্জস্যের জন্য)। এনক্রিপশন seal() পদ্ধতির মাধ্যমে সম্পাদিত হয়, যা ডেটা, কী এবং nonce (12 বাইট) নেয় এবং AES.GCM.SealedBox ফেরত দেয় — একটি কাঠামো যা সাইফারটেক্সট এবং প্রমাণীকরণ ট্যাগ ধারণ করে। ডিক্রিপশন open()-এর মাধ্যমে হয়। Apple সরাসরি CommonCrypto ব্যবহার না করার দৃঢ়ভাবে সুপারিশ করে: CryptoKit স্বয়ংক্রিয়ভাবে অনুকূল প্যারামিটার নির্বাচন করে, সাইড-চ্যানেল আক্রমণ থেকে রক্ষা করে এবং Apple Silicon প্রসেসরে AES-NI হার্ডওয়্যার ত্বরণ ব্যবহার করে। Secure Enclave-যুক্ত ডিভাইসে, কীগুলি কখনই হার্ডওয়্যার মডিউল ছেড়ে যায় না, সম্পূর্ণ অ্যাপ্লিকেশন আপোসের পরেও চুরি প্রতিরোধ করে। কী সিরিয়ালাইজেশনের জন্য, withUnsafeBytes পদ্ধতি ব্যবহার করুন এবং তারপর kSecAttrAccessible = kSecAttrAccessibleWhenUnlockedThisDeviceOnly অ্যাট্রিবিউট সহ SecItemAdd-এর মাধ্যমে Keychain-এ সংরক্ষণ করুন।
সচরাচর জিজ্ঞাসিত প্রশ্ন
AES একটি অ্যালগরিদম যা গোপন কী ব্যবহার করে পঠনযোগ্য ডেটাকে বাইটের অপঠনযোগ্য সেটে রূপান্তর করে। ডেটাকে তার আসল আকারে ফিরিয়ে আনতে একই কী প্রয়োজন। AES এতটাই নির্ভরযোগ্য যে এটি মার্কিন সরকারের গোপন নথি এনক্রিপ্ট করতে ব্যবহৃত হয়।
AES-128 একটি 128-বিট কী ব্যবহার করে এবং 10টি এনক্রিপশন রাউন্ড সম্পাদন করে। AES-256 একটি 256-বিট কী এবং 14টি রাউন্ড ব্যবহার করে, যা এটি ক্র্যাক করতে 2^128 গুণ কঠিন করে তোলে। মোবাইল অ্যাপ্লিকেশনের জন্য, ন্যূনতম কর্মক্ষমতা পার্থক্যের কারণে AES-256 প্রস্তাবিত।
AES-256-GCM সবচেয়ে নিরাপদ এবং প্রস্তাবিত মোড। GCM প্রমাণিত এনক্রিপশন (এনক্রিপশন + অখণ্ডতা যাচাইকরণ) প্রদান করে। ECB মোড নিষিদ্ধ, CBC-র আলাদা MAC প্রয়োজন। GCM মোবাইল অ্যাপ্লিকেশনের জন্য ডি-ফ্যাক্টো মান।
তাত্ত্বিকভাবে, AES ব্রুট ফোর্স দ্বারা ক্র্যাক করা সম্ভব, কিন্তু AES-256-এর জন্য 2^256 প্রচেষ্টার প্রয়োজন হবে — দৃশ্যমান মহাবিশ্বের পরমাণুর সংখ্যার চেয়েও বেশি। AES-256-এ কোনও ব্যবহারিক আক্রমণ বিদ্যমান নেই। সাইড-চ্যানেল আক্রমণ (Spectre, Meltdown) AES ভাঙে না বরং মেমরি থেকে কী চুরি করে, তাই হার্ডওয়্যার কী স্টোরেজ গুরুত্বপূর্ণ।
AndroidX Security লাইব্রেরি ব্যবহার করুন: KeyScheme.AES256_GCM সহ MasterKey.Builder Android Keystore-এ একটি সুরক্ষিত কী তৈরি করে, এবং EncryptedSharedPreferences স্বয়ংক্রিয়ভাবে AES-256-GCM-এর মাধ্যমে সমস্ত ডেটা এনক্রিপ্ট করে। কোনও ম্যানুয়াল ক্রিপ্টোগ্রাফি নয় — API ডিফল্টভাবে নিরাপদ, ডেভেলপার ত্রুটির ঝুঁকি ছাড়া।
সারাংশ
আমরা একটি মোবাইল অ্যাপ্লিকেশন টার্নকি তৈরি করব
IT Sectr 2017 সাল থেকে স্টার্টআপ এবং ব্যবসার জন্য iOS এবং Android অ্যাপ্লিকেশন তৈরি করে। আমরা আপনাকে পরামর্শ দেব এবং সেরা সমাধান প্রস্তাব করব।
আরও পড়ুন