نختار كلمة المرور لرقم التعريف الضريبي الهندي في ثانيتين ، أو لماذا رياضيات القوة الغاشمة

يوجد في الهند نظير محلي لـ INN - "adhar". النظام الإلكتروني eAdhar مشدود عليه. في eAdhara ، يتم حظر كل حرف بكلمة مرور. سيكون كل شيء على ما يرام ، ولكن كلمة المرور تتكون من نمط بسيط: الأحرف الأربعة الأولى من الاسم هي أحرف استهلالية ، بالإضافة إلى سنة الميلاد.


أربعة أحرف كبيرة وأربعة أرقام. من هذه ، يمكن تجميع 2،821،109،909،456 مجموعة. إذا فحصت ألف مجموعة في الثانية ، فستستغرق كلمة مرور واحدة تسعين سنة.


طويل جدًا. هل يمكننا تسريع بضع ( مليار ) مرة؟


92 سنة ← 52 يومًا. مجموعة


مع ثلاثة تريليونات تركيبة ، كان لدينا أكثر من ذلك بقليل. لا يزال القالب معروفًا:


([AZ][AZ][AZ][AZ]) ([0–9][0–9][0–9][0–9]) (4  ) (4 ) ( 1) ( 2) 

بالنظر إلى هذا النمط ، يمكن تجاهل خطوط مثل S2N65GE1 على الفور. كم عدد المجموعات التي تحصل عليها بعد ذلك؟


المجموعة الأولى تتكون من أربعة أحرف أبجدية. 26 خيارًا ، 4 وظائف ، نحصل على:


264=976456دولارً

دولارً


4 مواضع من 10 أرقام ، بالمثل:


104=$10،00

،


من هذا نحصل على العدد الإجمالي للتركيبات:


456976 × 10000 = 4569760000 دولارًا


دعونا نقدر مدى القوة الوحشية الأسرع ستكون الآن. مرة أخرى ، ننتقل من 1000 محاولة في الثانية:


456،976،000 / 1،000 = 4،569،760 دولارًا


أو 52 يومًا و 21 ساعة و 22 دقيقة و 40 ثانية. بدلاً من 92 سنة. ليس سيئًا. ولكن لا يزال وقتا طويلا. ما الذي يمكن فعله أيضًا؟ نفس الشيء - تقليل عدد التركيبات.


52 يومًا ← 12 ساعة. بدوره على الحس السليم


المجموعة الأولى والثانية ليست مجموعة عشوائية من الأحرف ، ولكن الأحرف الأولى من الاسم وسنة الميلاد. لنبدأ بسنة الميلاد.


لا معنى لاختيار كلمات المرور لأولئك الذين ولدوا في 1642 أو 2594. لذلك يمكن تقليل نطاق التركيبات بأمان من 0000-9999 إلى 1918–2018. لذا سنغطي الزيادة أو النقصان لجميع الذين يعيشون في سن 0 إلى 100 سنة. وبفضل هذا ، يتم تقليل عدد المجموعات والوقت ، على التوالي:


456.976 دولار × 100 = 45697600 دولار


45697600/1000 دولار = 45697.6 دولارًا


أو 12 ساعة و 41 دقيقة و 37 ثانية.


12 ساعة ← دقيقتان. نحن نضحي بالدقة


12 ساعة رائعة ، لكن ... نحن بحاجة إلى التعمق .


لدينا الآن 45 مليون مجموعة تغطي بدقة جميع مستخدمي eAdhara. ولكن ماذا لو ضحى لهم بجزء صغير من أجل زيادة السرعة؟


لدينا تركيبات رقمية مثالية. الرسائل تفعل شيئًا مشابهًا. المنطق بسيط: لا يوجد عام ميلاد 9999 ، وبنفس الطريقة لا يوجد اسم هندي مع "AAAA" في البداية. ولكن كيف تحدد جميع التركيبات المناسبة؟


بيثون فوتون


جمعت أسماء هندية من موقع الكتالوج ، وساعدني الفوتون كثيرًا في ذلك. والنتيجة هي 3283 اسمًا فريدًا. يبقى تقليم الأحرف الأربعة الأولى وإزالة التكرارات:


 grep -oP ”^\w{4}” custom.txt | sort | uniq | dd conv=ucase 

جرب ، وفرز ، uniq ، د


اتضح 1،598 بادئة! كان هناك عدد قليل من التكرارات ، لأن الأحرف الأربعة الأولى في أسماء مثل "سانجيف" و "سانجيت" هي نفسها.


1،598 بادئة - ألا تكفي لمليار ونصف مليار شخص؟ أوافق. لكن لا تنسوا أن هذه البادئات ليست أسماء. لقد نشرت القائمة الناتجة على Gist . في الواقع ، يجب أن يكون هناك المزيد. يمكنك الحصول على الخلط ، وجمع 10000 اسم من مواقع أخرى والحصول على 3000 بادئة فريدة ، ولكن لم يكن لدي الوقت لذلك. لذلك سنبدأ من 1598.

