0

هشینگ چیست؟ بررسی عملکرد، الگوریتم‌ها و کاربردهای آن در امنیت اطلاعات

11 بازدید

هشینگ چیست؟ بررسی عملکرد، الگوریتم‌ها و کاربردهای آن در امنیت اطلاعات

فهرست مطالب

مقدمه

در دنیای شبکه و امنیت اطلاعات، اطمینان از صحت داده‌ها به‌اندازه محافظت از محرمانگی آن‌ها اهمیت دارد. تصور کنید یک فایل پشتیبان، بسته به‌روزرسانی نرم‌افزار یا فایل پیکربندی سرور از طریق شبکه منتقل شده است. چگونه می‌توان بررسی کرد که محتوای فایل در مسیر انتقال تغییر نکرده یا نسخه دریافت‌شده با نسخه اصلی مطابقت دارد؟

یکی از روش‌های رایج برای این کار، استفاده از Hashing یا هشینگ است. هشینگ با تبدیل داده‌های ورودی به یک خروجی با طول مشخص، امکان مقایسه و بررسی یکپارچگی داده‌ها را فراهم می‌کند.

این فناوری همچنین در امضای دیجیتال، احراز اصالت پیام و ذخیره امن رمزهای عبور نقش مهمی دارد؛ البته هر کاربرد به روش و الگوریتم متناسب با خود نیاز دارد.

در این مقاله بررسی می‌کنیم هشینگ چیست، چگونه کار می‌کند، چه تفاوتی با رمزنگاری دارد و برای استفاده امن از آن در محیط‌های شبکه و فناوری اطلاعات باید به چه نکاتی توجه کرد.

هشینگ چیست؟

هشینگ (Hashing) فرایندی است که طی آن داده‌هایی با اندازه دلخواه، مانند یک متن کوتاه، فایل چندگیگابایتی یا پیام شبکه، به کمک یک تابع مشخص به خروجی‌ای با طول معین تبدیل می‌شوند. به این خروجی، مقدار هش (Hash Value) یا خلاصه پیام (Message Digest) گفته می‌شود.

تابعی که این تبدیل را انجام می‌دهد، تابع هش (Hash Function) نام دارد. در کاربردهای رمزنگاری، این تابع باید علاوه بر تولید خروجی، ویژگی‌های امنیتی مشخصی داشته باشد تا بتوان به آن برای بررسی یکپارچگی داده‌ها یا کاربردهای مشابه اعتماد کرد.

برای مثال، الگوریتم SHA-256 هم برای یک متن کوتاه و هم برای یک فایل بزرگ، خروجی ۲۵۶ بیتی تولید می‌کند. اگر خروجی به شکل هگزادسیمال نمایش داده شود، مقدار آن ۶۴ کاراکتر خواهد بود.

نکته مهم این است که هشینگ به‌خودی‌خود داده را رمزگذاری یا مخفی نمی‌کند. مقدار هش، نمایش فشرده‌ای از ورودی است که برای مقایسه و بررسی برخی ویژگی‌های آن استفاده می‌شود.

همچنین نمی‌توان از یک مقدار هش به‌طور معمول و مستقیم، ورودی اصلی را بازیابی کرد؛ هرچند در مورد ورودی‌های ساده و قابل حدس، مهاجم ممکن است با امتحان کردن مقادیر احتمالی به ورودی اصلی برسد.

هشینگ چیست و چگونه داده‌ها را به مقدار هش تبدیل می‌کند

هشینگ

هشینگ چگونه کار می‌کند؟

برای درک بهتر Hashing، فرایند آن را می‌توان در سه مرحله ساده بررسی کرد:
1. دریافت ورودی (Input): تابع هش داده‌ای مانند متن، فایل یا پیام را دریافت می‌کند.
2. پردازش داده: الگوریتم، ورودی را مطابق قواعد ریاضی خود پردازش می‌کند.
3. تولید مقدار هش (Hash Value): خروجی نهایی با طول مشخص تولید می‌شود؛ طول این خروجی به الگوریتم انتخاب‌شده بستگی دارد، نه به طول ورودی.
برای نمونه، در الگوریتم SHA-256 خروجی همیشه ۲۵۶ بیت است.

