MD5 ফাইলগুলি স্বতন্ত্রভাবে সনাক্ত করার জন্য এখনও কি যথেষ্ট?


139

এমডি 5 হ্যাশিং কোনও ফাইল এখনও এমডি 5 অ্যালগরিদম এবং সুরক্ষা সংক্রান্ত সমস্যাগুলি ইত্যাদি ভেঙে দেওয়া স্বতন্ত্রভাবে সনাক্ত করার জন্য একটি উপযুক্ত যথেষ্ট পদ্ধতি হিসাবে বিবেচিত? সুরক্ষা এখানে আমার প্রাথমিক উদ্বেগ নয়, তবে প্রতিটি ফাইলই স্বতন্ত্রভাবে চিহ্নিত করা।

কোন চিন্তা?


2
আমি বর্তমানে এটি আমার অ্যাপ্লিকেশনগুলির একটিতে নিজেই ব্যবহার করছি এবং যতদূর আমি জানি যে ফাইলগুলি অনন্যরূপে সনাক্ত করার পক্ষে এটি যথেষ্ট ভাল।
উপলব্ধ নয়

2
আপনি সম্ভবত এই প্রশ্নটি দেখতে পাবেন: stackoverflow.com/questions/862346/… দরকারী।
ধারালো

আপনার কতগুলি ফাইল সনাক্ত করতে হবে? এটি 128bits আউটপুট দেয়, সুতরাং আপনি কয়েক হাজার ফাইল শনাক্ত করার চেষ্টা করছেন, এটি ঠিক আছে। তবে আপনি যদি এর চেয়ে আরও অনেক বেশি আইডির চেষ্টা করছেন তবে আপনি সংঘর্ষে বা জন্মদিনের প্যারাডক্সে ঝাঁপিয়ে পড়ছেন।
মার্সিন

তারা ইমেজ ফাইল, জেপিজি, পিএনজি এবং জিআইএফ হতে চলেছে। এবং হ্যাঁ আমি মনে করি এই সীমাটি কয়েক হাজার হবে ... তবে আপনি মোটামুটিভাবে কতগুলি ফাইল আমার সমস্যার কারণ হয়ে উঠছেন বলে মনে করেন?
রানহিরু জুড কুরে

সংশ্লিষ্ট: stackoverflow.com/questions/14973197/...
NeDark

উত্তর:


89

হ্যাঁ. সুরক্ষা দৃষ্টিকোণ থেকে এমডি 5 সম্পূর্ণরূপে ভেঙে গেছে, তবে দুর্ঘটনাক্রমে সংঘর্ষের সম্ভাবনা এখনও খুব কম। কেবলমাত্র নিশ্চিত হন যে ফাইলগুলি আপনি বিশ্বাস করেন না এমন কারও দ্বারা তৈরি হচ্ছে না এবং যার দূষক অভিপ্রায় থাকতে পারে।


2
@ নন: আপনার প্রথম প্রশ্নের জন্য, এখানে দেখুন । আমি ভয় করি আমি অন্যান্য প্রশ্নগুলি বুঝতে পারি না।
মার্সেলো ক্যান্টোস

9
@ 0xA3: ওপি আপনাকে কোন ফাইলগুলি উল্লেখ করছে বা কোনও আপস করলে কতটা ক্ষতি হতে পারে তা আপনার বা আমার কোনও ধারণা নেই। এটি আমরা জানি আমাদের সন্তানের শিশুর ফটো সংগ্রহ হতে পারে। আমার লক্ষ্য ঘটনা সরবরাহ করা; অন্য কেউ তাদের সাথে যা করে তা হ'ল তাদের ব্যবসা। এছাড়াও বিবেচনা করুন যে ব্রুস শ্নিয়ার আপনার পাসওয়ার্ডটি লিখে রাখার পরামর্শ দেয়; ফোর্ট নক্সে সবকিছু সংরক্ষণ করার দরকার নেই। কিছু জিনিস ফুলের পাত্রের নীচে ঠিক রাখবে।
মার্সেলো ক্যান্টোস

