هش کردن پسورد چیست؟
نمک زدن به پسورد چیست؟
جدول رنگینکمونی چیست؟
توی سیستمهای وب / اینترنت / سوشال مدیا و…، پسوردها عموما توی دیتابیس ذخیره میشن.
دیتابیس یکی از فیلدهای مورد علاقه منه، چند بار گفتم ازش حرف میزنیم ولی حرف نزدم هنوز… شما اگه علاقه دارین، تاکید مکرر میکنم که کتاب استاد آبراهام رو بخونین.
در این باره که این سیستمها میتونن پسورد صریح و plain شمارو داشته باشن که شکی نیست، اما یه عرفی هست، یک سیاست و یه اصل امنیتی که:
پسوردهایی که قراره توی دیتابیس ذخیره بشن، بصورت هش (هش کریپتوگرافیک- یا با آنتروپی بالا) ذخیره بشن.
این چه فایدهای داره؟
اگر روزی، هر اتفاقی برای سیستم افتاد و دیتابیس هک شد، پسورد صریح کاربرا اونجا نیست… و بجاش هشش هست، و از روی اون هش نمیشه پسورد رو بدست آورد (چون آنتروپیش بالاست – قبلا توضیح دادم)
دیتابیسها طراحی نشدن که امن باشن، طراحی شدن که بهینه و با سرعت زیاد و با هزینه کم کار کنن، از طرفی هیچ سیستمی امن نیست.
فرض کنید یکی با گونی بیاد توی دیتاسنترها و دیسکهارو بریزه توی گونی با خودش ببره🥴
به هر حال ریسک وجود داره، با رعایت کردن این عرف – ریسک لو رفتن پسورد مردم از بین میره.
برای همینه که توی اکثر سیستمها یا رمز رو براتون ریست میکنن، یا ازتون میخوان که با ایمیل برین توی یه لینک خودتون ریست کنین، چون خودشونم پسورد شمارو ندارن.
چرا هش میکنن؟ چرا رمزنگاری نمیکنن؟
چون که هش کریپتوگرافیک یه طرفه هست کلید هم نمیخواد، رمزنگاری دوطرفه هست کلید هم میخواد – خود کلیدو کجا ذخیره کنن؟
اگه لو بره همه پسوردها دیکریپت میشه.
+ اورهد و سربار محاسباتی هم داره.
هش راهکار زیرکانه و عملی خوبی هست✅
=+=+=+=+=+=+=+=+=+=+=+=+
از چه هشهایی میتونیم استفاده کنیم؟
یک هش کریپتوگرافیک – قبلا توضیح دادم، هش هایی که آنتروپی بالایی دارن. یک ذره دیتای ورودی تغییر کنه، کل خروجی هش عوض میشه …
خروجیش قابل مدلسازی و حدس و الگویابی نیست، یه حالت شبهرندوم داره.
به اینا میگن هش کریپتوگرافیک – قدیما مسیجدایجست معروف بود (MD5 نسخه 5) مثلا، اما الان دیگه بخاطر کالیژنهایی که میزنه ناامنه…
الان
SHA : Secure Hash Algorithm
امن تلقی میشه – توضیح دادم قبلا.
=+=+=+=+=+=+=+=+=+=+=+=+
حالا… تا اینجا یاد گرفتیم که برای سیستم اعتبارسنجیمون، پسورد رو هش کنیم و بعد ذخیره کنیم.
حالا فرض کنیم یکی با گونی اومد و دیسکهارو دزدید و دیتابیس لیک شد…
هکرهای خبیث و خطرناک، هش های پسوردهای متداول رو از پیش حساب کردن و همیشه توی جیبشون دارن، به محض اینکه ی دیتابیس لیک شده میبینن سریع تست میکنن که مثلا کیا هش پسوردشون
827ccb0eea8a706c4c34a16891f84e7b
هست، یهو میبینن که عه 40 درصد دیتابیس همینه…
چون این هش “12345” هست.
این میشه نوعی بروتفورس تعمیم یافته – هش پسوردهای متداول رو قبلا حساب کردن و مثلا میتونن تا 95 درصد کل پسوردهای دیتابیس رو بفهمن اصلش چی بوده….
چون مردم از پسورد متداول استفاده میکنن.
اون هکرایی که خیلی خیلی خفن هستن (هکرای بیترتبیت و بیادب و خبیث منظورمه) عموما بجای لیست هشها یا فایلش، یه جدول رنگین کمونی 🌈 دارن که عموما روی دیتابیس به شکلی مستقر شده که سرعت جستجوی هش رو خیلی زیاد میکنه و زمان رو کم میکنه.
چیز خیلی سادهایه، ما این هشهایی که حساب کردیم رو میایم با یه راهکار ریاضیاتی جوری توی یه جدول (مثلا دیتابیس) مینویسیم که با کمترین هزینه در دسترس باشن و الگوریتم جستجومون با یه بار سیک کردن بتونه رنج زیادی از هشهای موجود رو بازیابی کنه.
در موردش بخونین…
یسری ابزار هست اصلا که rainbow-table ها توش امبد شده… و استفاده میشه کرد.
فکر کنم این کالی کوچولوی من توش پر از ایناس… اگه داشت نیشون میدم:3
خلاصه با این کار گفتیم میتونن خیلی سریع 95 هشهارو کرک کنن.
پس چیکار کنیم؟؟؟؟
=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
مفهومی توی رمزنگاری هست به اسم نمک🧂😬
ما روی داده صریحمون (پسورد) قبل از اینکه هش بشه یخورده نمک (salt) میزنیم، این نمک یه دیتای رندومی هست ممکنه هر جوری ساخته شده باشه… این میتونه بچسبه به ته پسورد، یا اصلا مثل یه ادویه واقعی باهاش ایکسور بشه یا هرجوری بپاشیمش روی پسورد.
چون هشمون کریپتوگرافیک بوده، خروجی خیـــــلی تغییر بزرگی میکنه و کلا یه چیز رندوم دیگه میشه.
هکر نمیدونه من چه جور نمکی پاشیدم، چجوری پاشیدمش و چقدر پاشیدم!
جدول رنگین کمونیش دیگه کار نمیکنه:))
این میشه نمک زدن به پسورد.
توی رمزنگاری هم استفاده میشه، زمانی که ما سایز کلیدمونو استاندارد کنیم، که بدیمش به انکریپشن- مثلا AES، باید هشش کنیم، عموما بهش نمک هم میزنن و نمک رو هم بعدا کنار سایفر میذارن:)) (چرا؟ بهش فکر کنید)
منبع: https://t.me/TadavomnisT_channel