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

1394-03-25

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

الگوریتم 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 رو باید بطور کلی کنار گذاشت، چون این الگوریتم ها از نظر متخصصان، دیگه خصوصیاتی که یک الگوریتم هش با استحکام لازم در زمینهء رمزنگاری باید داشته باشه رو ندارن.

 

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

 

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

در تماس باشید

درباره ما

لاراوب ارایه دهنده وب سرویس های ارز ، سکه ، طلا به صورت لحظه ای و وب سرویس قیمت 177 خودروی داخلی وخارجی قیمت بازار و کارخانه وب سرویس انس طلا ، مثقال طلا، گرم طلای ۱۸ وب سرویس قیمت موبایل وب سرویس ثبت احوال بررسی کد ملی و انواع وب سرویس ها می باشد .

وب سرویس های ارز ، سکه ، طلا به صورت لحظه ای و وب سرویس قیمت خودروی داخلی وخارجی ،وب سرویس انس طلا ، مثقال طلا، گرم طلای ۱۸ ، مثقال طلا ، شاخص بورس ، نفت سبک، نفت برنت، نفت اپک، بنزین (گالن)،وب سرویس لحظه ای قیمت موبایل ، تبلت سامسونگ ، اپل ، گازوئیل، انس پالادیوم