IP security یا به اختصار IPSec مجموعهای از چندین پروتکل است که جهت تنظیم ارتباطات رمزگذاری شده بین دستگاههای شبکه مورد استفاده قرار میگیرد. وظیفه اصلی این پروتکل، ایمن نگه داشتن دادههای ارسالی از طریق شبکههای عمومی است.
IPSec غالبا برای راه اندازی V*P*N استفاده میشود و با رمزگذاری بستههای IP همراه با تاییدیه منبع ارسال پیام، کار میکند. پروتکل IPSec یکی از بخشهای مهم امنیت شبکه به شمار میرود. جهت تشریح بیشتر این واژه باید گفت IP مخفف Internet Protocol است و Sec نیز مخفف security.
IP اصلیترین پروتکل مسیریابی است که در بستر اینترنت مورد استفاده قرار میگیرد. این پروتکل مشخص میکند که دادهها، چه مسیری را باید طی کنند و به کدام مقصد برسند. IPSec رمزگذاری و احراز هویت را نیز به این فرایند اضافه میکند.
IPsec چیست؟
شبکه خصوصی مجازی یا V-PN، یک ارتباط رمزگذاری شده بین دو یا چند سیستم میباشد. ارتباطات وی.پی.ان از طریق شبکه عمومی صورت میگیرد، اما تبادل داده از طریق V.P*N به دلیل این که رمزگذاری میشود، به صورت خصوصی است.
وی پی.ان ها دسترسی ایمن و تبادل دادههای محرمانه از طریق زیرساختهای اشتراکی شبکه مانند اینترنت عمومی را میسر میسازند. به عنوان مثال، زمانی که کارمندان از راه دور کار میکنند، جهت دسترسی به فایلها و پروندههای شرکت از V-P.N استفاده میکنند.
بسیاری از وی -پی.ان ها جهت ایجاد و اجرای ارتباطات رمزگذاری شده، از IPSec استفاده میکنند. البته تمام v-p.n ها این کار را انجام نمیدهند. پروتکل دیگری که ویپیان ها از آن استفاده میکنند، SSL/TLS است که در لایه دیگری از مدل OSI عمل میکند.
موارد استفاده از IPSec
برای انجام موارد زیر میتوان از IPSec استفاده کرد:
- جهت رمزگذاری دادههای application layer
- ایجاد امنیت برای روترهایی که دادههای مربوط به مسیریابی را از طریق اینترنت عمومی ارسال میکند.
- ایجاد احراز هویت بدون رمزگذاری، مانند تاییدیه مربوط به ارسال دادهها از منبع نامشخص
- محافظت از دادههای شبکه با استفاده از تنظیم مدارهایی با کمک IPSec که تمامی دادهها بین دو نقطه ارسال میشود، مانند ارتباط V*P-N
کاربران چگونه میتوانند به IPSec V.P.N متصل شوند؟
برای این کار میبایست به یک برنامه V-P.N وارد شوند. معمولا این امر نیاز به نصب برنامهی مربوطه دارد. به طور معمول، ورود به v_p.n از طریق پسورد اتفاق میافتد. با توجه به این که دادههای ارسالی از طریق وی -پی.ان رمزگذاری میشوند، در صورت به خطر افتادن رمزهای عبور کاربر، مهاجمان میتوانند وارد وی-پی-ان شده و دادههای رمزگذاری شده را به سرقت ببرند.
قابل ذکر است استفاده از احراز هویت دو عاملی (2FA) میتواند امنیت IPSec را بهینه کند، زیرا در اختیار داشتن پسورد به تنهایی، امکان دسترسی مهاجمان را فراهم نمیکند.
IPsec چگونه کار میکند؟
اتصالات IPSec شامل مراحل زیر است:
Key exchange: برای رمزگذاری، وجود کلیدها ضروری میباشد. کلید، رشتهای از کاراکترهای تصادفی است که میتواند جهت قفل کردن (رمزگذاری) و بازکردن قفل (رمزگشایی) پیامها استفاده نماید.
IPSec کلیدهایی را با key exchange بین دستگاههای مرتبط به هم تنظیم میکند، به طوری که هر دستگاه میتواند پیامهای دستگاه دیگر را رمزگشایی نماید.
Packet headers and trailers: هر دادهای که از طریق شبکه ارسال میشود، به قسمتهای کوچکتر به نام بسته (packet) تقسیم میشود. هر کدام از این پکتها، دارای payload (دادههای واقعی ارسال شده) و header (اطلاعاتی مربوط به دادهها است تا سیستمهای دریافت کنندهی بستهها، بدانند با آنها چه کنند) میباشد.
کاری که IPSec انجام میدهد این است که چندین header به بستههای حاوی اطلاعات رمزگذاری و احراز هویت میافزاید. در ضمن، IPSec چندین trailer نیز اضافه میکند تا به جای اینکه قبل از هر payload قرار گیرد، بعد از آن قرار گیرد.
Authentication: هر پکت یا بسته، موفق به دریافت تاییدیه اعتبار توسط IPSec میشود، مانند مهر اصالت روی کالا. این امر تضمین میکند که هر پکت از یک منبع قابل اعتماد ارسال شده است نه از طرف یک مهاجم.
Encryption: ا IPSec، دادههای مربوط به هر پکت و همچنین header مربوط به IPهای پکتها را رمزگذاری میکند. (مگر این که به جای حالت transport از حالت tunnel استفاده شود). این امر منجر میشود دادههای ارسالی از طریق IPSec، ایمن و خصوصی باقی بمانند.
Transmission: پکتهای رمزگذاری شدهی IPSec از طریق یک یا چند شبکه و با استفاده از پروتکل transport به مقصد خود میرسند. در این مرحله، ترافیک IPSec با ترافیک معمولی IP متفاوت است، زیرا اغلب از UDP به عنوان پروتکل transport خود به جای TCP استفاده میکند.
TCP یا Transmission Control Protocol، ارتباط اختصاصی بین دستگاهها را تنظیم نموده و همچنین رسیدن تمامی بستهها را ضمانت میکند. UDP یا User Datagram Protocol، چنین ارتباطات اختصاصی را تنظیم نمیکند. IPSec به این دلیل که اجازه میدهد پکتها از طریق فایروال عبور کنند، از UDP استفاده میکند.
Decryption: سمت دیگر این ارتباط، پکتها رمزگشایی میشوند و برنامههایی مانند مرورگرها میتوانند از دادههای تحویل داده شده، استفاده نمایند.
اجزا تشکیل دهندهی IPSec
به عنوان تعریف پروتکل در شبکه میتوان گفت روشی مشخص جهت قالببندی دادهها است، به طوری که هر شبکه کامپیوتری قادر به تفسیر آن دادهها باشد. اما IPSec یک پروتکل نیست، بلکه مجموعهای از پروتکلهاست. IPSec از پروتکلهای زیر تشکیل شده است:
- Authentication Header یا AH: پروتکل AH ضمانت میکند پکتهای داده از یک منبع معتبر ارسال شده و دستکاری نشدهاند. از آنجا که این header ها هبچ رمزگذاری را ارائه نمیکنند، بدیهی است که دادهها را نمیتوانند از دسترس مهاجمان پنهان نمایند.
- Encapsulating Security Protocol یا ESP: این پروتکل، headerهای آی پی و payloadهای هر پکت را رمزگذاری مینماید، مگر این که از حالت transport استفاده شود. در آن صورت، تنها payloadها را رمزگذاری میکند. کاری که ESP انجام میدهد این است که هدر و تریلر مخصوص به خود را به هر پکت داده، میافزاید.
- Security Association یا SA: به تعدادی از پروتکلهایی که برای مذاکرهی کلیدهای رمزگذاری و الگوریتمها اشاره دارد. Internet Key Exchange یا IKE، یکی از رایجترین پروتکلهای SA است.
در نهایت میتوان گفت، درحالیکه Internet Protocol یا IP، بخشی از مجموعه IPSec نیست، اما در عین حال IPSec مستقیما تحت نظر IP اجرا میشود.
تفاوت IPSec tunnel و IPSec transport
به طور معمول IPSec tunnel بین دو روتر اختصاصی مورد استفاده قرار میگیرد، که هر روتر به عنوان یک تانل مجازی از طریق شبکه عمومی عمل میکند.
هدر اصلی IP در حالت IPSec tunnel که حاوی مقصد نهایی پکتها میباشد، علاوه بر packet payload، رمزگذاری نیز میشود. IPSec به منظور مشخص کردن مسیر پکتها برای روترها، یک IP header جدید میافزاید. علاوه بر این روترها در دو سر انتهایی تانل، IP header را رمزگشایی میکنند تا پکتها به مقصد نهایی تحویل داده شوند.
در حالت transport، فقط دادههای (payload) مربوط به هر پکت رمزگذاری میشود، اما این اتفاق برای IP header اصلی نمیافتد. بنابراین، روترهای واسطه قادر به مشاهده مقصد نهایی هر پکت هستند؛ مگر این که از پروتکل tunneling جداگانه مانند GRE استفاده شود.
IPSec از چه پورتی استفاده میکند؟
یک پورت شبکه، محلی مجازی است که دادهها از طریق آن وارد کامپیوتر شوند. میتوان گفت از پورتها برای بررسی مسیر فرایندها و اتصالات مختلف استفاده میشود. در صورتی که دادهها به یک پورت خاصی وارد شوند، از نظر سیستم عامل کامپیوتر مشخص است که به کدام فرایند، تعلق دارد. به طور معمول، IPSec از پورت 500 استفاده میکند.