"सबसे मजबूत पासवर्ड"


11

मेरे पास एक ऐप है जो चार अंकों के पिन द्वारा संरक्षित है और उपयोगकर्ता को खाता लॉक होने से पहले लॉगिंग करने के पांच प्रयास मिले।

अब, मेरा एक ग्राहक सुरक्षा को मजबूत बनाना और दूसरे समाधान की वकालत करना चाहता है:

  • छह अंकों-पिन
  • कोई "समान अंक एक दूसरे के बगल में": उदाहरण के लिए: 11 3945 या 39 55 94
  • नहीं "तीन-चलने वाली संख्या": उदाहरण के लिए: 123 654 या 53 789 3

अब इस सवाल पर: कौन सा समाधान सबसे मजबूत है?

मैं चार अंकों की गणना बहुत आसान कर सकता हूं, लेकिन मैं दूसरे की गणना कैसे करूं?

धन्यवाद!

अपडेट करें

आपको वह मिलता है जो आप माँगते हैं - खासकर जब गणित के साथ काम करते हैं :)

इसलिए, जो मैं पूछ रहा था वह दोनों संख्या अनुक्रमों के लिए संयोजन की संख्या थी।

जवाब और टिप्पणियों के माध्यम से पढ़ना मेरे लिए स्पष्ट हो गया है कि यह वास्तव में कोई फर्क नहीं पड़ता। यदि आपके पास 5 अनुमान हैं तो इससे कोई फर्क नहीं पड़ता कि आपके पास चुनने के लिए 10.000 या ~ 800.000 है। 1234 जन्म के दिन से अधिक महत्वपूर्ण है। मेरी स्थिति में, मेरे पास वास्तव में जन्म का दिन है, इसलिए मेरे पास जांच के लिए कुछ है।

एक महान चर्चा के लिए धन्यवाद!


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

2
मुझे लगता है कि यह क्रिप्टोग्राफी पर है , यहां नहीं।
गूँग - मोनिका

2
कैस्पर, कृपया स्पष्ट करें - क्या आप इसके बारे में मुख्य रूप से सुरक्षा के मुद्दे के रूप में चिंतित हैं (जैसे कि संभावना से अधिक विचार से संबंधित है), इस मामले में यह कहीं और बेहतर फिट हो सकता है - या आप मुख्य रूप से संभाव्यता प्रश्न पूछ रहे हैं (जो यहाँ फिट बैठता है)?
Glen_b -Reinstate Monica

3
सैद्धांतिक रूप से --- यदि आप पूरी तरह से पाशविक बल के हमलों पर केंद्रित हैं --- अधिक संभावनाओं का मतलब अधिक सुरक्षा है इसलिए प्रतिबंध जैसे कि नो-डिजिट या नो-रन-ऑफ -3 संभावनाओं की संख्या को कम करते हैं इस प्रकार वे सख्ती से कमजोर हैं। हालाँकि, व्यावहारिक रूप से (जैसा कि user777 छूता है) लोग यादृच्छिक पिन नहीं चुन रहे हैं। यदि उपयोगकर्ता पैरानॉयड होने की तुलना में आलसी हैं, तो उनमें से कई "000000" या "123456" जैसे पिन चुन सकते हैं, जो तब चीजों को कम सुरक्षित बनाता है।
ग्रेगर थॉमस

2
मैं (अस्थायी रूप से) इस प्रश्न को अस्पष्ट के रूप में बंद कर रहा हूं, इस आधार पर कि ओपी के इरादे अभी तक स्पष्ट नहीं हैं। मैं वास्तव में @ Glen_b के प्रश्न का उत्तर देखना पसंद करूंगा, इसलिए हम जानते हैं कि क्या इसे कॉम्बीनेटरिक्स / प्रायिकता प्रश्न के रूप में माना जाना चाहिए या ऐसा कुछ जिसे बेहतर माइग्रेट किया गया हो।
सिल्वरफिश

जवाबों:


8

आपने इस प्रश्न पर मदद के लिए एक सांख्यिकीविद् मंच से पूछा है, इसलिए मैं एक सांख्यिकीय-आधारित उत्तर प्रदान करूँगा। इस प्रकार यह मान लेना उचित है कि आप रैंडम पर पिन का अनुमान लगाने की संभावना में रुचि रखते हैं (यादृच्छिक की कुछ परिभाषा के लिए), लेकिन यह उस प्रश्न में अधिक पढ़ रहा है जो प्रदान किया गया है।