بنابراین حتی اگر ورودی فقط یک کلمه باشد، خروجی آن ۲۵۶ بیت خواهد بود. همین ویژگی باعث می‌شود مقدار هش برای مقایسه داده‌ها مفید باشد.

مثال عملی از تغییر مقدار هش
فرض کنید مدیر شبکه می‌خواهد یک فایل پیکربندی را پیش از انتقال به سرور دیگری بررسی کند. ابتدا مقدار SHA-256 فایل اصلی محاسبه و ثبت می‌شود. پس از انتقال، هش فایل مقصد نیز محاسبه و با مقدار ثبت‌شده مقایسه می‌شود.

وضعیت نتیجه بررسی

هش فایل مبدأ و مقصد یکسان است شواهد قوی‌ای وجود دارد که محتوای دو فایل یکسان است
هش دو فایل متفاوت است محتوای فایل‌ها یکسان نیست یا یکی از مراحل محاسبه و مقایسه به‌درستی انجام نشده است

نکته مهم این است که یکسان بودن هش، به‌تنهایی اصالت فایل یا قابل‌اعتماد بودن منبع آن را تضمین نمی‌کند. اگر مهاجم بتواند هم فایل و هم مقدار هش اعلام‌شده را تغییر دهد، ممکن است مقایسه ساده هش نتواند دست‌کاری را آشکار کند.

برای اطمینان از اصالت منبع، باید از سازوکارهایی مانند امضای دیجیتال یا HMAC، متناسب با سناریو، استفاده شود.

ویژگی‌های یک تابع هش امن

هر تابعی که داده را به خروجی کوتاه‌تری تبدیل کند، الزاماً یک تابع هش رمزنگاری امن نیست. توابع هش رمزنگاری باید ویژگی‌هایی داشته باشند که استفاده از آن‌ها را برای کاربردهای امنیتی قابل اتکا کند. سه ویژگی زیر اهمیت ویژه‌ای دارند.

1. مقاومت در برابر برخورد (Collision Resistance)

از آنجا که ورودی می‌تواند اندازه‌های متفاوتی داشته باشد اما خروجی طول ثابتی دارد، از نظر ریاضی امکان دارد دو ورودی متفاوت به مقدار هش یکسانی برسند. به این وضعیت برخورد یا Collision گفته می‌شود.

مقاومت در برابر برخورد یعنی یافتن دو ورودی متفاوت با هش یکسان، با منابع محاسباتی عملی، بسیار دشوار باشد. این ویژگی در امضای دیجیتال و اعتبارسنجی داده‌ها اهمیت زیادی دارد؛ زیرا مهاجم نباید بتواند به‌سادگی دو محتوای متفاوت با هش یکسان تولید کند.

2. مقاومت در برابر بازیابی ورودی (Preimage Resistance)

اگر مقدار هش مشخصی در اختیار داشته باشیم، نباید بتوانیم به‌صورت عملی ورودی‌ای پیدا کنیم که آن مقدار را تولید کرده است. به این ویژگی مقاومت در برابر بازیابی ورودی می‌گویند.

با این حال، این ویژگی به معنای غیرممکن بودن حدس زدن ورودی نیست. اگر مقدار اولیه ساده و قابل پیش‌بینی باشد، مهاجم می‌تواند ورودی‌های احتمالی را هش کند و نتیجه‌ها را با مقدار هدف مقایسه کند. به همین دلیل، هش کردن یک رمز عبور ضعیف به‌تنهایی آن را امن نمی‌کند.

۳.مقاومت در برابر ورودی دوم (Second Preimage Resistance)

در این حالت، مهاجم یک ورودی مشخص و مقدار هش آن را می‌داند، اما نباید بتواند ورودی متفاوت دیگری پیدا کند که همان مقدار هش را تولید کند.

این ویژگی با مقاومت در برابر برخورد تفاوت دارد: در حمله برخورد، مهاجم آزاد است هر دو ورودی را انتخاب کند.

اما در حمله ورودی دوم، یکی از ورودی‌ها از قبل مشخص است.

