Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

MySQL में स्ट्रिंग्स की तुलना टाइमिंग अटैक के लिए असुरक्षित है?

हां, स्ट्रिंग तुलना (और/या इंडेक्स लुकअप), सैद्धांतिक रूप से, डेटाबेस में संग्रहीत पासवर्ड हैश और दर्ज किए गए पासवर्ड शेयर से गणना किए गए एक समान अग्रणी बाइट्स को लीक कर सकता है।

सिद्धांत रूप में, एक हमलावर इसका उपयोग पासवर्ड हैश के उपसर्ग को सीखने के लिए कर सकता है, बाइट द्वारा बाइट:पहले वे एक हैश ढूंढते हैं जो डेटाबेस में हैश के साथ अपना पहला बाइट साझा करता है, फिर एक जो अपना पहला साझा करता है दो बाइट्स, और इसी तरह।

नहीं, यह लगभग निश्चित रूप से कोई मायने नहीं रखेगा।

क्यों? खैर, कई कारणों से:

  1. टाइमिंग अटैक हो सकता है हमलावर को उपयोगकर्ता के पासवर्ड हैश का एक हिस्सा सीखने की अनुमति दें। एक अच्छी तरह से डिज़ाइन की गई पासवर्ड हैशिंग योजना (नमक और कुंजी स्ट्रेचिंग का उपयोग करके ), हालांकि, सुरक्षित रहना चाहिए (यह मानते हुए कि पासवर्ड स्वयं आसानी से अनुमान लगाने योग्य नहीं हैं) भले ही हमलावर संपूर्ण जानता हो पासवर्ड हैश। इस प्रकार, भले ही टाइमिंग अटैक सफल हो जाए, पासवर्ड स्वयं सुरक्षित रहेंगे।

  2. हमले को अंजाम देने के लिए, हमलावर को पासवर्ड जमा करना होगा जिसका हैश मान वे जानते हैं। हैश मान नमक पर निर्भर करता है। इस प्रकार, जब तक हमलावर किसी तरह पहले से ही नमक नहीं जानता, यह हमला संभव नहीं है।

    (यह सच है कि, पासवर्ड हैशिंग योजनाओं के अधिकांश सुरक्षा विश्लेषणों में, नमक को सार्वजनिक जानकारी माना जाता है। हालांकि, यह केवल इसलिए है क्योंकि इस तरह के विश्लेषण ऊपर वर्णित सबसे खराब स्थिति मानते हैं, जहां हमलावर ने पहले ही एक प्रति प्राप्त कर ली है। संपूर्ण उपयोगकर्ता डेटाबेस, लवण और हैश और सभी। यदि हमलावर को अभी तक हैश का पता नहीं है, तो यह मानने का कोई कारण नहीं है कि वे नमक को जानते होंगे।)

  3. यहां तक ​​​​कि अगर हमलावर नमक जानता है, तो ऊपर वर्णित पुनरावृत्त हमले को अंजाम देने के लिए, उन्हें एक वांछित उपसर्ग के साथ हैश के लिए पासवर्ड उत्पन्न करने की आवश्यकता होगी। किसी भी सुरक्षित हैश फ़ंक्शन के लिए, ऐसा करने का एकमात्र व्यावहारिक तरीका परीक्षण त्रुटि है, जिसका अर्थ है कि ऐसा करने के लिए आवश्यक समय उपसर्ग की लंबाई के साथ तेजी से बढ़ता है।

    व्यवहार में इसका मतलब यह है कि, हैश के पर्याप्त रूप से कई बिट्स निकालने के लिए इसके खिलाफ एक ऑफ़लाइन जानवर बल हमला करने में सक्षम होने के लिए (जो उन सभी की आवश्यकता नहीं है; एन्ट्रापी की प्रभावी मात्रा से अधिक है) पासवर्ड), हमलावर को पासवर्ड को क्रैक करने के लिए जितनी आवश्यक हो उतनी गणना करने की आवश्यकता है। एक अच्छी तरह से डिज़ाइन की गई पासवर्ड हैशिंग योजना और सुरक्षित रूप से चुने गए पासवर्ड के लिए, यह संभव नहीं है।

  4. पुनरावृत्त हमला क्या कर सकता है हमलावर दें, सिद्धांत रूप में, अपने सिस्टम में केवल काफी कम संख्या में पासवर्ड सबमिट करते हुए, स्थानीय रूप से अपने अंत में अधिकांश क्रूर बल गणना करने की क्षमता है। हालांकि, यह भी तभी मान्य होता है जब वे प्रत्येक . से विस्तृत और विश्वसनीय समय की जानकारी प्राप्त करते हैं पासवर्ड सबमिट किया गया। व्यवहार में, वास्तविक समय के हमले अत्यंत अक्षम हैं , और कोई भी . प्राप्त करने के लिए कई (अक्सर हजारों या लाखों) प्रश्नों की आवश्यकता होती है उपयोगी जानकारी बिल्कुल। यह संभावित रूप से किसी भी संभावित प्रदर्शन लाभ को रद्द कर देगा जो हमलावर के लिए टाइमिंग अटैक प्रदान कर सकता है।

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



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. स्क्रैच से पायथन फ्लास्क और MySQL का उपयोग करके एक वेब ऐप बनाना:भाग 5

  2. MySQL चयन पंक्तियाँ ऐरे से मेल खाती हैं?

  3. MySQL - एक ही संरचना के साथ कई तालिकाओं से डेटा का चयन करना, लेकिन अलग-अलग डेटा

  4. mysql नोडज में खंड में

  5. PHP और MySQL :कुछ का योग दिखाएँ, विशिष्ट श्रेणी द्वारा वर्गीकृत