मेरा दृष्टिकोण प्रतिबंधित किए बिना सभी संभव विकल्पों की गणना करना होगा, फिर शून्य विकल्पों को घटाएं। इसका एक तेज कोना है, हालांकि, इसे समावेश-बहिष्करण सिद्धांत कहा जाता है, जो कि सहज विचार से मेल खाता है जिसे आप एक ही चीज़ को एक सेट से दो बार घटाना नहीं चाहते हैं!

छह अंकों के पिन में बिना किसी प्रतिबंध और दशमलव संख्या प्रणाली के साथ, से तक संभावित संयोजन हैं प्रत्येक अंक में 10 विकल्प हैं।106000000999999:

इस बात पर विचार करें कि "दो समीपवर्ती, समान" अंक तरह दिखते हैं: , जहां लेबल वाले पद समान हैं और कोई दशमलव अंक हो सकता है। अब विचार करें कि स्ट्रिंग को छह अंकों में कितने अन्य तरीकों से व्यवस्थित किया जा सकता है: , , , और । इसलिए किसी विशेष ऑर्डरिंग (उन विकल्पों में से एक) के लिए, कम से कम संयोजन हैं, क्योंकि प्रतिबंध के बिना अंक हैं। अब, कितने विकल्प हैं? हम दशमलव अंकों के साथ काम कर रहे हैं, इसलिए 10 होना चाहिए। इसलिएAAXXXXAXAAXAAXXXXXAAXXXXXAAXXXXXAA104104A105एक विशेष आदेश के लिए विकल्प। इस तरह के पांच आदेश हैं, इसलिए व्यवस्थाएं हैं जो इस परिभाषा को पूरा करती हैं। (सुरक्षा के संदर्भ में इसका मतलब यह है कि यह पिन स्पेस की एन्ट्रापी को कितना कम करता है, एक सूचना-सिद्धांत के रूप में मापा जा सकता है।)5×105

अब विचार करें कि लगातार संख्याएँ कैसी दिखती हैं। स्ट्रिंग , यदि हम ए जानते हैं, तो हम बी और सी * भी जानते हैं: यदि ए 5 है, तो बी 6 है और सी 7. है। इसलिए हम इन विकल्पों की गणना कर सकते हैं:ABCXXX

  • 012XXX
  • 123XXX
  • 234XXX
  • 456XXX
  • 789XXX

और इस बिंदु पर यह अस्पष्ट है अगर वहाँ "चारों ओर लपेट रहा है।" अगर वहाँ है, हम भी शामिल हैं

  • 890XXX
  • 901XXX

प्रत्येक समाधान में संबद्ध संयोजन होते हैं, जो ऊपर दिए गए तर्क के अनुसार होते हैं। तो बस यह गणना करें कि वहाँ कितने समाधान होने चाहिए। वैकल्पिक आदेशों को गिनने के लिए ध्यान रखें, जैसे कि103XABCXX.

अब हम तेज कोने में पहुंच जाते हैं, जो समावेश-बहिष्करण सिद्धांत है। हमने सभी छह अंकों के पिनों को तीन सेटों में बनाया है:

A. अनुज्ञेय पिन B. "समीपवर्ती अंक" के कारण शून्य पिन। "अनुक्रमिक अंक" के कारण C. शून्य पिन।

लेकिन एक अतिरिक्त सूक्ष्मता है, जो यह है कि कुछ 6-अंकीय संख्याएं हैं जिन्हें और दोनों को आवंटित किया जा सकता । इसलिए यदि हम गणना करते हैं हम उन संख्याओं को दो बार घटा रहे हैं, और हमारा उत्तर गलत है। सही गणना है जहाँ , और दोनों में तत्वों का समूह । इसलिए हमें यह निर्धारित करना चाहिए कि और दोनों में कितने तरीके गिर सकते हैं ।सी | एस | = | | - | B | - | सी | , | एस | = | | - | B | - | सी | + | बी सी | , बी सी बी सी बी सीBC|S|=|A||B||C|,|S|=|A||B||C|+|BC|,BCBCBC

इसके कई तरीके हो सकते हैं:

  • AABCXX
  • ABCXDD और इतने पर। तो आपको इसके लिए एक व्यवस्थित दृष्टिकोण के साथ-साथ वैकल्पिक व्यवस्थाओं पर नज़र रखने का एक तरीका काम करना होगा। उसी तर्क का उपयोग करना, जो मैंने ऊपर लागू किया है, यह बहुत ही थकाऊ होना चाहिए, अगर थोड़ा थकाऊ हो। बस ध्यान रखें कि B और C दोनों को संतुष्ट करने के लिए कितने वैकल्पिक तरीके हो सकते हैं।

