پروتکل احراز هویت Kerberos چیست و چگونه کار میکند؟
دانشمندان علوم کامپیوتر دانشگاه MIT، اولین پژوهشگرانی بودند. که از پروتکل احراز هویت Kerberos (یکی از قهرمان اساطیر یونانی) برای نامگذاری یک پروتکل احراز هویتی استفاده کردند.
که درون شبکههای کامپیوتری استفاده میشود. پروتکل احراز هویت کربروس (Kerberos) تحت شبکه است. که در سطحی گسترده برای حل مشکل احراز هویت استفاده میشود.
کربروس از رمزنگاری کلید متقارن و یک مرکز توزیع کلید KDC سرنام Key Distribution Center استفاده میکند. از این رو برای تائید هویت کاربر به مجوز ثالث مورد اعتماد نیاز دارد.
کربروس به ۳ عنصر مجزا برای احراز هویت نیاز دارد و از یک سیستم رهگیری و نظارتی قدرتمند برای امنتر نگهداشتن محاسبات استفاده میکند.
آشنایی با تعریف احزار هویت کربوس
احراز هویت کربروس در حال حاضر فناوری احراز هویت پیشفرض ویندوز مایکروسافت است.
اما پیادهسازی کربروس در یونیکس، لینوکس Apple OS و FreeBSD امکانپذیر است. مایکروسافت نسخه کربروس خود را همراه با ویندوز ۲۰۰۰ معرفی کرد.
همچنین این فناوری به یک استاندارد برای وبسایتها و احراز هویت شناسایی یگانه (Single Sign-On) در پلتفرمهای مختلف تبدیلشده است.
لازم به توضیح است که کنسرسیوم پروتکل احراز هویت Kerberos این فناوری را بهعنوان پروژه منبع باز نگهداری میکند. کربروس به نسبت فناوریهای احراز هویت قبل از خود پیشرفت چشمگیری داشته است.
رمزنگاری قدرتمند و توکن احراز هویت ثالث باعث میشوند تا نفوذ به شبکه توسط مجرمان سایبری با دشواری زیادی همراه باشد.
این فناوری همانند سایر نمونههای مشابه در بخشهایی آسیبپذیر است. که اگر درباره این آسیبپذیرها اطلاع کافی داشته باشید، دفاع در برابر هکرها امکانپذیر میشود.
کربروس اینترنت را به محیطی امنتر تبدیل کرد و این امکان را برای کاربران فراهم کرد. تا فارغ از نگرانهای امنیتی و بدون نگرانی از بابت مشکلات امنیتی در دفتر کار خود با اینترنت کار کنند.
مغایرت های بین کربروس NTLM
قبل از پروتکل احراز هویت Kerberos مایکروسافت از یک فناوری احراز هویت بهنام (NTLM (NT Lan Manager استفاده میکرد. که یک پروتکل احراز هویت چالش-پاسخ بود.
کامپیوتر یا کنترلکننده دامنه گذرواژهها را بررسی و هش گذرواژه را برای استفاده مداوم ذخیره میکرد. بزرگترین تفاوت این دو سیستم در احراز هویت ثالث و توانایی رمزنگاری قدرتمندتر کربروس است.
کربروس در مقایسه با NTLM از یک لایه امنیتی اضافی در فرآیند احراز هویت استفاده میکند. این روزها سیستمهای مبتنی بر NTLM را میتوان در عرض چند ساعت هک کرد.
به بیان ساده NTLM یک فناوری قدیمی و به تعبیری منسوخشده است. که نباید برای محافظت از دادههای حساس از آن استفاده کرد.
چگونگی فرآیند احراز هویت کربروس
اجازه دهید با ذکر مثالی این فرآیند را شرح دهیم. آلیس بهعنوان کلاینت میخواهد یک ارتباط امن با سرور برقرار کند. هر دو سمت کلاینت و سرور قرار است از پروتکل احراز هویت Kerberos برای اطمینان از صحت هویت خود استفاده کنند.
همانگونه که اشاره شد Kerberos از رمزنگاری کلید متقارن استفاده میکند. که در آنیک کلید واحد برای رمزگذاری و آشکارسازی رمز استفاده میشود.
در مثال ما سرور باید تائید کند پیغامی که از طرف آلیس ارسالشده واقعا از طرف خود آلیس ارسالشده است.
برای این کار کلاینت و سرور تصمیم میگیرند. از اطلاعات یک کلید امنیتی برای تائید هویت طرف مقابلاستفاده کنند. آلیس یک پیغام به سرور ارسال میکند.
چگونگی کار کردن احراز هویت Kerberos
کلاینت یک پیغام که شامل نام کلاینت بهصورت متن ساده و یک تائید کننده که با استفاده از یک کلید امنیتی کدگذاری شده است را ارسال میکند.
این پیغام تائید یک ساختار دادهای متشکل از دو فیلد دارد. فیلد اول نام کلاینت و فیلد دوم زمان ایستگاه کاری کلاینت است.
بعد از دریافت پیغام، سرور با رمزگشایی ساختار دادهای تأییدکننده به وسیله همان کلید امنیتی، اطلاعات موردنیاز درباره کلاینت را استخراج میکند.
در ادامه سرور مهر زمانی را بازمان خودش بررسی میکند. اگر تفاوت در حد قابلقبول است. سرور متوجه میشود که پیغام احتمالا از طرف آلیس ارسال شده است.
در مواردی که اختلافزمانی وجود دارد، سرور بهطور خودکار پیغام را رد میکند.
تأییدکننده کاربرد دیگری نیز دارد که اجازه نمیدهد یک حمله بازپخشی انجام شود. حملات بازپخشی زمانی رخ میدهند که یک حملهکننده در میانه ارتباط پیغام را به سرقت میبرد.
و با معرفی خود بهعنوان کاربر اصلی پیغام را دومرتبه برای سرور ارسال میکند.
برای اینکه آلیس متوجه شود که سرور پیغام او را دریافت کرده، سرور مهر زمانی آلیس را با کلید امنیتی رمزگذاری کرده و آنها برای کلاینت بازمیگرداند.
از آنجایی که سرور بهجای تمام اطلاعات موجود در تائید کننده کلاینت تنها مهر زمانی را ارسال میکند.
کلاینت میتواند تائید کند فرد دیگری غیر از سرور پیغام او را دریافت نکرده، زیرا تنها سرور است که میتواند اطلاعات مهر زمانی را رمزگشایی و استخراج کند.
اشتراک کلید امنیتی یکسان کلاینت و سرور
کلاینت ممکن است بخواهد با چند سرور ارتباط برقرار کند و برای هر سرور به یک کلید نیاز دارد. سرور نیز ممکن است مجبور شود به چند کلاینت متصل شود و برای هر کلاینت به یک کلید احتیاج دارد.
برای این مشکلات چه راهکاری وجود دارد؟ ذخیرهسازی و ایمنسازی چند کلید در بسیاری از سیستمها دشوار است.
مرکز توزیع کلید (KDC) بهعنوان میانجی قابلاعتماد، راهکاری از طرف پروتکل احراز هویت Kerberos کربروس برای رفع این مشکلات است.
KDC از یک پایگاه داده نگهداری میکند که شامل اطلاعات حساب تمام طرفین تحت نظارت این سیستم است.
که کلید رمزنگاری که بهصورت پنهانبین KDC و طرفین تحت نظارت حفظ میشود، ازجمله این اطلاعات است.
کلید فوق، یک کلید طولانیمدت است که اعتبار زمانی آن بالا است و در ارتباطات بین KDC و طرفین تحت نظارت استفاده میشود
چگونگی استخراج کلید نشست در فرآیند پروتکل احراز هویت Kerberos
همانگونه که در شکل مشاهده میکنید. اگر یک کلاینت بخواهد با سرور ارتباط برقرار کند یک درخواست به KDC ارسال میکند.
KDC یک کلید نشست (session key) را برای هر دو سمت سرور و کلاینت به شکل رمزگذاری شده توزیع میکند.
بعد از اینکه کلاینت این کلید نشست را دریافت کرد. ممکن است یک پیغام را در همان لحظه یا بعد از گذشت مدتزمانی به سرور ارسال کند.
در چنین شرایطی باید به دو وضعیت مهم رسیدگی شود. اگر کلاینت تصمیم بگیرد.
بعدا این ارتباط را برقرار کند، سرور باید کلید نشستی که از KDC دریافت کرده را بهعنوان نتیجه درخواست کلاینت ذخیره کند.
از طرف دیگر به دلیل ترافیک شبکه، سرور ممکن است. این کلید نشست را قبل از رسیدن پیغام کلاینت از KDC دریافت نکند.
برای جلوگیری از چنین وضعیتی، بهجای ارسال کلید نشست به سرور، KDC یک کپی از این کلید را به شکل بلیت نشست (Session Ticket) به کلاینت ارسال میکند.
در پاسخ به درخواست کلاینت، KDC هر دو کپی از کلید نشست را به خود کلاینت بازمیگرداند.
کپی کلاینت چه وظیفه ای دارد؟
کپی کلاینت با کلید طولانیمدت کلاینت کدگذاری شده است. درحالیکه کلید نشست سرور به شکل یک ساختار داده که Session Ticket نام دارد ارسال میشود.
حالا کلاینت است که مدیریت این بلیت نشست را مادامیکه به سرور برسد بر عهده میگیرد. در چنین شرایطی اگر پیغام ارسالشده از طرف KDC به مقصد اشتباه ارسال شود. مشکل خاصی رخ نمیدهد.
زیرا کپی کلید نشست کلاینت تنها میتواند. توسط کسی دریافت شود.که از کلید امنیتی کلاینت آگاه است.
و کپی کلید نشست سرور نیز تنها توسط کسی قابلبازگشایی است. که از کلید امنیتی سرور باخبر است. بعد از دریافت پاسخ از طرف KDC، کلاینت هر زمان بخواهد با سرور ارتباط برقرار کند. یک پیغام را برای آن ارسال میکند.
در این فرآیند احراز هویت پروتکل احراز هویت Kerberos متقابل، کلاینت پیغامی را ارسال میکند.
که شامل تاییدکننده رمزگذاری شده با کلید نشست از طرف KDC و بلیت نشست است. حالا این بلیت نشست و تائید کننده باهم مدارک هویتی کلاینت را تشکیل میدهند.
وقتی سرور این پیغام را دریافت کرد، با استفاده از کلید امنیتی (کلید طولانیمدت سرور) که بین سرور و KDC به اشتراک گذاشتهشده است.
بلیت نشست را رمزگشایی کرده و در ادامه کلید نشست را استخراج میکند.تا با استفاده از آن تائید کننده را رمزگشایی کند.
یک نقل و انتقال مهم دیگر
هنوز یک نقلوانتقال مهم دیگر در این پروتکل احراز هویت Kerberos باقیمانده است. کلید نشست کلاینت ارسالشده از طرف KDC به کلاینت با استفاده از یک کلید طولانیمدت کلاینت رمزگذاری شده است.
کلید طولانیمدت کلاینت از مدارک هویتی دریافت شده که با استفاده از یک تابع هش یکطرفه برای وارد شدن به ایستگاه کاری آلیس استفاده میشود.
بهعبارتدیگر، KDC کپی کلید طولانیمدت آلیس را از رکورد کد حساب او در پایگاه داده استخراج میکند. برای بهبود ایمنی این کلید طولانیمدت با کلید نشست جایگزین خواهد شد.
بعد از تولید یک کلید بلندمدت وقتی آلیس به ایستگاه کاری خود وارد میشود. یک درخواست به KDC برای کلید نشستی که برای استفاده بین کلاینت و KDC نیاز است ارسال میکند.
بهمحض اینکه KDC درخواست آلیس را دریافت کرد، کلید بلندمدت آلیس را از پایگاه داده خود استخراج میکند.
با یک بلیت نشست بهنام (TGT) سرنام Ticket Granting Ticket پاسخ را به کلاینت بازمیگرداند. TGT کلید نشستی است که برای استفاده KDC در زمان برقراری ارتباط با آلیس در نظر گرفتهشده است.
پیغام پاسخ علاوه بر TGT شامل کلید نشست برای کلاینت در زمان برقراری ارتباط با KDC است.
این TGT با کلید طولانیمدت KDC رمزگذاری شده و کلید نشست کلاینت با کلید طولانیمدت کلاینت رمزگذاری شده است.
حالا کلاینت باید بلیت نشست را از KDC بگیرید تا بتواند یک سرویس را از سرور درخواست کند. کلاینت یک پیغام را ارسال میکند که شامل TGT و تائید کنندهای است.
که با استفاده از کلید نشست به اشتراک گذاشتهشده بین کلاینت و KDC کدگذاری شده است.
برای بهکارگیری KDC به دو بخش خدمات احراز هویت (Authentication Service) و خدمات صدور بلیت تقسیمبندی (Ticket-granting Service) نیاز است.
البته بهمحض این که KDC پیغام کلاینت را دریافت کرد.سرویس صدور بلیت درخواست را تائید کرده و بلیت نشست و کلید نشست را ارسال میکند.
راه های نفوذ به پروتکل احزار هویت Kerberos!
بله؛ زیرا پروتکل احراز هویت Kerberos یکی از متداولترین پروتکلهای احراز هویت است. و هکرها هم چندراه برای نفوذ به آن ابداع کردهاند.
اغلب این هکها بر مبنای آسیبپذیریها، گذرواژههای ضعیف یا بدافزارها (برخی اوقات هر سه مورد) انجام میشوند.
کربروس به روشهای زیر هک میشود:
-
رد کردن بلیت:
فرآیندی که در آنیک کلید نشست جعل میشود. و این کلید جعلی بهعنوان مدرک هویتی معتبر در اختیار منبع قرار میگیرد.
-
بلیت طلایی:
یک بلیت که برای دسترسی مدیریتی برای کاربر صادر میشود.
-
بلیت نقرهای:
یک بلیت جعلی که برای دسترسی به یک سرویس صادر میشود.
- Credential stuffing/ Brute force:
تلاشهای خودکار پیدرپی برای حدس زدن یک گذرواژه است
- خنثی کردن رمزگذاری با Skeleton Key Malware
یک بدافزار که میتواندکربروس را دور بزند، اما حمله باید از طریق دسترسی مدیریتی انجام شود.
- حمله DCShadow:
یک حمله جدید در مکانی که حملهکنندگان دسترسی کافی به شبکهدارند تا بتوانند از کنترلکننده دامنه اختصاصی خود برای نفوذ بیشتر استفاده کنند.
عدم منسوخ شدن کربروس!
پروتکل احراز هویت Kerberos تا منسوخ شدن فاصله زیادی دارد. و باوجودی که هکرها توانایی نفوذ به آنها دارند ثابت کرده که یک پروتکل کنترل دسترسی امنیتی قابلقبول است.
اصلیترین مزیت کربروس توانایی استفاده از الگوریتمهای رمزنگاری قوی برای محافظت از گذرواژهها و بلیتهای احراز هویت است.
با کامپیوترهای امروزی هر نوع حمله جستجوی فراگیر (Brute Force) به پروتکل رمزنگاری AES که کربروس از آن استفاده میکند.
و درهم شکستن آن به زمانی معادل با طول عمر خورشید نیاز دارد. بدون شک کربروس به هر شکلی که ارائه شود. تا مدتزمان نسبتا طولانی قابلاستفاده است.
نباید دنبال موفق بودن باشید، بلکه باید دنبال ارزشمند بودن باشید. (آلبرت اینشتین)