تفاوت هشینگ، رمزنگاری و کدگذاری

یکی از اشتباهات رایج در مباحث امنیت اطلاعات، یکسان در نظر گرفتن Hashing، Encryption و Encoding است. هر سه ممکن است داده را به شکلی متفاوت نمایش دهند، اما هدف و عملکرد آن‌ها متفاوت است.

معیارهشینگرمزنگاریکدگزاری
هدف اصلیتولید اثر انگشت داده برای مقایسه و کاربردهای امنیتیحفظ محرمانگی دادهتبدیل داده به قالبی مناسب برای انتقال یا پردازش
بازگشت به داده اولیهمعمولاً از مقدار هش به‌تنهایی امکان‌پذیر نیستبا کلید مناسب قابل رمزگشایی استمعمولاً با روش معکوس قابل بازگردانی است
استفاده از کلید

در تابع هش معمولی خیر؛ HMAC از کلید استفاده می‌کند

معمولاً بله

معمولاً خیر

نمونهSHA-256AES

Base64

کاربرد رایجبررسی یکپارچگی و ذخیره امن رمز عبور با الگوریتم مناسبحفاظت از محرمانگی فایل یا ارتباطسازگاری قالب داده با یک سیستم دیگر

برای مثال، اگر یک فایل را با AES رمزنگاری کنیم، هدف این است که افراد بدون کلید مناسب نتوانند محتوای آن را بخوانند. اما اگر از SHA-256 استفاده کنیم، خروجی برای مقایسه و بررسی تغییرات فایل به کار می‌رود، نه برای پنهان کردن محتوای آن.

همچنین Base64 یک روش کدگذاری است، نه الگوریتم رمزنگاری؛ بنابراین نباید از آن برای محافظت از اطلاعات محرمانه استفاده کرد. در مقابل، هشینگ هم برای بازیابی داده طراحی نشده است.

الگوریتم‌های مهم هشینگ

الگوریتم‌های هش از نظر طول خروجی، طراحی داخلی و سطح امنیت با یکدیگر تفاوت دارند. انتخاب الگوریتم باید بر اساس نوع کاربرد انجام شود؛ زیرا الگوریتمی که برای بررسی یکپارچگی فایل مناسب است، لزوماً بهترین انتخاب برای ذخیره رمز عبور نیست.

الگوریتمطول خروجیوضعیت و کاربرد
MD5۱۲۸ بیتدر برابر حملات برخورد ناامن است؛ برای کاربردهای امنیتی جدید توصیه نمی‌شود
SHA-1۱۶۰ بیتدر کاربردهایی که به مقاومت در برابر برخورد نیاز دارند، منسوخ شده است
SHA-256۲۵۶ بیتعضو خانواده SHA-2؛ گزینه‌ای رایج برای بررسی یکپارچگی و بسیاری از کاربردهای رمزنگاری
SHA-512۵۱۲ بیتعضو خانواده SHA-2؛ با خروجی طولانی‌تر و ساختار پردازش متفاوت
SHA3-256۲۵۶ بیتعضو خانواده SHA-3؛ الگوریتمی با طراحی متفاوت از خانواده SHA-2

اطلاعات مربوط به طول خروجی و وضعیت الگوریتم‌ها بر اساس مستندات NIST تنظیم شده‌اند. NIST استفاده از SHA-2 یا SHA-3 را به‌جای SHA-1 برای کاربردهای جدیدی که به مقاومت در برابر برخورد نیاز دارند توصیه می‌کند.

آیا SHA-256 همیشه بهترین انتخاب است؟

خیر. SHA-256 برای بسیاری از کاربردهای بررسی یکپارچگی داده‌ها انتخاب مناسبی است، اما انتخاب الگوریتم به نیاز سیستم بستگی دارد. برای مثال، اگر هدف ذخیره رمز عبور کاربران باشد، استفاده مستقیم از SHA-256 مناسب نیست؛ زیرا این الگوریتم برای محاسبه سریع طراحی شده و مهاجم می‌تواند تعداد زیادی حدس را در زمان کوتاهی بررسی کند.

