2013-03-31 3 views
6

प्रश्न एक ही शीर्षक है, जहां $ 2x $ बीसीआरपीटी में उपयोग किया जाता है?जहां बीसीआरपीटी में 2x उपसर्ग का उपयोग किया जाता है?

निम्नलिखित परिदृश्य सही है?

हमारे पास $2a$ प्रीफ़िक्स के साथ पहले से ही पासवर्ड का एक सेट है, जब सर्वर PHP संस्करण 5.3.7 था। अब हमने PHP को 5.3.7+ में अपग्रेड किया है, अब हमें पहले $2x$ एल्गोरिदम के साथ पिछले पासवर्ड सत्यापित करना होगा, फिर $2y$ उपसर्ग के साथ पासवर्ड दोबारा शुरू करें। ये सही है?

+0

इस ** [वेबलॉग] में एक अच्छा जवाब मिल सकता है (http://daveyshafik.com/archives/35354-the-blowfish-debacle.html) **। लेकिन मुझे समझ में नहीं आया कि इस वाक्य में क्या कहना है: _ अब, यह कोड मानता है कि आपने सर्वर को अपडेट करने से पहले समस्या को देखा था; यदि आपके पास अपग्रेड के बाद से बनाए गए नए पासवर्ड हैं, तो आप $ 2a $ हैश के विरुद्ध जांचना चाहेंगे यदि $ 2x $ चेक विफल हो जाती है, और फिर '2 $ 2 $ 'पर अपडेट करें।_ ** मतलब यह है कि, कभी-कभी पासवर्ड '$ 5.3a-'' में $ 2a $' के साथ धोया गया है, 'PHP 2.7 +' में '$ 2x $' के साथ सत्यापित नहीं हो सकता है? ** – msoa

+0

एक और उत्तर : [CRYPT_BLOWFISH सुरक्षा फ़िक्स विवरण] (http://www.php.net/security/crypt_blowfish.php) ** परिणाम: जहां तक ​​मैं समझता हूं कि हमारे पास '$ 2a $ '' के साथ पासवर्ड का एक सेट है, PHP 5.3.7-'और PHP को '5.3.7 +' पर अपडेट करना चाहते हैं, हमें अपग्रेड के बाद' 2x $ '' के साथ पुराने पासवर्ड सत्यापित करना होगा। इसलिए, केवल $ 2x $ 'का उपयोग ही वही है। ** अगर कोई सोचता है कि मुझे गलती हुई है तो कृपया मुझे जागरूक करें। धन्यवाद – msoa

उत्तर

23

विकिपीडिया संपादकों के लिए नोट: इस जवाब में सामग्री सार्वजनिक डोमेन में है; मुझे पता है क्योंकि मैंने इसे लिखा था। मैंने इसे अपने लिए पहले लिखा, और बाद में इसे स्टैक ओवरफ्लो पर रखा। मुझे यह भी पता है क्योंकि स्टैक ओवरफ्लो पर सबकुछ कॉपी है। और यहां तक ​​कि यदि यह नहीं था, तो किसी भी समय, किसी भी कारण से, किसी भी व्यक्ति द्वारा इसे किसी भी रूप में उपयोग करने के लिए स्वतंत्र है। मुझे कैसे पता चलेगा? क्योंकि मैंने इसे लिखा और मैंने अभी ऐसा कहा। इसमें विकिपीडिया पर बीक्रिप्ट प्रविष्टि शामिल है। विकिपीडिया में लापरवाही: मैं इसे दान करता हूं।

तो कॉपीराइट उल्लंघन का दावा करना बंद करें जब आप नहीं जानते कि आप किस बारे में बात कर रहे हैं।

BCrypt वेरिएंट

$ 2 $

BCrypt OpenBSD लोगों द्वारा डिजाइन किया गया था। इसे ओपनबीएसडी पासवर्ड फ़ाइल में स्टोरेज के लिए हैश पासवर्ड के लिए डिज़ाइन किया गया था। इस्तेमाल किए गए एल्गोरिदम की पहचान करने के लिए हैश किए गए पासवर्ड उपसर्ग के साथ संग्रहीत किए जाते हैं। बीक्रीप्ट को उपसर्ग $2$ मिला।

  • $1$:

$ 2 ए SHA-512 $:

यह अन्य एल्गोरिथ्म उपसर्गों के विपरीत था MD5

  • $5$: SHA-256
  • $6$

    मूल बीसीआरपीटी विनिर्देश ने परिभाषित नहीं किया कि कैसे गैर-ASCII वर्णों को संभालना है, या एक नल टर्मिनेटर को कैसे संभालना है। विनिर्देश निर्दिष्ट करने के लिए संशोधित किया गया था कि जब तार hashing:

    • स्ट्रिंग UTF-8 एन्कोडेड
    • अशक्त टर्मिनेटर शामिल किया जाना चाहिए

    $ 2x $, $ 2y $होना चाहिए (जून 2011)

    crypt_blowfish में एक बग की खोज की गई, जो बीसीआरपीटी का एक PHP कार्यान्वयन था। यह 8 वें बिट सेट के साथ गलत तरीके से संभालने वाले पात्र थे।

    उन्होंने सुझाव दिया कि सिस्टम प्रशासक अपने मौजूदा पासवर्ड डेटाबेस को अद्यतन, $2x$ साथ $2a$ की जगह, संकेत मिलता है कि उन हैश बुरा कर रहे हैं (और पुराने टूटे हुए एल्गोरिथ्म उपयोग करने की आवश्यकता) करने के लिए।उन्होंने निश्चित एल्गोरिदम द्वारा उत्पन्न हैंश के लिए crypt_blowfish $2y$ उत्सर्जित करने का विचार भी सुझाया। कैनोनिकल ओपनबीएसडी समेत किसी और ने 2x/2y के विचार को अपनाया। This version marker was was limited to crypt_blowfish

    संस्करणों $ 2x $ और $ 2y $ हैं नहीं "बेहतर" या "मजबूत" से $ 2 ए $। वे बीसीआरपीटी के एक विशेष छोटी गाड़ी कार्यान्वयन के अवशेष हैं।

    $ 2b $(फरवरी 2014)

    एक बग BCrypt की OpenBSD कार्यान्वयन में खोज की थी। वे unsigned char में अपने तारों की लंबाई संग्रहित कर रहे थे। यदि कोई पासवर्ड 255 वर्णों से अधिक लंबा था, तो यह 255 पर बह जाएगा और लपेट जाएगा।

    ओपनबीएसडी के लिए बीक्रिप्ट बनाया गया था। जब उनके पास में लाइब्रेरी में एक बग है, तो उन्होंने संस्करण को टक्कर देने का फैसला किया। इसका मतलब यह है कि यदि आप वर्तमान में "उनके" विनिर्देश के लिए मौजूदा रहना चाहते हैं तो सभी को सूट का पालन करने की आवश्यकता है।

    संस्करण $ 2b $ "बेहतर" या "मजबूत" से $ 2 ए $ नहीं है। यह बीसीआरपीटी के एक विशेष छोटी गाड़ी कार्यान्वयन का अवशेष है। लेकिन चूंकि बीसीआरप्ट कैननिक रूप से ओपनबीएसडी से संबंधित है, इसलिए वे संस्करण मार्कर को जो कुछ भी चाहते हैं उसे बदल सकते हैं।

    वहाँ 2a के बीच कोई अंतर नहीं है, 2x, 2y, और 2b। यदि आपने अपना कार्यान्वयन सही तरीके से लिखा है, तो वे सभी एक ही परिणाम आउटपुट करते हैं।

    और अगर आप शुरू से ही सही काम कर रहे थे (UTF8 में तार भंडारण और भी अशक्त टर्मिनेटर hashing) तो: वहाँ , 2a के बीच कोई अंतर नहीं है, 2x, 2y, और 2 बी। यदि आपने अपना कार्यान्वयन सही तरीके से लिखा है, तो वे सभी एक ही परिणाम आउटपुट करते हैं।

    केवल लोग हैं, जो 2x और 2y के बारे में परवाह करने की जरूरत है उन तुम हो सकता है crypt_blowfish का उपयोग किया गया है। और केवल उन्हीं लोगों को जिन्हें 2 बी की देखभाल करने की आवश्यकता है वे लोग हैं जो ओपनबीएसडी चला रहे हैं।

    अन्य सभी सही कार्यान्वयन समान और सही हैं।

  • +2

    बहुत धन्यवाद मेरे दोस्त। – msoa

    संबंधित मुद्दे