طبقه بندي ميزان امنيت پسوردهاي ذخيره شده كاربران درون ديتابيس:
حالت معمولي و بدون رمزگذاري (امنيتي ندارد)
رمزگذاري كردن پسورد (يك ستاره)
هش كردن پسورد (دو ستاره)
استفاده از salt (سه ستاره)
Salted Hash چيست؟
يكي از حملاتي كه در مورد پسوردهاي هش شده در ديتابيس ممكن است صورت گيرد استفاده از مجموعه اي از كلمات هش به صورت يك ديكشنري آماده و مقايسه آنها با موارد موجود است (Dictionary Attack) . براي اينكه اينگونه حملات در عمل بي اثر شوند (زمان بسيار بيشتري را نياز داشته باشند) ، اضافه كردن رشته اي اتفاقي به هر پسورد وارد شده (به آن salt نيز مي گويند) و سپس هش كردن كل مجموعه ي مقدار اتفاقي و پسورد، مي تواند صورت گيرد.
ذخيره سازي اطلاعات درون ديتابيس كاربران:
در اين حالت ساختار جدول كاربران ما چيزي شبيه به مورد زير خواهد بود:
username, char(30), primary key
salt, char(10)
password_hash, char(40)
و مثالي از داده هاي ذخيره شده پس از اعمال اين روش :
کد:
Username=Jsmith
Salt=BXZLUOZXAC
password_hash=89A4C867DE091B91BDD8097B4B32E10A1368 96C3
اعتبار سنجي كاربران در لحظه ورود به سايت:
در اين حالت الگوريتم كار به صورت زير خواهد بود:
· در ديتابيس ، نام كاربر وارد شده جستجو شده و در صورت يافت شدن ، مقادير salt و password_hash دريافت مي شود. در غيراينصورت پيغام 'كاربر يافت نشد' نمايش داده خواهد شد.
· پسوردي را كه كاربر وارد كرده است با مقدار salt موجود در ديتابيس كنار هم قرار داده و سپس hash كل مجموعه حساب مي شود.
· مقدار هش محاسبه شده در قسمت دو را با هش دريافت شده و موجود در ديتابيس (مربوط به قسمت 1) ، مقايسه مي كنيم. اگر اين دو مقدار با هم مساوي بودند كاربر مجاز به ورود مي باشد
روشهاي توليد salt و همچنين محاسبه هش:
اگر به موضوع اين مقاله علاقمند شديد به مآخذ ذكر شده مراجعه نماييد ، نمونه الگوريتم هاي مربوطه را خواهيد يافت.
مآخذ مورد استفاده:
http://www.15seconds.com/issue/000217.htm
http://msdn.microsoft.com/msdnmag/issues...rityBriefs
http://www.obviex.com/samples/EncryptionWithSalt.aspx
http://www.obviex.com/samples/Code.aspx?...&Lang=C%23
http://www.dotnetjunkies.com/tutorial/77...7FF14.dcik