আমার কোন ক্রিপ্টোগ্রাফিক হ্যাশ ফাংশনটি নির্বাচন করা উচিত?


137

.NET ফ্রেমওয়ার্কটি 6 টি বিভিন্ন হ্যাশিং অ্যালগোরিদম সহ জাহাজগুলি:

  • MD5: 16 বাইট (হ্যাশ থেকে 500MB: 1462 এমএস করার সময়)
  • SHA-1: 20 বাইট (1644 এমএস)
  • SHA256: 32 বাইট (5618 এমএস)
  • SHA384: 48 বাইট (3839 এমএস)
  • SHA512: 64 বাইট (3820 এমএস)
  • রিপেমড: 20 বাইট (7066 এমএস)

এই ফাংশনগুলির প্রতিটি পৃথকভাবে সম্পাদন করে; MD5 সবচেয়ে দ্রুত এবং RIPEMD সবচেয়ে ধীর হচ্ছে।

MD5 এর সুবিধা রয়েছে যে এটি বিল্ট-ইন গাইড প্রকারের সাথে ফিট করে; এবং এটি 3 ইউআইডি টাইপের ভিত্তিSHA-1 হ্যাশ হ'ল টাইপ 5 ইউআইইউডের ভিত্তি। যা তাদের সনাক্তকরণের জন্য ব্যবহার করা সত্যিই সহজ করে তোলে।

MD5 তবে সংঘর্ষের আক্রমণে ঝুঁকিপূর্ণ , SHA-1 এছাড়াও ঝুঁকিপূর্ণ তবে কম ডিগ্রি পর্যন্ত।

কোন অবস্থায় আমি কোন হ্যাশিং অ্যালগরিদম ব্যবহার করব?

নির্দিষ্ট প্রশ্নগুলির উত্তরগুলি দেখতে আমি সত্যিই আগ্রহী:

  • এমডি 5 বিশ্বাসযোগ্য নয়? সাধারণ পরিস্থিতিতে যখন আপনি কোনও দূষিত অভিপ্রায় ছাড়াই এমডি 5 অ্যালগরিদম ব্যবহার করেন এবং কোনও তৃতীয় পক্ষের কোনও দূষিত অভিপ্রায় না থাকে আপনি কি কোনও সংঘর্ষের প্রত্যাশা করবেন (অর্থাত্ দুটি সালিশী বাইট [] একই হ্যাশ উত্পাদন করে)

  • SHIP1 এর চেয়ে রিপেমড আর কত ভাল? (যদি এটি আরও ভাল হয়) এর 5 গুণ গণনা করতে ধীর হলেও হ্যাশের আকারটি SHA1 এর মতো।

  • ফাইল-নামগুলি (বা অন্যান্য সংক্ষিপ্ত স্ট্রিং) হ্যাশ করার সময় অ-দূষিত সংঘর্ষ পাওয়ার পক্ষে কোনটি? (উদাহরণস্বরূপ, একই এমডি 5 হ্যাশ সহ 2 টি এলোমেলো ফাইলের নাম) (MD5 / SHA1 / SHA2xx সহ) সাধারণভাবে দূষিত সংঘর্ষের জন্য কী প্রতিক্রিয়া রয়েছে?

এটি আমি ব্যবহার করা মানদণ্ড:

    static void TimeAction(string description, int iterations, Action func) {
        var watch = new Stopwatch();
        watch.Start();
        for (int i = 0; i < iterations; i++) {
            func();
        }
        watch.Stop();
        Console.Write(description);
        Console.WriteLine(" Time Elapsed {0} ms", watch.ElapsedMilliseconds);
    }

    static byte[] GetRandomBytes(int count) {
        var bytes = new byte[count];
        (new Random()).NextBytes(bytes);
        return bytes;
    }


    static void Main(string[] args) {

        var md5 = new MD5CryptoServiceProvider();
        var sha1 = new SHA1CryptoServiceProvider();
        var sha256 = new SHA256CryptoServiceProvider();
        var sha384 = new SHA384CryptoServiceProvider();
        var sha512 = new SHA512CryptoServiceProvider();
        var ripemd160 = new RIPEMD160Managed();

        var source = GetRandomBytes(1000 * 1024);

        var algorithms = new Dictionary<string,HashAlgorithm>();
        algorithms["md5"] = md5;
        algorithms["sha1"] = sha1;
        algorithms["sha256"] = sha256;
        algorithms["sha384"] = sha384;
        algorithms["sha512"] = sha512;
        algorithms["ripemd160"] = ripemd160;

        foreach (var pair in algorithms) {
            Console.WriteLine("Hash Length for {0} is {1}", 
                pair.Key, 
                pair.Value.ComputeHash(source).Length);
        }

        foreach (var pair in algorithms) {
            TimeAction(pair.Key + " calculation", 500, () =>
            {
                pair.Value.ComputeHash(source);
            });
        }

        Console.ReadKey();
    }

