تفاوت بین Hashing (هش کردن) وEncryption (رمزنگاری )
تفاوت بین Hashing (هش کردن) وEncryption (رمزنگاری )
Hashing و Encryption دو واژه هستند که اغلب به صورت اشتباه به جای هم استفاده میشوند.
در این مقاله به تعریف هرکدام از این کلمات و اینکه هر کدام را درچه موقعیت هایی میتوان استفاده کرد،میپردازیم.
Hashing چیست؟
به تبدیل یک عبارت ورودی به یک عبارت خروجی گفته میشود که مقدار خروجی قابل تبدیل به مقداراولیه نیست.
هش کردن یک فرایند یک طرفه است که در آن هر نوع داده خروجی درنهایت تبدیل به یک رشته داده خروجی با یک اندازه ثابت میشود.
الگوریتم های Hashing
MD5 : یکی از محبوب ترین الگوریتم های تابع hashing است.این الگوریتم یک رشته ۱۶ بیتی را به عنوان خروجی ایجاد میکندکه معمولا به صورت یک رشته ۳۲ عددی نمایش داده میشوند.
اخیرا چند مورد آسیب پذیری در این الگوریتم کشف شده است و جداولی برای نگه داری مقادیر مختلفی مانند لیست پسوردهای مختلف به صورت هش شده،منتشر شده اند. که به اشخاص اجازه میدهند تا هش های MD5 را بدون saltهای خوبی تولید کنند.
SHA :به طور کلی سه نوع الگوریتم SHA وجود دارد:
SHA-0 :که این الگوریتم به دلیل آسیب پذیری خیلی به ندرت مورد استفاده قرار میگیرد.
SHA-1 :خطاها و آسیب پذیری SHA-0 در این نسخه اصلاح شده اند و بیشترین استفاده را در بین الگوریتم های SHA دارد،و یک مقدار هش ۲۰ بیتی تولید میکند.
SHA-2 : شامل یک مجموعه ۶ عضوی از الگوریتم های hashing است و قدرتمندترین نوع SHA هااست.
چه موقع از Hashing استفاده میکنیم؟
یکی از پرکاربردترین استفاده از hashing در پایگاه داده های وب سایت ها برای ذخیره کردن پسورد است.به طوری که تمام رمزهای عبور در پایگاه داده به صورت Hash نگه داری میشوند.
حال اگر رمزعبورمان یک کاراکتر باشد یا صد کاراکتر،درنهایت به صورت مثلا یک رشته داده ۱۲۸ بیتی در پایگاه داده به صورت هش شده نگه داری میشود.
مثلا هنگامی که ما یک پسورد را به صورت هش شده ذخیره میکنیم،وقتی که وارد سایت میشویم و از ما رمز عبوری که میخواهد را وارد میکنیم ،با رمزعبوری که در دیتابیس ذخیره شده مقایسه میکند.
اگر هردو باهم برابر بودند در اینصورت کاربر مجاز شناخته شده است.درغیر اینصورت امکان دسترسی کاربر به سیستم وجود ندارد.
به طور کلی هش کردن برای استفاده در مواردی که میخواهید مقداری را با یک مقدار ذخیره شده مقایسه کنید کاربرد زیادی دارد.
Encryption چیست؟
Encryption یا رمزنگاری،داده ها را به مجموعه ای از کاراکترهای غیرقابل خواندن تبدیل میکند که دارای طول ثابت نیستند.به عبارت ساده تر به تبدیل داده ها به قالبی که فقط افراد مجاز میتوانند آنها را مشاهده کنند،گفته میشود.
دو نوع اصلی رمزنگاری وجود دارد:رمزنگاری کلید متقارن و رمزنگاری کلید نامتقارن(عمومی).
در رمزنگاری کلید متقارن همان کلیدی که برای رمزنگاری استفاده شده است برای رمزگشایی هم استفاده میشود.
اما در رمزنگاری نامتقارن از دو کلید عمومی و خصوصی برای رمزنگاری استفاده میشود که از امنیت بسیار بالایی برخوردار است.
الگوریتم های Encryption
AES : این الگوریتم برای رمزنگاری کلید متقارن بیشتر مورد استفاده قرار میگیرد.
PGP : این الگوریتم محبوب ترین الگوریتم رمزگذاری کلید نامتقارن(عمومی)است.
چه موقع از Encryption استفاده میکنیم؟
از رمزنگاری بیشتر وقتی که میخواهیم پیام امنی را برای شخص دیگر در آن سوی دنیا بفرستیم ،در این صورت به جای استفاده هش کردن از رمزنگاری استفاده میکنیم.
در صورتی که تصمیم گرفتید از encryption استفاده کنید،باید تصمیم بگیرید از الگوریتم متقارن بهتر است استفاده کنید یا الگوریتم نامتقارن.که رمزنگاری متقارن عملکرد بهبود یافته ای را ارائه میدهد و استفاده از آن ساده تر است.
جالب بود…مرسی
بسیار عالی، ساده و روان
فقط یک سوال
چرا برای پسورها باید از هش استفاده کرد وقتی که امنیت رمزنگاری متقارن یا نامتقارن بالاتر هست؟