3
@ মার্সেলো ক্যান্টোস, আমি মনে করি যে এখানে যে অভাব রয়েছে তা হ'ল 'সুরক্ষা' শব্দটির পার্থক্য বা আনপ্যাকিং। স্পষ্টতই লোকেরা চেকসাম কাজের যে কোনও ব্যবহারের জন্য 'সুরক্ষা' ধরে নিচ্ছে তবে মার্সেলো নামকরণ সম্ভবত 'পরীক্ষাগারে' means
hpavc

5
আমি দৃ strongly়ভাবে একমত না। একটি ভিন্ন হ্যাশ মান জানায় যে ফাইলগুলি আলাদা। তবে একটি সমান হ্যাশ মানের জন্য: আপনি হ্যাশ একইরকম হলে "এটি সম্ভবত উভয়ই একই" এটি বলতে পারবেন না: আপনি কেবলমাত্র বাইট-বাইট-এর সাথে তুলনা করতে পারেন। একটি হ্যাশ পুরো ফাইলের জন্য বিভিন্ন মানের সংখ্যার চেয়ে ছোট আকারের অনেকগুলি অর্ডার , তাই প্রতিটি হ্যাশ মানগুলির জন্য অনেকগুলি, অনেকগুলি, বহু সম্ভাব্য সংঘর্ষ রয়েছে। কেবলমাত্র আপনি যদি কোনও পরিচিত ফাইলটি (একটি পরিচিত হ্যাশ সহ) অনুলিপি করার ক্ষেত্রে থাকেন তবে একটি অভিন্ন হ্যাশ মানটি সম্ভবত "সম্ভবত" দ্বিতীয়টি সঠিকভাবে অনুলিপি করা হয়েছিল (তারপরেও এটি 100% নিশ্চিত নয়, তবে অত্যন্ত সম্ভবত)।
অলিভিয়ার ডুলাক

3
ঠিক আছে, আমার গণিত সফল হয়। জিইউইডিগুলিতে প্রায় 122 বিট এনট্রপি রয়েছে এবং সুতরাং বিলিয়ন ফাইলের যে কোনও জায়গায় সংঘর্ষের সম্ভাবনা প্রায় 2 ^ (2 * 30 - 122) = 2 ^ -62। যদিও এটি আমার আসল গণনার তুলনায় অনেক বেশি, এটি এখনও 4-কুইন্টিলিয়নে মোটামুটি একটিতে বিয়োগফল।
মার্সেলো ক্যান্টোস

32

ব্যবহারিক উদ্দেশ্যে, তৈরি করা হ্যাশটি যথাযথ এলোমেলো হতে পারে তবে তাত্ত্বিকভাবে পিজনহোল নীতির কারণে সর্বদা সংঘর্ষের সম্ভাবনা থাকে । বিভিন্ন হ্যাশ থাকার অর্থ অবশ্যই ফাইলগুলি পৃথক, তবে একই হ্যাশ পাওয়ার অর্থ এই নয় যে ফাইলগুলি অভিন্ন।

এই উদ্দেশ্যে হ্যাশ ফাংশন ব্যবহার করা - সুরক্ষা উদ্বেগজনক কিনা তা বিবেচনা করা উচিত না - তাই সর্বদা চেকের প্রথম ধাপ হওয়া উচিত, বিশেষত যদি হ্যাশ অ্যালগরিদম সহজে সংঘর্ষ তৈরি করতে পরিচিত। একই হ্যাশযুক্ত দুটি ফাইল পৃথক কিনা তা নির্ভরযোগ্যতার সাথে অনুসন্ধান করতে আপনাকে সেই ফাইলগুলি বাই বাই বাইটের সাথে তুলনা করতে হবে।


16
@Ranhiru। না। হ্যাশ আপনাকে একটি 'সারাংশ' মান দেয় যা (এমডি 5 এর জন্য) কেবল 16 বাইট দীর্ঘ। করার গ্যারান্টি ফাইল অভিন্ন আপনি বাইট চেকের মাধ্যমে একটি বাইট করতে প্রয়োজন হবে। আপনি যা বেছে নিয়েছেন তা হ্যাশ অ্যালগরিদম নির্বিশেষে এটি সত্য, সর্বদা সংঘর্ষের সম্ভাবনা রয়েছে।
পলজি

