بررسی کامل پروتکل احراز هویت کربوس Kerberos

در عصر جدید همه مردم و به ویژه کسب‌و‌کارها خواهان یک ارتباطات امن هستند. هر روز به تعداد سازمان‌هایی که ترجیح می‌دهند از زیرساخت‌های شبکه برای انجام فعالیت‌های تجاری خود استفاده کنند افزوده می‌شود. عامل اصلی برای ایمن‌سازی ارتباطات در زیرساخت‌های توزیع شده، احراز هویت و حصول اطمینان از این مسئله است که من همان شخصی هستم که ادعا می‌کنم.

دانشمندان علوم کامپیوتر دانشگاه MIT، اولین پژوهشگرانی بودند که از واژه Kerberos (یکی از قهرمان اساطیر یونانی) برای نام‌گذاری یک پروتکل احراز هویتی استفاده کردند که درون شبکه‌های کامپیوتری استفاده می‌شود. Kerberos (Kerberos) یک پروتکل تحت شبکه است که در سطحی گسترده برای حل مشکل احراز هویت استفاده می‌شود. Kerberos از رمزنگاری کلید متقارن و یک مرکز توزیع کلید KDC سرنام Key Distribution Center استفاده می‌کند و برای احراز هویت کاربر به مجوز ثالث مورد اعتماد نیاز دارد. Kerberos به 3 عنصر مجزا برای احراز هویت نیاز دارد و از یک سیستم رهگیری و نظارتی قدرتمند برای امن‌تر نگه داشتن محاسبات استفاده می‌کند.


کربروس Kerberos چیست؟

Kerberos یک پروتکل برای احراز هویت درخواست‌های سرویس بین میزبانان قابل اعتماد در یک شبکه ناامن مانند اینترنت است. پشتیبانی از Kerberos در تمامی سیستم‌عامل‌های کامپیوتری اصلی از جمله مایکروسافت ویندوز، اپل macOS، فری‌بی‌اس‌دی و لینوکس وجود دارد.

از ویندوز ۲۰۰۰ به بعد، مایکروسافت از پروتکل Kerberos به عنوان روش احراز هویت پیش‌فرض در ویندوز استفاده می‌کند و این بخشی از سرویس Active Directory (AD) ویندوز است. ارائه دهندگان خدمات پهنای باند همچنین از این پروتکل برای احراز هویت مودم‌های کابلی و جعبه‌های بالا‌برنده استفاده می‌کنند.

Kerberos برای پروژه Athena در موسسه فناوری ماساچوست (MIT) توسعه داده شد. نام آن از اساطیر یونانی گرفته شده است؛ Kerberos (Cerberus) سگی با سه سر بود که دروازه‌های هادز را نگه می‌داشت. سه سر پروتکل Kerberos عبارتند از:

1. مشتری یا اصلی

2. منبع شبکه، که سرور برنامه است که دسترسی به منبع شبکه را فراهم می‌کند

3. مرکز توزیع کلید (KDC)، که به عنوان خدمات احراز هویت شخص ثالث اعتماد Kerberos عمل می‌کند.

کاربران، سیستم‌ها و خدماتی که از Kerberosاستفاده می‌کنند، تنها باید بهKDC اعتماد کنند. این به عنوان یک فرآیند تکی اجرا می‌شود و دو خدمت را فراهم می‌کند: خدمات احراز هویت و خدمات اخذ بلیط (TGS).

"بلیط‌های" KDC احراز هویت متقابل را فراهم می‌کنند، به نحوی که گره‌ها می‌توانند هویت خود را به یکدیگر به صورت امن ثابت کنند. احراز هویت Kerberos از رمزنگاری اشتراکی معمول استفاده می‌کند تا از خواندن یا تغییر بسته‌هایی که در شبکه جابجا می‌شوند جلوگیری شود. همچنین، پیام‌ها را از هک و حملات بازپخش محافظت می‌کند.

کار روی Kerberos در دهه ۱۹۸۰ شروع شد. نسخه ۵ از پروتکل - نسخه فعلی - در سال ۱۹۹۳ برای اولین بار منتشر شد. کنسرسیوم Kerberos MIT در سپتامبر ۲۰۰۷ برای توسعه فناوری تأسیس شد. در سال ۲۰۰۵، گروه کاریابی مهندسی اینترنت پروتکل Kerberos را به عنوان استاندارد پیشنهادی در درخواست برای نظرات ۴۱۲۰ منتشر کرد. در سال ۲۰۱۳، کنسرسیوم گسترده و به نام کنسرسیوم MIT Kerberos and Internet Trust تغییر نام داد.


