PDA

View Full Version : چرا از سیستم هش امن استفاده میکنیم!



eshpilen
جمعه 07 بهمن 1390, 20:51 عصر
دوست عزیز میدونی مشکل کجاست؟ اینکه شما بیش از حد توی رؤیا هستید! مرد حسابی وقتی هکر کل سایت دستشه و سورس کد و... رو داره، طبیعتاً الگوریتم تولید رمز رو داره و نیاز به رمزگشایی نداره! بعدش هم مگه مرض داره که بخواد هش ها رو رمزگشایی کنه و رمز اصلی رو در بیاره؟ خوب عین آدم عاقل میاد دوباره با همون الگوریتم یک رمز جدید برای کاربرها تولید میکنه. بعدش هم وقتی سورس کد رو داره، یعنی اینکه تونسته وارد کنترل پانل بشه و این هم به معنی دسترسی کامل به دیتابیس و ابزارهای موجود در کنترل پانل هست و نهایتاً میتونه تمام اطلاعات پروفایل اعضا و... رو ازطریق دیتابیس استخراج کنه. اونوقت میشه بفرمایید انگیزه هکر از اینکه بخواد رمز کاربرها رو کشف کنه چیه؟ شاید اون هم مثل شما وقت اضافه زیاد داشته باشه و بخواد بعد از کسب تمام اطلاعات لازم، برای گذران اوقات فراغتش رمز اونها رو هم کشف کنه. عزیز من باور کن هکرها هم آدمهای بیکاری نیستن. وقتی همه چیز سایت دستشونه، چهار تا رمز کاربران به هیچ دردشون نمیخوره. اصلاً آدم میاد رمز رو درمیاره که اطلاعات رو استخراج کنه. وقتی اطلاعات رو ازطریق دسترسی به دیتابیس در اختیار داره، دیگه رمز به دردش نمیخوره. حالا باز بیا و هرجا میرسی بگو این افرادی که باهام بحث میکنن بیسوادن! برو خوش باش.
علت این امر رو قبلا چندبار توضیح داده ام.
تعجب میکنم شما چطور تاحالا ندیدید.
در مطالب موجود در اینترنت هم بارها اشاره به هدف این سیستم رو خوندم.
یعنی این یک هدف اصلی این سیستم هست حداقل.

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

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

در FAQ سایت رسمی PHP (http://php.net/manual/en/faq.passwords.php) در این باره اشارهء کوتاهی کرده که فکر میکنم بقدر کافی روشن باشه:


Why should I hash passwords supplied by users of my application?
پرسش: چرا من باید پسوردهای ارائه شده توسط کاربران برنامه ام را هش کنم؟

در بخشی از پاسخ به این سوال میگه:


Without hashing, any passwords that are stored in your application's database can be stolen if the database is compromised, and then immediately used to compromise not only your application, but also the accounts of your users on other services, if they do not use unique passwords.


ترجمه: « بدون هش کردن، هر پسوردی که در دیتابیس اپلیکیشن شما ذخیره شده است میتواند درصورت نفوذ به دیتابیس شما سرقت شود، و سپس فورا برای نفوذ نه تنها به اپلیکیشن شما، بلکه همچنین اکانتهای کاربران شما بر روی دیگر سرویس ها، درصورتیکه آنها از پسوردهای یکتا استفاده نکنند، استفاده شود. »

منبع: http://php.net/manual/en/faq.passwords.php

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

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