6
@Ranhiru। এই উত্তরটি আবার পড়ুন, এটি এখানে সবচেয়ে বিস্তৃত ho হ্যাশিং প্রথম পদক্ষেপ হিসাবে ব্যবহার করা যেতে পারে, যা আপনি 99.99 ^ ই% নিশ্চিত করেছেন যে ফাইলগুলি অভিন্ন, তবে আপনি যদি একেবারে 100% নির্দিষ্ট হতে চান তবে আপনাকে বাইট চেক করে বাইট তৈরি করতে হবে। আপনি MD5, SHA বা অন্য কোনও অ্যালগরিদম ব্যবহার করেন কিনা তা সত্য is
পলজি

7
এই উত্তরটি ভুল। ছদ্মবেশ রোধ এবং স্বতন্ত্রতা যাচাই করা একই জিনিস। এছাড়াও, যখন হ্যাশিং স্বতন্ত্রতার গ্যারান্টি দেয় না, তেমনি প্রকৃত তুলনাও করে না। প্রকৃতপক্ষে, একটি হ্যাশ দুর্ঘটনাক্রমে সংঘর্ষের সম্ভাবনা আসলে কম থাকে যে স্বাভাবিক সৌর গামা রশ্মি নিঃসরণ দ্বারা উত্পন্ন সিপিইউতে বিভ্রান্তির কারণে তুলনা ব্যর্থ হওয়ার সম্ভাবনা কম থাকে। এবং ভুলে যাবেন না যে প্রায়শই ফাইলটির একমাত্র উত্স একটি ওয়েব সার্ভারের ভিতরে বিশ্বের অন্যদিকে বসে থাকে এবং তুলনার উদ্দেশ্যে আপনার কাছে থাকা তথ্যগুলির একমাত্র স্বাধীন অংশ হ্যাশ।
মার্সেলো ক্যান্টোস

8
@Marcelo। এটি যৌক্তিক যুক্তির পক্ষে দাঁড়ায় না যে দুর্ঘটনাজনিত বিট উল্টানো (বাইট তুলনা করে বাইট তৈরি করা) এর চেয়ে দুর্ঘটনাজনিত সংঘর্ষের সম্ভাবনা কম । হ্যাশ তৈরি করার সময় আপনার কাছে বিট ফ্লিপ হওয়ার একই সম্ভাবনা রয়েছে (এবং আরও বেশি প্রসেসিংয়ের সময় জড়িত হওয়ার কারণে যুক্তিযুক্ত আরও কিছু)। @ থমাস মূলত এটি উত্থাপন করেছিলেন যে স্বতন্ত্রতা সনাক্তকরণের কোনও গ্যারান্টিযুক্ত উপায় নেই, যদিও বিট ফ্লিপের প্রভাব অত্যন্ত বিতর্কিত। সর্বাধিক হতাশাজনক অনুমানটি প্রতি জিবি / ঘন্টা প্রতি 1 টি ফ্লিপ, এবং ইসিসি র‌্যাম এমনকি এটি সরিয়ে ফেলবে।
পলজি

2
"একটি হ্যাশ ঘটনাক্রমে colliding সম্ভাবনা স্বাভাবিক সৌর গামা রশ্মি নির্গমনের দ্বারা উত্পন্ন CPU- র মধ্যে এবং glitches কারণে আসলে কম যে তুলনা সম্ভাবনা ব্যর্থ হচ্ছে" [তথ্যসূত্র প্রয়োজন]
endolith

20

আপনার কোনও বিরোধী না থাকলে MD5 যথেষ্ট ভাল হবে। তবে, কেউ (উদ্দেশ্যমূলকভাবে) দুটি পৃথক ফাইল তৈরি করতে পারে যা একই মানটিতে হ্যাশ করে (যেটিকে সংঘর্ষ বলা হয়), এবং আপনার সঠিক পরিস্থিতির উপর নির্ভর করে এটি সমস্যা বা নাও হতে পারে।

