ক্রিপ্টোগ্রাফিক হ্যাশ ফাংশন হলো ডিজিটাল ডেটার সত্যতা যাচাই, ডিজিটাল স্বাক্ষর, ব্লকচেইন কনসেনসাস এবং জিরো-নলেজ কমিটমেন্ট স্কিমের হৃৎপিণ্ড। একটি শক্তিশালী হ্যাশ ফাংশনের কাজ হলো যেকোনো দৈর্ঘ্যের ইনপুট (m in {0,1}^*)-কে সংকুচিত করে একটি নির্দিষ্ট দৈর্ঘ্যের ডাইজেস্ট (h in {0,1}^n)-এ রূপান্তর করা, এবং একই সাথে তিনটি অপরিহার্য নিরাপত্তা বৈশিষ্ট্য রক্ষা করা: প্রি-ইমেজ প্রতিরোধ, সেকেন্ড প্রি-ইমেজ প্রতিরোধ এবং কলিশন প্রতিরোধ। এই অধ্যায়ে আমরা মারকেল-ড্যামগার্ড থেকে আধুনিক কেকাক (SHA-3)-এর স্পঞ্জ কাঠামোর রূপান্তর বিশ্লেষণ করব।

১. নিরাপত্তার তিনটি স্তম্ভ ও বার্থডে প্যারাডক্স

একটি হ্যাশ ফাংশন (H: {0,1}^* o {0,1}^n)-এর ক্ষেত্রে তিনটি মৌলিক গাণিতিক শর্ত পূরণ হতে হয়:

  • প্রি-ইমেজ প্রতিরোধ (Preimage Resistance): যেকোনো আউটপুট (y) দেওয়া থাকলে (H(x) = y) সমীকরণ সমাধান করে মূল ইনপুট (x) বের করা অসম্ভব হতে হবে। জটিলতা লক্ষ্য: (mathcal{O}(2^n))।
  • সেকেন্ড প্রি-ইমেজ প্রতিরোধ (Second-Preimage Resistance): একটি পরিচিত ইনপুট (x) দেওয়া থাকলে অপর একটি ভিন্ন ইনপুট (x’
    eq x) খুঁজে বের করা অসম্ভব হতে হবে যাতে (H(x’) = H(x)) হয়। জটিলতা লক্ষ্য: (mathcal{O}(2^n))।
  • কলিশন প্রতিরোধ (Collision Resistance): যেকোনো দুটি ভিন্ন ইনপুট (x
    eq x’) খুঁজে পাওয়া অসম্ভব হতে হবে যাদের হ্যাশ মান হুবহু এক। বার্থডে প্যারাডক্স (Birthday Paradox) অনুযায়ী, মাত্র (sqrt{2^n} = 2^{n/2}) বার এলোমেলো চেষ্টা করলেই সংঘর্ষ (কলিশন) ঘটার ৫০% সম্ভাবনা তৈরি হয়। তাই ১২৮-বিট নিরাপত্তার জন্য ডাইজেস্টের দৈর্ঘ্য নূন্যতম (n = 256) বিট হতে হয়।

২. মারকেল-ড্যামগার্ড কাঠামো ও লেংথ-এক্সটেনশন দুর্বলতা

কয়েক দশক ধরে MD5, SHA-1 এবং বহুল ব্যবহৃত SHA-2 তৈরি হয়েছিল মারকেল-ড্যামগার্ড কাঠামো (Merkle-Damgård Construction) ব্যবহার করে। এতে একটি কম্প্রেশন ফাংশন (f) ব্লকে ব্লকে পরিচালিত হতো:

[
h_0 = IV, quad h_i = f(m_i, h_{i-1}), quad H(m) = h_k
]

মারকেল-ড্যামগার্ড উপপাদ্য প্রমাণ করে যে যদি কম্প্রেশন ফাংশন (f) নিরাপদ হয়, তবে পুরো হ্যাশ ফাংশনটিও কলিশন-প্রতিরোধী হবে। কিন্তু এর মারাত্মক দুর্বলতা হলো: চূড়ান্ত হ্যাশ ডাইজেস্টটি মূলত শেষ ব্লকের পর ইঞ্জিনের সম্পূর্ণ অভ্যন্তরীণ স্টেট ছাড়া আর কিছুই নয়। একে কাজে লাগিয়ে আক্রমণকারীরা চালায় লেংথ-এক্সটেনশন আক্রমণ (Length-Extension Attack)।

