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

১. মেসেজ অথেনটিকেশন কোড (MAC) ও HMAC-এর নিরাপত্তা

একটি মেসেজ অথেনটিকেশন কোড (MAC) তিনটি অ্যালগরিদমের সমন্বয়ে গঠিত (( ext{KeyGen}, ext{Tag}, ext{Verify}))। এটি নিশ্চিত করে চুজেন-মেসেজ আক্রমণের বিরুদ্ধে জালিয়াতিহীনতা (EUF-CMA):

[
Pr left[ mathcal{A}^{ ext{Tag}(K, cdot)} ext{ outputs } (m^*, t^*) ext{ s.t. } ext{Verify}(K, m^*, t^*) = 1 wedge m^*
otin mathcal{Q}
ight] le ext{negl}(n)
]

মারকেল-ড্যামগার্ড হ্যাশের লেংথ-এক্সটেনশন দুর্বলতা দূর করে নিখুঁত সুরক্ষার জন্য মিহির বেলার উদ্ভাবন করেন HMAC:

[
ext{HMAC}_K(m) = HBig( (K oplus opad) parallel Hbig( (K oplus ipad) parallel m big) Big)
]

যেখানে (ipad = 0 ext{x}36) এবং (opad = 0 ext{x}5C) ধ্রুবক বাইট। ২০০৬ সালে বেলার প্রমাণ করেন যে, মূল হ্যাশ ফাংশনে কিছুটা দুর্বলতা থাকলেও এর অভ্যন্তরীণ কম্প্রেশন ফাংশনটি নিরাপদ হলে HMAC একটি নিখুঁত সিউডোর্যান্ডম ফাংশন (PRF) হিসেবে কাজ করে।

২. তিনটি কম্পোজিশন মডেল: কেন Encrypt-then-MAC শ্রেষ্ঠ?

এনক্রিপশন (mathcal{E}) এবং প্রমাণীকরণ (mathcal{M})-কে একত্রিত করার তিনটি ঐতিহাসিক রূপ রয়েছে:

  1. Encrypt-and-MAC: (C = E_{K_1}(P), T = M_{K_2}(P))। এতে ট্যাগটি প্লেইনটেক্সটের ওপর তৈরি হওয়ায় তথ্য ফাঁস হওয়ার ঝুঁকি থাকে।
  2. MAC-then-Encrypt: (T = M_{K_2}(P), C = E_{K_1}(P parallel T))। ডিক্রিপশন করার পরই কেবল ট্যাগ চেক করা যায়, যা TLS 1.0–1.2-এ কুখ্যাত প্যাডিং ওরাকল আক্রমণ (POODLE / Lucky Thirteen)-এর জন্ম দিয়েছিল।
  3. Encrypt-then-MAC (EtM): (C = E_{K_1}(P), T = M_{K_2}(C parallel A))। ২০০০ সালে বেলার ও নামপ্রেম্পে প্রমাণ করেন যে কেবল Encrypt-then-MAC-ই সার্বজনীনভাবে সর্বোচ্চ IND-CCA2 নিরাপত্তা দেয়। কারণ কোনো বিকৃত সাইফারটেক্সট ডিক্রিপশন মডিউলে পৌঁছানোর আগেই ট্যাগ চেকের সময় বাতিল হয়ে যায়।

৩. AES-GCM: গ্যালোয়া/কাউন্টার মোড

বর্তমানে TLS 1.3, গুগল ক্লাউড এবং আধুনিক ব্রাউজারের মূল ভিত্তি হলো AES-GCM (Galois/Counter Mode)। এটি CTR মোড এনক্রিপশনের সাথে সসীম ফিল্ড ( ext{GF}(2^{128}))-এর ওপর উচ্চগতির পলিনোমিয়াল হ্যাশিং (GHASH) যুক্ত করে।

অ্যাসোসিয়েটেড ডেটা (A) এবং সাইফারটেক্সট (C)-এর জন্য GHASH ফাংশনটি এভাবে পলিনোমিয়াল মূল্যায়ন করে:

[
ext{GHASH}_H(X) = sum_{i=1}^m X_i cdot H^{m – i + 1} in ext{GF}(2^{128})
]

যেখানে (H = E_K(0^{128})) হলো হ্যাশ কি, এবং গুণন সম্পন্ন হয় (f(x) = x^{128} + x^7 + x^2 + x + 1) পলিনোমিয়ালের ওপর। চূড়ান্ত ট্যাগ তৈরি হয় প্রথম কাউন্টার ব্লকের এনক্রিপশন দিয়ে মাস্কিং করে:

[
T = ext{GHASH}_H(A, C) oplus E_K( ext{Nonce} parallel 0^{31}1)
]

যেহেতু GHASH সম্পূর্ণ গ্যালোয়া ফিল্ডের বীজগণিত, তাই আধুনিক ইন্টেল ও এআরএম প্রসেসরে ডেডিকেটেড হার্ডওয়্যার ইনস্ট্রাকশন (PCLMULQDQ / PMULL) দিয়ে এটি প্রতি সেকেন্ডে ১০ গিগাবাইটের বেশি গতিতে বিদ্যুৎ গতিতে যাচাই করা যায়।

৪. ননস পুনর্ব্যবহারের বিপর্যয় ও ChaCha20-Poly1305

AES-GCM-এর সবচেয়ে বড় বিপদ হলো ননস পুনর্ব্যবহার (Nonce Reuse)। একই চাবির অধীনে যদি কখনো একটিমাত্র ননস দুটি ভিন্ন বার্তায় ব্যবহৃত হয়, তবে মাস্কিং মুছে গিয়ে সমীকরণ দাঁড়ায়:

[
T_1 oplus T_2 = ext{GHASH}_H(A_1, C_1) oplus ext{GHASH}_H(A_2, C_2)
]

এটি ( ext{GF}(2^{128})) ফিল্ডে (H)-এর একটি পলিনোমিয়াল তৈরি করে। এর রুট বের করলেই গোপন হাশ-কি (H) বেরিয়ে আসে, যার ফলে আক্রমণকারী এরপর যেকোনো বার্তার জন্য ইচ্ছেমতো বৈধ ট্যাগ তৈরি করতে পারে। এই ঝুঁকি এড়াতে ড্যানিয়েল জে. বার্নস্টেইন তৈরি করেন ChaCha20-Poly1305: একটি সফটওয়্যার-বান্ধব ARX স্ট্রীম সাইফার ও প্রাইম ফিল্ড (2^{130} – 5)-এর কার্টার-ওয়েগম্যান প্রমাণীকরণ, যা হার্ডওয়্যার এক্সিলারেশন ছাড়াই মোবাইল ও এমবেডেড ডিভাইসে নিখুঁত কনস্ট্যান্ট-টাইম নিরাপত্তা দেয়।