15
আপনি যে এমডি 5 উল্লেখ করেছেন তা জিইউইডি (16 বাইট) ফর্ম্যাটে ফিট করে একটি মৌলিক ভুল বোঝাবুঝির পরামর্শ দেয়। একটি হ্যাশ অনন্য হওয়ার গ্যারান্টিযুক্ত নয়, তবে এটি বিরল (এবং একটি ক্রিপ্টোগ্রাফিক অর্থে ব্যবহার করা হলে জাল করা শক্ত) এবং এটি একটি হ্যাশ যা থেকে একটি জিআইডি, ভাল, অনন্য তবে এর বিষয়বস্তুর সাথে সম্পর্কিত নয় এমন জিনিস থেকে প্রাপ্ত জিনিস এটি চিহ্নিত করে। এগুলি খুব আলাদা উদ্দেশ্যে ব্যবহৃত হয়।
ব্যারি ওয়ার্ক

1
এটি সম্পর্কিত নয়, এটি কেবল একটি কার্যকর বাস্তবায়ন নির্দিষ্ট তথ্য সংশোধন করুন। আমি বুঝতে পারি যে আপনি 16 বাইটের সাথে অনন্তকে ফিট করতে পারবেন না। আপনি যে কোনও হ্যাশিং অ্যালগরিদমের সাথে সংঘর্ষ পেতে পারেন
স্যাম সাফ্রন

5
তাত্ত্বিকভাবে একটি নির্দেশিকা হ'ল অনুশীলনমূলক, তাত্ত্বিকভাবে আপনি যদি গাইডগুলি তৈরি করতে থাকেন তবে শেষ পর্যন্ত আপনি নকল পাবেন।
স্যাম জাফরান

3
আপনার জিডিইউডে হ্যাশটি সত্যিই স্টাফ করা উচিত নয় , এমনকি এটি ফিটও হয়। সহজ উদাহরণ: একই ফাইলের দুটি অনুলির মধ্যে পৃথক জিইউআইডি থাকতে হবে, তবে একই হ্যাশ থাকতে হবে। কোনও ব্যক্তির নামের প্রথম 8 টি অক্ষর 16 বাইটে বেশ সুন্দরভাবে ফিট করে।
dbkk

2
@ ইউজার 2332868 এসএএএ -1 ভাঙার দুর্ঘটনাক্রমে সংঘর্ষ হওয়ার সম্ভাবনার কোনও প্রভাব নেই । যখন কোনও দূষিত অভিপ্রায় আপনার ব্যবহারের জন্য হুমকি হয়ে থাকে, তখন আমি মনে করি যে কোনও হ্যাশ ফাংশন অন্ধভাবে বাছাই করা ভুল, এবং আপনার নির্দিষ্ট ক্ষেত্রে আপনার ঝুঁকি / ব্যয় বিশ্লেষণ করতে সময় ব্যয় করা উচিত।
আন্দ্রে তারানটসভ

উত্তর:


138

ক্রিপ্টোগ্রাফিতে হ্যাশ ফাংশন তিনটি পৃথক ফাংশন সরবরাহ করে।

  1. সংঘর্ষ প্রতিরোধ : কারও পক্ষে দুটি বার্তা ( কোনও দুটি বার্তা) একই হ্যাশ খুঁজে পাওয়া কতটা কঠিন ।
  2. প্রাক প্রতিরোধের প্রতিরোধ : একটি হ্যাশ দেওয়া হয়েছে, অন্য একটি বার্তা একই হ্যাশ খুঁজে পাওয়া কতটা কঠিন? ওয়ান ওয়ে হ্যাশ ফাংশন হিসাবেও পরিচিত ।
  3. দ্বিতীয় প্রিমেজ প্রতিরোধের : একটি বার্তা দেওয়া হয়েছে, অন্য একটি বার্তা সন্ধান করুন যা একইভাবে রয়েছে।

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

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