যদি আক্রমণকারী কোনো গোপন বার্তার হ্যাশ (H(m)) এবং তার দৈর্ঘ্য জানে, তবে সে মূল বার্তা (m) না জেনেই পেছনের দিকে নতুন তথ্য যোগ করে (H(m parallel ext{pad} parallel m’)) হিসাব করে ফেলতে পারে। এই কারণে সাধারণ (H(k parallel m)) দিয়ে অথেনটিকেশন ট্যাগ তৈরি করা যায় না, এবং জটিল HMAC কাঠামো ব্যবহার করতে হয়।

৩. স্পঞ্জ কনস্ট্রাকশন ও কেকাক (SHA-3)

২০১২ সালে দীর্ঘ ৫ বছরের বিশ্বব্যাপী প্রতিযোগিতার পর NIST কেকাক (Keccak)-কে অফিসিয়াল SHA-3 হিসেবে নির্বাচন করে। কেকাক প্রচলিত কম্প্রেশন ফাংশন ছুড়ে ফেলে সম্পূর্ণ নতুন স্পঞ্জ কনস্ট্রাকশন (Sponge Construction) প্রবর্তন করে, যা পরিচালিত হয় ১৬০০-বিটের একটি আনকীড পারমিউটেশন (f) দ্বারা।

মোট ১৬০০-বিট স্টেটকে দুটি অংশে ভাগ করা হয়: (b = r + c = 1600):

  • বিটরেট (r): যে হারে প্রতি ধাপে ডেটা প্রবেশ করে এবং বের হয়।
  • ক্যাপাসিটি (c): অভ্যন্তরীণ লুকানো নিরাপত্তা অংশ। এর কলিশন রোধ ক্ষমতা কঠোরভাবে (2^{c/2})।

স্পঞ্জের কাজ সম্পন্ন হয় দুটি পর্যায়ে:

  1. অ্যাবজরবিং পর্যায় (Absorbing): বার্তার (r)-বিট ব্লকগুলোকে স্টেটের প্রথম (r)-বিটের সাথে XOR করে পারমিউটেশন চালানো হয়: (S leftarrow f(S oplus (P_i parallel 0^c)))।
  2. স্কুইজিং পর্যায় (Squeezing): স্টেট থেকে (r)-বিট করে ডাইজেস্ট বের করে আনা হয়। প্রয়োজনমতো পারমিউটেশন চালিয়ে যত খুশি দীর্ঘ আউটপুট নেওয়া যায়।

যেহেতু ক্যাপাসিটি (c)-এর বিটগুলো কখনোই বাইরে প্রকাশ পায় না, তাই আক্রমণকারী আউটপুট ডাইজেস্ট দেখে পুরো অভ্যন্তরীণ স্টেট অনুমান করতে পারে না। ফলে SHA-3 নিজে থেকেই লেংথ-এক্সটেনশন আক্রমণ থেকে ১০০% মুক্ত।

৪. কেকাক-f[১৬০০] পারমিউটেশন

কেকাকের ভেতরের স্টেটকে একটি ৫×৫×৬৪ ত্রিমাত্রিক বিট অ্যারে হিসেবে সাজানো থাকে। এর ২৪টি রাউন্ডের প্রতিটিতে ৫টি সুনির্দিষ্ট লিনিয়ার ও নন-লিনিয়ার ধাপ পরিচালিত হয়:

[
ext{Round} = iota circ chi circ pi circ
ho circ heta
]

যেখানে ( heta) উল্লম্ব তলের প্যারিটি মিশ্রিত করে, (
ho) ও (pi) বিটের অবস্থান ত্রিমাত্রিকভাবে ঘুরিয়ে দ্রুত ডিফিউশন তৈরি করে, (chi) নন-লিনিয়ার রূপান্তর ঘটায় এবং (iota) রাউন্ড কনস্ট্যান্ট যোগ করে কোনো ধরনের প্রতিসাম্য তৈরি হতে বাধা দেয়। এই অনন্য স্থাপত্যের কারণে SHA-3 একাধারে হ্যাশ ফাংশন, স্ট্রীম সাইফার এবং এক্সটেন্ডেবল আউটপুট ফাংশন (SHAKE) হিসেবে কাজ করতে পারে।