پروتکل احراز هویت Kerberos چه کار می‌کند؟

هدف اصلی Kerberos، فراهم کردن روشی برای احراز هویت امن کاربران شبکه MIT به سیستم‌هایی بود که نیاز داشتند از آن‌ها استفاده کنند. همچنین، این اجازه را به کاربران می‌دهد تا به سیستم‌های مورد نظرشان دسترسی داشته باشند.

در آن زمان، سیستم‌های شبکه اغلب با ترکیبی از شناسه کاربری و رمز عبور، کاربران را احراز هویت می‌کردند. سیستم‌ها به طور معمول رمزعبور را "به صورت روشن" یعنی بدون رمزگذاری ارسال می‌کردند. حمله‌کنندگان با دسترسی به شبکه، می‌توانستند به راحتی بر روی انتقالات شبکه گوش دهند، شناسه کاربری و رمز عبور را از بین ببرند و سپس سعی کنند به سیستم‌هایی که مجوز دسترسی ندارند دسترسی پیدا کنند.

توسعه‌دهندگان Kerberos به دنبال فراهم کردن یک پروتکل احراز هویت شبکه بودند که برای احراز هویت میزبانان قابل اعتماد در حال ارتباط در شبکه‌های ناامن مانند اینترنت استفاده شود. به ویژه، آن‌ها قصد داشتند یک مکانیزم برای احراز هویت دسترسی به سیستم‌ها را در شبکه باز - اینترنت - فراهم کنند.

Kerberos ابتدا به عنوان "سیستم احراز هویت و اختیار دسترسی Kerberos" در یک مقاله با همین نام نوشته شده توسط S.P. Miller، B.C. Neuman، J.I. Schiller و J.H. Saltzer طراحی شد. طراحان هدف از احراز هویت Kerberos را به عنوان یک روش برای پشتیبانی از اختیار دسترسی تعریف کردند. در حالی که یک کاربر ممکن است به عنوان دارای حق دسترسی به برخی منابع شبکه شناخته شود، ابزارهای اختیار دسترسی به منابع خاصی مانند فضای ذخیره سازی و پایگاه داده را فراهم می‌کنند.

همچنین، Kerberos برای ارتباط با سیستم‌های حسابداری امن طراحی شده است. این سومین "A" از سه عامل احراز هویت، اختیار دسترسی و حسابداری (AAA) است.


اهداف، مفاهیم و اصطلاحات Kerberos

اهداف سیستم Kerberos در یک آموزش توسطFulvio Ricciardi از موسسه ملی فیزیک هسته‌ای در لچه، ایتالیا شرح داده شده است. این اهداف شامل موارد زیر است:

· رمز عبورها هرگز بر روی شبکه ارسال نمی‌شوند.

· رمز عبورها بر روی سیستم‌های کاربر ذخیره نمی‌شوند و بلافاصله پس از استفاده حذف می‌شوند.

· رمز عبورها هرگز در قالب متن ساده ذخیره نمی‌شوند، حتی بر روی سرورهای احراز هویت.

· هر کاربر تنها یکبار در هر جلسه رمز عبور خود را وارد می‌کند. این یک نوع اولیه از احراز هویت یک بار ورود (SSO) است و به این معناست که کاربران تنها یکبار خود را احراز هویت می‌کنند، اما هنوز می‌توانند به هر سیستمی که مجوز دسترسی دارند دسترسی پیدا کنند.

· تمام اطلاعات احراز هویت در یک سرور احراز هویت متمرکز نگهداری می‌شود. سرورهای برنامه نویسی خود هیچ گونه اطلاعات احراز هویت را نگهداری نمی‌کنند. این ویژگی‌ها را فراهم می‌کند:

o یک مدیر می‌تواند اجازه دسترسی کاربر به هر سرور برنامه را از سرور احراز هویت متمرکز غیرفعال کند. دسترسی به سرورهای فردی برای لغو اجازه لازم نیست.

o یک رمز عبور کاربر کافی است برای دسترسی به تمام سرویس‌های احراز هویت شده Kerberos. یک کاربر می‌تواند رمز عبور خود را فقط یکبار تنظیم کند، بدون در نظر گرفتن تعداد سرویس‌هایی که مجوز دسترسی دارد.