SHA1 এর একটি ত্রুটি রয়েছে যা তার দৈর্ঘ্যের সুরক্ষিত হ্যাশ ফাংশনটির জন্য 2 ^ 80 ধাপের চেয়ে তাত্ত্বিকভাবে অনেক কম সংঘর্ষগুলি খুঁজে পেতে দেয় allows আক্রমণটি ক্রমাগত সংশোধন করা হচ্ছে এবং বর্তমানে 2 ^ 63 ধাপে করা যেতে পারে - কেবল সাম্প্রতিক কম্পিউটারের সাম্প্রতিক ক্ষেত্রের মধ্যে। এই কারণে এনআইএসটি এসএএএ 1 ব্যবহারের সময়সূচী করছে, উল্লেখ করে যে এসএএএচ 2 পরিবারকে 2010 এর পরে ব্যবহার করা উচিত।

SHA2 হ'ল হ্যাশ ফাংশনগুলির একটি নতুন পরিবার যা SHA1 এর পরে তৈরি। বর্তমানে SHA2 ফাংশনের বিরুদ্ধে কোনও আক্রমণাত্মক আক্রমণ নেই। SHA256, 384 এবং 512 এই সমস্ত SHA2 পরিবারের অংশ, কেবল বিভিন্ন কী দৈর্ঘ্য ব্যবহার করে।

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

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


1
আপনি এই স্তরের বিশদে যাওয়ার জন্য সত্যই প্রশংসা করি। এটি খুব সহায়ক।
joelc

1
কিছু অ্যাপ্লিকেশনের জন্য, এমনকি একটি অ-ক্রিপ্টো-গ্রেড হ্যাশ ফাংশন উপযুক্ত হতে পারে। ওপি কখনই উল্লেখ করে না যে এটি বিশেষত পাসওয়ার্ডের জন্য, বা চ্যালেঞ্জ-প্রতিক্রিয়া প্রমাণের জন্য, বা অ্যাক্সেস টোকেনের জন্য, বা কেবল কিছু গুছা স্ট্রিং / ফাইলের সূচীতে। অন্যদিকে পারফরম্যান্স ওপি'র জন্য উদ্বেগের বিষয় ...
সেবা আলেক্সেয়েভ

111

সমস্ত হ্যাশ ফাংশন "ভাঙ্গা"

পায়রার খোপ নীতি বলে হার্ড হিসাবে যে চেষ্টা হিসাবে আপনি আপনি 2 গর্ত বেশি 2 পায়রা পর্যাপ্ত জায়গা নেই পাবেন (যদি না আপনি পায়রা টুকরা টুকরা করা)। একইভাবে আপনি 2 ^ 128 + 1 সংখ্যা 2 ^ 128 স্লটে ফিট করতে পারবেন না। সমস্ত হ্যাশ ফাংশনগুলির ফলে সীমাবদ্ধ আকারের একটি হ্যাশ হয়, এর অর্থ হ'ল আপনি "সীমাবদ্ধ আকার" + 1 সিকোয়েন্সগুলির মাধ্যমে অনুসন্ধান করলে আপনি সর্বদা সংঘর্ষের সন্ধান করতে পারেন। এটি করা সম্ভব নয়। এমডি 5 এর জন্য নয় স্কিনের জন্য নয় ।

MD5 / SHA1 / Sha2xx এর কোনও সম্ভাবনার সংঘর্ষ নেই

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

কিন্তু ... এমডি 5 নষ্ট হয়ে গেছে

কখনও কখনও সত্য যে এটি ভাঙ্গা কোন ব্যাপার না

এটি যেহেতু দাঁড়িয়ে আছে তেমন কোনও এমডি 5 তে কোনও পূর্ব-চিত্র বা দ্বিতীয় প্রাক-চিত্র আক্রমণ নেই

সুতরাং MD5 সম্পর্কে এতটা কী ভাঙা, আপনি জিজ্ঞাসা করতে পারেন? তৃতীয় পক্ষের পক্ষে 2 টি বার্তা উত্পন্ন করা সম্ভব, যার মধ্যে একটি হল ইভিআইএল এবং এর মধ্যে অন্যটি হ'ল দুটি হ্যাশ একই মানের the ( সংঘর্ষের আক্রমণ )

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

