কল্পনা করুন আপনি যেকোনো ডেটা — একটি একক শব্দ, একটি উপন্যাস, একটি ৪ GB ভিডিও — নিয়ে সেটিকে একটি সংক্ষিপ্ত, নির্দিষ্ট দৈর্ঘ্যের অক্ষরের স্ট্রিংয়ে রূপান্তর করতে পারেন যা এটিকে অনন্যভাবে চিহ্নিত করে। মূলে একটি একক কমা পরিবর্তন করলে স্ট্রিংটি সম্পূর্ণ ভিন্ন হয়ে যায়। এবং মূল ডেটা পুনরুদ্ধার করতে প্রক্রিয়াটি উল্টানোর কোনো উপায় নেই।
একটি ক্রিপ্টোগ্রাফিক হ্যাশ ফাংশন ঠিক এটাই করে। এটি আধুনিক নিরাপত্তার সবচেয়ে মৌলিক বিল্ডিং ব্লকগুলোর একটি এবং আপনি অনলাইনে যা কিছু করেন তার প্রায় সবকিছু এটি নীরবে সুরক্ষিত করে।
ফিঙ্গারপ্রিন্ট উপমা
হ্যাশ একটি ডিজিটাল ফিঙ্গারপ্রিন্টের মতো কাজ করে। আপনার ফিঙ্গারপ্রিন্ট আপনাকে অনন্যভাবে চিহ্নিত করে, কিন্তু কেউ এটি থেকে আপনার মুখ পুনর্গঠন করতে পারে না। একইভাবে, একটি ক্রিপ্টোগ্রাফিক হ্যাশ একটি ডেটার টুকরোকে অনন্যভাবে চিহ্নিত করে সেই ডেটা কী তা প্রকাশ না করেই।
যেকোনো ইনপুট একটি হ্যাশ ফাংশনে দিন এবং আপনি একটি ডাইজেস্ট (যাকে হ্যাশ ভ্যালু বা চেকসামও বলা হয়) পাবেন — হেক্সাডেসিমাল অক্ষরের একটি নির্দিষ্ট দৈর্ঘ্যের স্ট্রিং। SHA-256, সবচেয়ে সাধারণ অ্যালগরিদমগুলোর একটি, ইনপুটের আকার নির্বিশেষে সবসময় ৬৪-অক্ষরের আউটপুট তৈরি করে।
| ইনপুট | SHA-256 ডাইজেস্ট (প্রথম ১৬ অক্ষর) |
|---|---|
Hello |
185f8db32271fe25... |
hello |
2cf24dba5fb0a30e... |
| সম্পূর্ণ Wikipedia ডাম্প | (এখনও ৬৪ অক্ষর) |
চারটি অপরিহার্য বৈশিষ্ট্য
একটি ফাংশন তখনই ক্রিপ্টোগ্রাফিক হ্যাশ হিসাবে যোগ্যতা অর্জন করে যখন এটি এই বৈশিষ্ট্যগুলো পূরণ করে:
- নিয়তিবাদী। একই ইনপুট সবসময় একই আউটপুট তৈরি করে, যেকোনো মেশিনে, যেকোনো সময়ে।
- একমুখী (প্রি-ইমেজ রেজিস্ট্যান্স)। একটি হ্যাশ দেওয়া হলে, মূল ইনপুট খুঁজে পাওয়া গণনামূলকভাবে অসম্ভব। আপনি ডেটা "আনহ্যাশ" করতে পারবেন না।
- কলিশন-প্রতিরোধী। দুটি ভিন্ন ইনপুট খুঁজে পাওয়া কার্যত অসম্ভব যা একই ডাইজেস্ট তৈরি করে। SHA-256-এর জন্য, আকস্মিক কলিশনের সম্ভাবনা প্রায় ২^১২৮-এ ১ — পর্যবেক্ষণযোগ্য মহাবিশ্বের পরমাণুর চেয়ে বড় একটি সংখ্যা।
- অ্যাভালাঞ্চ ইফেক্ট। ইনপুটে একটি একক বিট পরিবর্তন করলে আউটপুটের প্রায় অর্ধেক বিট উল্টে যায়। সদৃশ ইনপুটগুলোর মধ্যে কোনো শনাক্তযোগ্য প্যাটার্ন বা সম্পর্ক নেই।
মূল পার্থক্য: হ্যাশিং এনক্রিপশন নয়। এনক্রিপশন একটি কী দিয়ে উল্টানো যায়; হ্যাশিং ইচ্ছাকৃতভাবে অপরিবর্তনীয়। ট্রানজিটের সময় ডেটা সুরক্ষিত করতে আপনি এনক্রিপ্ট করেন। ডেটার অখণ্ডতা যাচাই করতে বা মূল না রেখে একটি প্রমাণ সংরক্ষণ করতে আপনি হ্যাশ করেন।
সাধারণ হ্যাশ অ্যালগরিদম
MD5 (১৯৯১)
- আউটপুট: ১২৮ বিট (৩২ হেক্স অক্ষর)
- অবস্থা: ক্রিপ্টোগ্রাফিকভাবে ভাঙা। গবেষকরা একটি ল্যাপটপে সেকেন্ডে কলিশন তৈরি করতে পারেন।
- এখনও দেখা যায়: ফাইল ডাউনলোড এবং লিগ্যাসি সিস্টেমের জন্য নন-সিকিউরিটি চেকসাম।
SHA-1 (১৯৯৫)
- আউটপুট: ১৬০ বিট (৪০ হেক্স অক্ষর)
- অবস্থা: নিরাপত্তার জন্য অবচিত। Google ২০১৭ সালে একটি ব্যবহারিক কলিশন প্রদর্শন করেছিল ("SHAttered" আক্রমণ)।
- এখনও দেখা যায়: পুরানো Git রিপোজিটরি, কিছু লিগ্যাসি সার্টিফিকেট।
SHA-256 (২০০১)
- আউটপুট: ২৫৬ বিট (৬৪ হেক্স অক্ষর)
- অবস্থা: বর্তমান স্ট্যান্ডার্ড। কোনো পরিচিত ব্যবহারিক আক্রমণ নেই।
- ব্যবহৃত হয়: TLS সার্টিফিকেট, Bitcoin, পাসওয়ার্ড হ্যাশিং, ডিজিটাল স্বাক্ষর, ফাইল অখণ্ডতা যাচাই।
SHA-3 (২০১৫)
- আউটপুট: পরিবর্তনশীল (সাধারণত ২৫৬ বিট)
- অবস্থা: সর্বশেষ স্ট্যান্ডার্ড, SHA-2 পরিবারের থেকে সম্পূর্ণ ভিন্ন অভ্যন্তরীণ ডিজাইনের (Keccak sponge construction) উপর ভিত্তি করে।
- ব্যবহৃত হয়: ভবিষ্যৎমুখী সিস্টেম, Ethereum, অ্যালগরিদম বৈচিত্র্য প্রয়োজন এমন পরিস্থিতি।
| অ্যালগরিদম | আউটপুট আকার | নিরাপদ? | গতি |
|---|---|---|---|
| MD5 | ১২৮ বিট | না | অত্যন্ত দ্রুত |
| SHA-1 | ১৬০ বিট | না | দ্রুত |
| SHA-256 | ২৫৬ বিট | হ্যাঁ | মধ্যম |
| SHA-3-256 | ২৫৬ বিট | হ্যাঁ | মধ্যম |
ক্রিপ্টোগ্রাফিক হ্যাশিং কোথায় ব্যবহৃত হয়
পাসওয়ার্ড সংরক্ষণ
আপনি একটি অ্যাকাউন্ট তৈরি করলে, একটি ভালোভাবে ডিজাইন করা সিস্টেম কখনোই আপনার পাসওয়ার্ড প্লেইন টেক্সটে সংরক্ষণ করে না। এটি হ্যাশ সংরক্ষণ করে। আপনি লগইন করলে, সিস্টেম আপনি যা টাইপ করেন তা হ্যাশ করে এবং সংরক্ষিত মানের সাথে তুলনা করে। ডাটাবেস ব্রিচ হলেও, আক্রমণকারীরা হ্যাশ পায় — পাসওয়ার্ড নয়।
আধুনিক সিস্টেমগুলো আরও এগিয়ে যায় একটি র্যান্ডম সল্ট (হ্যাশিংয়ের আগে যোগ করা অতিরিক্ত ডেটা) এবং ইচ্ছাকৃতভাবে ধীর অ্যালগরিদম যেমন bcrypt, scrypt, বা Argon2 ব্যবহার করে ব্রুট-ফোর্স অনুমান অবাস্তব করে তুলতে।
ফাইল অখণ্ডতা যাচাই
সফটওয়্যার বিতরণকারীরা তাদের ডাউনলোডের পাশাপাশি SHA-256 চেকসাম প্রকাশ করে। ডাউনলোডের পরে, আপনি আপনার মেশিনে ফাইলের হ্যাশ গণনা করে তুলনা করেন। মিল প্রমাণ করে যে ট্রানজিটের সময় ফাইলটি দূষিত বা পরিবর্তিত হয়নি।
ডিজিটাল স্বাক্ষর
আপনি যখন একটি ডকুমেন্টে ডিজিটালি স্বাক্ষর করেন, সিস্টেম প্রথমে ডকুমেন্টটি হ্যাশ করে, তারপর আপনার প্রাইভেট কী দিয়ে হ্যাশটি এনক্রিপ্ট করে। প্রাপক আপনার পাবলিক কী দিয়ে এটি ডিক্রিপ্ট করে এবং ডকুমেন্টের নিজস্ব হ্যাশের সাথে তুলনা করে। এটি সম্পূর্ণ ডকুমেন্ট এনক্রিপ্ট করার চেয়ে অনেক দক্ষ এবং লেখকত্ব ও অখণ্ডতা উভয়ই প্রমাণ করে।
ব্লকচেইন
একটি ব্লকচেইনের প্রতিটি ব্লকে পূর্ববর্তী ব্লকের হ্যাশ থাকে, একটি অপরিবর্তনীয় চেইন তৈরি করে। কোনো অতীত লেনদেন পরিবর্তন করলে সেই ব্লকের হ্যাশ পরিবর্তন হয়, যা সেই বিন্দু থেকে চেইন ভেঙে দেয়, পরিবর্তন তাৎক্ষণিকভাবে দৃশ্যমান করে।
কেন MD5 এবং SHA-1 ভাঙা হিসাবে বিবেচিত
একটি হ্যাশ অ্যালগরিদম "ভাঙা" হয় যখন কেউ ইচ্ছাকৃতভাবে দুটি ভিন্ন ইনপুট তৈরি করতে পারে যা একই হ্যাশ তৈরি করে (একটি কলিশন)। এটি অনন্যতার উপর নির্ভর করে এমন প্রতিটি ব্যবহারের ক্ষেত্রকে ক্ষতিগ্রস্ত করে।
- MD5: কলিশন সেকেন্ডে তৈরি করা যায়। গবেষকরা অভিন্ন MD5 হ্যাশযুক্ত দুটি ভিন্ন PDF ফাইল তৈরি করেছেন।
- SHA-1: ২০১৭ সালে SHAttered আক্রমণ একই SHA-1 হ্যাশযুক্ত দুটি ভিন্ন PDF তৈরি করেছিল, যার জন্য প্রায় ৬,৫০০ বছরের একক-CPU গণনা প্রয়োজন ছিল (ক্লাউড রিসোর্সের সাথে সম্ভব)।
ব্যবহারিক নিয়ম: নিরাপত্তা-সম্পর্কিত কোনো কিছুর জন্য কখনোই MD5 বা SHA-1 ব্যবহার করবেন না — পাসওয়ার্ড, সার্টিফিকেট, ডিজিটাল স্বাক্ষর, বা অখণ্ডতা পরীক্ষা যেখানে প্রতিপক্ষ জড়িত থাকতে পারে। পরিবর্তে SHA-256 বা SHA-3 ব্যবহার করুন।
আরও জানুন
হ্যাশিং সেই ধারণাগুলোর একটি যা পরীক্ষা-নিরীক্ষা করলে সহজবোধ্য হয়ে যায়। একটি বাক্য হ্যাশ করে দেখুন, তারপর একটি অক্ষর পরিবর্তন করে নিজে অ্যাভালাঞ্চ ইফেক্ট দেখুন।
- কীভাবে হ্যাশ তৈরি এবং যাচাই করবেন — ধাপে ধাপে টিউটোরিয়াল
- Hash Generator — আপনার ব্রাউজারে তাৎক্ষণিকভাবে SHA-256, MD5, SHA-512 এবং আরও গণনা করুন
- Hash Identifier — একটি অজানা হ্যাশ পেস্ট করুন এবং এর অ্যালগরিদম শনাক্ত করুন