o حفاظت از اطلاعات کاربر ساده شده است زیرا تمام اطلاعات احراز هویت کاربر در یک سرور احراز هویت متمرکز ذخیره می‌شود، نه بر روی تمام سرورهای فردی که کاربر مجوز دسترسی دارد.

· تمام افراد - کاربران و همچنین سرورهای برنامه - باید هنگام درخواست احراز هویت خود را احراز هویت کنند. کاربران هنگام ورود به سیستم خود را احراز هویت می‌کنند. سرویس‌های برنامه ممکن است مجبور شوند خود را به کلاینت احراز هویت کنند.

· Kerberos یک مکانیزم برای برقراری یک مدار رمزگذاری شده بین کلاینت و سرور فراهم می‌کند تا ارتباطات شبکه خصوصی باشند.

سه مجموعه مختلف از موجودیت‌ها از Kerberos استفاده می‌کنند:

1. اصول Kerberos. هر هویت منحصر به فردی که Kerberos می‌تواند برای آن یک بلیت اختصاص دهد. برای بیشتر کاربران، یک اصلی با شناسه کاربری یکسان است. این شامل میزبان‌ها و سرویس‌هایی است که می‌توانند بلیت Kerberos را دریافت کنند. مشتریان فردی یک نوع از اصلی‌های Kerberos هستند. اصلی سرویس یک هویت است که به یک سرویس برنامه‌ای اختصاص داده شده است که از طریق Kerberos دسترسی پیدا می‌کند. یک اصلی با حداقل سه قطعه اطلاعات منحصر به فرد شناسایی می‌شود:

a. برای کاربران، اصلی اولیه یک نام کاربری است. برای میزبان‌ها، اصلی کلمه میزبان است. برای سرویس‌ها، نام سرویس نام اصلی است.

b. شناسه اختیاری اصلی معمولاً نام میزبان سیستمی که اصلی با آن ارتباط دارد را مشخص می‌کند.

c. سرورهای Kerberos در یک منطقه شبکه محدود به نام قلمرو عمل می‌کنند. قلمروها با نام دامنه سیستم‌های نام دهیDNS شناسایی می‌شوند. قلمری کاربر نام دامنه است که در آن سرور Kerberos عمل می‌کند.

2. سرورهای برنامه‌ای Kerberos. هر سیستمی که دسترسی به منابع نیاز به احراز هویت کاربر از طریق Kerberos دارد. به عنوان مثال، سرویس‌های برنامه‌ای می‌توانند شامل خدمات پرونده و چاپ، شبیه‌سازی ترمینال، محاسبات از راه دور و پست الکترونیک باشند.

3. KDC Kerberos. فرایند احراز هویت با Kerberos بر اساس اجزایKDC زیر وابسته است:

a. پایگاه داده Kerberos. این یک رکورد برای هر اصلی در قلمرو حفظ می‌کند. این مخزن مرکزی برای اطلاعات احراز هویت Kerberos است. شامل اطلاعات شناسایی اصلی و سیستم‌ها و سرویس‌هایی است که آن اصلی مجوز دسترسی به آن‌ها را دارد.

b. سرویس احراز هویت Kerberos. مشتریان شبکه برای احراز هویت خود و دریافت یک بلیت مجوز دسترسی (TGT)، همچنین به عنوان بلیت احراز هویت شناخته می‌شوند، از این سرویس Kerberos استفاده می‌کنند.

c. سرویس درخواست بلیت Kerberos. این سرویس Kerberos TGT را قبول می‌کند تا کاربران بتوانند به سرویس‌های برنامه‌ای خود دسترسی پیدا کنند.

احراز هویت با Kerberos بر اساس استفاده از بلیت‌های احراز هویت است. یک بلیت احراز هویت نشان می‌دهد که کاربر از طریق سرویس احراز هویت Kerberos احراز هویت شده است. پس از دریافت آن، کاربر می‌تواند درخواست بلیت‌های دیگر را برای دسترسی به سرویس‌های برنامه‌ای خاص ارسال کند.

چگونه پروتکل احراز هویت Kerberos کار می‌کند؟

توصیف ساده شده‌ای از روند کارKerberos در زیر آمده است؛ البته فرایند واقعی پیچیده‌تر است و ممکن است در اجرای مختلف متفاوت باشد:

