ذخیره سازی رمز عبور در پایگاه داده
کرک کردن رمز عبور به “استفاده از تکنیکها و ابزارهای مختلف برای حدس زدن، تعیین یا به دست آوردن یک رمز عبور جهت دسترسی غیرمجاز به یک سیستم رایانهای و یا فایل رایانهای” گفته میشود.
گاهی کرک کردن رمز عبور به صورت مجاز و جهت بازیابی رمز عبوری که به نوعی فراموش یا گم شده استفاده میشود و گاهی اوقات مدیر سیستم با کرک کردن سعی میکند رمز عبور کاربران را تست کند. اما در اکثر مواقع کرک کردن برای سرقت رمز عبور استفاده میشود.
برخی افراد این کار را یک بازی و برخی دیگر یک جرم میدانند. اما در هر صورت هم افراد مبتدی و هم کارشناسان کامپیوتر از آن استفاده میکنند.
واقعیت همین است، افرادی هستند که به نوعی برای دستیابی به منافع شخصی رمز عبور کاربران را به سرقت میبردند و این واقعیت همیشه بوده و خواهد بود.
چرا رمز عبور من؟!
میتوان گفت متداولترین سوالی که همیشه در زمینه بحث امنیت از کاربران میشنویم این است که چرا یک هکر به دنبال رمزهای عبوری آنهاست؟ یکی از دلایل حملات هکرها جعل هویت اشخاص دیگر جهت ارسال پیامهای هرزنامه است و یا اینکه ممکن است این حمله یک گام ابتدایی در روند حرکت آنها به سمت اهداف بزرگتر باشد.
ممکن است این حمله با هدف اجرای تراکنشهای اقتصادی و کلاهبرداری یا دسترسی به یکی از سرویسهایی صورت بگیرد که شما در آن اشتراک دارید. واقعیت این است که شاید خود شما هم هرگز نتوانید دلیل مفید بودن رمز عبورتان برای دیگران را تشخیص دهید. سرقت رمز عبور یک مشکل مهم و جدی تلقی میشود. برخی وبسایتها برای مهاجمین جذابیت بیشتری دارند کرک کردن رمز عبور
کرک کردن رمز عبور که زمانی یک مهارت تخصصی به شمار میرفت، حالا با ظهور ابزارهای در دسترس همه قرار گرفته است. اما قبل از آشنایی با تکنیکهای کرک رمز عبور ، لازم است از نحوه ذخیره رمزعبور تان در یک سیستم اطلاع داشته باشید.
متن ساده، رمزنگاری و توابع فشرده ساز Hash
یک سیستم میتواند برای ذخیره رمز عبور شما از سه روش استفاده کند. هر زمان که شما رمز عبور تان را وارد میکنید، سیستم باید بتواند برای تعیین صحت رمز وارد شده توسط شما روشی داشته باشد و این امر مستلزم ذخیرهسازی رمز عبور میباشد.
-
-
-
-
- اولین – و بدیهیترین – روش، ذخیره رمز عبور به همان صورتی است که شما آن را تایپ و وارد سیستم کردید. این روش که به آن متن ساده گفته میشود، دادهها را به صورت ساده و بدون مبهم سازی، رمزنگاری یا کدگذاری ذخیره میکند. وقتی به کامپیوتر یا یک حساب شبکه لاگین میکنید، سیستم باید رمز عبوری که شما وارد کردید را با کپی که در پایگاه داده ذخیره شده مقایسه کند. اگر این دو با هم منطبق باشند، شما اجازه ورود به سیستم را خواهید داشت.
مشکل این روش این است که نمیتوانید همیشه از امنیت پایگاه داده مطمئن باشید. ممکن است برخی کاربران مجوزهای مشاهده این پایگاه داده ها را داشته باشند و به این ترتیب تمام رمزهای عبور به صورت متن ساده برای آنها قابل رویت خواهد بود.این روش خطر و ریسک بالایی هم دارد زیرا اگر هکری به پایگاه داده دسترسی پیدا کند، بلافاصله رمز عبور تمام کاربران را در اختیار خواهد گرفت. فرض کنید که هتلها مثل گذشته به جای کارت مغناطیسی کلید اتاق را در اختیار شما قرار میدادند و هنگام ورود، کارمندان پذیرش هتل کلید شما را از روی بردی که کلید تمام اتاقها روی آن قرار داشت، برمیداشتند و در اختیار شما قرار میدادند.
اما باز هم چند کلید یدکی از اتاق شما روی این برد وجود داشت. به عبارت دیگر، هر کسی که به میز پذیرش دسترسی داشت میتوانست کلید اتاق شما را به دست بیاورد. این رویکرد تقریبا شبیه ذخیره کردن رمزهای عبور به صورت متن ساده است و با کمترین تلاشی در دسترس دیگران قرار میگیرد.
هر چند روش متن ساده، کمترین سطح امنیت را دارد اما هنوز هم بسیاری از برنامههای کاربردی برای محافظت از رمزهای عبور مهم و حساس از این روش استفاده میکنند. هنوز هم بسیاری از توسعه دهندگان نرمافزار در زمینه امنیت به اندازه کافی آموزش نمیبینند و به روش متن ساده متکی هستند. -
روش بعدی، رمزنگاری رمزهای عبور قبل از ذخیره کردن آنها روی پایگاه داده است. در روش رمزنگاری، متن ساده با یک کلید متقارن رمز میشود، که تنها با استفاده از همان کلید قابل بازیابی است. به عبارت دیگر، رمزنگاری یعنی محافظت کردن یک رمز عبور توسط یک رمز عبور دیگر.
باز هم هر کسی که رمز عبور اصلی را داشته باشد، به کل پایگاه داده دسترسی خواهد داشت و در نتیجه این روش نسبت به روش متن ساده کمی امنتر است.با توجه به مثال کلیدهای هتل، روش رمزنگاری مثل این است که تمام کلیدهای هتل در یک جعبه قفل دار نگهداری شوند و تنها کارمندان هتل یک کپی از کلید اصلی داشته باشند. این روش در صورتی که به کارمندان اعتماد داشته باشیم، تا حدودی امنتر از روش اول است.
رمزنگاری رمز عبور برای بسیاری از کارها قابل قبول نیست اما قطعاً از روش متن ساده بهتر است. گاهی اوقات یک برنامه کاربردی باید یک رمز عبور را ذخیره کرده و برای استفادههای بعدی متن ساده را بازیابی کند و راهی برای دور زدن این مکانیزم وجود ندارد.به عنوان مثال، سیستم عامل ویندوز رمزهای عبوری مختلف را رمزنگاری و ذخیره میکند تا بتواند سرویسهای سیستم را راه اندازی و اجرا کرده و به منابع مختلف متصل شود. بسیاری اوقات علائمی از این موضوع را در هنگام باز شدن یک پاپآپ که رمز عبور شما از قبل در آن وارد شده و با کاراکتر ‘*’ نمایش داده میشود، مشاهده کردهاید.
نکته: وقتی رمز عبور تان را گم کرده و باید آن را بازیابی کنید، میتوانید متوجه شوید که آیا سیستم رمز عبور شما را به صورت متن ساده ذخیره میکند یا آن را رمزنگاری کرده است. اگر پس از طی کردن فرایند بازیابی رمز، سیستم رمز عبور اصلی را در اختیار شما قرار داد، پس میتوان گفت رمز عبور شما به صورتی ذخیره شده که هر کس دیگری میتواند آن را بازیابی کند.
متاسفانه، در صورتی که برنامه نویسان آموزشهای امنیتی لازم را ندیده باشند، روش رمزنگاری هم دچار مخاطراتی خواهد شد. در بسیاری از مواقع، برنامه نویسان سعی میکنند متدهای رمزنگاری جدیدی را ابداع کنند یا به جای استفاده از الگوریتمهای رمزنگاری امنی که کارآمدی آنها طی زمان ثابت شده (مانند AES)، از روشهایی استفاده میکنند که ناکارآمدی آنها اثبات شده است. -
یکی دیگر از راههای ذخیره کردن رمز عبور که به میزان زیادی مورد پذیرش قرار گرفته، استفاده از الگوریتمهای فشرده ساز یا Hash برای رمز عبور است. Hash، تابعی یک طرفه است که از متن ورودی یک متن پیچیده تولید می نماید، شایان ذکر است تابع یک طرفه تابعی است که از خروجی نمیتوان به ورودی رسید.
الگوریتمهای Hash فرمولی یک طرفه دارند زیرا منطقی نیست که بتوان رمز عبور اصلی را از کد Hash تولید شده به دست آورد.
سیستم برای بررسی رمز عبور شما، رمز عبوری که هنگام ورود تایپ میکنید را دریافت کرده، الگوریتم Hash را روی آن اجرا میکند و سپس خروجی را با دادههای ذخیره شده در پایگاه داده Hash مقایسه میکند. اگر تطبیق صورت بگیرد، سیستم متوجه میشود که دو رمز عبور یکسان بودهاند که منجر به تولید یک Hash مشابه شدهاند.فرض کنید در یکی از بانکهای محل زندگی خودتان یک صندوق امانات بانکی اجاره میکنید.
شما مهمترین و حساسترین داراییهایتان را در این صندوق قرار میدهید و بانک دو کلید در اختیار شما قرار میدهد (شکل زیر). نکته مهمی که باید به خاطر داشته باشید این است که تنها دو کلید برای صندوق شما وجود دارد.
اگر هر دوی این کلیدها را گم کنید، بانک شما را ملزم میکند که از یک کلیدساز درخواست کنید قفل جعبه شما را باز کند. اگر کلیدتان را گم کنید و رئیس بانک به شما بگوید که بانک میتواند یک کپی دیگر از کلید در اختیار شما قرار دهد، باید مراقب باشید چون بانک یک کپی یدکی از کلید شما در اختیار دارد.
- اولین – و بدیهیترین – روش، ذخیره رمز عبور به همان صورتی است که شما آن را تایپ و وارد سیستم کردید. این روش که به آن متن ساده گفته میشود، دادهها را به صورت ساده و بدون مبهم سازی، رمزنگاری یا کدگذاری ذخیره میکند. وقتی به کامپیوتر یا یک حساب شبکه لاگین میکنید، سیستم باید رمز عبوری که شما وارد کردید را با کپی که در پایگاه داده ذخیره شده مقایسه کند. اگر این دو با هم منطبق باشند، شما اجازه ورود به سیستم را خواهید داشت.
Hash کردن رمز عبور شبیه به قفل است. نمیتوان به راحتی از خود قفل جهت ساختن یک کلید جدید استفاده کرد. بنابراین میتوانید اطمینان خاطر داشته باشید که کسی نمیتواند بدون دسترسی به خود کلید، قفل را باز کند. اگر در سیستمی از Hash رمز عبور استفاده شود، میتوانید احساس امنیت داشته باشید زیرا رمز عبور شما به صورت مستقیم افشا نمیشود. این روش هم کاملاً امن نیست (این روش خطرهایی با خود به همراه دارد که در ادامه درباره آنها صحبت خواهیم کرد) اما ایمنترین روش مورد استفاده است.
-
-
-