برای ذخیره رمز عبور، باید از الگوریتم‌های اختصاصی این کار مانند Argon2id، scrypt یا bcrypt استفاده کرد و پارامترهای آن‌ها را متناسب با ظرفیت سامانه تنظیم کرد.

کاربردهای هشینگ در امنیت اطلاعات و شبکه

هشینگ در بخش‌های مختلف زیرساخت IT استفاده می‌شود. شناخت کاربردهای آن به کارشناسان شبکه کمک می‌کند تا در هر سناریو، روش مناسب را انتخاب کنند.

1. بررسی یکپارچگی فایل‌ها (File Integrity)

یکی از رایج‌ترین کاربردهای هشینگ، تشخیص تغییر در محتوای فایل است. مدیر شبکه می‌تواند هش یک فایل را پیش از انتقال محاسبه کند و پس از انتقال، مقدار هش فایل مقصد را با آن مقایسه کند.

این روش برای موارد زیر کاربرد دارد:
– بررسی سلامت فایل‌های پشتیبان (Backup).
– کنترل یکپارچگی فایل‌های نصب و به‌روزرسانی نرم‌افزار.
– بررسی فایل‌های پیکربندی سرورها.
– مقایسه نسخه‌های مختلف یک فایل.
البته مقدار هش تنها زمانی برای اعتبارسنجی قابل اعتماد است که مقدار مرجع از منبعی معتبر و مستقل دریافت شده باشد. در غیر این صورت، مهاجم ممکن است فایل و هش آن را هم‌زمان تغییر دهد.

2. امضای دیجیتال (Digital Signature)

در بسیاری از سازوکارهای امضای دیجیتال، ابتدا از پیام یا سند یک مقدار هش تولید می‌شود و سپس فرایند امضا روی آن انجام می‌گیرد. در سمت دریافت‌کننده، هش سند محاسبه و با نتیجه اعتبارسنجی امضا مقایسه می‌شود.

این فرایند به تشخیص تغییر محتوا و بررسی اعتبار امضا کمک می‌کند. در نتیجه، هشینگ یکی از اجزای مهم بسیاری از سامانه‌های اعتماد دیجیتال است؛ هرچند به‌تنهایی جایگزین امضای دیجیتال نیست.

3. احراز اصالت پیام با HMAC

گاهی لازم است علاوه بر تشخیص تغییر داده، مشخص شود پیام توسط فرد یا سامانه‌ای که کلید مشترک معتبر را در اختیار دارد تولید شده است. در چنین شرایطی می‌توان از HMAC (Hash-based Message Authentication Code) استفاده کرد.

HMAC با ترکیب یک تابع هش و یک کلید محرمانه، کدی برای احراز اصالت و بررسی یکپارچگی پیام تولید می‌کند. برای مثال، دو سامانه می‌توانند از HMAC برای بررسی پیام‌های تبادلی بین خود استفاده کنند؛ مشروط بر اینکه کلید مشترک به‌درستی مدیریت شده باشد.

تفاوت مهم: هش معمولی به کلید محرمانه نیاز ندارد، اما HMAC به کلید وابسته است. به همین دلیل، هش ساده به‌تنهایی نمی‌تواند ثابت کند که داده از منبع مورد اعتماد ارسال شده است.

هشینگ رمز عبور و روش‌های ایمن‌سازی آن

ذخیره رمز عبور کاربران به‌صورت متن ساده، ریسک جدی امنیتی ایجاد می‌کند. اگر پایگاه داده افشا شود، مهاجم می‌تواند رمزهای عبور را مستقیماً مشاهده کند. به همین دلیل، سامانه‌های احراز هویت باید رمزها را با روش مناسب هش کنند و فقط مقدار لازم برای اعتبارسنجی را ذخیره کنند.

با این حال، استفاده از هر الگوریتم هشی کافی نیست. روش مناسب ذخیره رمز عبور باید در برابر حملات حدس رمز و پردازش موازی مهاجم مقاوم باشد.

1. Salt چیست؟

Salt یک مقدار تصادفی و منحصربه‌فرد است که در فرایند هش کردن رمز عبور به کار می‌رود. الگوریتم‌های استاندارد ذخیره رمز عبور، Salt را در کنار پارامترهای لازم مدیریت می‌کنند.