যেহেতু জ্ঞাত MD5 দুর্বলতা প্রদত্ত প্রসঙ্গে প্রযোজ্য কিনা তা জানা একটি সূক্ষ্ম বিষয়, তাই MD5 ব্যবহার না করার পরামর্শ দেওয়া হয়। সংঘর্ষ-প্রতিরোধী হ্যাশ ফাংশন (SHA-256 বা SHA-512) ব্যবহার করা নিরাপদ উত্তর। এছাড়াও, এমডি 5 ব্যবহার করা খারাপ জনসংযোগ (যদি আপনি এমডি 5 ব্যবহার করেন তবে নিজেকে ন্যায্যতা প্রমাণ করার জন্য প্রস্তুত থাকুন; অন্যদিকে আপনার SHA-256 ব্যবহারের বিষয়ে কেউ প্রশ্ন করবে না)।


2
পাঠক হ্যাশিংয়ের সাথে খুব বেশি পরিচিত না হলে এই উত্তরটি কিছুটা বিভ্রান্তিকর হতে পারে। এসএএএ সম্পর্কে জাদুকরী কিছুই নেই যা হ্যাশের সংঘর্ষকে বাধা দেয় , তারা হ্যাশের সংঘর্ষের আক্রমণে কেবলমাত্র আরও প্রতিরোধী । যদি আপনি 99.999 ^ ই% এর চেয়ে বেশি হতে চান যে ফাইলগুলি অভিন্ন, তবে আপনার এখনও বাইট চেকের বাইট প্রয়োজন।
পলজি

7
বাস্তবে একটি বাইট-টু-বাইট তুলনা ব্যর্থ হতে পারে মহাজাগতিক রশ্মিকে কিছুটা উল্টানোর কারণে (যেমন এটিকে রূপান্তরিত return 0;করে return 1;)। এটি অত্যন্ত অসম্ভব, তবে SHA-256 এর সাথে সংঘর্ষের ঝুঁকি তার চেয়েও ছোট is গাণিতিকভাবে, আপনি নিশ্চিত হতে পারবেন না যে দুটি ফাইল যা একই মানকে হ্যাশ করে তা অভিন্ন, তবে আপনি যতক্ষণ না তুলনা করার জন্য কম্পিউটার ব্যবহার করেন ততক্ষণ ফাইলগুলি নিজের সাথে তুলনা করে নিশ্চিত হওয়া যায় না। আমার অর্থ হ'ল এটি কিছু 99.999 .... 9% নিশ্চিততার বাইরে যাওয়া অর্থহীন এবং SHA-256 ইতিমধ্যে এর চেয়ে বেশি সরবরাহ করে।
থমাস পর্নিন

2
কি, আপনি ইসিসি মেমরি ব্যবহার করবেন না? ;)। ভাল মন্তব্য, খুব আকর্ষণীয় চিন্তা।
পলজি

1
টিন ফয়েল টুপি ভুলবেন না! আরও গুরুতরভাবে, সংঘর্ষগুলি সম্পর্কে আপনি কীভাবে এই ফ্যাকটিডগুলি জানেন এবং আপনি কোনওভাবে এটি যাচাই করেছেন?
জেমস পি।

@ থমাসপর্নিন কসমিক রশ্মি বিট ফ্লিপগুলি এমডি 5 পদ্ধতিতেও প্রভাব ফেলবে, সুতরাং এটি আরও খারাপ।
এন্ডোলিথ

9

একটি এমডি 5 সংঘর্ষ তৈরি করতে পারে। তাত্ত্বিকভাবে, যদিও অত্যন্ত অসম্ভব, একক সারিতে এক মিলিয়ন ফাইল একই হ্যাশ তৈরি করতে পারে। আপনার ভাগ্য পরীক্ষা করবেন না এবং মান সংরক্ষণের আগে এমডি 5 সংঘর্ষের জন্য যাচাই করবেন না।