دعونا نحسب مقدار الوقت المطلوب الآن:


1598 × 100 = 159800 دولارًا


159800/1000 دولار = 159.8 دولارًا


أو دقيقتين و 39.8 ثانية.


2 دقيقة ← 2 ثانية. ويكيبيديا للإنقاذ


دقيقتان و 40 ثانية هي الوقت الذي سيستغرقه فرز جميع المجموعات. ولكن ماذا لو كانت المجموعة الحادية عشرة صحيحة؟ أو آخر واحد؟ أو الأول؟


الآن يتم فرز قائمة المجموعات أبجديًا. ولكن هذا لا معنى له - من قال إن الأسماء الموجودة على "أ" أكثر شيوعًا من "ب" ، أو أن هناك أطفالًا في عمر سنة واحدة أكثر من الأطفال في السبعين من العمر؟


من الضروري مراعاة احتمال كل مجموعة. على ويكيبيديا يكتبون:


في الهند ، أكثر من 50٪ من السكان تحت سن 25 وأكثر من 65٪ تحت سن 35.

بناءً على ذلك ، بدلاً من القائمة 1–100 ، يمكنك تجربة ما يلي:


 25–01 (  ,       ,     ) 25–35 36–100 

ثم اتضح أن الاحتمال الأول 1598 × 25 = 39950 دولارًا تزداد المجموعات إلى 50٪. اخترقنا نصف كلمات المرور 39950/1000 دولار = 39.95 دولارًا ثانية! فيما يلي 1598 × 10/1000 = 15.8 دولارًا ثواني ، سوف نلتقط 15٪ أخرى من كلمات المرور. المجموع - 65٪ من كلمات المرور في 55.9 ثانية.


الآن إلى الأسماء.


في Google ، من السهل العثور على أسماء TOP-100 لأي بلد. استنادًا إلى بيانات من الهند ، نقلت التركيبات المناسبة إلى أعلى القائمة. نفترض أن 15 ٪ من سكان الهند يحملون أسماء شعبية. لذلك يمكن كسر 15 ٪ من كلمات المرور على الفور تقريبًا.


الهندوس - 80٪ من سكان الهند. لذا ، إذا وضعت الأسماء الهندوسية أعلاه في القائمة ، فستسرع 80٪ من المحاولات. بعد الخطوة السابقة ، غادرنا 100 ٪ - 15 ٪ = 85 ٪ $ محاولات. إذا كان 80 ٪ منهم أسماء هندوسية ، فإن 79 ٪ (نترك 1 ٪ للأسماء الشائعة ، ولكن ليس أسماء هندوسية) سوف نتصدى في 65 ٪ من المحاولات التالية.


دعونا نحسب كل شيء معًا ، مع مراعاة إحصاءات العمر. تنقسم إلى مجموعات:


 100:   { 50:  00  25  { 7:  , 43:   { 34: , 9:   } } 15:  26  35  { 3:  , 13*:   { 10: , 3:   } } 45:  36  100  { 7:  , 38:   { 30: , 8:   } } } 

الآن لنقم بإنشاء خوارزمية فعالة لاختراق كلمات المرور:



الأرقام الحمراء هي أولوية البحث. يتم اختبار مجموعات الأشخاص من المجموعة الأولى أولاً ، ثم الثانية ، ثم الثالثة وما إلى ذلك.


كم من الوقت يستغرق الاختراق الآن؟


المرحلة 1
1 = 11 ثانية لاختراق 7 كلمات مرور
2 = 3 ثوان لاختراق 3 كلمات مرور
3 = 11 ثانية لاختراق 7 كلمات مرور

اخترقنا كلمات المرور لـ 17 شخصًا ، وظل 83 منهم سنزيل المجموعات السابقة من القائمة وسنحاول استخدام المجموعات التالية - 4 ، 5 ، 6.


المرحلة 2
4 = 54 ثانية لكسر 34 كلمة مرور
5 = 16 ثانية لكسر 10 كلمات مرور
6 = 47 ثانية لاختراق 30 كلمة مرور

مرة أخرى ، احذف تركيبات المراحل السابقة.


المرحلة 3
7 = 14 ثانية لكسر 9 كلمات مرور
8 = 5 ثواني لاختراق 3 كلمات مرور
9 = 12 ثانية لكسر 8 كلمات مرور

الوقت الإجمالي : 11 دولارًا + 3 + 11 + 54 + 16 + 47 + 14 + 5 + 12 = 173 دولارًا ثانية أو دقيقتين و 13 ثانية.


تشفير كلمات المرور : 100


متوسط ​​الوقت لكلمة مرور واحدة : 173/100 دولار = 1.73 دولار ثواني.


92 سنة ← 1.73 ثانية. Nitsche لذا ، أليس كذلك؟

Source: https://habr.com/ru/post/ar420995/


All Articles