এমডি 5 / এসএএএ 1 এর চেয়ে সিআরসি কখন ব্যবহার করা বেশি উপযুক্ত?


130

এমডি 5 বা এসএএএ 1 এর মতো আরও আধুনিক হ্যাশিং ফাংশনগুলির তুলনায় ত্রুটি সনাক্তকরণের জন্য সিআরসি ব্যবহার করা কখন উপযুক্ত? এম্বেড করা হার্ডওয়্যারটিতে প্রাক্তনটির প্রয়োগ কার্যকর করা সহজ?

উত্তর:


114

সিআরসি ঘটতে পারে এমন ডেটাতে এলোমেলো ত্রুটি সনাক্ত করার জন্য সূক্ষ্ম কাজ করে, উদাহরণস্বরূপ, নেটওয়ার্ক হস্তক্ষেপ, লাইন গোলমাল, বিকৃতি ইত্যাদি from

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

এবং হ্যাঁ, এম্বেডেড হার্ডওয়্যারগুলিতে সিআরসি কার্যকর করা অনেক সহজ, আপনি এমনকি আইসি-তে এর জন্য বিভিন্ন প্যাকেজযুক্ত সমাধান পেতে পারেন।


1
@ গিলি: আপনি সর্বদা একক ফলস্বরূপ শব্দটি পেতে কেবলমাত্র ডওয়ার্ডগুলিকে একসাথে জোর করতে পারেন।
অন্ধ

2
@ ডাস্টিন: আপনি আপনার উত্তরে পুরোপুরি সঠিক, তবে সম্ভবত "সিআরসি গণনামূলকভাবে অনেক বেশি দক্ষ" "সিআরসি গণনামূলকভাবে আরও সহজ" পরিবর্তন করার বিষয়টি বিবেচনা করুন? MD5 / SHA-1 অ্যালগরিদমগুলি জটিল, তবে সত্যই 'অদক্ষ' IMO নয়।
কক্সি

1
@ কোক্সিমলা আপনি সঠিক, আমার যে শব্দটি ব্যবহার করা উচিত ছিল তা "জটিল" "অদক্ষ" নয়। ধন্যবাদ!
সংজ্ঞায়িত করে

27
যে কোনও দীর্ঘ হ্যাশ 32 বিট কমাতে, প্রথম 32 টি বিট নিন।
অরিপ

1
সুরক্ষা যদি আপনার লক্ষ্য হয় তবে আপনার কখনই ব্যবহার করা উচিত নয় MD5, SHA-1এড়ানোও উচিত, এর কিছু বৈকল্পিক SHA-2দেওয়া উচিত।
পিটার

33

সিআরসি ডেটাগুলিতে অনিচ্ছাকৃত পরিবর্তনের বিরুদ্ধে নকশাকৃত। এটি হ'ল অনিচ্ছাকৃত ত্রুটিগুলি সনাক্তকরণের পক্ষে ভাল তবে এটি কোনও ডেটা দূষিতভাবে পরিচালনা করা হয়নি তা নিশ্চিত করার উপায় হিসাবে অকেজো হবে।

আরো দেখুন এই


এই উত্তরের লিঙ্কটির সবচেয়ে গুরুত্বপূর্ণ অংশ: "(...) এমনকি একটি 2048-বিট সিআরসি 128-বিট এমডি 5 এর চেয়ে ক্রিপ্টোগ্রাফিকভাবে অনেক কম সুরক্ষিত হবে"
২৩.23

3
উত্তরটি এখনও সঠিক হলেও, আজকাল MD5 এবং SHA1 একই স্তরের সুরক্ষায় রয়েছে। অন্য কথায়, অনিচ্ছাকৃত ত্রুটিগুলি সনাক্ত করার জন্য কেবল ভাল।
পিসকোভর 9

21

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

হ্যাশগুলির জন্য সিআরসি সম্পর্কিত প্রাসঙ্গিক উপসংহার:

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

হালনাগাদ

সাইটটি ডাউন আছে বলে মনে হচ্ছে। ইন্টারনেট সংরক্ষণাগার একটি কপি আছে যদিও।


