پروتکل مسیریابی BGP به شکل پیشفرض یک پروتکل امن طراحی نشده و دارای مشکلات امنیتی است و با وجود این مشکلات امنیتی مورد حملات امنیتی از جمله Route Hijacking قرار میگیرد؛ این مشکل زمانی پیش می آید که یک ASمسیری نا معتبر را در شبکه پخش میکند، به تازگی نوع دیگری از حملات که ترکیبی از BGP Hijacking و Man-In-The-Middle (MITM) است انجام میشود، در این نوع حمله هکر ترافیک انتقالی در شبکه را به سمت نقطه ای خاص هدایت میکند و پس از آن اطلاعات را به مقصد اصلی میفرستد، هنگامی که اطلاعات رمزنگاری نشده باشند به راحتی برای هکر (MITM) قابل رویت و دستیابی است.
چه اقداماتی برای افزایش امنیت BGP انجام شده است؟
هم اکنون Internet Engineering Task Force (IETF) اقداماتی برای بالا بردن سطح امنیت Routeها مانند ایجاد RPSL و SIDR انجام داده است. گروه SIDRراهکارهایی برای امنیت BGPتوسعه میدهند که در این میان میتوان به BGPSec که کار AS Path Validation را انجام میدهد اشاره کرد. BGPSec سعی میکند از درستی بهروزرسانی های BGP و درستی مسیر طی شده توسط آنها اطمینان حاصل کند. BGPSec بسیار شبیه به Secure BGP یا S-BGP که در دهه 1990 توسط شرکت BBN Technologies توسعه داده شده اند عمل میکند. برخلاف RPKI، که مدیریت، توزیع و اجرای آن توسط پنج سازمان ثبت اینترنت منطقهای (RIRs) در سرتاسر دنیا انجام میشود، BGPSec بخش ناگسستنی از پروتکل BGP است، در نتیجه توسعه و پیاده سازی آن توسط روترهای BGP انجام میشود. به منظور شکل گیری یک ارتباط BGPSec بین دو روتر BGP مشخصه AS_PATH با مشخصه BGPSec_Path در BGP Updates جایگزین میشود که عملکرد مشابه اما امنی را به ارمغان می آورد.
ساز و کار BGP در حالت معمولی به چه شکل است؟
یک BGP Router معمولی به هنگام تولید prefix (که وارد BGP میشود(، یک مشخصه AS_PATH می سازد که فقط شامل شماره AS (Autonomous System) فعلی است. و در زمانی که یک روتر می خواهد BGP Update را برای BGP های همسایه در AS های دیگر منتشر کند، شماره AS خود را از چپ به AS_PATH اضافه میکند، به این شکل روترها میتوانند تشخیص دهند که این به روز رسانی تازه است یا نه، و در حالت تکراری بودن آن را نادیده بگیرند. یک به روزرسانی BGP میتواند شامل تعداد مختلفی پیشوند (prefix) با AS_PATH یکسان و دیگر مشخصه ها بشود. زمانی که روتر میخواهد یک بهروزرسانی BGP را به اعضای یک Peer Group ارسال کند، فقط یک بهروزرسانی BGP می سازد و کپی آن را برای یکایک اعضای گروه ارسال میکند.
BGPSec چگونه عمل میکند؟
هنگامی که از BGPSec بهره میبریم، به جای AS_PATH، مشخصه BGPsec_Path ساخته میشود و به طور کلی مشابه حالت قبل عمل میکند، با این تفاوت که روتر ASN (Autonomous System Number) مقصد که به روزرسانی BGP به آن ارسال میشود را نیز به Path اضافه میکند، سپس یک امضای رمزنگاری شده (Cryptographic Signature) با استفاده از این اطلاعات تولید میکند. برای حفظ یکپارچگی امضاهای تولید شده، روتر ها دیگر نمیتوانند چندین پیشوند(prefix) را در قالب یک بهروزرسانی ارسال کنند، و به دلیل اینکه شماره AS دریافت کننده در بهروزرسانی وجود دارد، باید برای هر همسایه یک بهروزرسانی جداگانه (به همراه یک امضای جداگانه) ساخته شود.
با استفاده از این روش هر جهش (hop) در AS Path با یک امضای رمزنگاری شده محافظت شده است و روتری که به روزرسانی BGPرا که شامل مشخصه BGPSec_Path است دریافت میکند، میتواند به راحتی درستی AS Path را بررسی کند. برای مثال در نظر بگیرید AS Path به شکل 791 612 566 باشد. در ابتدا روتر دریافت کننده امضای AS 566را بررسی میکند. امضا شامل یک “Subject Key Identifier”است که اشاره به گواهینامه RPKI ای دارد که توسط روتر تولید کننده امضا ایجاد شده است، بنابراین روتر دریافت کننده با استفاده از این گواهینامه، درستی امضا را بررسی میکند. همچنین روتر بررسی میکند که 566 میخواهد بهروزرسانی به 612 ارسال کند، در نتیجه امضای ساخته شده در AS 612 را بررسی میکند، به همین ترتیب چون 612 قرار است بهروزرسانی به 791 ارسال بکند، امضای AS 791 نیز بررسی میشود، در صورتی که درستی امضای ساخته شده در AS 791 اثبات شود، AS Path معتبر شناخته شده و میتوان از اطلاعات RPKIبرای پیوند دادن (bind) پیشوندهایی که توسط AS 566 تولید شده است، و آن مسیر معتبر (Validated AS Path) استفاده کرد.
شرایط لازم برای گسترش BGPSec به چه شکل است؟
با گذر زمان و افزایش پشتیبانی ASها از ساز و کار جدید، گسترش فزاینده BGPSec امکانپذیر است، اگرچه به منظور درست کار کردن BGPSec باید تمامی روترهایی که در مسیر وجود دارند، از روتری که به روزرسانی را منتشر میکند تا روتری که درستی آن را تایید میکند، از BGPSecپشتیبانی کنند. هنگامی که روتر با قابلیت BGPSec با یک روتر BGP معمولی ارتباط برقرار میکند، مشخصه BGPSec_Path تبدیل به AS_PATH معمولی شده و تمام اطلاعات امنیتی ساخته شده کنار گذاشته میشوند. توجه داشته باشید که پیاده سازی RPKI با این روش بسیار متفاوت است، از آنجایی که Regional Internet Registry (RIR) ها Route Origin Authorization (ROA) را تولید میکنند، هر AS بهطور مستقل و بدون نیاز به پشتیبانی ASهای در مسیر یا تغییر در پروتکل BGP میتواند اقدام به بررسی RPKI کند.
نیازمندی های پیاده سازی BGPSec چگونه است؟
از آنجایی که پروتکل BGPSec تشنه منابع است، پیاده سازی آن میتواند بحران برانگیز باشد. بهروزرسانی های BGPSec به سبب در برگرفتن امضاها و اطلاعات پشتیبان حجیمتر هستند و همچنین تعداد بهروز رسانی های ساخته شده بیشتر است چون هر بهروزرسانی فقط میتواند یک پیشوند را انتقال دهد؛ از طرفی در هر AS موجود در مسیر بررسی امضا انجام میشود، در نتیجه زمان بیشتری صرف پردازش بهروزرسانیها میشود. برای نمونه با در نظر گرفتن یک جدول مسیریابی در مقیاس جهان با نیم میلیون پیشوند IPv4 و بطور میانگین چهار جهش AS به 2 میلیون بررسی امضا در شروع کار میرسیم، که با در نظر گرفتن الگوریتم حتی با پردازشگر (CPU) سریع انجام این محاسبات چندین دقیقه طول میکشد. روترهای BGPSec نیازمند دسترسی به تعداد زیادی اطلاعات RPKI هستند، در نتیجه به مقدار قابل توجهی حافظه بیشتر نسبت به روترهای معمولی نیاز دارند که منجر به استفاده بیشتر از منابع میشود.
جمع بندی
همانگونه که گفته شد BGPSec تاثیر به سزایی در بالا بردن سطح امنیت پروتکل مسیریابی BGPدارد اما محدودیتهایی نیز برای پیاده سازی آن وجود دارد. در مجموع با پیشرفت تکنولوژی و ارزانتر شدن منابع، در آینده پروتکل BGP امن تر خواهد بود، حتا اگر این امنیت به قیمت پیچیدگی بیشتر و استفاده از سخت افزار های بزرگتر و سریعتر تمام شود.