1. درخواست سرور احراز هویت. برای شروع فرآیند احراز هویت کاربرKerberos، کاربر مبدا یک درخواست احراز هویت به سرور احراز هویت KDC Kerberos ارسال می‌کند. درخواست اولیه احراز هویت به صورت متن ساده ارسال می‌شود زیرا هیچ اطلاعات حساسی در درخواست وجود ندارد. سرور احراز هویت بررسی می‌کند که کاربر در پایگاه داده KDC وجود دارد و کلید خصوصی کاربر مبدأ را بازیابی می‌کند.

2. پاسخ سرور احراز هویت. اگر نام کاربری کاربر مبدأ در پایگاه دادهKDC یافت نشود، کاربر نمی‌تواند احراز هویت شود و فرآیند احراز هویت متوقف می‌شود. در غیر این صورت، سرور احراز هویت یکTGT و یک کلید جلسه به کاربر ارسال می‌کند.

3. درخواست بلیت سرویس. پس از احراز هویت توسط سرور احراز هویت، کاربر یک درخواست بلیت سرویس از TGS می‌کند. این درخواست باید با TGT ارسال شده توسط سرور احراز هویت KDC همراه باشد.

4. پاسخ بلیت سرویس. اگر TGS بتواند کاربر را احراز هویت کند، اعتبارنامه و بلیت دسترسی به سرویس درخواست شده را به کاربر ارسال می‌کند. این انتقال با یک کلید جلسه خاص برای کاربر و سرویس دسترسی داده شده رمزگذاری شده است. این مدرک اثبات هویت برای دسترسی به سرویس "Kerberized" درخواست شده استفاده می‌شود. این سرویس درخواست اصلی را تأیید کرده و سپس هویت خود را به سامانه درخواست دهنده تأیید می‌کند.

5. درخواست سرور برنامه‌ای. کاربر یک درخواست برای دسترسی به سرور برنامه‌ای ارسال می‌کند. این درخواست شامل بلیت سرویس دریافت شده در مرحله 4 است. اگر سرور برنامه‌ای بتواند این درخواست را احراز هویت کند، کاربر می‌تواند به سرور دسترسی پیدا کند.

6. پاسخ سرور برنامه‌ای. در مواردی که کاربر درخواست احراز هویت سرور برنامه‌ای را دارد، این پاسخ لازم است. کاربر قبلاً خودش را احراز هویت کرده است و پاسخ سرور برنامه‌ای شامل احراز هویت Kerberos سرور است.

نحوه احراز هویت یک کلاینت با Kerberos برای دسترسی به سرور برنامه
نحوه احراز هویت یک کلاینت با Kerberos برای دسترسی به سرور برنامه

بلیط سرویسی که توسطTGS ارسال می‌شود، به کلاینت اجازه دسترسی به سرویس را می‌دهد. بلیط سرویس دارای زمان‌بندی است، بنابراین یک بلیط می‌تواند برای یک دوره خاص بدون نیاز به تأیید مجدد استفاده شود.

قرار دادن زمان محدود برای بلیط، احتمال استفاده دوباره توسط شخص دیگر را کاهش می‌دهد. حداکثر زمان عمر می‌تواند به ۰ تنظیم شود، در این صورت بلیط‌های سرویس منقضی نخواهند شد. مایکروسافت حداکثر زمان عمر ۶۰۰ دقیقه را برای بلیط‌های سرویس توصیه می‌کند؛ این مقدار پیش‌فرض در پیاده‌سازی Kerberos در ویندوز سرور است.

Kerberos برای چه مواردی استفاده می‌شود؟

Kerberos برای احراز هویت اشخاصی که درخواست دسترسی به منابع شبکه را می‌دهند، به ویژه در شبکه‌های بزرگ برای پشتیبانی از SSO استفاده می‌شود. این پروتکل به طور پیش‌فرض در بسیاری از سیستم‌های شبکه‌ای پرکاربرد استفاده می‌شود. برخی از سیستم‌هایی که پشتیبانیKerberos در آن‌ها گنجانده شده یا در دسترس هستند، عبارتند از:

  • Amazon Web Services
  • Apple macOS
  • Google Cloud
  • Hewlett Packard Unix
  • IBM Advanced Interactive eXecutive
  • Microsoft Azure
  • Microsoft Windows Server and AD
  • Oracle Solaris
  • Red Hat Linux
  • FreeBSD
  • OpenBSD


Kerberos در مقابل سایر پروتکل‌های احراز هویت شبکه