লিঙ্কটি নষ্ট হয়ে গেছে। আপনি নিজে ব্যাখ্যা লিখতে পারেন? উত্তর না হলে অকেজো।
রোড

ঠিক আছে, আমি আমার উত্তরে উপসংহারটি অন্তর্ভুক্ত করব।
আন্দ্রে লুস

অদ্ভুত, এখানে মাপদণ্ড অনুসারে , সিআরসি আসলে গতি এবং সংঘর্ষের সংখ্যার দিক থেকে বেশ সুন্দরভাবে কাজ করে।
ostrokach

সত্যিই খুব আকর্ষণীয়। আমি যে স্টাডির সাথে আবার লিঙ্ক করেছি সেদিকে নজর রাখতে হয়েছিল, তবে আমার যদি ধারণা করতে হয় তবে এটি অবশ্যই বিভিন্ন পরীক্ষার বাস্তবায়নের কারণে হবে। যদি আমার কোনও সিদ্ধান্ত নিতে হয়, আমি অধ্যয়ন থেকে পরামর্শের জন্য যাব, এটি আরও বৈজ্ঞানিকরূপে সুস্পষ্ট বলে মনে হচ্ছে।
Andre Luus

আমার মিলিয়ন মিলিয়ন ইউআরএল হ্যাশ করার অভিজ্ঞতাতে, সিআরসি 8৪ টি 8 বার সংঘর্ষিত হয়েছিল এবং এমডি 5 সংঘর্ষে .. স্পষ্টতই এমডি 5 ভাল ছিল, তবে সিআরসি 64 একটি দুর্দান্ত এবং আরও দ্রুত এবং সরল হ্যাশ ছিল।
জে ডিমিও

18