NET- এ আমার কী হ্যাশ ফাংশন ব্যবহার করা উচিত?

  • আপনার যদি গতি / আকার প্রয়োজন হয় এবং জন্মদিনের আক্রমণ বা প্রাক-চিত্রের আক্রমণগুলির যত্ন না করে তবে MD5 ব্যবহার করুন।

আমার পরে এটি পুনরাবৃত্তি করুন, এমডি 5 সংঘর্ষের কোনও সুযোগ নেই , দূষিত সংঘর্ষগুলি সাবধানতার সাথে ইঞ্জিনিয়ার করা যেতে পারে। যদিও এমডি 5 তে আজ অবধি কোনও পূর্ব-চিত্র আক্রমণ নেই তবে সুরক্ষা বিশেষজ্ঞদের থেকে লাইনটি হ'ল যেখানে প্রাক-চিত্রের আক্রমণগুলির বিরুদ্ধে রক্ষা করার প্রয়োজন সেখানে MD5 ব্যবহার করা উচিত নয়। একই SHA1 জন্য যায়

মনে রাখবেন, সমস্ত অ্যালগরিদমের প্রাক চিত্র বা সংঘর্ষের আক্রমণ থেকে রক্ষা করার দরকার নেই। আপনার এইচডি তে সদৃশ ফাইলগুলির জন্য প্রথম পাসের অনুসন্ধানের তুচ্ছ ঘটনাটি ধরুন।

  • আপনি যদি ক্রিপ্টোগ্রাফিকভাবে সুরক্ষিত হ্যাশ ফাংশন চান তবে SHA2XX ভিত্তিক ফাংশন ব্যবহার করুন।

কেউ কখনও কোনও SHA512 সংঘর্ষের সন্ধান পায় নি। কখনোই না। তারা সত্যিই খুব চেষ্টা করেছে। এই বিষয়টির জন্য কেউ কখনও কোনও SHA256 বা 384 এর সংঘর্ষ খুঁজে পায় নি। ।

  • কোনও ইন্টারঅ্যাপেরিবিলিটির দৃশ্যের জন্য SHA1 বা RIPEMD ব্যবহার করবেন না।

শিপস এবং এমডি 5 যে পরিমাণ পরীক্ষা-নিরীক্ষা পেয়েছে তা রিপমড পায় নি। SHA1 এবং RIPEMD উভয়ই জন্মদিনের আক্রমণে ঝুঁকিপূর্ণ। এগুলি .NET- এ MD5 এর চেয়ে দুজনেই ধীর এবং বিশ্রী 20 বাইট আকারে আসে। এই ফাংশনগুলি ব্যবহার করা অর্থহীন, সেগুলি সম্পর্কে ভুলে যান।

SHA1 সংঘর্ষের আক্রমণগুলি 2 ^ 52 এ নেমে গেছে, SHA1 সংঘর্ষগুলি বন্যের মধ্যে না আসা পর্যন্ত এটি খুব বেশি দীর্ঘ হবে না।

বিভিন্ন হ্যাশ ফাংশন সম্পর্কে আপ টু ডেট তথ্যের জন্য হ্যাশ ফাংশন চিড়িয়াখানাটি একবার দেখুন

তবে অপেক্ষা করুন, আরো আছে

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

সমস্যাটি হ'ল, কোনও আক্রমণকারী যদি ডাটাবেসের একটি ডাম্প পান, তবে তিনি কার্যকরভাবে ব্রুট-ফোর্স ব্যবহার করে পাসওয়ার্ডগুলি অনুমান করতে পারেন। তিনি যে সকল সংমিশ্রণটি চেষ্টা করেন কেবল মিলিসেকেন্ডের একটি ভগ্নাংশ গ্রহণ করে এবং তিনি কয়েক সেকেন্ডে কয়েক হাজার পাসওয়ার্ড ব্যবহার করে দেখতে পারেন।

এই ইস্যুটি সম্পর্কে কাজ করার জন্য, bcrypt অ্যালগরিদম ব্যবহার করা যেতে পারে, এটি ধীর হতে ডিজাইন করা হয়েছে যাতে বিক্রিপ্ট ব্যবহার করে কোনও সিস্টেমে আক্রমণ করা হলে আক্রমণকারীকে ভারীভাবে ধীর করা হবে। সম্প্রতি স্ক্রিপ্ট কিছু শিরোনাম তৈরি করেছে এবং কেউ কেউ বিক্রিপ্টের চেয়ে বেশি কার্যকর বলে বিবেচিত তবে আমি। নেট বাস্তবায়ন সম্পর্কে জানি না।


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

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

