محمد حسن پزشکیان
عاشق امنیت و نفوذ ، رد تیم و دوستدار بزن بکش :)

تفاوت Pepper و Salt در رمزنگاری چیست؟

در این مقاله میخوایم ببینیم pepper و salt در رمزنگاری چی هستن و تفاوت های بینشونو بررسی کنیم

دوره های شبکه، برنامه نویسی، مجازی سازی، امنیت، نفوذ و ... با برترین های ایران

بریم توی اشپزخونه و با فلفل و نمک یکم رمزنگاری کنیم 😁

در وهله اول این پیشنیاز رو بگم که پسورد ها باید به صورت هش ذخیره بشن که وقتی مهاجم به سیستم دسترسی گرفت نتونه پسورد رو راحت بخونه و بفهمه ، حالا یه مشکلی داریم ، اگر پسورد دوتا کاربر ها یکسان باشه و یه مهاجم بخواد هش هارو بفهمه و حمله کنه ، موقع Brute Force یکی از پسورد هارو بتونه کشف کنه، پسوردی که کشف شده برای دوتا کاربر هست و انگار دوتا پسورد دوتا کاربر درامده

تفاوت Pepper و Salt در رمزنگاری چیست؟

برای مثال به این پسورد ها دقت کنید  ، مثلا پسورد دوتا از کاربر ها اناناسه (Pineapple) و اون هش اگر موقع حمله در بیاد ، وقتی میبینن عه این هش دوبار تکرار شده میفهمن که دوتا پسورد یکسان بوده و انگار دوتا کاربر رو هک کردن

برای حل این مشکل Pepper اختراع شد ، Pepper یک مقداریه که در Application Code تعریف میشه و ثابته و بعد پسورد وارد میشه و موقع هش گرفتن از Pepper بعلاوه اون پسورد هش گرفته میشه

تفاوت Pepper و Salt در رمزنگاری چیست؟

برای مثال ما اینجا عبارت "PT0s!NsO9" رو به عنوان Pepper داریم ، این عبارت مقدار ثابتیه و فایده ای که داره اینه که مهاجم وقتی میبینه که عه یه هش دوبار تکرار شده و میخواد با حملات Brute Force مقدار اون هشو در بیاره تا عبارت Pepper رو نداشته باشه نمیتونه ، یعنی مهاجم حتما باید عبارت Pepper رو داشته باشه تا با اون عبارت و پسورد بیاد حمله Brute Force رو انجام بده تا هش گرفته شده مطابق چیزی که میبینید در بیاد

چون عبارت Pepper یک عبارت ثابتیه ، اگر کشف بشه امنیت به خطر میفته ، پس چیکار کنیم ؟ میاییم و برای هر کاربر یه مقدار تصادفی انتخاب میکنیم که با اون هش گرفته بشه و این عبارت چون رندوم و تصادفی انتخاب میشه و یکسان نیست و از الگوی خاصی پیروی نمیکنه ، حدث زدن و پیدا کردنش غیر ممکنه ، اینجاست که Salt میاد وسط :

تفاوت Pepper و Salt در رمزنگاری چیست؟

به عبارات بالا دقت کنید ، دوتا کاربر پسورد یکسان که عبارت "Pineapple" هست رو وارد کردن ، عبارت Pepper در پسوند امده و یه مقدار 12 کاراکتری تحت عنوان Salt وارد شده که برای هر کاربر متفاوته و رندومه ، حالا وقتی از Password + Pepper + Salt هش گرفته بشه احتمال کرک کردنش حتی ممکنه به 0 برسه (منظور اینه واسه کرک این عبارت باید 100 سال زمان صرف بشه)

  1.  عبارتی که تحت عنوان Salt ساخته میشه کاملا رندوم و تصادفیه و حتی اگر یه کاربر بخواد پسورد خودشو تغییر بده باز عبارت Salt جدیدی براش تولید میشه و هیچ Salt ای یکسان نیست و الگریتم ساختش اصلا معلوم نیست
  2.  اگر از عبارت Salt و Pepper استفاده بشه ، ما میتونیم اطمینان حاصل کنیم که پسورد اگر زیر 8 کارکترم باشه و از عبارات کوچیک بزرگ، سیمبول ، یا عدد هم داخلش استفاده نشده باشه ، حتما توی Salt و Pepper این عبارات تکرار شده و چون طول Salt و Pepper ای که ما استفاده کردیم 21 کاراکتره ، بعلاوه 8 کاراکتر پسورد میشه 29 کاراکتر و این عبارت پیدا کردنش غیر ممکنه ، پس استفاده از Salt و Pepper این تضمین رو میده که حداقل طول پسورد ما به اندازه مقدار Salt و Pepper و 8 رقم پسوده و کوتاه نیست و اگر پسورد مقادیر ساده ای داشته باشه وقتی با Pepper و  Salt ترکیب میشه یه پسورد محکمی میشه که قابل پیشبینی و حدس نیست!
  3. اگر ما از Salt استفاده کنیم حتی اگر پسورد 1000 تا کاربر هم مثل هم باشن باز مقدار هش متفاوت میشه

پس به صورت خلاصه :

  • Pepper : یک مقداریه که ثابته که در Application Code هست و این مقدار بعلاوه پسورد هش گرفته میشه که تا حد خیلی زیادی در برابر حملات Rainbow هش رو مقاوم میکنه
  • Salt : یک مقدار رندوم و تصادفیه که توسط Application ساخته میشه و شامل حروف بزرگ و کوچیک ، عدد و سیمبوله که بعد Pepper معمولا میاد و هش رو دربرابر حملاتی که میشه مقاوم میکنه



محمد حسن پزشکیان
محمد حسن پزشکیان

عاشق امنیت و نفوذ ، رد تیم و دوستدار بزن بکش :)

کارشناس تست نفوذ سنجی ، علاقه مند به امنیت تهاجمی و رد تیمینگ | عضو انجمن بین المللی ورزش های رزمی کشور آلمان و دارای احکام بین المللی و داخلی کمربند مشکی در سبک های کیوکوشین ، هاپکیدو ، کیک بوکسینگ و چند تام قهرمانی کشوری

نظرات