بخشی از مقاله
چکیده
در این مقاله، دو روش برای کاهش زمان حملهی جستجوی فراگیر مورد بررسی قرار گرفته است. روش اول، طراحی و استفاده از یک سیستم رایانش توزیع شده است که موجب افزایش توان پردازشی برای اجرای حمله خواهد شد. روش دوم، کاهش فضای حالت حمله با توجه به سیاست امنیتی اعمال شده در ساخت کلمهی عبور میباشد. ارزیابی معماری طراحی شده برای سیستم رایانش توزیع شده، نشان داد که توان پردازشی با افزودن تعداد کلاینتها به صورت تقریبا خطی افزایش می یابد.
همچنین، اگر سیاست امنیتی اعمال شده در ساخت کلمهی عبور، هنگام حمله مد نظر قرار بگیرد، فضای حالت و در نتیجه زمان حمله کاهش می یابد. میزان کاهش زمان حمله برای کلمات عبوری با طول 5 کاراکتر حدود % 84 است. البته با افزایش طول کلمهی عبور، این درصد کمتر می شود؛ مثلا برای کلمهی عبوری به طول 12 کاراکتر، میزان کاهش زمان حمله حدود %30 خواهد بود.
-1 مقدمه
یکی از مرسومترین روشها برای حفظ امنیت سیستمهای کامپیوتری، استفاده از کلمهی عبور است. برای نگهداری کلمهی عبور از توابع هش رمزنگارانه استفاده میشود
این توابع یک طرفه هستند، یعنی نمیتوان هش تولید شده توسط این توابع را - به کمک محاسبات ریاضی - به کلمهی عبور اولیه تبدیل کرد [2]؛ بنابراین، تنها راه برای بدست آوردن - کرک1 کردن - یک کلمهی عبور با استفاده از هش موجود، ایجاد و هش کردن حالتهای ممکن برای کلمهی عبور، و مقایسه هش حاصل با هش موجود است
در برخی موارد، مانند جرم شناسی3، لازم است که کلمهی عبور مرتبط با یک هش شناسایی شود. از آنجا که حملهی جستجوی فراگیر زمانگیر است، بنابراین بررسی راه کارهای ممکن برای کاهش زمان حمله ضرورت پیدا میکند.
تا کنون مطالعاتی نیز برای کاهش زمان حمله انجام شده است که در ادامه به برخی از آنها اشاره میشود.
در [3]، Murakami و همکاران ابزار - John the Ripper - JtR را تغییر دادند تا بتواند از پردازنده گرافیکی4 برای کرک استفاده کند، و توانستند زمان حمله را حدود %97 نسبت به نسخه قبلی افزایش دهند. اما پیاده سازی آنها فقط از الگوریتم MD5 پشتیبانی میکرد و همچنین تنها قادر به اجرای حملههایی از نوع فرهنگ لغت5 بود و قابلیت اجرای حملهی جستجوی فراگیر را نداشت.
Zonenberg در [4] یک سیستم کلاینت - سروری برای حملهی جستجوی فراگیر توزیع شده بر روی الگوریتم MD5 ارائه داد. سرور این سیستم به زبان C++ نوشته شد و به ازای هر کلاینت نیاز به ایجاد و نگهداری یک نخ در سرور بود. بنابراین با افزایش تعداد کلاینتها، منابع سخت افزاری سرور نیز نیاز به افزایش خواهد داشت.
[5] Elcomsoft یک نرم افزار برای کرک کلمهی عبور است که قابلیت استفاده از پردازنده گرافیکی و همچین بهره گیری از رایانش توزیع شده را دارد. اما این نرم افزار رایگان و متن باز6 نیست، بنابراین امکان اضافه کردن الگوریتم هش دلخواه به سیستم وجود ندارد. همچنین این نرم افزار فقط قابلیت اجرای بر روی سیستم عامل ویندوز را دارد.
در این مقاله دو روش برای کاهش زمان حملهی جستجوی فراگیر مورد بررسی قرار میگیرد. روش اول، طراحی و پیاده سازی یک سیستم رایانش توزیع شده برای اجرای حمله است. طراحی این سیستم به گونهای است که امکان افزودن الگوریتم و مولد کلمهی دلخواه به راحتی امکان پذیر میباشد. روش دوم، کاهش فضای حالت کرک با توجه به سیاست امنیتی اعمال شده برای ساخت کلمهی عبور است.
ارزیابیهای به عمل آمده نشان داد که توان پردازشی در سیستم رایانش توزیع شده، با افزایش تعداد کلاینتها به صورت تقریبا خطی زیاد خواهد شد. همچنین کاهش فضای حالت با توجه به سیاست امنیتی، برای کلمههای عبوری به طول 5 کاراکتر حدود %84 بود و با افزایش طول کلمهی عبور این درصد کاهش پیدا میکند و برای کلمههای عبوری به طول 12 کاراکتر، کاهش فضای حالت حدود %30 خواهد بود.
در ادامه، روشهای ذکر شده تشریح میشود و در آخر نتایج ارزیابی این روشها بیان خواهد شد.
-2 معماری سیستم رایانش توزیع شده
سیستم رایانش توزیع شده شامل یک سرور و کلاینتهایی است که از طریق شبکه محلی یا اینترنت به سرور متصل میشوند. کرک جدید و مشخصات آن در سرور تعریف میشود. پس از اتصال هر کلاینت به سرور، با توجه به توان پردازشی آن کلاینت، بخشی از کرک - که در این مقاله به آن وظیفه گفته میشود - به کلاینت اختصاص داده میشود. سپس کلاینت آن وظیفه را انجام داده و در اتصال بعدی نتایج را به سرور ارسال میکند.
-1-2 تخصیص وظایف به کلاینتها
برای توزیع یک کرک بین کلاینتها، باید فضای حالت آن کرک بین کلاینتها تقسیم شود. بنابراین هر کلاینت بخشی از فضای حالت ممکن برای کلمهی عبور را در یک وظیفه مورد بررسی قرار میدهد و نتیجهی بررسی را به سرور اطلاع میدهد. فرآیند تخصیص وظیفه به کلاینتها آنقدر ادامه پیدا میکند تا کلمهی عبور مورد نظر کرک شود و یا کل فضای حالت مورد بررسی قرار گیرد.
یک راه برای تخصیص فضای حالت این است که برای هر کرک، کل فضای حالت در سرور ایجاد و ذخیره شود و سپس بخشی از آن به کلاینت اختصاص یابد. از معایب این روش این است که ایجاد کرک در سرور زمانبر خواهد بود و به فضای ذخیره سازی زیادی در سرور نیاز است. همچنین تخصیص وظیفه به کلاینت زمان و پهنای باند زیادی را مصرف میکند.
یک روش کاراتر برای تخصیص وظیفه به این صورت است که هنگام ایجاد کرک در سرور، فقط اندازه فضای حالت - تعداد کلمات قابل ایجاد - محاسبه شده و در سرور ذخیره شود. سپس هنگام تخصیص وظیفه به کلاینت، یک شمارهی ترتیب برای کلمهی آغازین و تعداد کلمات لازم برای تولید، به اطلاع کلاینت خواهند رسید. کلاینت با توجه به نقطهی آغازین، اولین کلمه را تولید کرده و به تعداد لازم، تولید کلمات را ادامه میدهد. برای عملی شدن این روش، لازم است که همه کلاینتها کلمات را با ترتیب یکسانی تولید کرده و همچنین قادر باشند با اطلاع از شماره ترتیب یک کلمه در لیست کلمات - فضای حالت - ، بتوانند کلمهی مورد نظر را تولید کنند.
به این ترتیب برای تخصیص اولین وظیفه به یک کلاینت، شماره اولین کلمه از فضای حالت به عنوان کلمهی آغازین و تعداد کلماتی که - با توجه به توان پردازشی کلاینت - باید تولید شوند به کلاینت داده میشوند. در تخصیص وظیفهی بعدی نیز شماره کلمهی آغازین بعدی - با توجه به تعداد کلمات تخصیص یافته از فضای حالت - و تعداد کلمات مورد نیاز به کلاینت داده میشوند. این روند تا تخصیص کل فضای حالت و یا اتمام کار کرک ادامه مییابد.
با این روش همه کلاینتهای موجود در سیستم در فواصل زمانی مشخص به سرور متصل شده و وظیفهی خود را دریافت کرده و انجام میدهند. پس از اتمام هر وظیفه، نتیجهی آن به سرور ارسال شده و در صورت وجود وظیفهی جدید در سرور، آن وظیفه به کلاینت تخصیص داده میشود. لازم به ذکر است که اندازهی هر وظیفه به توجه به توان پردازشیکلاینت، به گونهای انتخاب میشود که برای انجام آن در کلاینت به حدود 3 دقیقه زمان نیاز باشد.
-2-2 اجرای وظیفه در هر کلاینت
برای افزایش انعطاف پذیری در طراحی کلاینت، میتوان اجرای وظیفه یا در واقع حملهی جستجوی فراگیر در کلاینت را به دو بخش مجزا تقسیم کرد:
-1 تولید کلمات
-2 بررسی کلمات تولید شده بر این اساس، کلاینت شامل دو ماژول مستقل است. ماژول مولد کلمات که وظیفه تولید کلمات با توجه به اطلاعات دریافتی از سرور را برعهده دارد. سپس کلمات تولید شده - از طریق فایل یا ورودی استاندارد - ، به ماژول بررسی کلمه انتقال داده میشوند.
به کمک ماژول مولد کلمات، کلاینت قادر خواهد بود که وظیفهی دریافت شده از سرور را به درستی پردازش کرده و کلمات مورد نظر را تولید کند. همچنین ترتیب یکسان تولید کلمات بین همهی کلاینتها، توسط پیاده سازی یکسان این ماژول تضمین میشود.
ماژول بررسی کلمات نیز باید بتواند کلمات را از ورودی استاندارد یا فایل دریافت کرده و با توجه به الگوریتم هش تعریف شده، هش آن کلمات را با هش مورد نظر مقایسه کند؛ و در صورت برابر بودن هشها - کرک شدن هش - ، نتیجه را در جای مشخص شده ذخیره نماید تا توسط هستهی کلاینت به سرور ارسال شود.
با این طراحی، برای افزودن الگوریتم هش دلخواه به سیستم رایانش توزیع شده، فقط کافی است که ماژول بررسی کلمات در کلاینتها پیاده سازی شود. البته با توجه به نیازمندی این ماژول، میتوان بسیاری از نرم افزارهای کرک موجود را نیز جایگزین این ماژول کرد و به راحتی از آنها در سیستم رایانش توزیع شده استفاده نمود. برای این کار فقط کافی است که نرم افزار مورد نظر قابلیت خواندن کلمات کاندید را از ورودی استاندارد یا فایل داشته باشد و بتواند نتیجهی کرک را در محل تعیین شده قرار دهد. البته اکثر نرم افزارهای کرک، این قابلیتها را دارند و میتوان با تغییرات بسیار کم از آنها در سیستم رایانش توزیع شده بهره برد.
علاوه بر ماژولهای بیان شده، کلاینت شامل یک هستهی مرکزی نیز است که وظیفهی ارتباط با سرور - برای دریافت وظیفه از سرور و ارسال نتیجهی یک وظیفه به سرور - را بر عهده دارد. وظیفهی دیگر هستهی مرکزی، فراخوانی ماژولهای کلاینت با پارامترهای مناسب برای اجرای یک وظیفه میباشد.
-3 کاهش فضای حالت
کلماتی که در یک حملهی جستجوی فراگیر ایجاد و بررسی میشوند، فضای حالت حمله را تشکیل میدهند. اندازهی فضای حالت، به طول کلمات و کاراکترهای مجاز برای ساخت آنها بستگی دارد. در یک حملهی جستجوی فراگیر همهی کلمات ممکن ایجاد شده و مورد بررسی قرار میگیرند.
اما با توجه به سیاست امنیتی که در برخی سیستمها برای ساخت کلمهی عبور استفاده میشود، همهی کلمات قابل ایجاد در کرک، منطبق با سیاست امنیتی نخواهند بود. بنابراین هنگام کرک کردن چنین کلمه های عبوری، میتوان از تولید کلماتی که منطبق با سیاست امنیتی نیستند اجتناب کرد و در نتیجه موجب کاهش زمان حمله شد.
سیاست امنیتی که در این مقاله مورد بررسی قرار گرفته است، سیاستی است که در اغلب نرم افزارها و سایتهای اینترنتی مورد استفاده قرار میگیرد. بر طبق این سیاست امنیتی، کلمهی عبور باید دارای شرایط زیر باشد:
1. شامل حداقل یک کاراکتر بزرگ لاتین - A - Z -
2. شامل حداقل یک کاراکتر کوچک لاتین - a - z -
3. شامل حداقل یک عدد - 0 - 9 -
4. شامل حداقل یک کاراکتر خاص - ... $@#- -
براساس این سیاست امنیتی، همهی کلمات قابل ایجاد معتبر نیستند و در نتیجه میتواند هنگام حملهی جستجوی فراگیر از ایجاد آنها اجتناب کرد. مثلا برخی از کلمات نامعتبر عبارتند از:
· xyz123 - عدم وجود کاراکتر بزرگ لاتین و کاراکتر خاص -
· Nj23kJh - عدم وجود کاراکتر خاص -
· 34DH@#$J - عدم وجود کاراکتر کوچک لاتین -
· ...
-1-3 بررسی میزان کاهش فضای حالت
تعداد کل کلمات قابل ایجاد - T - ، به طول N، با استفاده از C کاراکتر مجاز، به کمک جایگشتهای با تکرار [6]، از طریق فرمول - 1 - محاسبه میشود:
برای مثال، با توجه به فرمول - 1 - ، تعداد کل کلمات قابل ایجاد به طول 5 کاراکتر - N = 5 - با استفاده از کل کاراکترهای قابل چاپ C = - ASCII - 95 برابر خواهد بود با:
T = 955 = 7,737,809, 375
اما اگر برای ساخت کلمهی عبور، سیاست امنیتی مورد بررسی در این مقاله اعمال شود، تعداد کلمات قابل ایجاد، به کمک اصل شمول و عدم شمول [7 , 8]، از طریق فرمول - 2 - قابل محاسبه است:
- 2 - که شرح حروف بکار رفته در آن عبارتند از:
:P تعداد کلمات قابل ایجاد با توجه به سیاست امنیتی :D تعداد کاراکترهای عددی
:U تعداد حروف بزرگ
:L تعداد حروف کوچک :S تعداد کاراکترهای خاص
:A تعداد کل کاراکترها - D + U + L + S - :N طول کلمهی عبور
به عنوان مثال، با استفاده از فرمول - 2 - میتوان همهی کلمات 5 کاراکتری - N = 5 - که منطبق با سیاست امنیتی هستند را محاسبه نمود