وجود Salt باعث می‌شود دو کاربر با رمز عبور یکسان، مقدار هش ذخیره‌شده یکسانی نداشته باشند. همچنین استفاده از جدول‌های ازپیش‌محاسبه‌شده، مانند Rainbow Table، دشوارتر می‌شود.

Salt لازم نیست محرمانه باشد؛ مهم این است که به‌صورت امن تولید شود و برای هر رمز عبور منحصربه‌فرد باشد.

2. Pepper چیست؟

Pepper یک راز اضافی است که در کنار فرایند هش کردن رمز عبور استفاده می‌شود و برخلاف Salt، باید جدا از پایگاه داده نگهداری شود؛ برای مثال، در یک سامانه مدیریت اسرار (Secrets Manager).

Pepper می‌تواند در صورت افشای پایگاه داده، یک لایه دفاعی اضافه فراهم کند؛ اما جایگزین الگوریتم مناسب، Salt منحصربه‌فرد یا مدیریت امن کلید نیست.

3. کدام الگوریتم برای ذخیره رمز عبور مناسب است؟

راهنمای OWASP استفاده از Argon2id را برای سامانه‌های جدید در اولویت قرار می‌دهد. در صورت نبود امکان استفاده از آن، scrypt و در شرایط مناسب bcrypt یا PBKDF2 می‌توانند گزینه‌های جایگزین باشند. انتخاب نهایی باید با توجه به الزامات امنیتی، سازگاری و ظرفیت پردازشی سامانه انجام شود.

الگوریتم کاربرد نکته مهم
Argon2id ذخیره امن رمز عبور گزینه پیشنهادی برای بسیاری از سامانه‌های جدید
scrypt ذخیره امن رمز عبور به حافظه و پردازش قابل توجه نیاز دارد
bcrypt ذخیره رمز عبور در سامانه‌های سازگار باید محدودیت طول ورودی و هزینه محاسباتی آن در نظر گرفته شود
PBKDF2 ذخیره رمز عبور و کاربردهای نیازمند انطباق با استانداردها تعداد تکرارها و تابع هش داخلی باید درست انتخاب شوند
SHA-256 به‌تنهایی هش عمومی و بررسی یکپارچگی برای ذخیره مستقیم رمز عبور مناسب نیست

اشتباهات رایج و انتخاب الگوریتم مناسب

در پیاده‌سازی هشینگ، تنها انتخاب یک الگوریتم معتبر کافی نیست. نحوه استفاده و جایگاه آن در معماری امنیتی نیز اهمیت دارد.

اشتباهات رایج عبارت‌اند از:
– استفاده از MD5 یا SHA-1 برای کاربردهای حساس: این الگوریتم‌ها در برابر حملات برخورد ضعف دارند و برای کاربردهای جدید نیازمند مقاومت در برابر برخورد توصیه نمی‌شوند.
– ذخیره رمز عبور با SHA-256 ساده: سرعت بالای محاسبه آن، آزمودن تعداد زیادی رمز احتمالی را برای مهاجم آسان‌تر می‌کند.
– یکسان در نظر گرفتن هش و رمزنگاری: هشینگ به‌منظور بازیابی داده اصلی طراحی نشده است و محرمانگی داده را نیز به‌تنهایی تضمین نمی‌کند.
– اعتماد به هش بدون بررسی منبع: اگر مهاجم بتواند هم فایل و هم مقدار هش مرجع را تغییر دهد، مقایسه ساده هش ممکن است دست‌کاری را آشکار نکند.
– نادیده گرفتن مدیریت کلیدها: در روش‌هایی مانند HMAC، امنیت کلید محرمانه بخشی از امنیت کل سامانه است.
برای انتخاب روش مناسب، ابتدا باید مشخص شود که هدف اصلی چیست: بررسی یکپارچگی فایل، احراز اصالت پیام، امضای دیجیتال یا ذخیره رمز عبور. سپس باید الگوریتم و پارامترهایی انتخاب شوند که برای همان کاربرد طراحی شده‌اند.

سؤالات متداول درباره هشینگ

