ধরা যাক আমাদের এক বিলিয়ন অনন্য চিত্র রয়েছে, প্রতিটিতে একটি মেগাবাইট। আমরা প্রতিটি ফাইলের সামগ্রীর জন্য SHA-256 হ্যাশ গণনা করি। সংঘর্ষের সম্ভাবনা নির্ভর করে:
- ফাইল সংখ্যা
একক ফাইলের আকার
এটিকে শূন্য বলে ধরে আমরা এই সম্ভাবনাটি কতটা উপেক্ষা করতে পারি?
ধরা যাক আমাদের এক বিলিয়ন অনন্য চিত্র রয়েছে, প্রতিটিতে একটি মেগাবাইট। আমরা প্রতিটি ফাইলের সামগ্রীর জন্য SHA-256 হ্যাশ গণনা করি। সংঘর্ষের সম্ভাবনা নির্ভর করে:
এটিকে শূন্য বলে ধরে আমরা এই সম্ভাবনাটি কতটা উপেক্ষা করতে পারি?
উত্তর:
স্বাভাবিক উত্তরটি এইভাবে চলে যায়: পরের দ্বিতীয়টির মধ্যে পৃথিবীতে একটি দুর্বৃত্ত গ্রহাণু বিধ্বস্ত হওয়ার, সভ্যতা-যেমন-আমরা জানি, এটি বিলুপ্ত করে এবং কয়েক বিলিয়ন মানুষকে হত্যা করার সম্ভাবনা কী? এটি যুক্তিযুক্ত হতে পারে যে এর চেয়ে কম সম্ভাবনার সাথে কোনও দুর্ভাগ্য ঘটনা আসলে খুব গুরুত্বপূর্ণ নয়।
আমরা যদি আউটপুটের আকার সঙ্গে একটি "নিখুঁত" হ্যাশ ফাংশন আছে এন , এবং আমরা আছে পি হ্যাশ বার্তা (ব্যক্তি বার্তা দৈর্ঘ্য গুরুত্বপূর্ণ নয়), তারপর সংঘর্ষের সম্ভাবনা সম্পর্কে পি 2 /2 এন +1 (এই প্রায় সঠিক পরিমাপ যা "ছোট" পি এর জন্য বৈধ , অর্থাত্ 2 এন / 2 এর চেয়ে যথেষ্ট ছোট )। উদাহরণস্বরূপ, SHA-256 ( n = 256 ) এবং এক বিলিয়ন বার্তা ( পি = 10 9 ) দিয়ে তবে সম্ভাবনা প্রায় 4.3 * 10 -60 ।
একটি গণ-হত্যাকারী মহাকাশ পাথর গড়ে প্রায় 30 মিলিয়ন বছরে একবার ঘটে। এটি পরবর্তী সেকেন্ডে প্রায় 10 -15-এ ঘটে এমন কোনও ঘটনার সম্ভাবনা বাড়ে । এটা 45 মাত্রার রয়েছে SHA-256 সংঘর্ষের বেশী সম্ভবপর নির্দেশে। সংক্ষেপে বলা হয়েছে, আপনি যদি SHA-256 সংঘর্ষকে ভয়ঙ্কর মনে করেন তবে আপনার অগ্রাধিকারগুলি ভুল।
সুরক্ষা সেটআপে, যেখানে কোনও আক্রমণকারী হ্যাশ হয়ে যাওয়া বার্তাগুলি বেছে নিতে পায়, তখন আক্রমণকারী এক বিলিয়ন বার্তার চেয়ে বেশি বার্তা ব্যবহার করতে পারে; তবে, আপনি দেখতে পাবেন যে আক্রমণকারীর সাফল্যের সম্ভাবনা এখনও অদৃশ্যভাবে ছোট হবে। এটি 256-বিট আউটপুট সহ হ্যাশ ফাংশনটি ব্যবহার করার পুরো বিষয়টি: যাতে সংঘর্ষের ঝুঁকি উপেক্ষা করা যায়।
অবশ্যই, উপরোক্ত সমস্ত অনুমান করে যে SHA-256 একটি "নিখুঁত" হ্যাশ ফাংশন, যা প্রমাণিত হওয়া থেকে অনেক দূরে। তবুও, SHA-256 বেশ শক্তিশালী বলে মনে হচ্ছে।
সংঘর্ষের সম্ভাবনা ফাইলগুলির আকারের উপর নির্ভর করে না, কেবল তাদের সংখ্যার উপর।
এটি জন্মদিনের প্যারাডক্সের একটি উদাহরণ । উইকিপিডিয়া পৃষ্ঠাটি সংঘর্ষের সম্ভাবনার একটি অনুমান দেয়। আপনি যদি সংখ্যাটি চালান, আপনি দেখতে পাবেন যে পৃথিবীতে কখনও উত্পাদিত সমস্ত হার্ডডিস্ক SHA-256 এর জন্য 0.01% এমনকি সংঘর্ষের সম্ভাবনা পাওয়ার জন্য পর্যাপ্ত 1MB ফাইল ধরে রাখতে পারে না।
মূলত, আপনি কেবল সম্ভাবনাটিকে উপেক্ষা করতে পারেন।
প্রথমত, এটি শূন্য নয়, তবে শূন্যের খুব কাছাকাছি ।
মূল প্রশ্নটি আসলে যদি সংঘর্ষ ঘটে তবে কী ঘটে ? যদি উত্তরটি হয় "পারমাণবিক বিদ্যুৎ কেন্দ্রটি বিস্ফোরিত হবে" তবে আপনার সংঘর্ষের সম্ভাবনাটি উপেক্ষা করা উচিত নয়। বেশিরভাগ ক্ষেত্রে পরিণতিগুলি ততটা মারাত্মক নয় এবং তাই আপনি সংঘর্ষের সম্ভাবনাটিকে উপেক্ষা করতে পারেন।
এছাড়াও ভুলে যাবেন না যে আপনার সফ্টওয়্যারটি (বা এর একটি ক্ষুদ্র অংশ) স্থাপন করা হতে পারে এবং একই সাথে একটি গাজিলিয়ন কম্পিউটারে ব্যবহৃত হতে পারে (কিছু ক্ষুদ্র এমবেডেড মাইক্রো কম্পিউটার যারা আজকাল প্রায় সব জায়গায় অন্তর্ভুক্ত রয়েছে)। সেক্ষেত্রে আপনাকে সম্ভাব্যতম সংখ্যক অনুলিপি দ্বারা প্রাপ্ত প্রাক্কলনটি গুন করতে হবে।