Kerberos Authentication Service

Kerberos Authentication Service
مقدمة
الكيربروس هو عبارة عن Authentication Service أو خدمة خاصة بمصداقية الأطراف تم تطويره من قبل معهد MIT
لكى نفهم كيف يعمل الكيربروس وفائدته دعنا نفترض شبكة من مستخدمى الكمبيوتر الذين يستخدمون بعض الخدمات الموجودة على سيرفرات داخل الشبكة (مثلاً File Sharing Server أو E-mail Server). بالطبع ليست جميع الخدمات متاحة لكل الافراد ولكن هذه السيرفرات عليها تحديد اذا كان المستخدم له الحق فى استخدامها ام لا.
للأسف السيرفر نفسه لا يمكن الاعتماد عليه فى تحديد احقية المستخدم فى استخدام الخدمة ام لا. بمعنى اخر هناك ثلاث مشاكل:
- قد يستخدم احد اليوزرز سيرفر له access عليه فى الدخول منه الى سيرفر اخر.
- قد يقوم احد اليوزرز بتغيير الـ IP لاحد السيرفرات فتذهب اليه الrequests بدلا من السيرفر الاصلى.
- قد يقوم احد اليوزرز بالتصنت على الشبكة ويقوم بحفظ الـ Password ثم يقوم باستخدامها فى وقت اخر.
(فى اى من الحالات السابقة قد يتاح ل user ليست له صلاحية (privilege) فى الدخول على سيرفر معين).
وبدلاً من تحميل نظام حماية (Authentication protocol) ومنه ال منفصل على كل سيرفر، يقدم الكيربروس نظام حماية مركزى يخدم الشكبة بأكملها وظيفته أنه يـ authenticate الـ users للـ servers والـservers للـ users
الكيربروس يعتمد على نظام التشفير المتماثل (symmetric) ولا يقوم باستخدام ال public key encryption
و هناك اصدارين من الكيربروس مستخدمين هما : كيربروس 4 وكيربروس 5. بسبب تعقيد الاصدار الخامس سوف نقوم بشرح كيربروس 4 حيث انه يحتوى على جميع الاساسيات ثم نقوم بالقاء نظرة على التعديلات التى تمت فى الاصدار الخامس
إذا كانت مجموعة من المستخدمين (المخصص لهم اجهزة كمبيوتر) ليس لهم أى اتصال بين هذه الاجهزة ، إذا يمكن حماية الملفات الخاصة بكل مستخدم إذا تمت حماية اجزة الكمبيوتر نفسها (physical protection) لانه ليس هناك اى اتصال بين الاجهزة وبعضها.
أما إذا كان هناك سيرفر يقدم خدمة معينة لهذه الاجهزة المتصلة بهذا السيرفر فيجب على السيرفر ان يقدم الحماية المناسبة لل users المتصلين بهم.
فى الوقت الحالى ، هناك أنظمة أكثر شيوعاً لتحقيق الحماية لشبكة كمبيوتر مكونة من مجموعة من المستخدمين ومجموعة من السيرفرات
- الاعتماد على كل جهاز عميل فى التحقق من شخصية مستخدميه ويكون على كل سيرفر التحقق من اسم المستخدم الذى يقوم بالدخول.
- يتطلب من كل جهاز عميل ان يقوم بتعريف نفسه للسيرفر ولكن الوثوق فى الجهاز العميل فى التحقق من مستخدميه.
- يتطلب من كل مستخدم ان يعرف نفسه لكل خدمة Service يستخدمها ويتطلب من كل server ان يعرف نفسه للusers.
بالنسبة لشركة او مؤسسة واحدة قد يكفى استخدام اى من الحلين الاولين. لكن فى بيئة اكبر يجب استخدام الحل الثالث لحماية المعلومات الخاصة بكل مستخدم وحماية الservers من الاختراقات. ومن هنا يستخدم الكيربروس السيناريو الثالث فى حماية الشبكة.
Kerberos 4
الاصدار الرابع من الكيربروس يستخدم نظام الDES فى التشفير. دعنا نتخيل سيناريو التحقق من المستخدم فى ابسط حالاته. فى شبكة غير مدعمة باى نظام حماية ، اى يوزر يستطيع الدخول على اى سيرفر ويستخدم اى خدمة يقدمها هذا السيرفر، وبالتالى اى مخترق يستطيع ان يظهر كأنه يوزر على الشبكة وبالتالى يدخل على خدمات الشبكة، للتغلب على هذه المشكلة ، يكون هناك سيرفر خاص بالـ authentication يسمىAS أو AuthenticationServer و الشكل القادم يوضح خطوات التحقق من ان اليوزر له الحق فى الدخول على السيرفر.
هذا السيرفر هو المسئول عن التحقق من اليوزرز داخل الشبكة، ويكون به جميع اسماء المستخدمين وكلمات المرور الخاصة بهم وأيضاصلاحيتهم. أيضا به Encryption Key خاص بكل سيرفر داخل الشبكة هذا الkey يكون معروف بينه وبين السيرفر بحيث اذا اراد ان يرسل رسالة لسيرفر معين دون ان يستطيع احد اخر قراءتها تكون هذه الرسالة مشفرة بالkey الخاص بهذا السيرفر وكما قلنا ان الكيربروس 4 يستخدمال DES فى التشفير فإن الkey المستخدم فى التشفير هو نفسه الkey المستخدم فى فك التشفير.
إذا لكى يقوم أحد الclients بالدخول على Server معين يتم ذلك كالتالى
أولاً يقوم ال client بارسال رسالة إلى الAS يطلب تصريح بالدخول إلى السيرفر V هذه الرسالة تتكون من الآتي
IDc + Pc + IDv
حيث أن
الـ IDc هو اسم اليوزر وال Pc هى الباسوورد الخاصة بهذا اليوزر وال IDv هو اسم السيرفر V
عندما تصل هذه الرسالة إلى الـ AS يقوم بالتحقق من
- أن اسم اليوزر والباسوورد صحيحتين (حيت أنه AS يحتوى على جميع اليوزرز وكلمات المرور الخاصة بهم)
- أن هذا اليوزر له الحق فى الدخول على السيرفر V
إذا تحقق الشرطين السابقين يقوم الAS بارسال تصريح (Ticket) للـ Client وهذا التصريح يحتوى على الآتي
IDc + ADc + IDv
حيث أن الـ ADc هو عنوان الclient داخل الشبكة. ولكن هذا التصريح يكون مشفر باستخدام الـ key المتفق عليه بين الAS والسيرفر V وذلك حتى لا يستطيع الclient التغيير فى هذا التصريح وأيضا هذا التصريح يحتوى على عنوان الclient حتى لا يستخدم هذا التصريح مرة اخرى من اى جهاز اخر ويكون مقصورا على الجهاز الذى تم الطلب منه (client computer)
بمجرد وصول التصريح (Ticket) إلى الclient يقوم بارسال هذا التصريح مصحوبا باسم اليوزر إلى السيرفر V كالآتي:
IDc + Ticket
فيقوم السيرفر V عنذ استقباله للتصريح بفكه باستخدام الkey المتفق عليه بينه وبين ال AS ويقوم بالتأكد من أن اسم المستخدم المرفق IDc هو نفسه الاسم الموجود بالتصريح فإذا كان صحيحا يقوم بالسماح لهذا المستخدم بالدخول إلى السيرفر
دعنا نقوم بتلخيص السيناريو السابق…
(1) C >> AS : IDc + Pc + IDv
(2) AS >> C : Ticket: Ekv(IDc + ADc + IDv)
(3) C >> V : IDc + Ticket
حيث أن ال Kv هو ال Key المستخدم بين الAS والسيرفر V
بهذا لم ينتهى الكيربروس بل هناك الكثير من الثغرات فى هذا النظام التى نود التعرف عليها وكيف تم حلها فى الكيربروس الجديد