আমি ব্যক্তিগতভাবে এলোমেলো স্ট্রিংয়ের এমডি 5 তৈরি করতে চাই, যা বড় বড় ফাইল হ্যাশিংয়ের ওভারহেড হ্রাস করে। যখন সংঘর্ষগুলি পাওয়া যায়, তখন আমি পুনরাবৃত্তি করি এবং যুক্ত লুপের কাউন্টার দিয়ে পুনরায় হ্যাশ করি।

আপনি কবুতর নীতি পড়তে পারেন ।


6

আমি এটি সুপারিশ করব না। যদি অ্যাপ্লিকেশনটি মাল্টি-ইউজার সিস্টেমে কাজ করে তবে ব্যবহারকারী থাকতে পারে, একই এমডি 5 হ্যাশ সহ দুটি ফাইল থাকতে পারে (তিনি প্রকৌশলী হতে পারেন এবং এই জাতীয় ফাইলগুলি খেলেন বা কৌতূহলী হতে পারেন - তারা সহজেই http: / থেকে ডাউনলোডযোগ্য /www2.mat.dtu.dk/people/S.Thomsen/wangmd5/sample.html , আমি নিজেই এই উত্তর লেখার সময় দুটি নমুনা ডাউনলোড করেছি)। আরেকটি বিষয় হ'ল যে কোনও কিছু অ্যাপ্লিকেশন যে কোনও কারণেই এই জাতীয় নকল সংরক্ষণ করতে পারে (আমি নিশ্চিত নই, যদি এরকম কোনও অ্যাপ্লিকেশন থাকে তবে সম্ভাবনা বিদ্যমান থাকে)।

আপনি যদি নিজের প্রোগ্রাম দ্বারা উত্পন্ন ফাইলগুলি স্বতন্ত্রভাবে সনাক্ত করেন তবে আমি বলব MD5 ব্যবহার করা ঠিক আছে। অন্যথায়, আমি অন্য কোনও হ্যাশ ফাংশন সুপারিশ করব যেখানে কোনও সংঘর্ষ এখনও জানা যায় নি।


2

ব্যক্তিগতভাবে আমি মনে করি লোকেরা অন্যান্য বস্তুর কাঁচা চেকসাম (আপনার পদ্ধতিটি বেছে নিন) ব্যবহার করে অনন্য সনাক্তকারী হিসাবে যখন তারা সত্যিই করতে চায় তখন অনন্য শনাক্তকারী থাকে have এই ব্যবহারের জন্য কোনও বস্তুর আঙুলের ছাপানো উদ্দেশ্য ছিল না এবং ইউইড বা অনুরূপ সততা ব্যবস্থা ব্যবহারের চেয়ে বেশি চিন্তাভাবনার প্রয়োজন হতে পারে।


0

MD5 নষ্ট হয়ে গেছে, আপনি তার পরিবর্তে SHA1 ব্যবহার করতে পারেন (বেশিরভাগ ভাষায় প্রয়োগ করা হয়েছে)


এটি একটি পুরোপুরি ভাল উত্তর। এমডি 5 ইউরোপে আইন এবং অ্যাকাউন্টিং ক্ষেত্রে মে 2018 থেকে ব্যবহারের ক্ষেত্রে অগ্রহণযোগ্য।
বার্ট সিন্নিমা

@ বার্টসিনেমা আপনি কি আমাকে সেই উত্সের দিকে ইঙ্গিত করতে পারবেন যা সংজ্ঞায়িত করে যে কোন হ্যাশ ফাংশন গ্রহণযোগ্য? ইত্যাদি, দয়া করে?
বেরেজভস্কিই

@ গ্রেগশ্মিট সম্ভবত কারণ ওপি প্রতি সেপিতে ক্রিপ্টোগ্রাফিক শক্তি সম্পর্কে চিন্তা করে না। আমি প্রশ্নটি বুঝতে পেরেছিলাম "আমি ইতিমধ্যে এমডি 5 অ সুরক্ষার প্রসঙ্গে ব্যবহার করেছি, কোড আপডেট করার জন্য আমার কি সময় ব্যয় করা দরকার?" জিনিস ধরনের. এবং এই প্রসঙ্গে উত্তরটি সম্ভবত ভুল ছিল এবং এসএইচএ 1 খুব দীর্ঘ সময়ের পরে ভেঙে গেছে।
বেরেজভস্কিই

