تابع هش (hash function) چیست؟
آنچه در این مقاله خواهید خواند:
رمزنگاری شامل تمام ابزارها و تکنیکهایی است که به محافظت از دادهها در حال انتقال و در حالت استراحت کمک میکند. یک تابع هش در رمزنگاری یکی از بازیگران بزرگ امنیتی است، بااینحال بسیاری از مردم نمیدانند که تابع هش چیست یا چهکاری انجام میدهد.
هشینگ چیست؟ تعریف تابع هش در رمزنگاری
تابع هش یا یک الگوریتم هش، یک فرآیند یکطرفه است که دادههای ورودی شما را با هراندازهای به دادههای رمزگذاری شده با طول ثابت تبدیل میکند. در مرکز فرآیند جایی است که تابع هش را پیدا خواهید کرد. اساساً، میتوانید یک جمله کوتاه یا یک جریان کامل از دادهها را بگیرید، آن را از طریق یک تابع هش اجرا کنید و با رشتهای از دادهها با طول خاصی پایان دهید. این راهی برای پنهان کردن دادههای اصلی شماست.
در یک مفهوم فنیتر، هشینگ تکنیکی است که از یک عملیات ریاضی برای کوچک کردن مقدار تصادفی دادههای ورودی (به نام کلید هش) در رشتهای از بیتها با طول ثابت استفاده میکند، بهگونهای که برای معکوس کردن با کامپیوترهای مدرن بسیار غیر عملی است؛ بنابراین تابع هش فرایندی است که دادههای ورودی را میگیرد و از آن برای ایجاد یک مقدار خروجی با طول ثابت استفاده میکند که منحصربهفرد و تقریباً غیرقابلبرگشت است.
مطلب پیشنهادی: خرید بیت کوین
مقادیر خروجی بازگردانده شده توسط یک تابع هش با چند نام مختلف فراخوانی میشوند:
- Hash values
- Digest
- Hash codes
- Hashes
برای هر ورودی، یک خروجی هش منحصربهفرد وجود دارد. هنگامیکه یک هش ایجاد میکنید، تنها راه برای به دست آوردن همان هش دقیق، وارد کردن همان متن است. اگر حتی یک کاراکتر را تغییر دهید، مقدار هش نیز تغییر خواهد کرد.
هش در مقابل رمزگذاری – آیا آنها یکسان هستند؟
در یک کلمه؟ خیر. هش و رمزگذاری دو فرآیند رمزنگاری مجزا هستند. رمزگذاری چیزی است که میتوانید از آن برای تبدیل دادههای متن ساده (قابلخواندن) به چیزی غیرقابلکشف با استفاده از الگوریتمها و یک کلید استفاده کنید. بااینحال، میتوانید آن دادهها را با استفاده از همان (رمزگذاری متقارن) یا یک کلید رمزنگاری متفاوت اما مرتبط (رمزگذاری نامتقارن) رمزگشایی کنید.
یک تابع هش رمزنگاری متفاوت است. هنگامیکه دادهها را هش میکنید، نمیتوانید آن را به فرمت اصلی خود بازیابی کنید زیرا اینیک فرآیند یکطرفه است.
اما توابع هش چگونه کار میکنند؟ اجازه دهید به بخش اول سال بپردازیم و سپس کمی بعد به قسمت دیگر آن برسیم.
الگوریتمهای هش رمزنگاری زیادی وجود دارد که کسبوکارها و سازمانها از آنها استفاده میکنند (برخی از آنها به دلیل آسیبپذیریهای نظری یا عملی اکنون استفاده نمیشوند). برخی از محبوبترین الگوریتمهای هش عبارتاند از:
- خانواده SHA (SHA-1، SHA-2 [شامل SHA-256 و SHA-512] و SHA-3)
- خانواده MD (MD)
- Whirlpool
- Tiger
- NTLM
- LanMan (هش LM).
همه اینها الگوریتمهای ایمن برای هر نوع برنامه یا هدفی در نظر گرفته نمیشوند. برخی از توابع هش سریع هستند، درحالیکه برخی دیگر کند هستند. برای مثال، وقتی صحبت از استفاده از توابع هش رمزنگاری برای درهم کردن رمز عبور میشود، باید از یک تابع هش آهسته بهجای یک تابع هش سریع استفاده کنید.
ویژگیهای یک تابع هش رمزنگاری قوی
چه ویژگیهایی یک تابع هش رمزنگاری قوی را تشکیل میدهند؟ در اینجا ویژگیهایی وجود دارد که توابع هش ما را بسیار قوی میکند.
- جبر – صرفنظر از اندازه ورودی یا مقدار کلید، این عملیات باید همیشه به همان طول خروجی یا مقدار هش منجر شود.
- سرعت محاسباتی – سرعت یک تابع هش مهم است و باید بر اساس نحوه استفاده از آن متفاوت باشد. بهعنوانمثال، در برخی موارد، شما به یک تابع هش سریع نیاز دارید، درحالیکه در برخی از موارد دیگر باید از یک تابع هش آهسته استفاده کنید.
- مقاومت و دشورای – هش ها باید بهعنوان یک عملکرد یکطرفه برای همه مقاصد و اهداف عمل کنند. تابع هش باید آنقدر دشوار باشد و دادهها را چنان مبهم کند که برای کسی غیر ممکن باشد که هش را برای تعیین مقدار کلید اصلی آن مهندسی معکوس کند. حتی یک تغییر کوچک در ورودی اصلی باید به یک مقدار هش کاملاً متفاوت منجر شود.
مطلب پیشنهادی: از کجا تتر بخریم؟ فروش و خرید فوری تتر بدون احراز هویت
ویژگیهای کلی یک تابع هش:
در اینجا دو ویژگی کلی از توابع هش وجود دارد که در زیر موردبحث قرار دادهشدهاند:
1) یک تابع هش عملاً برگشتناپذیر است
هش کردن اغلب نوعی تابع یکطرفه در نظر گرفته میشود. این به این دلیل است که به دلیل مقدار زمان و منابع محاسباتی که در انجام این کار دخیل است، معکوس کردن آن بسیار غیرممکن است (البته از نظر فنی امکانپذیر است). این بدان معناست که شما نمیتوانید دادههای اصلی را بر اساس مقدار هش بدون مقدار غیر عملی منابعی که در اختیار دارید، کشف کنید.
بهعبارتدیگر، اگر تابع هش h باشد و مقدار ورودی x باشد، مقدار هش h(x) خواهد بود. اگر به h(x) دسترسی دارید و مقدار تابع هش h را میدانید، تشخیص مقدار x (تقریباً) غیرممکن است.
2) مقادیر هش منحصربهفرد هستند
هیچ دو داده ورودی متفاوت نباید مقدار هش یکسانی را ایجاد کنند. اگر آنها مطابقت داشته باشند، باعث میشود که بهعنوان یک برخورد شناخته میشود، به این معنی که الگوریتم برای استفاده ایمن نیست و در برابر حملات آسیبپذیر است.
بنابراین، اگر تابع هش h باشد و دو مجموعه داده ورودی مختلف x و y وجود داشته باشد، مقدار هش h(x) باید همیشه با h(y) متفاوت باشد؛ بنابراین، h(x) ≠ h(y). منظور این است که اگر کوچکترین تغییری در دادههای اصلی ایجاد کنید، مقدار هش آن تغییر میکند. ازاینرو، هیچ دستکاری دادهها بدون توجه نمیماند.
هش کردن چگونه کار میکند؟
اکنونکه میدانیم یک تابع هش در رمزنگاری چیست، بیایید نحوه عملکرد آن را بررسی کنیم.
اولازهمه، الگوریتم هش، دادههای ورودی بزرگ را به بلوکهایی با اندازه مساوی تقسیم میکند. سپس الگوریتم فرآیند هش را برای هر بلوک داده بهطور جداگانه اعمال میکند.
اگرچه یک بلوک بهصورت جداگانه هش میشود، اما همه بلوکها به هم مرتبط هستند. مقدار هش بلوک داده اول یک مقدار ورودی در نظر گرفته میشود و به بلوک داده دوم اضافه میشود. به همین ترتیب، خروجی هش شده بلوک دوم با بلوک سوم جمع میشود و مقدار ورودی ترکیبی دوباره هش میشود و به همین ترتیب، چرخه ادامه مییابد تا زمانی که خروجی نهایی را دریافت کنید که مقدار ترکیبی همه بلوکهایی است که درگیر بودند.
این بدان معناست که اگر دادههای هر بلوکی دستکاری شود، مقدار هش آن تغییر میکند و ازآنجاییکه مقدار هش آن بهعنوان ورودی به بلوکهای بعدی وارد میشود، همه مقادیر هش تغییر میکنند. بهاینترتیب است که حتی کوچکترین تغییر در دادههای ورودی قابلتشخیص است زیرا کل مقدار هش را تغییر میدهد.
اگر قصد فروش پرفکت مانی را دارید، از طریق صرافی آنلاین ارزکت اقدام کنید.
نقاط ضعف عملکرد هش
درست مانند سایر فناوریها و فرآیندها، توابع هش در رمزنگاری نیز کامل نیستند. چند نقطهضعف کلیدی وجود دارد که عبارتاند از:
- درگذشته، مواردی وجود داشت که الگوریتمهای محبوبی مانند MD5 و SHA-1 مقدار هش یکسانی را برای دادههای مختلف تولید میکردند. ازاینرو، کیفیت مقاومت در برابر برخورد به خطر افتاد.
- یک فناوری به نام ” rainbow tables” وجود دارد که هکرها از آن برای شکستن مقادیر هش استفاده میکنند.
- برخی از سرویسهای نرمافزاری و ابزارهای سختافزاری (موسوم به ” hash cracking rigs”) وجود دارند که مهاجمان، محققان امنیتی یا حتی سازمانهای دولتی از آنها برای شکستن رمزهای عبور هش شده استفاده میکنند.
- برخی از انواع حملات brute force میتوانند دادههای هش شده را شکست دهند.
سوالات متداول
تابع هش چیست و چه کاربردی دارد؟
استفاده از تابع هش برای حفظ کردن اطلاعات در شبکه بلاک چین است.
بهترین نوع از تابع هش کدام است؟
برای اینکه بهترین نوع تابع هش را بیابید باید از نظر کارشناسان مطلع شد. تابع sha-256 بهترین است.
سخن پایانی
هش در واقع یک ابزار رمزنگاری بسیار مفید برای تأیید (تأیید امضای دیجیتال، یکپارچگی فایل یا داده، رمز عبور و غیره) در فناوری اطلاعات است. توابع هش رمزنگاری از نظر عملکردها و کاربردها برای اهداف خاص متفاوت است. درحالیکه توابع هش رمزنگاری کامل نیستند، بهعنوان جمعهای چک و مکانیسمهای احراز هویت عالی عمل میکنند.