পাসওয়ার্ডগুলির জন্য আপনি যেটি হ্যাশ ব্যবহার করেছেন তা হ্যাশ হওয়ার চেয়ে অনেক কম। যদি আপনার লবণ জানা থাকে তবে আপনার ডাটাবেসটি তত্ক্ষণাত কোনও অভিধান আক্রমণে ঝুঁকিপূর্ণ; যদি আপনার লবণ পদ্ধতিগত হয় এবং আপনার ফাইল সিস্টেমটি আপোস করা হয় তবে আপনি (আবার) দুর্বল হন; যদি আপনার লবণ বাদ দেওয়া হয় তবে আপনি আবার আপস করেন। সমস্যাটি কী তা হউক না কেন, নিরাপত্তাটি হ'ল। শংসাপত্রগুলি, আমি সম্বোধন করব না কারণ আমি তাদের সাথে একটি প্রোগ্রামার হিসাবে কাজ করি নি (আই, তৈরি, বোঝার, ইত্যাদি)।
রবার্ট কে

ভাঙা শব্দটির হ্যাশিংয়ের প্রসঙ্গে একটি নির্দিষ্ট অর্থ রয়েছে এবং এটি এই উত্তরটির উপরে জোর দেয় এমন অর্থ নয়। এই সমস্ত উত্তর যা করবে তা বিভ্রান্তির কারণ।
জোয়েল ম্যাকবেথ

1
এটি একটি দুর্দান্ত উত্তর কারণ এটি ব্যবহারিকতার উপর দৃষ্টি নিবদ্ধ করে। সুরক্ষা ব্যতীত অন্য জিনিসগুলির জন্য হ্যাশগুলি ব্যবহার করা হয় (যেমন অ সংবেদনশীল ডেটার জন্য ক্যাশে দেখার কী উত্পন্ন করা বা সিরিয়ালযুক্ত বস্তু পরিবর্তিত হয়েছে কিনা তা নির্ধারণ করে)। লক্ষ্যবস্তু আক্রমণের সম্ভাবনা কার্যত শূন্য (কখনই কখনই বলে না) এবং আক্রমণটি সফল হলেও এটির কোনও বৈধ প্রভাব পড়বে না। ব্যবহারিক (তাত্ত্বিক পরিবর্তে) প্রভাব উপর দৃষ্টি নিবদ্ধ করে দুর্দান্ত কাজ।
ডিভিকে

35

হালনাগাদ:

সময় পরিবর্তিত হয়েছে, আমরা একটি SHA3 বিজয়ী আছে। আমি SHA3 ​​প্রতিযোগিতার বিজয়ী কেকাক (ওরফে SHA3 ) ব্যবহার করার পরামর্শ দেব ।

আসল উত্তর:

সবচেয়ে দুর্বল থেকে শক্তিশালী করার জন্য আমি বলব:

  1. রিপেমড ব্রাউন, এই পিডিএফ-তে দেখা যায় এমন কখনও ব্যবহার করা উচিত নয়
  2. MD-5 ব্রোকেন , কখনও ব্যবহার করা উচিত নয়, ল্যাপটপের সাহায্যে 2 মিনিটে ভাঙা যায়
  3. SHA-1 ব্রোকেন , কখনও ব্যবহার করা উচিত নয়, মূল ভাঙা হয়, আক্রমণগুলি সপ্তাহের মধ্যে আরও ভাল হচ্ছে
  4. SHA-2 সপ্তাহ, সম্ভবত আগামী কয়েক বছরে ভেঙে যাবে। কয়েকটি দুর্বলতা পাওয়া গেছে। মনে রাখবেন যে সাধারণত উচ্চতর কী আকার, হ্যাশ ফাংশনটি শক্তভাবে ভাঙ্গা। মূল আকার = শক্তি সর্বদা সত্য নয়, তবে বেশিরভাগ ক্ষেত্রেই এটি সত্য। সুতরাং SHA-256 সম্ভবত SHA-512 এর চেয়ে দুর্বল।
  5. স্কেইন নন উইকনেসেস, SHA-3 এর প্রার্থী । এটি মোটামুটি নতুন এবং এইভাবে অনির্ধারিত। এটি একগুচ্ছ ভাষার প্রয়োগ করা হয়েছে।
  6. এমডি 6 নন উইন্ডেনস, এসএইচএ -3 এর অন্য একজন প্রার্থী। সম্ভবত স্কিয়েনের চেয়ে শক্তিশালী তবে একক কোর মেশিনে ধীর। স্কিয়েনের মতো এটি অনির্ধারিত। কিছু সুরক্ষার বিবেচ্য বিকাশকারীগণ মিশন সমালোচনামূলক ভূমিকায় এটি ব্যবহার করছে ।

