क्या यूडीपी डेटा पेलोड में एक सीआरसी शामिल होना चाहिए?


16

जिस कंपनी के लिए मैं काम करता था, उसके लिए मुझे एक सॉकेट रिसीवर लागू करना पड़ा, जो कुछ विशेष सेंसर हार्डवेयर से स्थानीय कनेक्शन पर यूडीपी के रूप में डेटा लेता था। प्रश्न में डेटा एक अच्छी तरह से गठित यूडीपी पैकेट था, लेकिन दिलचस्प बात यह है कि डेटा पेलोड हमेशा बाकी डेटा का उपयोग करके गठित सीआरसी 16 चेकसम के साथ समाप्त हो गया।

मैंने कल्पना के अनुसार, अपने अंत में चेक को लागू किया, लेकिन मैं हमेशा सोचता था कि क्या यह आवश्यक है। आखिरकार, यूडीपी प्रोटोकॉल खुद 16-बिट सीआरसी नहीं ले जाता है? इसलिए, हालांकि यूडीपी पैकेट खो सकते हैं या आउट-ऑफ-ऑर्डर हो सकते हैं, मैं इस धारणा के तहत था कि ओएस की प्रक्रियाओं तक पहुंचने से पहले उन्हें नेटवर्क हार्डवेयर द्वारा खारिज किए बिना भ्रष्ट नहीं किया जा सकता है। या क्या कोई विशेष उपयोग-मामला है जो मुझे याद आ रहा है?

यह जोड़ने योग्य है कि मैं रक्षा उद्योग में काम कर रहा था, जैसा कि मुझे यकीन है कि आप कल्पना कर सकते हैं, इस तरह से सब कुछ के बारे में सुपर-स्पष्ट होना पसंद करता है, इसलिए मैं सोच रहा हूं कि क्या यह "सुरक्षा ओसीडी" का मामला था। ..


2
यदि यह सुरक्षा उद्देश्यों के लिए है, न कि केवल आकस्मिक भ्रष्टाचार को रोकने के लिए, तो आपको एक मैक का उपयोग करने की आवश्यकता है, जो एक चेकसम के बराबर है।
कोडइन्चोस

1
यूडीपी चेकसम केवल उस डेटा के लिए अच्छा है जिसे यूडीपी पैकेट में इंजेक्ट किया गया था। वास्तव में चेकसम क्या बनाता है? चेकसम का उपयोग क्या है? यूडीपी पैकेट बनाने से पहले अखंडता सुनिश्चित करने के लिए इसका उपयोग किया जाता है या शायद पैकेट के साथ-साथ यह सुनिश्चित करने के लिए किया जाता है कि यह अखंडता बनाए रखता है क्योंकि यह अन्य प्रणालियों के माध्यम से बहता है? आपके सिस्टम के घटकों की व्यापक समझ के बिना और डेटा का निर्माण, रूपांतरण और उपयोग कैसे किया जाता है, मुझे यकीन नहीं है कि आपका प्रश्न उत्तर देने योग्य है।
थॉमस ओवेन्स

@ThomasOwens डेटा को मूल डिवाइस से बैक-टू-बैक प्राप्त हार्डवेयर में भेजा गया था। कोई बीच का आदमी नहीं। भेजने से पहले अंतिम चरण के रूप में प्रवर्तक द्वारा चेकसम बनाया गया था।
Xenoprimate

जवाबों:


23

यूडीपी प्रोटोकॉल गारंटी नहीं देता कि संदेशों के क्रम में दिया या बिल्कुल भी दिया जाता है, लेकिन यह सुनिश्चित करता है उन संदेशों को जो कि है वितरित हो पूर्ण और स्वचालित रूप से एक 16-बिट चेकसम शामिल करके कोई परिवर्तन नहीं होता। इसका मतलब है कि आवेदन परत पर एक और 16-बिट चेकसम जोड़ना आमतौर पर बेमानी है।

... आमतौर पर ....

पहले, IPv4 (IPv6 नहीं) के साथ, चेकसम वैकल्पिक है । इसका मतलब है कि आप एक विदेशी विन्यास का उपयोग कर सकते हैं जो चेकसम पीढ़ी और सत्यापन नहीं करता है (लेकिन उस स्थिति में आपको अपने नेटवर्क स्टैक को जूरी-रिगिंग के बजाय आवेदन परत पर ठीक करना चाहिए)।

दूसरा, 16bit चेकसम के साथ 65536 में एक मौका है कि एक पूरी तरह से यादृच्छिक संदेश के लिए एक वैध चेकसम होता है। जब आपके उपयोग-मामले के लिए त्रुटि का यह मार्जिन बहुत बड़ा है (और रक्षा उद्योग में मैं कई कल्पना कर सकता हूं कि यह कहां है), एक और सीआरसी -16 चेकसम को जोड़ने से यह और कम हो जाएगा। लेकिन उस मामले में आप CRC-16 के बजाय SHA-256 की तरह एक उचित संदेश डाइजेस्ट का उपयोग करने पर विचार कर सकते हैं। या सभी तरह से जाएं और एक वास्तविक क्रिप्टोग्राफ़िक हस्ताक्षर का उपयोग करें। यह न केवल यादृच्छिक भ्रष्टाचार के खिलाफ, बल्कि एक हमलावर द्वारा जानबूझकर भ्रष्टाचार से भी बचाता है।

तीसरा, यह निर्भर करता है कि डेटा कहां से आता है और कहां जाता है, यह नेटवर्क पर भेजे जाने से पहले या बाद में दूषित हो सकता है। उस स्थिति में संदेश के अंदर का अतिरिक्त चेकसम केवल दो नेटवर्क मेजबानों के बीच संदेश की अखंडता की रक्षा कर सकता है।


