PDA

View Full Version : از hashing و کد هاش کی اطلاعات کافی دارد



rezafars
چهارشنبه 23 خرداد 1386, 16:06 عصر
امنیت پسورد با hashing در ضمن درباره کد هاش اطلاع می خوام

mehdi.mousavi
جمعه 22 تیر 1386, 01:44 صبح
امنیت پسورد با hashing در ضمن درباره کد هاش اطلاع می خوام


سلام.
تابعی رو در ریاضی در نظر بگیرید که ویژگیهای زیر رو داشته باشه:

1. همیشه بازای یک ورودی مشخص، یک خروجی ثابت تولید کنه.
2. از روی خروجی نشه به ورودی تابع رسید.
3. بازای ورودیهای متفاوت، خروجیهای متفاوت با توزیع تصادفی تولید کنه.

به چنین تابعی hash function میگن. در نتیجه وقتیکه شما یک ورودی به چنین تابعی بدید، 100% مطمئن خواهید بود که هیچکس نمیتونه به هیچ طریقی از روی مقادیر hash شده (خروجی تابع) به مقادیر ورودی (مثلا کلمه عبور کد شده به این طریق) برسه.

اما تصور کنید که شما قصد دارید تا کلمات عبور مجموعه ای کاربر رو بصورت hash در بانک ذخیره کنید. فرض کنید دو کاربر متفاوت بدون اینکه اطلاع داشته باشن، کلمه عبور یکسانی انتخاب میکنن. مثلا هر دو کلمه love رو بعنوان کلمه عبور انتخاب میکنن. به این ترتیب وقتی کلمه مزبور به تابع hash داده بشه، خروجی یکسان تولید میکنه، بعنوان مثال : WE_#$KL

به این ترتیب در جدول کاربران در بانک دو row متفاوت داریم که هر دو حاوی رشته
WE_#$KL هستند. حالا فرض می کنیم که به هر دلیلی بانک شما در معرض Cracker ها قرار گرفته (اونها رو با Hacker ها اشتباه نگیرید). اونها بلافاصله آماری از بانک شما میگیرن و متوجه میشن که تکرار رشته فوق بیش از بقیه هست.... با مقایسه ساده ای اونها شروع به انجام عمل brute force میکنن، چون میدونن که بیشترین کلمات عبور چگونه انتخاب و استفاده می شن.

در نتیجه برای اینکه جلوی چنین چیزی گرفته بشه، باید یک رشته تصادفی از کاراکتر ها رو به کلمه عبور اضافه کنید، بعد اونو hash کنید. به این ترتیب هیچوقت دو hash تولید شده در صورت تکراری بودن کلمه عبور دو کاربر متفاوت، تکراری نخواهد بود. به این مقدار Salt Value میگن.

توضیح بیشتر این مساله در حال حاضر از حوصله این بحث خارجه، اما اگر بازهم سوالی در مورد امنیت سیستمها داشتید، من در خدمتم.