আমি এই পিএইচপি কোডটির প্রতিটি লাইন 1.000.000 লুপে চালিয়েছি। ফলাফল মন্তব্য (#) হয়।

hash('crc32', 'The quick brown fox jumped over the lazy dog.');#  750ms   8 chars
hash('crc32b','The quick brown fox jumped over the lazy dog.');#  700ms   8 chars
hash('md5',   'The quick brown fox jumped over the lazy dog.');#  770ms  32 chars
hash('sha1',  'The quick brown fox jumped over the lazy dog.');#  880ms  40 chars
hash('sha256','The quick brown fox jumped over the lazy dog.');# 1490ms  64 chars
hash('sha384','The quick brown fox jumped over the lazy dog.');# 1830ms  96 chars
hash('sha512','The quick brown fox jumped over the lazy dog.');# 1870ms 128 chars

আমার উপসংহার:

  • আপনার যখন http://en.wikedia.org/wiki/Cyclic_redundancy_check দরকার হবে তখন "crc32b" ব্যবহার করুন এবং আপনি সুরক্ষা সম্পর্কে কোনও চিন্তা করবেন না।
  • আপনার যখন সুরক্ষা স্তর যুক্ত করার দরকার হয় তখন "sha256" (বা উচ্চতর) ব্যবহার করুন।

  • "এমডি 5" বা "শ 1" ব্যবহার করবেন না কারণ তাদের রয়েছে:

    1. আপনি সুরক্ষা সম্পর্কে যত্নশীল যখন কিছু সুরক্ষা সমস্যা
    2. আপনার হ'ল সিআরসি হ'ল লম্বা হ্যাশ স্ট্রিং এবং "crc32b" এর চেয়ে ধীর হয়

আপনার অর্থ বিট নয়, চরগুলি নয়
রচনা

আসলে তা না. প্রতিধ্বনি হ্যাশ ('crc32', 'দ্রুত ব্রাউন শেয়ালটি অলস কুকুরটির উপরে ঝাঁপিয়ে পড়ে' '); "413a86af" প্রতিধ্বনিত হয়, এটি 8 টি অক্ষরের দীর্ঘ স্ট্রিং। বিটিডব্লিউ, এটি এইচএক্স ফর্ম্যাটে সঞ্চিত 32 বিট নম্বর। উদাহরণস্বরূপ, "sha256" এর 256 ব্রেট হ্যাশ রয়েছে, এটি আবার এইচএক্স হিসাবে সঞ্চিত রয়েছে, যা 64 টি অক্ষরের দীর্ঘ স্ট্রিং দেয়।
মার্টিন

45
এই ফলাফলগুলি খুব প্রতারণামূলক। যখন এই হ্যাশিং অ্যালগরিদমগুলি একটি বড় ডেটা সেটে প্রয়োগ করা হয় (এর পরিবর্তে যুদ্ধ এবং শান্তি"The quick brown fox jumped over the lazy dog." ) আপনি দেখতে পাবেন যে এমডি 5 এর চেয়ে সিআরসি কত দ্রুত।
ubiquibacon

1
একটি মধ্যবর্তী কেস আছে (লাইব্রেরিতে নকল চেকিং) যেখানে MD5 / Sha1 সঠিক সমাধান: তাদের যে কোনও বিরোধী সেখানে সাবধানতার সাথে সম্ভাব্য সম্ভাবনা হ্যাশ সংঘর্ষটি তৈরি করার ক্ষেত্রে হ্যান্ডেল করার দরকার নেই, তবে তাদের দুর্ঘটনাক্রমে সংঘর্ষগুলি পরিচালনা করতে হবে need সুতরাং: বিট ত্রুটি এবং দুর্নীতি সনাক্তকরণ: সিআরসি 32 লাইব্রেরিতে সংঘর্ষগুলি সনাক্ত করছে: এমডি 5 / এসএএএ 1 অ্যাডভারসারিয়াল অ্যাপ্লিকেশন: Sha256 এবং তারপরের। অবশ্যই, যদি আপনার কয়েক বিলিয়ন এন্ট্রি সহ একটি গ্রন্থাগার থাকে তবে আপনার সম্ভবত আপনার হ্যাশ বিটগুলিও বাড়ানো দরকার।
দেউই মরগান 23

পিএইচপি? একটি এআরএম প্ল্যাটফর্মে, এমবেডেড কোডে, 16 এমএজেডজ 46 সিটি সিআরসি 32 বাইট, সম্ভবত 12 মাইক্রোসেকেন্ডস। এটিতে হার্ডওয়্যার সহায়তা রয়েছে। এমনকি হার্ডওয়্যার সহায়তায় এইএস কয়েকশো গুণ ধীর হবে। অ-তালিকাবদ্ধ অনুসন্ধান সারণী সিআরসি এখনও প্রায় 50 টি মাইক্রোসেকেন্ডে আসা উচিত।
ইলগিটানো

11

বাস্তবায়নে সিআরসি তথ্যের জন্য, গতি ও নির্ভরযোগ্যতা দেখতে সিআরসি ত্রুটি সনাক্তকরণ আলগোরিদিম একটি যন্ত্রণাহীন নির্দেশিকা । সিআরসি-তে এটি রয়েছে।

যদি না কেউ আপনার ডেটাটিকে দূষিতভাবে চেষ্টা ও পরিবর্তন করতে চলেছে এবং পরিবর্তনটি লুকিয়ে রাখে তবে সিআরসিই যথেষ্ট। কেবলমাত্র একটি "গুড" (মানক) বহুভুজ ব্যবহার করুন।


9

এটি আপনার প্রয়োজনীয়তা এবং প্রত্যাশার উপর নির্ভর করে।

এই হ্যাশ ফাংশন অ্যালগরিদমের মধ্যে দ্রুত সংক্ষিপ্ত পার্থক্য রয়েছে :

সিআরসি (সিআরসি -8 / 16/32/64)

  • হয় না একটি ক্রিপ্টোগ্রাফিক হ্যাশ অ্যালগরিদম (এটা আবর্তনশীল অতিরেক চেক উপর ভিত্তি করে একটি রৈখিক ফাংশন ব্যবহার করে করা হয়েছে)
  • 9, 17, 33 বা 65 বিট উত্পাদন করতে পারে
  • কোনও ক্রিপ্টোগ্রাফিক গ্যারান্টি না দেওয়ার কারণে ক্রিপ্টোগ্রাফিক উদ্দেশ্যে ব্যবহার করার উদ্দেশ্যে নয়,
  • ডিজিটাল স্বাক্ষরগুলিতে ব্যবহারের জন্য অনুপযুক্ত, কারণ এটি 2006 এ সহজেই ফেরানো যায় ,
  • এনক্রিপশন উদ্দেশ্যে ব্যবহার করা উচিত নয়,
  • বিভিন্ন স্ট্রিং সংঘর্ষ তৈরি করতে পারে,
  • 1961 সালে উদ্ভাবিত এবং ইথারনেট এবং অন্যান্য অনেক স্ট্যান্ডার্ডে ব্যবহৃত হয়,

MD5

  • একটি ক্রিপ্টোগ্রাফিক হ্যাশ অ্যালগরিদম,
  • একটি 128-বিট (16-বাইট) হ্যাশ মান (32 অঙ্কের হেক্সাডেসিমাল সংখ্যা) উত্পাদন করছে
  • এটি একটি ক্রিপ্টোগ্রাফিক হ্যাশ, তবে আপনি যদি সুরক্ষা নিয়ে উদ্বেগ প্রকাশ করেন তবে তা অবহিত হিসাবে বিবেচিত হয়,
  • এমন এমডি 5 হ্যাশ মান রয়েছে এমন স্ট্রিং রয়েছে
  • এনক্রিপশন উদ্দেশ্যে ব্যবহার করা যেতে পারে,

রয়েছে SHA-1

  • একটি ক্রিপ্টোগ্রাফিক হ্যাশ অ্যালগরিদম,

  • একটি 160-বিট (20-বাইট) হ্যাশ মান উত্পাদন করে যা একটি বার্তা হজম হিসাবে পরিচিত

  • এটি একটি ক্রিপ্টোগ্রাফিক হ্যাশ এবং 2005 সাল থেকে এটি আর নিরাপদ হিসাবে বিবেচিত হয় না,

  • এনক্রিপশন উদ্দেশ্যে ব্যবহার করা যেতে পারে,

  • একটি sha1 সংঘর্ষের একটি উদাহরণ পাওয়া গেছে

  • প্রথম প্রকাশিত 1993 সালে (SHA-0 হিসাবে), তারপরে 1995 SHA-1 হিসাবে,

  • সিরিজ: SHA-0, SHA-1, SHA-2, SHA-3,

    সংক্ষেপে, SHA-1 ব্যবহার করা আর সু-তহবিল বিরোধীদের বিরুদ্ধে নিরাপদ হিসাবে বিবেচিত হয় না, কারণ ২০০৫ সালে, ক্রিপ্ট্যানালিস্টরা এসএএএ -১-তে আক্রমণ খুঁজে পেয়েছিল যা বোঝায় যে এটি চলমান ব্যবহারের জন্য যথেষ্ট পরিমাণে নিরাপদ নাও হতে পারে । ইউএস এনআইএসটি পরামর্শ দেয় যে ফেডারাল এজেন্সিগুলিকে সংঘর্ষ প্রতিরোধের প্রয়োজন হয় এমন অ্যাপ্লিকেশনের জন্য SHA1-1 ব্যবহার বন্ধ করা উচিত এবং 2010 এর NIST এর পরে অবশ্যই SHA-2 ব্যবহার করা উচিত ।

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

কর্মক্ষমতা

পিএইচপি-তে কিছু সাধারণ বেনমার্ক পরীক্ষা:

# Testing static text.

$ time php -r 'for ($i=0;$i<1000000;$i++) crc32("foo");'
real    0m0.845s
user    0m0.830s
sys     0m0.008s

$ time php -r 'for ($i=0;$i<1000000;$i++) md5("foo");'
real    0m1.103s
user    0m1.089s
sys     0m0.009s

$ time php -r 'for ($i=0;$i<1000000;$i++) sha1("foo");'
real    0m1.132s
user    0m1.116s
sys   0m0.010s

# Testing random number. 

$ time php -r 'for ($i=0;$i<1000000;$i++) crc32(rand(0,$i));'
real    0m1.754s
user    0m1.735s
sys     0m0.012s\

$ time php -r 'for ($i=0;$i<1000000;$i++) md5(rand(0,$i));'
real    0m2.065s
user    0m2.042s
sys     0m0.015s

$ time php -r 'for ($i=0;$i<1000000;$i++) sha1(rand(0,$i));'
real    0m2.050s
user    0m2.021s
sys     0m0.015s

সম্পর্কিত:


8

আপনি এটি রক্ষার চেষ্টা করছেন না তা বলবেন না।

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

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

একটি মন্তব্য রয়েছে যে একাধিক বিট ত্রুটিযুক্ত সিআরসি এর চেয়ে একটি হ্যাশ দুর্নীতি সনাক্তকরণের আরও বেশি সম্ভাবনা সরবরাহ করে। এটি সত্য, এবং কোনও 16 বা 32 বিট সিআরসি ব্যবহার করার বা না নেওয়ার সিদ্ধান্তটি ব্যবহার করা হচ্ছে এমন দুর্নীতিগ্রস্থ ডেটা ব্লকের সুরক্ষা পরিণতির উপর জড়িত এবং আপনি 2 ^ 16 বা 2 ^ 32 এর 1টিকে ন্যায্যতা প্রমাণ করতে পারবেন কিনা ডেটা ব্লককে ভুলভাবে বৈধ বলে ঘোষণা করা হচ্ছে।

অনেক ডিভাইসে স্ট্যান্ডার্ড অ্যালগরিদমের জন্য সিআরসি জেনারেটর অন্তর্নির্মিত থাকে। টেক্সাসের এমএসপি 430 এফ 5 এক্স সিরিজের সিআরসি-সিসিটিটি স্ট্যান্ডার্ডের একটি হার্ডওয়্যার প্রয়োগ রয়েছে have


6

সিআরসি 32 দ্রুত এবং হ্যাশটি কেবলমাত্র 32 বিট দীর্ঘ।

আপনি যখন দ্রুত এবং হালকা চেকসাম চান তখন এটি ব্যবহার করুন। সিআরসি ইথারনেটে ব্যবহৃত হয়।

আপনার যদি আরও নির্ভরযোগ্যতার প্রয়োজন হয় তবে আধুনিক হ্যাশিং ফাংশনটি ব্যবহার করা ভাল।


5

কেবলমাত্র সিআরসি ব্যবহার করুন যদি গণনার সংস্থানগুলি খুব আঁটসাঁট থাকে (যেমন কিছু এম্বেড এনভায়রনমেন্টস) বা আপনাকে অনেক আউটপুট মান সংরক্ষণ করতে এবং পরিবহণ করতে হবে এবং স্থান / ব্যান্ডউইথ টাইট (সিআরসি সাধারণত 32-বিট যেখানে এমডি 5 আউটপুট 128-বিট থাকে, SHA1 160 বিট এবং অন্যান্য এসএইচএর ভেরিয়েন্টগুলি 512 বিট অবধি)।

সুরক্ষা চেকগুলির জন্য সিআরসি কখনই ব্যবহার করবেন না কারণ সিআরসি "জাল" করা খুব সহজ।

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

সংক্ষেপে: যদি আপনার কাছে একটি শালীন হ্যাশ অ্যালগরিদম ব্যবহার না করার কারণ না থাকে তবে সাধারণ সিআরসি এড়িয়ে চলুন।


1
আপনি যদি যথাযথ বহুবর্ষ ব্যবহার করে থাকেন তবে সিআরসি সমস্ত দুর্ঘটনাকৃত ডেটা পরিবর্তনগুলি ধরবে। সঠিক ডান একাধিক বিট পরিবর্তন করা গেলে 1/2 ^ 32 পরিবর্তনগুলি মিস হয়।
জেরহার্ড

এবং একটি যথাযথ বহুবর্ষের সাহায্যে এটি কিছু সাধারণ শ্রেণীর সমস্ত ত্রুটি যেমন ধরবে ত্রুটিগুলিও ধরবে।
এরিক্ক্যালেন

প্রশ্নটি এম্বেড হওয়া সিস্টেমগুলি ব্যতীত আমি আপনার উত্তরটির সাথে একমত হব। একটি ক্রিপ্টোগ্রাফিক অ্যালগরিদমের কার্যকারিতা ছোট এম্বেড থাকা সিস্টেমে সমস্যা হতে পারে।
ক্রেগ ম্যাককুইন

একেবারে সাথে একমত হবে না। সিআরসি ত্রুটির বহুভুক্তগুলি সাবধানতার সাথে বেছে নেওয়া হয়েছে যাতে তারা সম্ভবত 1,2,3,5 সনাক্ত করতে পারে এবং কিছু ক্ষেত্রে 11 বিটের মতো কিছুতে ত্রুটি ফেটে। একটি ক্রিপ্টোগ্রাফিক হ্যাশ বিশুদ্ধরূপে পরিসংখ্যানগত, তাই আপনাকে বড় ডাইজেস্ট মানগুলি ব্যবহার করতে হবে। 8-32 বিটগুলি ক্রিপ্টোগ্রাফিক হ্যাশ হজমের পাশাপাশি সিপিইউ সাইলেস এবং গেটে অর্থহীন ব্যয়বহুল। আপনি এম্বেড থাকা সিস্টেমে কাজ করলে অবশ্যই বোর্ডে নেওয়া কোনও উত্তর নয়। সিআরসি ব্যবহার না করার একমাত্র সময় হ'ল যদি আপনাকে কোনও বুদ্ধিমান প্রতিকূল পরিস্থিতি মোকাবেলা করতে হয়।
ইলগিটানো

5

আমি সম্প্রতি সিআরসি ব্যবহার করেছিলাম যা স্মার্ট ছিল। লেখক jdupe ফাইল অনুলিপি সনাক্তকরণ এবং সরানোর সরঞ্জাম (জনপ্রিয় Exif টুল jhead একই লেখক) ফাইল মাধ্যমে প্রথম পাস সময় তা ব্যবহার করে। সিআরসি প্রতিটি ফাইলের প্রথম 32 কে গণনা করা হয় যেগুলি একই হিসাবে উপস্থিত ফাইলগুলি চিহ্নিত করতে, এছাড়াও ফাইলগুলি একই আকার থাকতে হবে। এই ফাইলগুলিকে একটি ফাইলের তালিকায় যুক্ত করা হয় যার উপর সম্পূর্ণ বাইনারি তুলনা করতে হয়। এটি বড় মিডিয়া ফাইলগুলি পরীক্ষা করার গতি বাড়ায়।


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

1
@ সুপের্যাট - আমি সত্যই বিশ্বাস করি না যে এটি আসলে একটি সমস্যা। যদি কোনও ফাইলে একটি crc32 শিরোলেখ থাকে যা ফাইলের বাকী অংশের crc32 হয়, তবে ফাইলটি যখন crc32 শিরোনামের প্রতিটি বিট আপডেট হয় তখন প্রায় 50% আলাদা হওয়ার সম্ভাবনা থাকে। শিরোনামে পরিবর্তনগুলি মোটামুটি এলোমেলো বিতরণ অনুসরণ করা উচিত। সিআরসি 32 (শিরোনাম + ডেটা) সর্বদা একরকম হয় বা কোনওভাবেই ফাইলের ডেটা অংশের উপর নির্ভর করে না এর ফলস্বরূপ এটি কীভাবে ঘটবে তা আমি দেখতে ব্যর্থ হয়েছি।
টায়রাটর্ন

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

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

4

সিআরসি 32 দ্রুতগতিতে এবং কখনও কখনও হার্ডওয়্যার সমর্থন (যেমন নেহালেম প্রসেসরের উপর) থাকে। সত্যই, আপনি যদি কেবল হার্ডওয়ারের সাথে হস্তক্ষেপ করেন, বা আপনি যদি পারফরম্যান্সে সত্যই আঁট থাকেন তবে আপনি কেবলমাত্র এটিই ব্যবহার করবেন


4

বুনিয়াদি দিয়ে শুরু করা যাক।

ক্রিপ্টোগ্রাফিতে, একটি হ্যাশিং অ্যালগরিদম ডাইজেস্ট অপারেশনের মাধ্যমে অনেকগুলি বিটকে কম বিটে রূপান্তরিত করে। বার্তা এবং ফাইলগুলির অখণ্ডতা নিশ্চিত করতে হ্যাশগুলি ব্যবহৃত হয়।

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

আপনি যখন বার্তার অখণ্ডতা প্রয়োগ করতে চান - অর্থ বার্তায় ট্রানজিটে কোনও ছলচাতুরী হয়নি - সংঘর্ষের পূর্বাভাস দেওয়ার অক্ষমতা একটি গুরুত্বপূর্ণ সম্পত্তি। একটি 32-বিট হ্যাশ 4 বিলিয়ন বিভিন্ন অনন্য হ্যাশ ব্যবহার করে 4 বিলিয়ন বিভিন্ন বার্তা বা ফাইলগুলি বর্ণনা করতে পারে । আপনার 4 বিলিয়ন এবং 1 টি ফাইল থাকলে আপনার 1 টি সংঘর্ষের নিশ্চয়তা রয়েছে। 1 টিবি বিটস্পেসে বিলিয়ন মিলিয়ন সংঘর্ষের সম্ভাবনা রয়েছে। যদি আমি আক্রমণকারী এবং আমি 32 বিট হ্যাশটি কী হতে চলেছে তা অনুমান করতে পারি, তবে আমি একটি সংক্রামিত ফাইলটি তৈরি করতে পারি যা লক্ষ্য ফাইলের সাথে সংঘর্ষ হয়; যে একই হ্যাশ আছে।

অতিরিক্তভাবে যদি আমি 10 এমবিপিএস ট্রান্সমিশন করছি তবে crc32 বাইপাস করে গন্তব্য অবধি চালিয়ে যাওয়ার এবং সম্পাদন করার জন্য কোনও প্যাকেট দূষিত হওয়ার সম্ভাবনা খুব কম। 10mbps এ বলি আমি 10 টি ত্রুটি পাই \ সেকেন্ড । আমি যদি এটি 1 জিবিপিএস পর্যন্ত র‌্যাম্প করি তবে এখন প্রতি সেকেন্ডে 1000 টি ত্রুটি পাচ্ছি । আমি যদি প্রতি সেকেন্ডে 1 এক্সবিবিট পর্যন্ত র‍্যাম করি তবে আমার প্রতি সেকেন্ডে 1,000,000,000 ত্রুটির ত্রুটি হার রয়েছে । বলুন আমাদের সংঘর্ষের হার 1 \ 1,000,000সংক্রমণ ত্রুটি, 1 মিলিয়ন ট্রান্সমিশনের ত্রুটির অর্থ 1 দুর্নীতিগ্রস্থ ডেটা সনাক্ত করা যায় না results 10 এমবিপিএসে আমি প্রতি 100,000 সেকেন্ড বা দিনে একবারে পাঠানোর সময় ত্রুটিযুক্ত ডেটা পেয়ে যাব। 1 জিবিবিএসে প্রতি 5 মিনিটে একবার এটি ঘটবে। প্রতি সেকেন্ডে 1 এক্সবিবিটে, আমরা সেকেন্ডে বেশ কয়েকবার কথা বলছি।

আপনি যদি ওয়ারশার্ক উন্মুক্ত করেন আপনি দেখতে পাবেন যে আপনার সাধারণ ইথারনেট শিরোনামটিতে একটি সিআরসি 32 রয়েছে, আপনার আইপি শিরোনামটিতে একটি সিআরসি 32 রয়েছে এবং আপনার টিসিপি শিরোনামে একটি সিআরসি 32 রয়েছে এবং এটি উচ্চ স্তরের প্রোটোকলগুলি কী করতে পারে তা ছাড়াও; উদাহরণস্বরূপ, আইপিএসইসি উপরেরগুলি ছাড়াও সততা যাচাইয়ের জন্য MD5 বা SHA ব্যবহার করতে পারে। টিপিক্যাল নেটওয়ার্ক যোগাযোগগুলিতে ত্রুটি পরীক্ষা করার কয়েকটি স্তর রয়েছে এবং তারা সাব 10 এমপিপিএস গতিতে এখন এবং আবার বোকা বানায়।

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

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

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


1

সিআরসি কোডটি সহজ এবং দ্রুত।

তোমার কি দরকার?

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