تابع هش و هشینگ چیست؟
در این مقاله میآموزید
تابع هش و هشینگ، درواقع تابعی است که مجموعهای از ورودیها را در اندازه مختلف از ورودی می گیرد و این داده ها را در یک جدول یا ساختار داده ای که شامل عناصر با اندازه ثابت هستند نگهداری می کند. این تابع همراه پایگاه داده به کار گرفته می شود تا موارد با سرعت بیشتری بازیابی شوند. از هش کردن در رمزگذاری و رمزگشایی امضاهای دیجیتالی نیز استفاده می شود.
تابع هش و هشینگ چیست؟
تابع هش یک شناسه خاص و منحصر به فرد است که برای هر قسمت از محتوای خاص از آن استفاده می شود. تابع هش و هشینگ فرایندی است که داده های متن را سادهتر کرده و آنها را به یک متن رمزدار خاص و تک با طول خاص تبدیل می کند. هیچ دو محتوای دارای هش یکسان نیستند و اگر محتوا تغییر کند، این تابع نیز تغییر می کند.
این تابع شیوه ای برای حصول اطمینان از ارسال بی عیب و نقص و مهمتر از همه ارسال داده ها و اطلاعات بدون تغییر به سمت گیرنده است.
تفاوت هشینگ و رمزگذاری
تابع هش و هشینگ و رمزگذاری شبیه یکدیگر هستند . اما توجه کنید که این دو مورد عملکرد یکسانی ندارند . و جدا از هم هستند و ارتباط های امن و قانونی را برقرار می کنند. این تابع یک عدد یا رشته بزرگ را به یک عدد صحیح کوچک تبدیل می کند . همچنین می تواند به عنوان یک شاخص در جدول مربوطه مورد استفاده قرار گیرد.
این تابع برای شاخص گذاری و مکان یابی موارد در پایگاه داده ها انجام می شود . زیرا جستجو و پیدا کردن مقدار تابع کوتاهتر و کارآ تر از جست و جوی یک رشته طولانی است. تابع همراه پایگاه داده به کار گرفته می شود تا موارد با سرعت بیشتری بازیابی شوند.
هش و امضاء دیجیتال
از هش کردن در رمزگذاری و رمزگشایی امضاهای دیجیتالی نیز استفاده می شود. تابع هش امضای دیجیتال را تغییر می دهد و سپس مقدار هش و امضا را برای گیرنده ارسال می کند.
گیرنده از همان تابع هش برای تولید مقدار هش استفاده می کند و سپس آن را با محتوای پیام دریافت شده مقایسه می کند. اگر مقادیر هش یکی باشند ، پیام بدون خطا ارسال شده و به گیرنده رسیده است.
وظیفه تابع Hash چیست؟
یکی از اهداف به کارگیری این تابع در رمزگذاری، دریافت ورودی متنی و تولید خروجی هش شده با قالب خاص به شیوه ای غیر قابل برگشت است.
دلایل استفاده از توابع هش قوی:
- اطمینان از یکپارچگی داده ها
- ایمن در برابر تغییرات غیر مجاز
- حفاظت از رمزهای عبور ذخیره شده در سیستم
- فعالیت در سرعت های مختلف متناسب با اهداف مختلف شما
توابع Hash روشی برای تضمین یکپارچگی داده ها در زمان رمزگذاری اطلاعات می باشند. توابع Hash به عنوان یک شیوه بررسی یا راهی برای تشخیص صحت داده های ارسالی پس از ثبت و ابزاری برای تایید هویت است.
منظور از تابع Hash خوب چیست؟
تابع هش و هشینگ خوب باید دارای ویژگی های زیر باشد:
به طور کارآمد و موثر قابل محاسبه باشد و همچنین باید کلیدها را به طور یکنواخت و هماهنگ توزیع کند.
تابع Hashباید مربوط به هر بیت کلید باشد، به این معنی که دو کلیدی که در یک بیت یا یک گروه بیت متفاوت هستند به مقادیر مختلف Hash شوند. بنابراین ، یک تابع هش که قسمتی از کلید را شامل شود ، مناسب نیست.
مثال هایی از عملکرد تابع Hash
1-یکی از این عملکرد ها folding یا تاشو نام دارد که مقداری واقعی را گرفته و آن را به چند بخش تقسیم می کند ، سپس این بخش ها را جمع می کند و از چهار رقم آخر باقی مانده به عنوان کلید هش شده استفاده می نماید.
2- تنظیم مجدد رقمی، بدین صورت که رقمی را در موقعیتهای خاص مقدار اصلی برای مثال شماره دوم و پنجم گرفته و سپس ترتیب آنها را جابجا می کند. سپس از عدد باقیمانده به عنوان مقدار Hash استفاده می شود.
فقط در صورت استفاده از یک الگوریتم مشخص می توان عدد اصلی را بر اساس مقدار Hash پیدا کرد.
خصوصیات یک الگوریتم قوی
- جبر
الگوریتم حتما باید ثابت باشد . یعنی همیشه بدون در نظر گرفتن اندازه ورودی ، یک خروجی با اندازه یکنواخت و یکسانی تولید شود. به طور واضح تر یعنی اگر یک عبارت را hash می کنیم . اندازه خروجی باید به همان اندازه ای باشد که هنگام hash کردن دریافت شده بود.
- پایداری تصویر قبلی
یک الگوریتم سخت ، الگوریتمی است که در برابر تصویر پایداری و مقاومت داشته باشد . در این صورت نمی توان برای بازیابی اطلاعات اصلی مقدار hash را معکوس کرد. در نتیجه ، این توابع به مفهوم غیر قابل برگشت بوده و عملکرد آن ها نیز یک طرفه است.
- استحکام در برابر تصادم
همانگونه که می دانید تصادم یعنی برخورد دو جسم با یکدیگر. اگر دو نمونه خاص و مستقل از داده های ورودی به خروجی های یکسان تبدیل شوند . باعث ایجاد تصادم می شوند و در این حالت اگر الگوریتم مناسبی برای هشینگ داده ها به کار گرفته نشود الگوریتم از بین می رود و حالت ناامن به وجود می آید.
می توان گفت که کاربر قادر است یک فایل مخرب با hash غیرواقعی و ناامن ایجاد کند و آن را به عنوان hash واقعی ارسال کند زیرا امضای آن ها مطابقت دارد. پس انتخاب یک الگوریتم قوی و قابل اعتماد برای پایداری و مقاومت در برابر این نوع برخوردها بسیار ضروری است. - اثر بهمن(یا سقوط ناگهانی)
یعنی هر تغییری هر چند کوچک در ورودی ایجاد شود . منجر به ایجاد یک تغییر بزرگ در خروجی می شود. این اصطلاح را “اثر بهمن” می گویند.
- سرعت
الگوریتم ها باید با سرعت قابل قبولی اجرا شوند. در موارد زیادی ، الگوریتم ها باید مقادیر hash را با سرعت بالایی محاسبه کنند که این مورد ویژگی ایده آل یک تابع هش رمزگذاری است. ولی سرعت بالا همیشه هم خوب نیست و به نحوه استفاده از الگوریتم بستگی دارد.
در برخی مواقع مانند اتصالات وب سایت ها استفاده از الگوریتم سریع و در بعضی موارد دیگر مثل عمل هشینگ رمز عبور سرعت آهسته تر عملکرد خیلی بهتری دارد.
چند نمونه از الگوریتم های رایج:
- الگوریتم امن(SHA): این مجموعه هش ها شامل SHA-1 ، (SHA-2 که مجموعه ای شامل SHA-224 ، SHA-256 ، SHA-384 و SHA-512) و SHA-3 ( SHA3-224 ، SHA3-256، SHA3-384 و SHA3 SHA-1 می باشد.
- خلاصه پیام(Message Digest) : این مجموعه از هش ها شامل انواع توابع هش هستند مانند MD2 ، MD4 ، MD5 و MD6 . MD5 منجر به برخورد و تصادم می شود.
- Windows NTHash: این نوع توابع به عنوان Unicode یا NTLM شناخته شده و معمولاً توسط ویندوز استفاده می شود زیرا نسبت به تابع قبلی ، امنیت بیشتری دارد. NTHash دارای آسیب پذیری بالایی است ولی عملکرد این الگوریتم در سیستم های ویندوز یکپارچه است.
نمونه های دیگری از الگوریتم ها :
عبارتند از: BLAKE 2 و BLAKE 3 ، RIPEMD-160 و WHIRLPOOL
منبع : securityboulevard.com
آکادمی آینده
تیم تولید محتوا آکادمی آینده با هدف ارتقا و بالابردن سطح دانش مخاطبین خود در حوزههای مختلف بازارهای مالی، اقدام به تهیه و گردآوری مقالات مختلف نموده تا شما عزیزان بتوانید به سادگی با استفاده از اطلاعات مفید و ارزشمند سطح معلومات خود را بالا ببرید.
سایر نوشته های آکادمی آینده