IP یک شناسه آنلاین منحصر به فرد است که به عنوان اصلیترین پروتکل جهت مسیریابی نیز شناخته میشود. هر رایانهای که در شبکه است یک آدرس IP دارد و رایانهها از طریق آن میتوانند یکدیگر را شناسایی کرده و با هم ارتباط برقرار کنند. حتی اگر قصد تشکیل شبکه با دو رایانه و برقراری ارتباط بین آنها را داشته باشیم باز هم هر کدام از آنها باید یک IP مشخص داشته باشد.
بنابراین با توجه به اینکه بستهها بین رایانهها از طریق پروتکل IP انتقال مییابند، پس ارتباط بین آنها باید در مسیری امن صورت پذیرد. در این مطلب از فراست، به معماری امنیت IP و چگونگی ایجاد امنیت برای انتقال بستهها در بستر شبکه میپردازیم.
معماری امنیت IP چیست؟
معماری امنیت IP یا IPSec، شامل مجموعهای از پروتکلها است که به صورت گسترده در فناوری VPN برای ایجاد اطمینان و تضمین یکپارچگی، محرمانگی و تأیید اعتبار ارتباطات دادهای در بستر شبکه IP و همچنین برقراری ارتباطات رمزنگاری شده توسعه یافته است. به عبارت دیگر این پروتکلها از طریق رمزنگاری و احراز هویت بستهها باعث میشوند تبادل آنها در لایه IP با امنیت کامل انجام شود. در واقع IPSec از دادههای اشتراکی بین دو میزبان، دو Gateway یا حتی یک میزبان و یک Gateway محافظت میکند.
به عنوان مثال زمانی که یک شرکت، توسعه پیدا کرده و چندین شعبه در مکانهای مختلف تأسیس مینماید احتمال وقوع مخاطرات امنیتی نیز برای آن افزایش پیدا می کند. بنابراین یکی از دغدغههای اصلی مدیران و مسئولان امنیتی، ایجاد یک بستر امن جهت برقراری ارتباط بین شبکهها است. فناوری IPSec علاوه بر اینکه امکان ایجاد یک بستر امن ارتباطی را برای سازمانها و شرکتها فراهم میکند، به صرفهجویی در هزینهها نیز کمک چشمگیری میکند.
کاربرد IPSec
از IPSec عموماً در دامنههای امنیتی مختلفی استفاده میشود که بعضی از آنها به شرح زیر است:
- امنیت مسیریابی و ایجاد امنیت لازم برای مسیریاب هایی که دادههای مربوط به مسیریابی را از طریق اینترنت ارسال میکنند.
- محافظت از دادههای شبکه
- احراز هویت در لایه شبکه
- محافظت در برابر حملات Replay
- افزایش امنیت نرمافزارها
- احراز هویت فرستنده بستهها
- افزایش امنیت اتصالات برقرار شده توسط VPN
IPSec با پروتکلهایی که دارد می تواند فرایندهای امنیتی بالا را انجام دهد. به عنوان مثال از پروتکل AH برای مقابله با حملات Replay استفاده میکند. باید توجه داشت که IPsec، یک راهکار امنیتی کامل محسوب نمیشود و باید مکمل سایر راهکارهای امنیت سازمان ها باشد. مزیتی که IPSec در مقایسه با سایر سازوکارهای امنیتی مشابه دارد این است که از این فناوری میتوان به راحتی در بسترهای انتقال فایل استفاده کرد.
عناصر تشکیل دهنده IPSec
- IPDec Driver: عملیات های مختلفی از جمله رمزنگاری، رمزگشایی، احراز هویت و شناسایی بسته ها را انجام میدهد.
- IKE: یکی از پروتکلهای IPSec، پروتکل Internet Key Exchange است که کلیدهای امنیتی را برای IPSec و سایر پروتکلها ایجاد میکند.
- ISAKMP: این پروتکل، یکی از پروتکلهای اصلی در IPSec است که فرایند امن نمودن تبادل کلیدها را بر عهده داشته و امنیت لازم را برای تمام ارتباطاتی که در بستر اینترنت انجام می شوند، برقرار میکند. همچنین دو رایانه با استفاده از این پروتکل و به کارگیری تنظیمات معمول میتوانند با یکدیگر ارتباط برقرار کنند.
- Oakley: این پروتکل با استفاده از پروتکل رمزنگاری Diffie-Hellman برای ایجاد یک کلید اصلی و همچنین کلیدی که مخصوص هر نشست است، مورد استفاده قرار می گیرد.
- IPSec Policy Agent: مجموعهای از سیاست هایی است که تنظیمات IPSec را از اکتیو دایرکتوری جمعآوری کرده و در تنظیمات ساختاری این پروتکل اعمال میکند.
عملکرد IPSec
در حالت کلی، پروتکل IPSec پس از برقراری یک نشست ارتباطی، به Agantها مجوز انجام احراز هویت مشترک را میدهد. سپس هر دو Agant فرستنده و گیرنده، با ایجاد ارتباط از طریق یک الگوریتم و کلید رمزنگاری، جهت تبادل داده ها موافقت میکنند.
نحوه عملکرد IPSec به ترتیب مراحل زیر است:
- در مرحله اول، Key Exchange رشتههایی را با کاراکترهای تصادفی، بین دستگاههای مرتبط با هم تنظیم میکند. از این کلیدها جهت رمزنگاری و رمزگشایی پیامها استفاده میشود و هر سیستمی نیز میتواند پیامهای سیستم دیگر را رمزگشایی نماید.
- هر دادهای که در شبکه منتقل میشود، به قسمتهای کوچکتری به نام «بسته (Packet)» تقسیم میشود. هر بسته نیز شامل دو قسمت به نام های “Payload” و “Header” است. Payload شامل دادههای ارسالی و Headerها شامل مشخصات هر داده میباشند تا دستگاههایی که این دادهها را دریافت میکنند، از عملیاتی که باید با آنها انجام دهند، اطلاع داشته باشند. در این مرحله، به هر کدام از بستهها Headerهایی اضافه میشود که حاوی اطلاعات رمزنگاری و احراز هویت هستند.
- در مرحله سوم، هر بسته ارسالی مهر تأیید را از IPSec دریافت میکند. به عبارت دیگر IPSec تأیید مینماید که هر بسته از طرف یک منبع قابل اعتماد ارسال شده است.
- در صورتی که IPSec در حالت عملیاتی Transport باشد (در ادامه بیشتر راجع به آن توضیح خواهیم داد) به منظور حفظ امنیت دادههای ارسالی، آنها و همچنین Header مربوط به آیپیهای بسته رمزنگاری میشود.
- بستههایی که از طریق IPSec رمزنگاری شدهاند، در بستر شبکه منتقل میشوند.
- در مرحله پایانی هم دستگاههای گیرنده، بستهها را دریافت نموده و آنها را رمزگشایی میکنند.
نکتهای که وجود دارد این است که ترافیک IPSec با ترافیک IP متفاوت است و همچنین با توجه به اینکه IPSec به بستهها این اجازه را میدهد تا از فایروال عبور کنند بنابراین از پروتکل UDP به جای TCP برای انتقال بستهها استفاده میکند. عملکرد پروتکل TCP به این صورت است که چون از یک ارتباط اختصاصی بین دستگاهها استفاده میکند، به همین دلیل می تواند دریافت کامل بستهها را توسط گیرنده تضمین نماید.
انواع حالت های عملیاتی IPSec
IPSec دو حالت عملیاتی برای برقراری ارتباط بین طرفین دارد. این دو حالت عبارتند از:
- حالت انتقال (Transport Mode)
- حالت تونل (Tunnel Mode)
در حالت اول که «بستهبندی Payload امنیتی» یا ESP نیز نامیده میشود، دادههای هر بسته توسط IPSec رمزنگاری میشوند اما هدر اصلی IP بدون تغییر باقی مانده و رمزنگاری نمیشود. بنابراین مسیریاب ها قادر به شناسایی مقصد نهایی بستهها هستند. در این حالت سیستم های مبدأ و مقصد باید فرایند رمزنگاری را به صورت مستقیم انجام دهند. سپس دادههای رمزنگاری شده، از طریق یک تونل اختصاصی که توسط پروتکل L2TP برقرار شده است، ارسال میشوند. این دادهها به وسیله سیستم مبدأ ایجاد شده و در نهایت نیز به وسیله سیستم مقصد، رمزگشایی و به شکل اولیه بازیابی میشوند.
سرآیند ESP می تواند انجام عملیات رمزنگاری، بستهبندی داده ها و محرمانگی اطلاعات را فراهم کند. محرمانگی داده ها از طریق الگوریتم رمزنگاری متقارن انجام میشود. IPSec در این حالت عملیاتی می تواند امنیت سراسری را ایجاد کرده و از آن برای ایجاد سرویسهای VPN در شبکههای NAT استفاده میشود. زمانی که IPSec در حالت تونل باشد، علاوه بر دادههای هر بسته، هدر اصلی IP را نیز رمزنگاری میکند. بنابراین این حالت برای انتقال بستهها از امنیت بیشتری برخوردار است.
در این حالت علاوه بر سیستم های مبدأ و مقصد، Gatewayهایی وجود دارند که فرایند رمزنگاری را انجام میدهند. همچنین تونلهای متعددی به صورت سلسلهوار میان Gatewayها ایجاد میشود که امنیت میان دو Gateway را تأمین میکنند.
حالت تونل، به «سرآیند تأیید اعتبار» یا AH نیز معروف است. AH، صحت و یکپارچگی لازم را برای بستهها ایجاد میکند. در این روش، احراز هویت از طریق توابع هش دارای کلید که با عنوان MAC (کدهای احراز هویت پیام) شناخته میشوند، انجام میشود. این سرآیندها تغییرات غیرمجاز را ممنوع ساخته و امکان Antireplay (جلوگیری از تزریق یا ایجاد تغییر در بستههایی که از مقصد به مبدأ ارسال میشود) را هم فراهم میکنند. همچنین AH میتواند امنیت را میان چندین سیستم و Gateway که در همه آنها AH پیادهسازی شده است، برقرار کند.
با توجه به طول مسیری که میان تونلها و Gatewayهای مختلف پیموده میشود، سرآیندهای بسیار زیادی به بسته ها اضافه میشود. در هر گذار از یک Gateway، یک نمودار دادهای در سرآیند جدید ایجاد میشود. در این سرآیند، «شاخص پارامتر امنیت (SPI)» قرار میگیرد. سپس SPI، الگوریتمها و کلیدهایی را که توسط سیستم قبلی برای مشاهده بسته استفاده شده بودند را مشخص میکند.
بنابراین با توجه به اینکه هرگونه تغییر یا خطایی در داده ها شناسایی خواهد شد و موجب عدم پذیرش آن از سمت گیرنده و دور انداختن آن میشود، پس این دادهها در سیستم نیز محافظت شده هستند. سرآیندها در ابتدای هر تونل در بسته قرار گرفته و سپس در انتهای هر تونل، ارزیابی و حذف میشوند. به همین خاطر این روش می تواند از ایجاد سربار غیرضروری در شبکه جلوگیری کند.
«امنیت مشارکتی (SA)» بخش مهمی از IPsec است. SA از شماره SPI موجود در AH و ESP استفاده میکند تا نشان دهد از چه SA برای بسته مورد نظر استفاده شده است. یک آدرس IP مقصد نیز در آن قرار گرفته تا به نقطه انتهایی که ممکن است یک فایروال، مسیریاب یا یک کاربر باشد، اشاره کند.
از یک «پایگاه داده امنیت مشارکتی (SAD)» برای ذخیره کلیه SAها استفاده می شود. همچنین یک قانون امنیتی نیز توسط SAD مورد استفاده قرار میگیرد تا نشان دهد کدام مسیریاب، چه کاری را باید با بسته مورد نظر انجام دهد. سه مورد از اقداماتی که مسیریاب میتواند انجام دهد، شامل موارد زیر است:
- دور انداختن کل بسته
- دور انداختن SA
- جایگزینی یک SA متفاوت
در نهایت هم تمام قوانین امنیتی مورد استفاده، در پایگاه داده قوانین امنیتی ذخیره میشوند.
IPSec با چه مشکلاتی مواجه است؟
با توجه به انعطافپذیری بالای IPSec، این پروتکل توجه بسیاری از کسب و کارها و مشاغل را به خود جلب کرده است. البته همین انعطافپذیری زیاد، منجر به ایجاد مشکلات پیچیده و متعددی در کار با این پروتکل شده است. از طرف دیگر پیاده سازی ضعیف این پروتکل همانند سایر سیستمهای امنیتی می تواند موجب ایجاد مشکلات زیادی برای سازمان ها شود.
یکی از مشکلاتی که در این زمینه وجود دارد این است که در بعضی از موارد، امکان برقراری ارتباطات سراسری مستقیم (در حالت انتقال) امکانپذیر نمیباشد. در زیر، مثال سادهای بیان شده که در آن دو سیستم H1 و H2 توسط یک تونل مستقیم با هم در ارتباط هستند و سیستم H1 از فایروالی به نام FW1 عبور میکند.
مثال: در یک سیستم توزیع شده بزرگ یا در محیط شبکه، اجرای قوانین امنیتی منطقهای مختلف میتواند مشکلات زیادی را برای ارتباطات سراسری ایجاد کند. فرض کنید FW1 باید محتوای ترافیکی را برای شناسایی نفوذ، مورد آزمایش قرار دهد. قانونی در FW1 تعریف شده تا برای ایجاد الزام آزمون محتوا، همه ترافیکهای رمزنگاری را دور بیندازد. از طرف دیگر، H1 و H2 بدون آگاهی از وجود فایروال و قوانین خط مشی آن، تونل مستقیمی بین خود ایجاد کردهاند. بنابراین تمام ترافیک توسط FW1 دور انداخته میشود. این سناریو نشان میدهد که هر قانونی نیازمندیهای منطبق با خود را برآورده میکند در حالی که همه این قوانین مجزا در کنار یکدیگر میتوانند منجر به ایجاد مغایرت شوند.
یکی دیگر از معایبی که برای IPSec وجود دارد، میزان پیچیدگی بالای آن است. با وجود اینکه انعطافپذیری IPSec نقش به سزایی در محبوبیت آن داشته اما از طرفی دیگر همین قابلیت باعث ایجاد ابهام و دوگانگی در آن شده است. متخصصان امنیتی نیز در این باره میگویند که انعطافپذیری IPSec بیش از حد است.
انعطافپذیری و پیچیدگی IPSec شاید ناشی از این واقعیت باشد که این فناوری توسط یک انجمن خصوصی توسعه داده شده است. بنابراین با توجه به ماهیت سیاسی آن انجمن، اغلب به منظور برآورده کردن خواسته های جناحهای استانداردساز، قابلیتها، گزینهها و انعطافپذیری بالایی به آن اضافه شده است. البته این فرایند، تضاد کاملی با فرایند استانداردسازی استفاده شده در توسعه استاندارد رمزنگاری پیشرفته (AES) که جایگزین استاندارد رمزنگاری داده بوده و در سال 1377 منسوخ شده است، دارد.
مقایسه این شیوه با روشی که توسط NIST (مؤسسه ملی استانداردها و فناوری آمریکا) اتخاذ شده است برای توسعه AES بسیار آموزنده است. در این روش، NIST به جای ایجاد انجمن، یک رقابت مشارکتی را طرحریزی کرده است. سپس گروههای کوچک متعددی طرحهای پیشنهادیشان را ایجاد کرده و فرایند، محدود به انتخاب یکی از آنها شد. در زمان نوشتن آن یک مرحله حذف کردن وجود داشت و هر یک از پنج منتخب باقیمانده، استاندارد بهتری نسبت به استانداردهایی که انجمن تاکنون ایجاد کرده بود به وجود آوردند.
علاوه بر آن، اغلب مستندات IPSec، پیچیده و گیج کننده هستند. هیچ بازبینی یا معرفی نیز برای آن تهیه نشده و در هیچ کجای آن نیز اهداف تعیین شده برای این پروتکل مشخص نشده است. بنابراین این کاربران هستند که باید خودشان یافته هایشان را در کنار یکدیگر قرار داده و از روی اسنادی که توصیف آنها به مراتب سختتر از خواندنشان است، مفهومی را استخراج کنند. برای درک بهتر توضیح سختی و ناامیدی که یک کاربر می تواند در این خصوص متحمل شود، کافی است نگاهی به مشخصات ISAKMP بیندازید. این مشخصات، بسیاری از توضیحات اساسی را جا انداخته و همچنین دارای خطاهای متعددی بوده و در جاهای مختلفی نیز خودش را نقض کرده است.
اگرچه ممکن است IPSec کامل نباشد ولی همچنان در مقایسه با پروتکلهای امنیتی موجود قبلی، همچنان به عنوان یک پیشرفت بزرگ محسوب میشود. به عنوان مثال، سیستم امنیتی محبوب لایه سوکتهای امنیتی (SSL) را در نظر بگیرید. با وجود اینکه SSL در برنامههای مختلفی به کار گرفته شده است اما استفاده از آن محدود به لایه انتقال/برنامه بوده و برای پیاده سازی آن لازم است اصلاحاتی در برنامهها صورت پذیرد.
از آنجا که IPSec در لایه سوم استفاده میشود، کافی است به جای ایجاد تغییرات در برنامهها برای استفاده از این پروتکل، فقط اصلاحاتی در سیستم عامل ایجاد شود.
نتیجهگیری
IPSec کلیه سرویسهای امنیتی مرسوم نظیر احراز هویت، جامعیت و یکپارچگی، محرمانگی، رمزنگاری و انکارناپذیری را شامل میشود. با این حال، در IPSec نیز مانند سایر فناوریهای امنیتی دیگر، مشکلاتی از قبیل پیچیدگی و ابهام وجود دارد.
بسیاری از کارشناسان امنیتی معتقدند که IPSec با وجود تمام نکات منفی که دارد، همچنان جزو بهترین سازوکارهای امنیتی محسوب می شود و در آینده نزدیک نیز اصلاحات کارآمدی که منجر به رفع مشکلات موجود در معماری آن میشوند، در این پروتکل پیادهسازی خواهند شد.