ব্যক্তিগতভাবে আমি এমডি 6 ব্যবহার করতাম, কারণ এটি কখনই অত্যধিক ভ্রান্ত হতে পারে না। গতি যদি সত্যিকারের উদ্বেগ হয় তবে আমি স্কেইন বা SHA-256 এ দেখব।


5
আমি স্কেইন এবং এমডি 6 তালিকায় রাখব না; একটি কারণ আছে যে ২০১৩ সালের শেষ নাগাদ SHA-3 প্রতিযোগিতা শেষ হবে না a একটি হ্যাশ ফাংশন আসলে সুরক্ষিত হওয়ার সম্ভাবনা রয়েছে বলে নিশ্চিত হতে অনেক সময় এবং অনেক চোখ লাগে, এবং এই ফাংশনগুলির মধ্যে একটিও নয় এখনও প্রায় এটির জন্য যথেষ্ট দীর্ঘ হয়েছে।
এরিক বারনেট

আমি আপনার অনুভূতির সাথে একমত, তবে আমি মনে করি সম্প্রদায়টি একটি অদ্ভুত অবস্থানে রয়েছে। ব্যবহৃত সমস্ত হ্যাশ ফাংশনগুলি বিপজ্জনকভাবে ভেঙে যাওয়ার কাছাকাছি অবস্থিত (সম্ভবত, সম্ভবত, SHA2 256-512 নয়) এবং তারপরেও প্রতিস্থাপনটি চয়ন করতে আমাদের 2012 পর্যন্ত অপেক্ষা করতে হবে। আপনার বিষটি চয়ন করুন: দুর্বল / ভাঙ্গা বা অরক্ষিত (বেশিরভাগ এনআইএসটি প্রার্থী 6 মাসের বেশি সময় ধরে প্রকাশ্যে আসেনি)? কঠিন পছন্দ.
ইথান হেইলম্যান

5
রিপেমডটি ভাঙ্গা, তবে রিপেমড -128 / 160/256 পৃথক, এবং ভাঙ্গা নয়।
বুবুস

.NET এর জন্য স্কেইনের কোনও পারফরম্যান্ট বাস্তবায়ন সম্পর্কে আমি অবগত নই। আমি স্কেইনফিশ এবং এনস্কিন জুড়ে এসেছি এবং উভয়ই খুব ধীর ছিল।
কোকোয়লা

1
আসল স্ট্যান্ডার্ড না হওয়া পর্যন্ত আমি SHA-3 ব্যবহার করে অপেক্ষা করব, যদি আপনি আসলে কোনও মান অনুসরণ করতে চান তবে। অ্যালগরিদম নিজেই অনেকগুলি বিকল্প রয়েছে।
পাওলো ইবারম্যান

3

MD5 এর প্রতিরক্ষা ক্ষেত্রে, স্বেচ্ছাসেবক MD5 হ্যাশ দিয়ে কোনও ফাইল উত্পাদন করার কোনও উপায় নেই। কাজের সংঘর্ষের জন্য মূল লেখককে অবশ্যই আগে থেকেই পরিকল্পনা করতে হবে। সুতরাং যদি প্রাপক প্রেরককে বিশ্বাস করে, MD5 ঠিক আছে। স্বাক্ষরকারী দূষিত হলে এমডি 5 টি নষ্ট হয়ে গেছে, তবে এটি মধ্য-মধ্যের আক্রমণগুলির পক্ষে ঝুঁকির মতো বলে জানা যায় না।


1
যদিও আমি কোনওভাবেই এই ক্ষেত্রে বিশেষজ্ঞ নই, আজকাল ব্রুট ফোর্সের মাধ্যমে স্বেচ্ছাসেবক MD5 হ্যাশগুলি গণনা করা কি খুব কাছাকাছি নয়?
মাফু