3
क्रिप्टोग्राफिक क्यों ? क्रिप्टोग्राफिक हैश डिजाइनिंग में उपयोग की जाने वाली बाधाएं वैसी नहीं हैं, जैसा कि ट्रांसमिशन में उपयोग किए गए हैश को डिजाइन करने में इस्तेमाल किया जाता है (उदाहरण के लिए, संसाधन गहन होना क्रिप्टोग्राफिक हैश के लिए एक विशेषता है और ट्रांसमिशन में समस्या है)।
एपीग्रामग्राम

1
@AProgrammer मैं मानता हूं कि शब्दों का चुनाव भ्रामक हो सकता है। मैंने इसे "उचित संदेश डाइजेस्ट" से बदल दिया। मैसेज डाइजेस्ट फ़ंक्शंस लंबे समय तक होते हैं, जिससे आकस्मिक टकराव इतना कम हो जाता है कि उन्हें व्यावहारिक उद्देश्यों के लिए असंभव माना जा सकता है।
फिलिप

2
यह सुनिश्चित करने का प्रयास करता है कि संदेश अपरिवर्तित हैं, लेकिन यूडीपी में उपयोग किया जाने वाला चेकसम कमजोर है। जबकि सभी 16-बिट चेकसम के लिए 65536 में रैंडम संदेश का मौका वास्तव में 1 है, और अधिक उपयोगी उपायों में बिट फ्लैप्स की डिटेक्टेबल संख्या या तो बेतरतीब ढंग से या एक फट में शामिल है, और सभी चेकसम के अनुसार समान रूप से प्रदर्शन नहीं करते हैं। यह मीट्रिक है।
बेन वोइगट

1
@AProgrammer क्रिप्टोग्राफिक हैश (MD5, SHA-1/2/3, ...) का लक्ष्य टक्कर प्रतिरोध जैसी सुरक्षा गुणों को सुनिश्चित करते हुए यथासंभव सस्ता होना है। आम तौर पर वे प्रति सेकंड कई सौ एमबी की प्रक्रिया कर सकते हैं, इसलिए उन्हें Gbit कनेक्शन से कम में अड़चन नहीं होनी चाहिए। वे अभी भी कई गैर क्रिप्टोग्राफिक वाले की तुलना में धीमे हैं जिन्हें टकराव प्रतिरोध की आवश्यकता नहीं है। केवल पासवर्ड हैश (PBKDF2, bcrypt, scrypt, Argon, ...) का उद्देश्य गणना करने के लिए महंगा होना है।
कोडइन्चोसोस

12

यूडीपी एक चेकसम प्रदान करता है, हालांकि।

  1. यूडीपी चेकसम केवल 16 बिट्स है। इसका मतलब है कि चेकसम से गुजरने वाले भ्रष्ट पैकेट के 65536 में 1 मौका।
  2. IPv4 पर UDP में चेकसम वैकल्पिक है, इसलिए एक प्रेषक सैद्धांतिक रूप से एक चेकसम के बिना पैकेट भेजना समाप्त कर सकता है।
  3. चेकसम आईपी / पोर्ट जानकारी के साथ-साथ डेटा को भी कवर करता है। जबकि यह भ्रष्ट पतों के साथ पैकेट छोड़ने में उपयोगी है, इसका मतलब है कि यदि पैकेट NAT से होकर गुजरता है तो NAT द्वारा पुनर्गणना होनी चाहिए।
  4. यूडीपी पैकेट में यात्रा करते समय चेकसम केवल डेटा की सुरक्षा करता है। एक एप्लिकेशन स्तर चेकसम डाटा अंत की रक्षा कर सकता है क्योंकि यह एक अधिक जटिल प्रणाली से गुजरता है।
  5. यूडीपी चेकसम क्ली केवल आपको बताता है कि पैकेट एक यूडीपी कार्यान्वयन द्वारा उत्पन्न किया गया था। यह आपको नहीं बताता है कि यह आपके सेंसर से आया है। दूसरी ओर एक आवेदन स्तर चेकसम उन पैकेटों को अस्वीकार करने में मदद कर सकता है जो वैध यूडीपी हैं लेकिन कुछ अन्य स्रोत से आए हैं।

इसलिए मैं यूडीपी चेकसम पर भरोसा नहीं करने के लिए वैध कारण देख सकता हूं लेकिन समान रूप से यूडीपी चेकसम पर भरोसा नहीं करना चाहिए और फिर आवेदन स्तर पर समान रूप से कमजोर चेकसम को लागू करना अजीब लगता है।

इस बात की संभावना है कि प्रोटोकॉल के इच्छुक व्यक्ति को बस यह पता नहीं था कि यूडीपी चेकसम प्रदान करता है या यह कि प्रोटोकॉल वास्तव में किसी माध्यम पर चलने के लिए डिज़ाइन किया गया एक मामूली रूप है जो चेकसम प्रदान नहीं करता है।

इस पोस्ट के बाद से PS को सुरक्षा के बारे में पता है कि प्रश्न में चेकसम को अनजाने परिवर्तनों से बचाने के लिए डिज़ाइन किया गया है। जानबूझकर संशोधन या स्पूफिंग से बचाव के लिए क्रिप्टोग्राफ़िक हैश फ़ंक्शंस के उपयोग की आवश्यकता होती है जो जानबूझकर टकरावों / पूर्वाग्रहों के लिए प्रतिरोधी हैं और कुछ तंत्रों (जैसे कि एक सार्वजनिक कुंजी का उपयोग करके किए गए हस्ताक्षर) का उपयोग करने के लिए स्वयं को संशोधित नहीं किया गया है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.