50٪ تخفیف روی تمام دوره‌ها!
پایان تخفیف تا:
مشاهده دوره‌ها
0

عملیات salting

سلام

منظور از عملیات salting در رمزنگاری چی هست

پرسیده شده در 1395/10/03 توسط

3 پاسخ

0

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

پاسخ در 1395/10/04 توسط
2

سلام دوست عزیز

فکر میکنم منظور شما salt باشه.

اگه درست گفته باشم، salt در واقع رشته ای تصادفی هست که به پسورد کاربران اضافه میشه و سپس اون پسورد به hash تبدیل میشه.

اما چرا سر و کله این سالت پیدا شد و چرا ما باید از اون استفاده کنیم؟

ببینید شما فرض کنید ما سرویسی داریم ارائه میدیم که برای استفاده از اون، مشتریان حتما باید ثبت نام کنن مثل خیلی از وبسایت های امروزی.

خب! اکثر کاربران متاسفانه دید کافی از امنیت ندارن یا اهمیتی نمیدن و پسورد های ضعیفی رو انتخاب می کنند.

حالا شما فرض کن فایل این دیتابیس در اختیار نفوذگر قرار بگیره.

کاری که نفوذگر میکنه اینه که اول نوع هش ها رو تشخیص میده مثلا میفهمه هش ها از نوع MD5 هستند.

توی قدم بعدی میاد چندین میلیون رشته و عدد تصادفی تولید میکنه و اونا رو با الگوریتم MD5 هش میکنه.

حالا نفوذگر کافیه بیاد هش های دیتابیس رو با هش هایی که ساخته مقایسه کنه. هر کدوم که با هم تطابق داشتن، String مقابل اون رو هم که Clear Text هست رو به دست اورده دیگه!

واسه اینکه احتمال موفقیت هکر ها پایین بیاد، اومدن گفتن خب ما یه الگوریتم کوچیک میذاریم تو قسمت ثبت نام سایت.

این میاد یه رشته تصادفی مثلا 10 حرفی تولید میکنه و میچسبونه به پسورد ما!

بعد این پسورد که حالا پیچیده تر شده رو به Hash تبدیل میکنیم تا به این راحتی ها نشه حدسش زد.

از طرف دیگه میان این رشته Salt که تولید شده رو داخل دیتابیس مقابل اسم اون فرد ذخیره میکنن.

دفعه بعدی که فرد وارد سایت شد و پسوردشو برای Login وارد کرد، سایت به صورت خودکار پسورد رو میگیره، Salt رو هم از دیتابیس میگیره، مجددا به هم متصلشون میکنه و در نهایت تبدیل به Hash میکنه.

حالا این Hash به دست اومده رو میاد با Hash ای که داخل دیتابیس هست مقایسه می کنه. در صورتی که برابر بودن اجازه ورود رو صادر میکنه.

حالا تو این حالت اگه دیتابیس دست نفوذگر بیفته چی میشه؟

نفوذگر Hash رو داره ، Salt رو هم داره! اما الگوریتم رو نداره.

به همین دلیل بهتره که از Hash های ترکیبی استفاده بشه. (SHA-512, MD5, ...)

گر چه امروزه با وجود این Cluster System ها و hashcat و... حدس زدن کار چندان مشکلی نیست. مثلا میشه با این سیستم ها بیش از 180 میلیارد پسورد در ثانیه با الگوریتم MD5 رو حدس زد.

یکم طولانی شد ازین بابت عذر میخوام.

امیدوارم که تونسته باشم کمکی بکنم.

پاسخ در 1395/10/03 توسط
1

سلام

خواهش میکنم.

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

به عنوان مثال شما تابعی می نویسید که با هر بار اجرا، یه رشته تصادفی 20 کارکتری متشکل از :

  • حروف کوچک
  • حروف بزرگ
  • اعداد
  • کارکتر های خاص

تولید کنه و به شما برگردونه.

خروجی این تابع رو می تونید با توابعی که کار Hash رو انجام میدن مثل SHA256 یا SHA512 یا ... به Hash تبدیل کنید.

مثلا اگر از SHA256 استفاده کنید، بعد از تبدیل رشته تصادفی تولید شده به Hash، شما 32 بایت به عنوان Salt خواهید داشت.

و می تونید این 32 بایت رو به ابتدا، انتها یا هم در ابتدا و انتهای پسورد اضافه کنید.

نکاتی که توی انتخاب رشته تصادفی یا Salt باید مورد توجه قرار بگیره :

  • به هیچ عنوان از یوزرنیم کاربران برای تولید رشته Salt استفاده نکنید. چون با این کار باز هم فرایند تولید Lookup Table ها یا Rainbow Table ها چندان دشوار نیست.
  • از یک رشته ثابت به عنوان Salt استفاده نکنید.
  • از رشته های کوتاه که قابل حدس باشند استفاده نکنید.

و در نهایت این نکته رو همواره به خاطر داشته باشید که از Hash Function های استاندارد استفاده کنید و تابع Hash رو خودتون به هیچ عنوان ننویسید. ( لااقل نه تا وقتی که علم کافی توی حیطه Cryptography به دست نیاوردین )

در ضمن برای اینکه نخواین زحمت این کارها رو بکشین، کلاس های زیادی نوشته شده.

به عنوان مثال شما می تونید از phpass توی پروژه های خودتون استفاده کنید.

این کلاس یا به گفته خودش فریم ورک، به شما توی تولید پسورد پایدارتر و ایمن تر کمک می کنه. علتش هم این هست که هم پشتیبانی خوبی از توابع مختلف داره هم اینکه عملیات salt رو خودش انجام میده.

کافیه فایل Zip رو دانلود کنید و Demo های اونو ملاحظه کنید.

موفق و پیروز باشید.

پاسخ در 1395/10/07 توسط

پاسخ شما