0

সংক্ষিপ্ত (<কয়েক কে?) স্ট্রিংগুলি (বা ফাইলগুলি) হ্যাশ করার সময় কেউ দুটি এমডি 5 হ্যাশ কী তৈরি করতে পারে, একটি আসল স্ট্রিংয়ের জন্য এবং একটি দ্বিতীয় একটি সংক্ষিপ্ত অসামিত্রিক স্ট্রিং দিয়ে সংযুক্ত স্ট্রিংটির বিপরীত জন্য for উদাহরণ: এমডি 5 (বিপরীত (স্ট্রিং || '1010'))। অতিরিক্ত স্ট্রিং যুক্ত করা নিশ্চিত করে যে সিরিজের অভিন্ন বিটের সমন্বিত ফাইলগুলিও দুটি পৃথক কী তৈরি করে। দয়া করে বুঝতে পারেন যে এই স্কিমের অধীনে দুটি হ্যাশ কী অ-অভিন্ন পরিচয়যুক্ত স্ট্রিংগুলির জন্য অভিন্ন হওয়ার তাত্ত্বিক সম্ভাবনা রয়েছে, তবে সম্ভাবনা অত্যন্ত ছোট বলে মনে হয় - একক এমডি 5 সংঘর্ষের সম্ভাবনার স্কোয়ারের ক্রম এবং সময় সাশ্রয় ফাইলের সংখ্যা যখন বাড়ছে তখন তা বিবেচনাযোগ্য হতে পারে। দ্বিতীয় স্ট্রিং তৈরির জন্য আরও বিস্তৃত প্রকল্পগুলিও বিবেচনা করা যেতে পারে,

সংঘর্ষগুলি পরীক্ষা করার জন্য একটি ডিবিতে সমস্ত বিট_ভেক্টরগুলির জন্য এমডি 5 হ্যাশ কীগুলির স্বতন্ত্রতার জন্য এই পরীক্ষাটি চালানো যেতে পারে:

এমডি 5 (বিট_ভেক্টর)
দ্বারা বিট_ভেক্টর গ্রুপের সাথে ডিবি থেকে এমডি 5 (বিট_ভেক্টর), গণনা (*), বিট_ এবং (বিট_ভেক্টর) নির্বাচন করুন , বিট_ভেক্টর বিট_এন্ড (বিট_ভেক্টর) <> বিট_ভেক্টর


স্মার্ট ধারণা. যদি কোনও "আক্রমণকারী" একই এমডি 5 হ্যাশ দিয়ে একটি নকল ফাইল তৈরি করে, তবে তিনি আপনার "সল্টিং" না জেনে ততক্ষণ কাজ করে না এবং বিষয়বস্তুগুলি উল্টিয়ে দেওয়ার ফলে একটি ভিন্ন হ্যাশ তৈরি হয়। এর মতো 2 এমডি 5 কী ব্যবহার করার ফলে প্রতিকূলতা হ্রাস পাবে। যদি স্থানীয়ভাবে গণনা করার আগে লবণ ব্যবহার করে কোনও "আক্রমণ" প্রতিরোধ করা যথেষ্ট হয়।
ওল্ফ 5

0

আমি বিপুল পরিমাণে ফাইল ডেটা সংরক্ষণ করার সময় এমডি 5 কে সম্ভাবনার সূচক হিসাবে ভাবতে চাই।

যদি হ্যাশগুলি সমান হয় তবে আমি জানি বাইট দ্বারা ফাইলগুলি তুলনা করতে হবে, তবে এটি কেবল একটি মিথ্যা কারণে কয়েকবার ঘটতে পারে, অন্যথায় (হ্যাশগুলি সমান নয়) আমি নিশ্চিত হতে পারি আমরা দুটি ভিন্ন ফাইলের বিষয়ে কথা বলছি ।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.