थोड़े अधिक उन्नत दृष्टिकोण मूल दहनशील परिणामों और गणना के मूल सिद्धांत का लाभ उठाएंगे, लेकिन मैंने इस एवेन्यू को चुना क्योंकि यह पाठक पर सबसे छोटा तकनीकी बोझ डालता है।

अब, इसके लिए एक अच्छी तरह से गठित संभावना प्रश्न है, हमें प्रत्येक व्यवस्था के लिए संभाव्यता के कुछ उपाय करने होंगे। एक भोले हमले की धारणा में, कोई यह मान सकता है कि सभी अंकों के संयोजन में समान संभावना है। इस परिदृश्य में, यादृच्छिक रूप से चुने गए संयोजन की संभावना अगर इस तरह के हमले से आप सबसे ज्यादा दिलचस्पी रखते हैं, हालांकि, तो मापदंड का प्रस्तावित सेट स्पष्ट रूप से सिस्टम को कमजोर करता है, क्योंकि कुछ संयोजनों को निषिद्ध किया गया है, इसलिए केवल एक गूंगा हमलावर उन्हें आज़माएगा। मैं बाकी अभ्यास पाठक के लिए छोड़ देता हूं।1|S|

"पांच जब तक तालाबंदी" की शिकन निश्चित रूप से अनधिकृत पहुंच के खिलाफ बेहतर गार्ड है, चूंकि 4-अंकों या 6-अंकों वाली योजना में बहुत बड़ी संख्या में विकल्प हैं, और यहां तक ​​कि पांच अलग-अलग, यादृच्छिक अनुमानों का कम है सफलता की संभावना। एक अच्छी तरह से प्रस्तुत संभावना प्रश्न के लिए, इस तरह के हमले के सफल होने की संभावना की गणना करना संभव है।

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

* आपके द्वारा सूचीबद्ध अनुक्रम सख्ती से बढ़ रहे हैं, और यह स्पष्ट नहीं है कि जब आप "तीन-चलने वाली संख्या" कहते हैं तो दोनों बढ़ते और घटते हैं।


1

एक बंद सूत्र प्राप्त करना जटिल लगता है। हालांकि, उन्हें एन्युमरेट करना काफी आसान है। कर रहे हैं 568 916दूसरा समाधान के लिए संभव कोड। जो चार अंकों के पिन कोड वाले समाधानों की संख्या से बड़ा है। उन्हें एन्यूमरेट करने का कोड नीचे है। हालांकि अनुकूलित नहीं है, यह केवल चलाने के लिए सेकंड लेता है।

ध्यान दें। मैंने मान लिया कि अनुक्रम को बढ़ते क्रम में होना चाहिए (जिसे आसानी से संशोधित किया जा सकता है three_running)

N = 999999

candidates = range(N)

def same_consecutive_digits(x):
    x_string = str(x).zfill(6)
    for i in range(1,len(x_string)):
        if x_string[i] == x_string[i-1]:
            return True
    return False

def three_running(x):
    x_string = str(x).zfill(6)
    for i in range(2,len(x_string)):
        if int(x_string[i]) == int(x_string[i-1]) + 1 and int(x_string[i-1]) == int(x_string[i-2]) + 1:
            return True
    return False

def valid(x):
    return not same_consecutive_digits(x) and not three_running(x)

assert(same_consecutive_digits(88555))
assert(same_consecutive_digits(123))
assert(not same_consecutive_digits(852123))
assert(three_running(123456))
assert(not three_running(4587))
assert(valid(134679))
assert(not valid(123894))
assert(not valid(111111))
assert(not valid(151178))
assert(valid("031278"))

accepted = [i for i in range(N) if valid(i)]
print(len(accepted))

कोड में निहित है, लेकिन आपके विवरण में नहीं है, यह धारणा है कि पिन कभी भी अंक "0" से शुरू नहीं होंगे। यह आमतौर पर पिन या पासवर्ड का सच नहीं है। इस तरह के शून्य के लिए अनुमति देने का सही उत्तर 568,916 है। आइए ध्यान में रखते हैं, हालांकि, प्रासंगिक जवाब इस बात पर विचार करेगा कि इस विवश समस्या में पिन पर होने वाले हमलों को बाधाओं का फायदा उठाकर और अधिक कुशल बनाया जा सकता है, इसका अर्थ यह है कि संभावनाओं का यह मात्र पर्याप्त रूप से "ताकत" का प्रतिनिधित्व नहीं करता है प्रणाली, जैसा कि प्रश्न में टिप्पणियों में बताया गया है।
whuber
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.