Kerberos تنها پروتکل احراز هویت در استفاده عمومی نیست، اما احتمالاً پرکاربردترین آن است. Kerberos به عنوان یک پروتکل امن ثابت شده است که قادر به مقابله با ورودی ناخواسته یا خطاهای در حین اجرا است و در سطح گسترده‌ای پیاده‌سازی شده است.


Kerberos در مقابل Microsoft New Technology LAN Manager (NTLM)

Microsoft NTLM یک پروتکل احراز هویت قدیمی است که هنوز می‌تواند برای ارائه خدماتSSO در دامنه‌هایAD استفاده شود. این پروتکل در ابتدا در ویندوزNT در سال ۱۹۹۳ در دسترس قرار گرفت؛ مایکروسافت NTLM را برای احراز هویت منسوخ کرد و آن را با Kerberos در ویندوز ۲۰۰۰ جایگزین کرد. در حال حاضر، Kerberos پروتکل احراز هویت اولیه برای ویندوز است.

بر خلاف Kerberos، NTLM برای احراز هویت به پروتکل چالش-پاسخ نیاز دارد.


Kerberos در مقابل پروتکل دسترسی به فهرست سبک(LDAP)

پروتکل LDAP یک روش برای نگهداری و دسترسی به اطلاعات معتبر در مورد حساب های کاربری است. این پروتکل برای اجازه دسترسی کاربر به حساب های خود در خدمات شبکه ای استفاده می شود. LDAP و Kerberos اغلب با هم استفاده می شوند، به طوری که LDAP خدمات اجازه دسترسی را فراهم می کند و Kerberos خدمات احراز هویت را برای شبکه های بزرگ فراهم می کند.


Kerberos در مقابل سرویس کاربران از راه دورDial-In (RADIUS)

پروتکل RADIUS برای فراهم کردن خدمات احراز هویت برای کاربرانDial-In برای دسترسی به سرویس های اینترنتی یا شبکه های شرکتی از طریق اتصالات مستقیم مانند خطوط تلفنDial-Up طراحی شده است. RADIUS می تواند برای اجازه دسترسی و حسابرسی خدمات شبکه استفاده شود. همچنین می تواند باKerberos یکپارچه شود تا احراز هویت قوی تری فراهم کند.


آیا Kerberos امن است؟

پروتکل Kerberos به عنوان یک پروتکل امن در نظر گرفته می شود. این پروتکل برای دهه ها پیاده سازی شده است و به عنوان یک مکانیزم رسیدگی شده و امن برای احراز هویت کاربران در نظر گرفته می شود. Kerberos از رمزگذاری قوی، از جمله رمزگذاری کلید مخفی، برای حفاظت از داده های حساس استفاده می کند.

پژوهشگران امنیت از زمان انتشار اولیه Kerberos، آن را بررسی کرده اند. ضعف های خاصی در پیاده سازی های خاص Kerberos، و همچنین در خود پروتکل، پیدا شده اند. این ضعف ها رفع شده اند و Kerberosهمچنان برای احراز هویت در اینترنت بنیادی است.

بعضی از ضعف های تاریخی Kerberos در شبکه های ویندوز در یک پست وبلاگی در سال 2015 توسط پژوهشگر امنیتی المار نابیگائف خلاصه شد. آنها شامل موارد زیر بودند:

· حمله Pass-the-key. این یک نوع حمله Pass-the-hash است که حمله کنندگان با بازیابی مجوزهای کاربران مجاز، به عنوان کاربران مجاز عمل کرده و دسترسی آنها را تقلید می کنند.

· حمله Pass-the-ticket. حمله کنندگان به بلیط های ارسالی یا دریافتی کاربران مجاز دسترسی پیدا کرده و آنها را تقلید می کنند و بلیط های خدمات آنها را دوباره استفاده می کنند.

· حمله Golden ticket. این یک حمله است که با دسترسی به کنترل کننده دامنه ویندوز، برای ایجاد مجوزهایی که دسترسی نامحدود به خدمات برنامه ای فراهم می کنند، استفاده می شود.

برای حفظ امنیت Kerberos، شما باید با آسیب پذیری های امنیتی Kerberos آشنا شوید و با به روز رسانی نرم افزار آشکار سازی یا رفع نقص ها، مانند حمله Kerberoasting در حملات زنجیره تأمین SolarWinds در سال 2020، به روز بمانید.


منبع : techtarget.com , Google.com