অ্যাসিমেট্রিক ক্রিপ্টোগ্রাফি যদি ডিজিটাল জগতের বন্ধ দরজার তালা হয়, তবে ক্রিপ্টোগ্রাফিক হ্যাশ ফাংশন হলো সেই দরজার ওপর লাগানো অভেদ্য সিলমোহর। একটি হ্যাশ ফাংশন যেকোনো আকারের ডিজিটাল ফাইলকে—তা মাত্র কয়েক বাইটের মেসেজ হোক কিংবা কয়েক টেরাবাইটের ডেটাবেস—একটি নির্দিষ্ট দৈর্ঘ্যের কমপ্যাক্ট বাইনারি ফিঙ্গারপ্রিন্টে (Digest) রূপান্তর করে (যেমন ২৫৬ বিট)। ১৯৭৯ ও ১৯৮৯ সালে রালফ মার্কেল এবং ইভান ডামগার্ড স্বাধীনভাবে প্রমাণ করেন যে একটি নির্দিষ্ট আকারের একমুখী কম্প্রেশন ফাংশন ব্যবহার করে কীভাবে অসীম দৈর্ঘ্যের তথ্যের জন্য কোলিশন-প্রতিরোধী হ্যাশ তৈরি করা যায়। এই মার্কেল-ডামগার্ড ফ্রেমওয়ার্কই আজ ডিজিটাল স্বাক্ষর, গিট ভার্সন কন্ট্রোল এবং বিটকয়েন ব্লকচেইনের মূল ভিত্তি।

১. হ্যাশ ফাংশনের তিনটি মৌলিক সুরক্ষা স্তম্ভ

  1. প্রি-ইমেজ রেজিস্ট্যান্স (Preimage Resistance): হ্যাশ মান $y$ দেওয়া থাকলে মূল বার্তা $x$ খুঁজে বের করা অসম্ভব হতে হবে ($H(x) = y$)। ব্রুট-ফোর্স জটিলতা: $mathcal{O}(2^n)$।
  2. সেকেন্ড প্রি-ইমেজ রেজিস্ট্যান্স: নির্দিষ্ট একটি বার্তা $x_1$ দেওয়া থাকলে অন্য কোনো ভিন্ন বার্তা $x_2$ বের করা অসম্ভব যার হ্যাশ সমান হয়। জটিলতা: $mathcal{O}(2^n)$।
  3. কোলিশন রেজিস্ট্যান্স (Collision Resistance): এমন যেকোনো দুটি ভিন্ন বার্তা $x_1 neq x_2$ খুঁজে পাওয়া অসম্ভব হতে হবে যাদের হ্যাশ হুবহু এক ($H(x_1) = H(x_2)$)।

২. বার্থডে প্যারাডক্স ও কোলিশনের $2^{n/2}$ সীমা

একটি ক্লাসরুমে মাত্র ২৩ জন মানুষ থাকলে দুজনের জন্মদিন একই দিনে পড়ার সম্ভাবনা যেমন ৫০% ছাড়িয়ে যায়, হ্যাশ ফাংশনেও ঠিক একইভাবে কোলিশন খোঁজা অনেক সহজ। সম্ভাব্যতা তত্ত্ব প্রমাণ করে যে $n$-বিট হ্যাশের জন্য দুটি ভিন্ন বার্তার একই হ্যাশ পাওয়ার ব্রুট-ফোর্স জটিলতা হলো:

[
mathcal{O}(sqrt{2^n}) = mathcal{O}(2^{n/2})
]

এই কারণে MD5 (১২৮-বিট, কোলিশন সীমা $2^{64}$) ভেঙে ফেলা সম্ভব হয়েছে। কিন্তু SHA-256-এর কোলিশন সীমা হলো $2^{128} approx 3.4 times 10^{38}$ অপারেশন, যা পৃথিবীর সমস্ত কম্পিউটারের সম্মিলিত ক্ষমতার বাইরে।

৩. মার্কেল-ডামগার্ড ইটারেটিভ কনস্ট্রাকশন

যেকোনো বিশাল ফাইলকে ধাপে ধাপে হ্যাশ করার সার্বজনীন অ্যালগরিদম:

  1. প্যাডিং ও দৈর্ঘ্য সংযোজন: বার্তার শেষে ‘1’ বিট এবং প্রয়োজনীয় সংখ্যক শূন্য যুক্ত করে এর দৈর্ঘ্য ৫১২ বিটের গুণিতক করা হয়। সবশেষে বার্তার আসল দৈর্ঘ্য ৬৪ বিটে যুক্ত করা হয় (মার্কেল-ডামগার্ড স্ট্রেংথেনিং)।
  2. ইটারেটিভ চেইনিং: স্থির ইনিশিয়ালাইজেশন ভেক্টর $h_0 = text{IV}$ থেকে শুরু করে প্রতিটি ৫১২-বিট ব্লকের জন্য কম্প্রেশন ফাংশন $f$ প্রয়োগ করা হয়:
    [
    h_i = f(h_{i-1}, m_i)
    ]
  3. চূড়ান্ত ডাইজেস্ট: সর্বশেষ ব্লকের আউটপুট $h_t$-ই হলো চূড়ান্ত হ্যাশ।

৪. SHA-256-এর অভ্যন্তরীণ ডেভিস-মেয়ার ইঞ্জিন

SHA-256-এ কম্প্রেশন ফাংশনটি নির্মিত হয় ডেভিস-মেয়ার ব্লক সাইফার দিয়ে ($h_i = E_{m_i}(h_{i-1}) oplus h_{i-1}$)। আটটি ৩২-বিট রেজিস্টার প্রথম আটটি মৌলিক সংখ্যার ভগ্নাংশের বর্গমূল দিয়ে শুরু হয় এবং ৬৪টি তীব্র নন-লিনিয়ার রাউন্ডের (Choice, Majority, Bit-Rotations) মাধ্যমে বার্তা ব্লককে প্রসেস করে। এই ফিডফরওয়ার্ড এক্সওর যুক্ত করার ফলে কোনো আউটপুট থেকে ইনপুটে ফিরে যাওয়া গণিতের নিয়মে অসম্ভব হয়ে দাঁড়ায়।