@ মাফু: এখানে দেরিতে প্রতিক্রিয়া থাকলেও প্রাণবন্ত শক্তির মাধ্যমে যে কোনও হ্যাশ গণনা করা সম্ভব। এটি সম্ভবত সত্যিই দীর্ঘ সময় নিতে পারে।
ওয়ার্টি

@ ইটজওয়ার্টি আমি বিশেষত প্রয়োজনীয় সময়টির কথা উল্লেখ করছিলাম - যেহেতু এমডি 5 খুব ছোট, আমি বুঝতে পেরেছিলাম যে এটির উপর কেবল যুক্তিসঙ্গত উত্স ছোঁড়া সম্ভব (E3, বা একটি সস্তা কম্পিউটার গ্রিড কয়েকটি গ্রাফিক্স কার্ড সহ কয়েকটি মেশিন) এই লাইন বরাবর) এবং কয়েক দিনের মধ্যে একটি স্বেচ্ছাসেবক MD5 হ্যাশ গণনা করতে সক্ষম হবেন।
মাফু

@ মাফু একটি প্রাক-চিত্র আক্রমণে 128 বিট হ্যাশের জন্য 2 ^ 127 হ্যাশ আমন্ত্রণের জন্য খরচ হয়। এটি সম্ভবপর থেকে দূরে। 2 ^ 80 টি আমন্ত্রণগুলি व्यवहार्य তবে ইতিমধ্যে খুব ব্যয়বহুল।
কোডসইনচওস

2

আপনি কোনটি ব্যবহার করেন তা নির্ভর করে আপনি এটি কী ব্যবহার করছেন। আপনি যদি কেবল এটি নিশ্চিত করতে চান যে ফাইলগুলি ট্রানজিটে দূষিত না হয় এবং সুরক্ষার বিষয়ে উদ্বিগ্ন না হন, দ্রুত এবং ছোট যান। যদি আপনার বহু মিলিয়ন ডলারের ফেডারাল বেইলআউট চুক্তির জন্য ডিজিটাল স্বাক্ষর প্রয়োজন এবং তা নিশ্চিত করা দরকার যে এগুলি জাল নয়, তবে ধোঁকা দেওয়ার জন্য এবং ধীর গতিতে যান।


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

এমডি 5 লক্ষ লক্ষ লোকের জন্য পনেরো বছর ধরে ভাল কাজ করে দেখে আমি সন্দেহ করি যে হ্যাশ সুরক্ষা গুরুত্বপূর্ণ না হলে আপনার পক্ষে এটি ঠিক আছে।
এমকিপি

2
আপনার সিস্টেমের আসল সুরক্ষা / অখণ্ডতা নির্ভর করে কেবলমাত্র সাম্বো এমডি 5 প্রায় কোনও ক্ষেত্রেই ঠিক কাজ করে সংঘর্ষ প্রতিরোধের করে করে।
রেক্স এম

2

আমি চিম করতে চাই (এমডি 5 ছিঁড়ে যাওয়ার আগে) আমি এমডি 5 প্রচুর ক্রাইপ্টোর জন্য তার অপ্রতিরোধ্য ভাঙ্গা সত্ত্বেও ব্যাপকভাবে ব্যবহার করি না।

যতক্ষণ না আপনি সংঘর্ষের হাত থেকে রক্ষা করার জন্য যত্নশীল হন (আপনি এখনও এইচএমএকে এমডি 5 ব্যবহার করা নিরাপদ) এবং আপনি গতিটি চান (কখনও কখনও আপনি একটি ধীর হ্যাশ চান) তবে আপনি এখনও আত্মবিশ্বাসের সাথে এমডি 5 ব্যবহার করতে পারবেন।


@ মাইক আমি এই বিষয়ে আপনার সাথেই ছিলাম, এই প্রশ্নটির সাথে আমি যা খনন করছিলাম এটি হ'ল দুর্বল হ্যাশ ফাংশন সম্পর্কে এমন কিছু যা মূলত ভাঙ্গা ছিল যে সেগুলি কখনও ব্যবহার করা উচিত নয়।
স্যাম জাফরন

এর বাইরেও, যদি ডেটা ডেটা বা প্রয়োজনীয় সুরক্ষার ক্র্যাক পিরিয়ডের তুলনায় একটি জীবনকাল ছোট হয় (এই দিন কয়েক মিনিট iirc) এমডি 5 একেবারে ঠিক আছে। পরিস্থিতিগতভাবে কার্যকর তবে এখনও দরকারী এটি মূল বিষয়।
অনাকাটা