هشینگ چیست و چه کاربردی دارد؟
هشینگ فرایند تبدیل داده با اندازه دلخواه به خروجی با طول مشخص است. از آن برای بررسی یکپارچگی فایل‌ها، استفاده در امضای دیجیتال، احراز اصالت پیام و ذخیره امن رمز عبور با الگوریتم مناسب استفاده می‌شود.
آیا می‌توان مقدار هش را به داده اصلی تبدیل کرد؟
خیر، تابع هش رمزنگاری برای بازیابی مستقیم ورودی طراحی نشده است. با این حال، اگر ورودی ساده یا قابل حدس باشد، می‌توان با امتحان کردن مقادیر احتمالی، ورودی متناظر با هش را پیدا کرد.
تفاوت Hashing و Encryption چیست؟
هشینگ برای تولید مقدار هش و کاربردهایی مانند بررسی یکپارچگی استفاده می‌شود؛ اما رمزنگاری برای حفظ محرمانگی داده به کار می‌رود و با کلید مناسب امکان رمزگشایی دارد.
آیا SHA-256 برای ذخیره رمز عبور مناسب است؟
SHA-256 به‌تنهایی انتخاب مناسبی برای ذخیره رمز عبور نیست؛ زیرا سریع است. برای این کاربرد باید از الگوریتم‌های اختصاصی مانند Argon2id یا گزینه‌های مناسب دیگر، همراه با Salt و پارامترهای امنیتی درست، استفاده شود.
آیا یکسان بودن هش، اصالت فایل را ثابت می‌کند؟
یکسان بودن هش، در صورت استفاده از الگوریتم مناسب، شواهد قوی‌ای از یکسان بودن محتوای فایل‌ها فراهم می‌کند؛ اما به‌تنهایی اصالت منبع را ثابت نمی‌کند. برای این منظور باید از یک مقدار مرجع قابل اعتماد یا سازوکارهایی مانند امضای دیجیتال استفاده کرد.

جمع‌بندی

هشینگ یکی از مفاهیم پایه‌ای و مهم در امنیت اطلاعات است که در بررسی یکپارچگی داده‌ها، امضای دیجیتال، احراز اصالت پیام و حفاظت از رمزهای عبور کاربرد دارد. با این حال، امنیت آن به انتخاب الگوریتم مناسب و نحوه استفاده از آن وابسته است.

الگوریتم‌هایی مانند SHA-256 برای بسیاری از کاربردهای هش عمومی مناسب‌اند، اما برای ذخیره رمز عبور باید از روش‌های اختصاصی مانند Argon2id استفاده کرد.

برای کارشناسان شبکه و مدیران IT، درک تفاوت هشینگ با رمزنگاری و شناخت محدودیت‌های هر الگوریتم ضروری است. هشینگ زمانی به افزایش امنیت کمک می‌کند که متناسب با هدف استفاده شود و در کنار سایر کنترل‌های امنیتی، مانند مدیریت کلید، اعتبارسنجی منبع و سیاست‌های دسترسی، به کار گرفته شود.

هیواشبکه

خدمات ما در مجموعه هیواشبکه شامل :

شرکت فنی و مهندسی هیوانوآوران داده گستر : مجری طراحی ، پیاده سازی ، پشتیبانی پروژه های شبکه و امنیت در استان گیلان – رشت و شهرها و استانهای همجوار
آموزشگاه تخصصی هیواشبکه : برگزار کننده دوره های تخصصی شبکه و امنیت ، پیکربندی سرور HP ، مجازی سازی ، MCSA 2025 ، نتورک و … به صورت حضوری با مجوز از سازمان فنی و حرفه ای و آموزش کارکنان دولت در رشت ، استان گیلان و به صورت مجازی در سراسر کشور

آیا این مطلب را می پسندید؟
https://hivanetwork.ir/?p=89719
اشتراک گذاری:
علی ابوالحسنی
مطالب بیشتر

نظرات

0 نظر در مورد هشینگ چیست؟ بررسی عملکرد، الگوریتم‌ها و کاربردهای آن در امنیت اطلاعات

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

هیچ دیدگاهی نوشته نشده است.