در ابتدای این مقاله تعریفی از حمله مرد میانی می خوانید. سپس در مورد روش های این حمله و در نهایت روش های تشخیص و مقابله با این حمله را خواهید خواند.
در رمزنگاری و امنیت رایانه، حمله شخصی در وسط (MITM) یا Man In The Middle حمله ای است که در آن مهاجم مخفیانه در این بین قرار می گیرد. احتمالاً ارتباطات بین دو طرف را تغییر می دهد، در حالیکه آنها معتقد هستند ارتباط مستقیمی با یکدیگر دارند. یک نمونه از حمله مرد میانی، استراق سمع فعال است، که در آن مهاجم ارتباط مستقلی با قربانیان برقرار می کند. پیام هایی را بین آنها منتقل می کند تا آنها باور کنند که مستقیماً با یکدیگر ارتباط برقرار می کنند. در حالی که در واقع کل مکالمه توسط مهاجم شنود می شود. مهاجم می تواند تمام پیام های مربوطه را که بین دو قربانی می گذرد رهگیری کند و پیام های جدید را تزریق کند. این در بسیاری از شرایط اتفاق می افتد؛ به عنوان مثال، یک مهاجم در محدوده اتصال به یک نقطه دسترسی بی سیم رمزگذاری نشده(WiFi) می تواند خود را به عنوان یک فرد در وسط قرار دهد.
از آنجا که این هدف برای دور زدن و کشف احراز هویت متقابل است، یک حمله MITM تنها زمانی ممکن است موفقیت آمیز باشد که مهاجم از هر فرصتی به اندازه کافی، برای رسیدن به انتظارات خود استفاده کند. بیشتر پروتکل های رمزنگاری شامل نوعی از تأیید اعتبار نقطه انتهایی برای جلوگیری از حملات MITM هستند. به عنوان مثال، TLS ابزاری است که می تواند یک یا هر دو طرف را با استفاده از یک مجوز گواهی اعتماد متقابل تأیید کند.
برای توضیح روش حمله مرد میانی از یک مثال استفاده می کنیم:
فرض کنید فرد 1 می خواهد با فرد 2 ارتباط برقرار کند. در همین حال، فرد 3 می خواهد مکالمه را استراق سمع کند. همچنین با اختیار خودش پیامی را به هر یک از این دو طرف بفرستد.
در مرحله اول، فرد 1 کلید عمومی خود را از فرد 2 می پرسد. فرد 2 کلید عمومی خود را به فرد 1 ارسال می کند، اما فرد 3 قادر به رهگیری آن است. در این لحظه حمله MITM می تواند آغاز شود. فرد 3 پیغام جعلی را به فرد 1 ارسال می کند که به نظر می رسد از فرد 2 سرچشمه گرفته است، اما در عوض کلید عمومی فرد 3 را شامل می شود.
فرد 1 با اعتقاد به این که این کلید عمومی مربوط به فرد 2 است، پیام خود را با کلید فرد 3 رمزگذاری می کند و پیام رمزگذاری شده را به فرد 2 ارسال می کند. فرد 3 دوباره رهگیری می کند، پیام را با استفاده از کلید خصوصی خود رمزگشایی می کند، در صورت تمایل آن را تغییر می دهد و دوباره آن را با استفاده از کلید عمومی که از فرد 2 رهگیری کرده، دوباره رمزگذاری می کند و به فرد 1 می فرستد. هنگامی که فرد 2 پیام تازه رمزگذاری شده را دریافت می کند، معتقد است که آن از فرد 1 آمده است.
حملات MITM را می توان با دو روش جلوگیری یا شناسایی کرد: تأیید هویت و تشخیص دستکاری (tamper). احراز هویت تا حدودی این اطمینان را می دهد که پیام داده شده از یک منبع معتبر آمده است. تشخیص Tamper صرفاً شواهدی را نشان می دهد که ممکن است یک پیام تغییر کرده باشد.
همه سیستم های رمزنگاری شده که در برابر حملات MITM ایمن هستند، روشی برای تأیید اعتبار پیام ها ارائه می دهند. علاوه بر پیام از طریق کانال امن، بیشتر آنها به تبادل اطلاعات (مانند کلیدهای عمومی) نیاز دارند. این پروتکل ها اغلب از پروتکل های توافق نامه کلیدی استفاده می کنند. آنها همچنین با الزامات امنیتی مختلف برای دسترسی به کانال امن ایجاد شده اند.
یک زیرساخت کلید عمومی، مانند Security Layer Security، ممکن است کنترل انتقال را در برابر حملات MITM سخت کند. در چنین ساختارهایی، گواهینامه هایی که بین مشتری و سرور مبادله می شوند؛ توسط شخص ثالث معتبری به نام مجوز گواهی (CA) صادر و تأیید می شوند. اگر کلید اصلی تأیید هویت این CA به خودی خود مورد حمله MITM قرار نگرفته باشد، ممکن است از گواهینامه های صادر شده توسط CA برای تأیید اعتبار پیام های ارسالی توسط صاحب آن گواهینامه استفاده شود. استفاده از احراز هویت متقابل، که در آن هم سرور و هم مشتری ارتباط دیگری را تأیید می کنند، هر دو انتهای یک حمله MITM را پوشش می دهد، اگرچه رفتار پیش فرض اکثر اتصالات فقط تأیید هویت سرور است.
در یک محیط شرکتی، تأیید هویت موفق (همانطور که توسط قفل سبز مرورگر نشان داده می شود) همیشه به معنای اتصال ایمن با سرور راه دور نیست. قفل سبزهمیشه نشان نمی دهد که مشتری با موفقیت از سرور از راه دور متصل شده است؛ بلکه فقط با سرور/ پروکسی شرکتی استفاده شده برای بازرسی SSL / TLS تأیید اعتبار شده است.
پین کردن کلید عمومی (HPKP)، که گاهی اوقات ‘صدور گواهینامه’ نیز نامیده می شود، با جلوگیری از حمله MITM که در آن مرجع صدور گواهینامه به خطر می افتد، کمک می کند تا با ارائه سرور لیستی از هشدارهای کلید عمومی ‘پین شده’ را در اولین انتقال تهیه کنید. انتقالات بعدی به یک یا چند کلید در لیست نیاز دارند که سرور برای تأیید اعتبار آن انتقال مورد استفاده قرار می دهد.
این تشخیص به طور بالقوه می تواند تأخیر حمله را در موقعیت های خاص تشخیص دهد. مانند محاسبات طولانی توابع هش که منجر به ده ها ثانیه تاخیر می شود. برای شناسایی حملات احتمالی، طرفین تفاوت زمان پاسخ بررسی می کنند. به عنوان مثال: بگویید كه دو طرف معمولاً برای انجام انتقال خاص، مدت مشخصی را می گیرند. اما اگر یک انتقال برای رسیدن به طرف مقابل مدت زمان غیرطبیعی را طی کند، این می تواند نشانگر دخالت شخص ثالث در تأخیر انتقال باشد.
یکی دیگر از راه های مقابله با این نوع حمله استفاده از پروتکل HSTS است. برای کسب اطلاعات بیشتر در رابطه با این موضوع به مقاله آن می توانید مراجعه نمایید.