@ নানকাতা - মনে রাখবেন যে আপনাকে এই পরিস্থিতিতে ব্যবহারযোগ্য হওয়ার জন্য একাধিক বার্তা জুড়ে কীগুলি পুনরায় ব্যবহার করা এড়াতে হবে।
স্টিভ ওয়েস্টব্রুক 14

2

BLAKE2 এ একবার দেখে নেওয়া ভাল ধারণা হবে algorythm।

যেমনটি বর্ণিত হয়েছে, এটি MD5 এর চেয়ে দ্রুত এবং কমপক্ষে SHA-3 এর মতো সুরক্ষিত। এটি উইনআর সহ বেশ কয়েকটি সফ্টওয়্যার অ্যাপ্লিকেশন দ্বারা প্রয়োগ করা হয় ।


অনেকগুলি বাস্তবায়নের মধ্যে হার্ডওয়্যার সমর্থন না থাকলে এটি দ্রুততর হতে পারে যা SHA-256টিকে দ্রুত করে তোলে।
zaph

আমি রাজী. 2019 হিসাবে, ব্লেক 2 বি এখন অবধি প্রকাশিত সেরা সাধারণ-উদ্দেশ্যে হ্যাশ। অন্যান্য সমস্ত বিকল্পের তুলনায় উল্লেখযোগ্যভাবে দ্রুত, এবং কোনও কম সুরক্ষিত (কোনও অর্থবহ উপায়ে নয়), ওহ, এবং কেবলমাত্র র‌্যামের 336 বাইট (ব্লেক 2 এর জন্য 168) চালানো যেতে পারে, এবং এটি ছোট-এন্ডিয়ান সিপিইউগুলির জন্য উপযুক্ত, যা এটি আজকের সিস্টেমে প্রভাবশালী এন্ডিয়ান।
hanshenrik

0

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


1
হ্যাশ ফাংশনগুলি সাধারণত কীগুলি ব্যবহার করে না
ইথান হেলম্যান

0

আপনার জন্য আমার পরামর্শ এখানে:

  1. আপনি যদি আক্রমণগুলির প্রত্যাশা করেন তবে সম্ভবত MD5 ভুলে যাওয়া উচিত। তাদের জন্য অনলাইনে অনেক রেইনবো টেবিল রয়েছে এবং আরআইএএর মতো কর্পোরেশনগুলি সমতুল্য হ্যাশগুলির সাথে সিকোয়েন্স তৈরি করতে সক্ষম বলে জানা গেছে।
  2. পারলে লবণ ব্যবহার করুন । বার্তায় বার্তার দৈর্ঘ্য অন্তর্ভুক্ত করা একটি দরকারী হ্যাশের সংঘর্ষ তৈরি করা খুব কঠিন করে তুলতে পারে।
  3. থাম্বের একটি সাধারণ নিয়ম হিসাবে, আরও বিটগুলির অর্থ কম সংঘর্ষ (কবুতর নীতি দ্বারা) এবং ধীর এবং সম্ভবত আরও সুরক্ষিত (যদি আপনি কোনও গণিত প্রতিভা না হন তবে দুর্বলতাগুলি খুঁজে পেতে পারেন)।

একটি ডেস্কটপ ইন্টেল পি 4 কম্পিউটারের সাথে 31 সেকেন্ডের মধ্যে এমডি 5 সংঘর্ষ তৈরি করতে একটি অ্যালগরিদম বিশদ বিশদ সম্পর্কিত একটি কাগজের জন্য এখানে দেখুন।

http://eprint.iacr.org/2006/105


এই মন্তব্যটি খুব পুরানো এবং এটি বরং সমাহিত হয়েছে বলে মনে হচ্ছে, তবে এই বিট - আরআইএএ সমমানের হ্যাশগুলির সাথে সিকোয়েন্সগুলি তৈরি করতে সক্ষম বলে পরিচিত হয়েছে - আমার দিকে ঝাঁপিয়ে পড়েছিল, এবং আমি এর জন্য প্রসঙ্গটি কী ছিল তা আমি খুব কৌতূহলী। বিশেষত, 8 বছর আগে ব্রুডফোর্সিং MD5 2017 সালের তুলনায় কিছুটা তুচ্ছ ছিল, সুতরাং তাদের অবশ্যই খুব ভাল কারণ থাকতে হবে।
i336_
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.