হ্যাশ কী এবং কেন এটি প্রযুক্তির সর্বত্র?
আপনি সম্ভবত এরকম স্ট্রিং দেখেছেন:
e3b0c44298fc1c149afbf4c8996fb924
27ae41e4649b934ca495991b7852b855
এগুলো সফটওয়্যার ডাউনলোডে ("SHA-256 হ্যাশ যাচাই করুন"), ব্লকচেইন আলোচনায়, পাসওয়ার্ড নিরাপত্তা আলোচনায় এবং অসংখ্য ডেভেলপার টুলে দেখা যায়। কিন্তু হ্যাশ আসলে কী, এবং কেন এটি আধুনিক প্রযুক্তির জন্য এত মৌলিক?
সহজ ভাষায় ধারণা
হ্যাশ ফাংশন যেকোনো ইনপুট নেয় — একটি শব্দ, বাক্য, পুরো ফাইল — এবং একটি নির্দিষ্ট দৈর্ঘ্যের আউটপুট তৈরি করে যাকে হ্যাশ ভ্যালু (ডাইজেস্ট, চেকসাম বা ফিঙ্গারপ্রিন্টও বলা হয়) বলে। মূল বৈশিষ্ট্য:
- নির্ধারিত। একই ইনপুট সর্বদা একই আউটপুট দেয়।
- নির্দিষ্ট দৈর্ঘ্য। ইনপুট যত বড়ই হোক, আউটপুট সর্বদা একই আকার।
- একমুখী। হ্যাশ আউটপুট থেকে মূল ইনপুট পুনর্গঠন করা যায় না।
- তুষারপাত প্রভাব। ইনপুটে ক্ষুদ্র পরিবর্তন সম্পূর্ণ ভিন্ন হ্যাশ তৈরি করে।
ডেটার আঙুলের ছাপ মনে করুন। যেমন আপনার আঙুলের ছাপ আপনাকে অনন্যভাবে শনাক্ত করে কিন্তু আপনার মুখ পুনর্গঠনে ব্যবহার করা যায় না, তেমনি হ্যাশ ডেটার একটি অংশকে অনন্যভাবে শনাক্ত করে কিন্তু মূল পুনর্গঠনে ব্যবহার করা যায় না।
একটি সরল উদাহরণ
দুটি খুব কাছাকাছি ইনপুটে SHA-256 হ্যাশ ফাংশন কী করে:
| ইনপুট | SHA-256 হ্যাশ (প্রথম ১৬ অক্ষর) |
|---|---|
| "Hello" | 185f8db32271fe25... |
| "hello" | 2cf24dba5fb0a30e... |
| "hello!" | ce06092fb948d9ff... |
একটি অক্ষর পরিবর্তন (বড় H থেকে ছোট h) বা বিস্ময়বোধক চিহ্ন যোগ করলে সম্পূর্ণ ভিন্ন হ্যাশ তৈরি হয়। কোনো প্যাটার্ন নেই, কোনো পূর্বানুমানযোগ্য সম্পর্ক নেই। এটি তুষারপাত প্রভাব কার্যকরে।
আপনি কি জানতেন? খালি ইনপুটের (আক্ষরিক অর্থে কিছুই না) SHA-256 হ্যাশ হলো e3b0c44298fc1c14...। এটি একটি সুপরিচিত ধ্রুবক। বিশ্বের প্রতিটি SHA-256 বাস্তবায়ন খালি ইনপুটের জন্য ঠিক এই আউটপুটই তৈরি করে।
সাধারণ হ্যাশ অ্যালগরিদম
MD5
- আউটপুট: 128 বিট (32 হেক্সাডেসিমাল অক্ষর)
- অবস্থা: নিরাপত্তা উদ্দেশ্যে ভাঙা। কলিশন (ভিন্ন ইনপুটে একই হ্যাশ) সেকেন্ডে তৈরি করা যায়।
- এখনও ব্যবহৃত: ফাইল অখণ্ডতা পরীক্ষায় যেখানে নিরাপত্তা চিন্তার বিষয় নয় (যেমন ডাউনলোড দুর্নীতিগ্রস্ত হয়নি কিনা যাচাই)।
SHA-1
- আউটপুট: 160 বিট (40 হেক্সাডেসিমাল অক্ষর)
- অবস্থা: নিরাপত্তার জন্য অবমূল্যায়িত। কলিশন প্রদর্শিত হয়েছে।
- এখনও ব্যবহৃত: লিগ্যাসি সিস্টেম, Git কমিট শনাক্তকারী।
SHA-256
- আউটপুট: 256 বিট (64 হেক্সাডেসিমাল অক্ষর)
- অবস্থা: বর্তমান মান। কোনো পরিচিত ব্যবহারিক আক্রমণ নেই।
- ব্যবহৃত: পাসওয়ার্ড সংরক্ষণ, ডিজিটাল স্বাক্ষর, ব্লকচেইন, ফাইল যাচাই, TLS সার্টিফিকেট।
SHA-512
- আউটপুট: 512 বিট (128 হেক্সাডেসিমাল অক্ষর)
- অবস্থা: বর্তমান মান। SHA-256-এর চেয়েও বড় নিরাপত্তা মার্জিন।
- ব্যবহৃত: উচ্চ-নিরাপত্তা অ্যাপ্লিকেশন, কিছু পাসওয়ার্ড হ্যাশিং স্কিম।
সতর্কতা MD5 এবং SHA-1 নিরাপত্তা উদ্দেশ্যে (পাসওয়ার্ড, ডিজিটাল স্বাক্ষর, সার্টিফিকেট) কখনোই ব্যবহার করা উচিত নয়। এগুলো ক্রিপ্টোগ্রাফিকভাবে ভাঙা। নিরাপত্তা-সম্পর্কিত যেকোনো কিছুর জন্য SHA-256 বা SHA-512 ব্যবহার করুন।
কোথায় হ্যাশ ব্যবহৃত হয়
পাসওয়ার্ড সংরক্ষণ
আপনি যখন অ্যাকাউন্ট তৈরি করেন, ওয়েবসাইট আপনার প্রকৃত পাসওয়ার্ড সংরক্ষণ করে না (বা করা উচিত নয়)। এর পরিবর্তে, পাসওয়ার্ডের হ্যাশ সংরক্ষণ করে। লগইন করলে, সিস্টেম আপনার দেওয়া পাসওয়ার্ড হ্যাশ করে সংরক্ষিত হ্যাশের সাথে তুলনা করে। মিললে, আপনি প্রবেশ পান।
এর মানে ডেটাবেস ফাঁস হলেও, আক্রমণকারীরা হ্যাশ পায়, পাসওয়ার্ড নয়। তারা হ্যাশ উল্টে পাসওয়ার্ড খুঁজতে পারে না (তবে সাধারণ পাসওয়ার্ড হ্যাশ করে তুলনা করে অনুমান করার চেষ্টা করতে পারে)।
ফাইল যাচাই
আপনি যখন সফটওয়্যার ডাউনলোড করেন, ওয়েবসাইট প্রায়ই ফাইলের SHA-256 হ্যাশ দেয়। ডাউনলোডের পর, আপনি নিজে ফাইল হ্যাশ করে তুলনা করেন। হ্যাশ মিললে, ফাইল প্রকাশকের উদ্দেশ্য অনুযায়ী আছে। ভিন্ন হলে, ডাউনলোডে ফাইল দুর্নীতিগ্রস্ত বা পরিবর্তিত হয়েছে।
ব্লকচেইন ও ক্রিপ্টোকারেন্সি
ব্লকচেইনের প্রতিটি ব্লকে পূর্ববর্তী ব্লকের হ্যাশ থাকে, একটি অভঙ্গুর শৃঙ্খল তৈরি করে। কেউ পূর্ববর্তী লেনদেন পরিবর্তন করতে চাইলে, সেই ব্লকের হ্যাশ বদলে যায়, যা সেই বিন্দু থেকে শৃঙ্খল ভেঙে দেয়, টেম্পারিং তাৎক্ষণিকভাবে সনাক্তযোগ্য করে।
ডিজিটাল স্বাক্ষর
আপনি যখন ডিজিটালভাবে ডকুমেন্ট সাইন করেন, প্রকৃতপক্ষে পুরো ডকুমেন্ট প্রাইভেট কি দিয়ে এনক্রিপ্ট করেন না। বরং, ডকুমেন্ট হ্যাশ করা হয়, এবং হ্যাশ এনক্রিপ্ট করা হয়। এটি অনেক দ্রুত এবং একটি সংক্ষিপ্ত স্বাক্ষর তৈরি করে।
Git ভার্সন কন্ট্রোল
Git-এ প্রতিটি কমিট, ফাইল এবং ট্রি তার SHA-1 হ্যাশ দিয়ে শনাক্ত করা হয়। এভাবে Git জানে কোনো ফাইল বদলেছে কিনা এবং কীভাবে প্রজেক্টের পুরো ইতিহাস ট্র্যাক করে।
আপনি কি জানতেন? Git ধীরে ধীরে SHA-1 থেকে SHA-256-এ স্থানান্তরিত হচ্ছে। ২০১৭ সালে SHA-1 কলিশন প্রদর্শিত হওয়ায় এই পরিবর্তন শুরু হয়, তাত্ত্বিকভাবে একই শনাক্তকারীযুক্ত দুটি ভিন্ন কমিট তৈরি করার সুযোগ দিয়ে।
নিজে পরীক্ষা করুন
হ্যাশ বোঝার সেরা উপায় হলো পরীক্ষা করা। একটি শব্দ হ্যাশ করুন, তারপর একটি অক্ষর বদলে দেখুন আউটপুট কীভাবে সম্পূর্ণ বদলে যায়। পরিবর্তনের আগে ও পরে ফাইল হ্যাশ করে পার্থক্য দেখুন।
পরামর্শ যেকোনো টেক্সট বা ফাইলের জন্য হ্যাশ তৈরি ও যাচাই করুন: কীভাবে হ্যাশ তৈরি ও যাচাই করবেন। SHA-256, MD5, SHA-512 এবং আরও অনেক কিছু চেষ্টা করুন — তাৎক্ষণিকভাবে, বিনামূল্যে, আপনার ব্রাউজারে।
হাতে-কলমে হ্যাশ অন্বেষণ করুন:
বিনামূল্যে, তাৎক্ষণিক, এবং কোনো সাইন-আপ লাগবে না।