خانه Security, آموزش های پروژه محور, امنیت, پروژه حسابداری, فیلم آموزشی ایجاد فرم لاگین امن با الگوریتم (BCrypt) ‘پروژه حسابداری’ بخش چهاردهم

ایجاد فرم لاگین امن با الگوریتم (BCrypt) ‘پروژه حسابداری’ بخش چهاردهم

درود. داده ها و اطلاعات یکی از مهمترین بخش نرم افزار و حفاظت از اطلاعات یکی از دغدغه های اصلی مدیران نرم افزار (یا وب سایت ها) می باشد. بنابراین مسئولیت برنامه نویس و طراح سیستم در این امر حیاتی بسیار بالا میره، چرا که این وظیفه بر عهده برنامه نویس است!

در همین راستا ، این بخش رو اختصاص دادیم به ایجاد فرم لاگین با امنیت بالا برای نرم افزار!

Safe Login Window Using BCrypt Algorithm Part 14

bcrypt > یک الگوریتم هش که کرکرها را بیچاره میکند!

احتمالا میدونید که md5 از دیدگاه متخصصان رمزنگاری و امنیت مدتهاست شکسته شده بحساب میاد، اما هنوز عدهء زیادی بخصوص در PHP و بخصوص برای هش کردن پسورد کاربران ازش استفاده میکنن. ضمنا الگوریتم sha1 هم تقریبا وضعیت مشابه md5 رو داره!

البته اینطور نیست که بشه این الگوریتم ها رو به این راحتی در بیشتر موارد شکست داد، ولی چون امنیت مسئله واقعا مهم و پیچیده ای است، باید به حرف متخصصان امنیت گوش کرد و استفاده از این الگوریتم ها رو در هر کاربردی کنار گذاشت.

 

خلاصه در نت جستجو کردم دنبال اینکه از چه الگوریتم و روش هشی برای پسورد کاربران استفاده کنم. خودم در فکر استفاده از sha256 یا sha512 بودم، اما به مطالب جالبی در نت برخوردم و به برنامه / الگوریتمی بنام bcrypt.

 

بطور خلاصه میتونم بگم این الگوریتم مخصوص هش کردن پسورد کاربران ساخته شده و عمدا طوری طراحی شده که سنگین و کند باشه!

 

این سنگین بودن و کندی باعث میشه کرکرها در کرک کردن پسوردهایی که با این روش هش شدن به مشکل بزرگی برخورد کنن که زندگی رو واقعا براشون سخت میکنه!

 

الگوریتم های دیگری مثل md5 و حتی sha256 از bcrypt بسیار بسیار سریعتر هستن و درواقع عمدا طوری طراحی شدن تا سرعت بالایی داشته باشن و نیز بتونن روی سخت افزارهای مخصوص انجام عملیات رمزنگاری براحتی و با سرعت بالا پیاده سازی و اجرا بشن؛ این خواص درمورد خیلی کاربردهای رمزنگاری مطلوب هستن، اما وقتی از این الگوریتم ها برای هش کردن پسورد کاربران استفاده میشه، عمدتا چون بسیاری از کاربران از پسوردهای ضعیفی استفاده میکنن، ویژگیهای نامطلوبی محسوب میشن که فقط به نفع کرکرها عمل میکنن.

 

و bcrypt نقطهء مقابل این ویژگیهاست! bcrypt باعث میشه کار کرک کردن حتی پسوردهای ضعیف خیلی مشکل تر بشه و پسوردهایی که کمی قوی تر باشن کم و بیش غیرقابل کرک شدن خواهند بود (مگر اینکه کرکر بتونه چند حدس معدود رو با موفقیت تست کنه – اما این دیگه brute-force نیست).
موضوع خیلی ساده است! برای کرک کردن هش های bcrypt نیاز به توان پردازشی بسیار بسیار بیشتری نسبت به هش های دیگر است. بنابراین کرک کردن (به روش brute-force) پسوردهای خیلی ضعیف تری در این روش غیرممکن خواهد شد که در روشهای دیگر قابل کرک هستند.

 

ضمنا توجه داشته باشید که این روش هم مثل بقیه روشها از Salt استفاده میکنه. Salt یک روش ضروری برای امن کردن تمام هش ها محسوب میشه. اما یک خوبی دیگر این برنامه اینه که خودش Salt رو بصورت خودکار تولید میکنه و Salt در رشته خروجی گنجانده میشه؛ در نتیجه شما نیازی نیست به تولید و ذخیرهء جداگانه Salt بپردازید؛ این برنامه تمام این کارها رو خودش انجام میده. شما فقط کافیه رشته خروجی از اون رو که شامل هش و Salt و یکسری مشخصات دیگه هست در دیتابیس ذخیره کنید.

 

این الگوریتم تفاوت و مزیتش در سالت نیست، در کند بودن الگوریتم هش اصلی اونه. الگوریتمش طوری هست که خیلی کنده و ضمنا میشه کندی اون رو تنظیم کرد. مثلا ۱۰ سال دیگه اگر سخت افزارها خیلی قویتر شدن میشه براحتی اون رو تنظیم کرد که بازم بقدر کافی مقاوم باشه.

 

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

ضمنا توجه داشته باشید که هدف و کاربرد این الگوریتم برای هش کردن پسورد کاربران هست و نه چیز دیگه. چون خیلی کنده!

 

البته فراموش نکنید استفاده از md5 و sha1 رو باید بطور کلی کنار گذاشت، چون این الگوریتم ها از نظر متخصصان، دیگه خصوصیاتی که یک الگوریتم هش با استحکام لازم در زمینهء رمزنگاری باید داشته باشه رو ندارن.

 

ضمنا نباید فکر کنیم استفاده از این الگوریتم به معنای اینه که خیالمون راحت بشه و مثلا هر پسورد زپرتی ای هم که انتخاب بشه مشکلی نیست! یا نباید فکر کنیم این الگوریتم میتونه کاملا جای روشهای دیگر مثل سیستم قفل کردن اکانت درصورت چندبار وارد شدن اشتباه پسورد رو بگیره.

 

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

 

/* پایان */

* مطالب فوق به نقل از وب سایت منبع ، خلاصه شده مقاله ای خوب و مفیدی در رابطه با تکنیک های رمزنگاری خصوصا الگوریتم BCrypt بود که این جلسه اون و روی نرم افزار پیاده سازی خواهیم کرد.

 

نکته ۱: برای آشنایی بیشتر با این بخش ، پیش نمایش بخش رو از پایین صفحه دریافت و مشاهده بفرمایید.

نکته ۲: برای دانلود قسمت اول این مجموعه به بخش اول پکیج پروژه محور سی شارپ ۲۰۱۵ مراجعه نمایید.

 


لینک دانلود:

دانلود پیش نمایش مجموعه پروژه محور سی شارپ بخش چهاردهم

دریافت مجموعه:

برای دریافت این مجموعه به صورت کامل کلیک کنید
پیشنهاد میکنیم
دیدگاه ها
  1. ابراهیم گفت:

    سلام اقای مهندس این اموزش رو یه جا نمیزاری دانلود کنیم

دیدگاه شما

نام

ایمیل

سایت( اختیاری )