تحلیل ۲ میلیون گذرواژه در R، بخش دوم

در قسمت اول این پست، یک فایل متنی حاوی دو میلیون پسورد را در R وارد کردیم و نشان دادیک که داخل آن چه خبر است، پسوردها عموما از چه چیزهایی تشکیل شده‌اند و یکی دو تا نمودار درباره‌ی ترکیب پسوردها رسم کردیم، حالا نوبت این رسیده که قدرت این پسوردها را بسنجیم. تحلیل اصلی که روی گیت‌هاب و به زبان پایتون انجام شده بود، روش سنجش قدرت پسورد را از اینجا  گرفته و کمی تغییر داده بود تا به قوانین زیر برسد:

اضافات:

  • تعداد کاراکترها: طول * ۴
  • تعداد حروف بزرگ: طول * ۳
  • تعداد حروف کوچک: طول * ۳
  • تعداد ارقام: طول * ۲.۵
  • کاراکترهای ویژه: طول * ۴
  • ترکیبی از دو مورد بالا: طول
  • ترکیبی از سه مورد بالا: طول * ۱.۵
  • ترکیبی از هر چهار مورد: طول * ۲

کسورات:

  • فقط حروف: -طول
  • فقط اعداد: -طول
  • فقط کاراکترهای ویژه: -طول
  • کاراکتر تکراری: -طول

ما هم همین داستان را در قالب یک تابع در R پیاده می‌کنیم:

الان یک تابع داریم که یک پسورد را از ما می‌گیرد، کمی محاسبات روی تعداد و نوع کاراکترهای آن انجام می‌دهد و یک عدد به عنوان قدرت پسورد تحویل می‌دهد. قرار است این تابع را روی ۲ میلیون عضو یک بردار اجرا کنیم، اولین چیزی که وارد ذهن می‌شود استفاده از حلقه for است اما جالب است بدانید به دلیل پشتیبانی از بردار، ماتریس و ساختارهای داده در ‌R، در بسیاری از مواقع نیازی به استفاده از حلقه و ساختارهای کنترلی نداریم و به جای آن می‌توانیم از خانواده‌ی توابع apply استفاده کنیم.این توایع، یک تابع(که می‌تواند تابع نوشته شده توسط خودتان یا یکی از توابع R) را از شما می‌گیرد و آن را روی جهتی که شما تعیین می‌کنید( مثلا در طول بردار، در طول ستون‌ها یا ردیف‌های ماتریس) اجرا می‌کند. در اینجا از تابع sapply از این خانواده استفاده می‌کنیم و آن را به جدولی که در پست قبلی ساخته بودیم متصل می‌کنیم:

این دستور خیلی طول می‌کشد، دلیلش هم این است که R به طور پیشفرض، از پردازش‌های موازی و چندهسته‌ای استفاده نمی‌کند. برای قدم آخر این تحلیل، پسوردها را در پنج دسته شامل خیلی ضعیف، ضعیف، متوسط، قوی و خیلی قوی دخیره می‌کنیم:

و با رسم یک نمودار میله‌ای فراوانی به کارمان پایان می‌دهیم:

rplot05

نتیجه‌ای که از این پست و قسمت قبلی آن می‌توان گرفت این است که بیشتر پسوردها، طبق قوانین و روابطی که برای محاسبه‌ی قدرت پسورد استفاده می‌شود ( و ما از نسخه بسیار ساده‌ی آنها در این تحیلی استفاده نمودیم) ضعیف محسوب می‌شوند. البته این روابط در نهایت فقط یه عدد تحویل می‌دهند و این کاربر است که با انتخاب هوشمندانه، دقت به موارد امنیتی و تعویض دوره‌ای قدرت پسورد خود را تعیین می‌کنند.

پی‌نوشت: همانطور که در اول پست قبلی هم دکر شد، این تحلیل متعلق به بنده نیست و از یک تحلیل به زبان پایتون روی گیت‌هاب نوشته شده است. هدف این دو پست را می‌ةوان نشان دادن این موضوع که R و پایتون می‌توانند در مواردی مشابه استفاده شوند دانست.

4 Comments

    1. میشه مثلا نشون داد که چه درصدی از کاربرها از روندهایی مثل سال تولد یا abcd یا 1234 یا qwer­ty یا امثالهم استفاده می‌کنن، بیشتر از این نیاز به دسترسی کامل به دیتابیس یک سایت یا لو رفتن یک دیتاست بزرگتر و کاملتر هست که اتفاقهایین که نیوفتادنشون کلا بهتره 🙂

      پاسخ دادن

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *