در قسمت قبلی با Hashing آشنا شدیم اما در هنگام ارسال بسته مهاجم می تواند روی بسته تغییرات مورد نظر خود را ایجاد و سپس اقدام به تولید hash برای این دیتا بکند و سپس این hash را جایگزین hash اصلی کند به این ترتیب در مقصد hash تولید شده توسط گیرنده برای دیتا با hash ارسالی یکسان خواهد بود و متوجه تغییر بسته نخواهند شد.
برای جلوگیری از این مشکل از مکانیزم (Hashed Message Authentication Code (HMAC استفاده می شود. که در آن برای تولید hash علاوه بر دیتا بسته از یک secret key نیز استفاده می شود. این secret key را فقط دو طرف ارتباط دارند در نتیجه مهاجم این secret key را ندارد و اگر بین راه مهاجم تغییر روی بسته ایجاد کند و برای آن یک hash تولید کند مطمئنا در مقصد نتیجه hash ها یکسان نخواهد بود چون مهاجم secret key را برای تولید Hash ندارد.
دوره آموزش CCNA Security
نویسنده :جعفر قنبری شوهانی
منبع : انجمن تخصصی فناوری اطلاعات ایران
هرگونه نشر و کپی برداری بدون ذکر منبع و نام نویسنده دارای اشکال اخلاقی می باشد.
سلام
AES پروتکل رمزنگاری هست و با هش متفاوته
پروتکل های هش مثل SHA و MD5 هستند
سلام ممنون از توضیحاتتون. یه سوال داشتم. از hmac برای چه الگوریتم های رمزنگاری میشه استفاده کرد؟ برای AES هم قابل استفاده هست؟
ممنون از توضیحاتتون
متوجه شدم
در روش HMAC ما داریم از هش به همراه یک عبارت تحت عنوان secret key استفاده می کنیم پس اینطور نیست که هش کاربرد نداره
همچنین هش ها کاربردهای مختلف دیگه ای هم دارند به طور مثال شما یک IOS برای سوئیچ یا روترتون از یک سایت غیر از سیسکو دریافت می کنید و می خواید از اون استفاده کنید اما شک دارید که این فایل که دارید فایل درستی هست یا نه (شاید کسی اومده روی اون تغییری ایجاد کرده بعد گذاشته روی اینترنت) با کمک هش می تونید راحت متوجه این قضیه بشید کافیه به سایت سیسکو برید و اون IOS که مورد نظرتون هست رو پیدا کنید و اونجا هش فایل رو به شما نشون میده بعد الگوریتم مشخص شده رو روی فایل خودتون اجرا می کنید و نتیجه رو با مقدار توی سایت مقایسه کنید اگه یکی بود یعنی فایلتون درسته
بله تا اینجاشو کامل متوجه شدم
ولی سوال من اینه که تا زمانی که HMAC نداشته باشیم ، hash هیچ امنیتی نداره
درسته؟
خب اگه امنیت نداره پس کاربردش چیه؟
فرض کنید محتوای بسته ما ABCD هست قبل از ارسال یک الگوریتم هش رو روی اون اجرا می کنیم و نتیجه هش میشه مثلا XY
حالا XY رو به همراه بسته ارسال میکنیم بعد در بین راه مهاجم این بسته رو دریافت می کنه میبینه که محتوای بسته ABCD هست و در کنارش یک عبارت هش XY هست کاری که انجام میده اینکه که محتوای بسته رو براساس نیازش تغییر میده مثل AEFD و بعد برای محتوای جدید میاد الگوریتم هش اجرا میکنه و مثلا نتیجه میشه YZ و این هش رو جایگزین هش بسته می کنه و بسته رو ارسال می کنه
در مقصد بسته دریافت میشه که محتوای اون هست AEFD و همراهش هش YZ هست برای خود میاد روی AEFD الگوریتم هش اجرا می کنه و نتیجه رو با هش ارسالی مقایسه می کنه و میبینه که یکی هست و این برداشت رو می کنه که روی بسته تغییری رخ نداده اما مهاجم کار خودش رو کرده
من متوجه نشدم
چجوری یه بسته که hash شده ، مهاجم میتونه اطلاعاتش رو تغییر بده؟
یعنی با این تفاسیر هر کسی میتونه بسته رو بگیره عملیات hash رو روش انجام بده و دوباره دیتاش رو تغییر بده و با hash قبلی جایگزین کنه و بفرسته؟
به همین سادگی؟
خب پس چرا اصلا hash کردیم؟