MAC (Message Authentication Code): ক্রিপ্টোগ্রাফি ও নেটওয়ার্ক সিকিউরিটিতে ভূমিকা
MAC বা Message Authentication Code হল একটি ক্রিপ্টোগ্রাফিক চেকসাম যা মেসেজের অখণ্ডতা (Integrity) এবং প্রামাণিকতা (Authenticity) নিশ্চিত করে। এটি একটি গোপন কী (Secret Key) ব্যবহার করে মেসেজ থেকে একটি ফিক্সড-লেথ ট্যাগ জেনারেট করে, যা প্রেরক এবং প্রাপ্তিকর্তা উভয়ই যাচাই করতে পারে।
MAC কীভাবে কাজ করে?
- প্রেরক এবং প্রাপ্তিকর্তা পূর্বে একটি গোপন সিমেট্রিক কী ভাগ করে নেয়
- প্রেরক মেসেজ এবং কী দিয়ে MAC алгоритম (যেমন HMAC-SHA256) চালিয়ে ট্যাগ জেনারেট করে
- মেসেজ + MAC ট্যাগ প্রেরণ করা হয়
- প্রাপ্তিকর্তা একই কী এবং অ্যালগরিদম ব্যবহার করে ট্যাগ পুনরায় গণনা করে
- গণনা করা ট্যাগ প্রাপ্ত ট্যাগের সাথে মিলে গেলে মেসেজ অপরিবর্তিত এবং প্রামাণিক
প্রধান MAC অ্যালগরিদম
- HMAC (Hash-based MAC): SHA-256, SHA-384, SHA-512 সহ RFC 2104 стандар্ড। সবচেয়ে ব্যাপকভাবে ব্যবহৃত।
- CMAC (Cipher-based MAC): AES বা 3DES ব্লক সিফার ব্যবহার করে। NIST SP 800-38B стандар্ড।
- GMAC: GCM মোডের অংশ, সমান্তরাল প্রক্রিয়াকরণের সুবিধা।
- Poly1305: ChaCha20-Poly1305 AEAD সipher স্যুটে ব্যবহৃত, উচ্চ পারফরম্যান্স।
MAC এবং HMAC-এর পার্থক্য
MAC হল সাধারণ ধারণা, HMAC হল একটি নির্দিষ্ট MAC কনস্ট্রাকশন যা ক্রিপ্টোগ্রাফিক হ্যাশ ফাংশন (SHA-256 ইত্যাদি) এবং গোপন কী ব্যবহার করে। HMAC হল MAC-র একটি উপপ্রকার।
MAC এবং ডিজিটাল স্বাক্ষরের পার্থক্য
| বৈশিষ্ট্য | MAC | ডিজিটাল স্বাক্ষর |
|---|---|---|
| কী প্রকার | সিমেট্রিক (একই কী) | অ্যাসিমেট্রিক (পাবলিক/প্রাইভেট কী) |
| নন-রিপুডিয়েশন | নहीं (দুজনেরই কী থাকে) | হ্যাঁ (প্রাইভেট কী শুধু স্বাক্ষরকারীর) |
| গতি | দ্রুত | धीमा |
| ব্যবহার ক্ষেত্র | TLS, IPsec, API অথেনটিকেশন | ডকুমেন্ট স্বাক্ষর, কোড সাইনিং, PKI |
নেটওয়ার্ক সিকিউরিটিতে MAC-এর ব্যবহার
- TLS/SSL: HMAC রেকর্ড লেয়ার ইন্টিগ্রিটি নিশ্চিত করে (HMAC-SHA256)
- IPsec: AH এবং ESP প্রোটোকলে HMAC ব্যবহার
- API সিকিউরিটি: AWS Signature v4, JWT (HS256) ইত্যাদিতে HMAC
- Wireless (WPA2/WPA3): MIC (Message Integrity Check) হিসেবে CMAC/AES ব্যবহার
- Kerberos: টিকেট ইন্টিগ্রিটির জন্য HMAC
MAC-এর সীমাবদ্ধতা
- নন-রিপুডিয়েশন প্রদান করে না (শেয়ার্ড কী কারণে)
- কী বিতরণ সমস্যা (Key Distribution Problem)
- রিপ্লে আক্রমণের জন্য সিকোয়েন্স নম্বর/টাইমস্ট্যাম্প প্রয়োজন
সেরা অনুশীলন
- HMAC-SHA256 বা superiore ব্যবহার করুন (MD5/SHA1 এড়িয়ে যান)
- কী লেথ হ্যাশ আউটপুটের সমান বা বড় রাখুন (SHA256-এর জন্য ৩২ বাইট)
- কনস্ট্যান্ট-টাইম তুলনা ব্যবহার করুন টাইমিং আক্রমণ এড়াতে
- প্রতিটি সেশন/কান্টেক্সটের জন্য আলাদা কী ডেরাইভ করুন (HKDF ব্যবহার করে)