مزاياي Kerberos
مقدمه
Kerberos نسخه ۵، پروتكل اعتبار سنجي پيش فرض شبكه براي ويندوز ۲۰۰۰ است. Kerberos پروتكل جديدي نيست كه مايكروسافت اختراع كرده باشد، بلكه از سال‌ها قبل در دنياي يونيكس مورد استفاده قرار گرفته است.
مايكروسافت اعتبار سنجي شبكه‌اي Kerberos را در ويندوز ۲۰۰۰ براي بالا بردن امنيت پياده سازي كرده است، زيرا سرويس ها و سرورهاي شبكه بايد بدانند كه يك سرويس گيرنده كه درخواست اجازه دستيابي مي كند واقعاً يك سرويس گيرنده معتبر است. Kerberos بر پايه ticket (بليط)هايي كه شامل هويت سرويس گيرنده كه با كليدهاي مشترك رمزنگاري شده است،

استوار مي شود. Kerberos v5 بهبودهاي زير را نسبت به نسخه‌هاي قبلي Kerberos دارد:
• ارسال اعتبارسنجي: امكان مي دهد كه درخواست براي سرويس را از طرف يك كاربر به ارائه كننده سرويس قابل اطمينان ديگر محول كنيم.

• سيستم هاي رمزنگاري قابل جايگزيني: از چندين متد رمزنگاري پشتيباني مي كند. نسخه‌هاي قبلي Kerberos، فقط از رمزنگاري DES پشتيباني مي كردند.
• كليدهاي زير نشست (subsession): به client و سرور امكان مي دهد تا يك كليد زير نشست كوتاه مدت را براي يك بار استفاده براي تبادل هاي نشست مورد مذاكره قرار دهند.
• زمان دوام بيشتر براي بليط: حداكثر زمان بليط در Kerberos v4، ۲۵/۲۱ ساعت بود. Kerberos v5 اجازه مي دهد كه بليط ماه‌ها دوام بياورد.

اعتبار سنجي در ويندوز ۲۰۰۰
ويندوز ۲۰۰۰ براي اعتبار سنجي هويت كاربر، پنج روش دارد:
• Windows NT LAN Manager (NTLM)
• Kerberos v5
• Distributed Password Authentication (DPA)
• Extensible Authentication Protocol (EAP)
• Secure Channel (Schannel)
ويندوز ۲۰۰۰، فقط از NTLM و Kerberos براي

اعتبار سنجي شبكه اي استفاده مي كند و سه پروتكل ديگر براي اعتبارسنجي در اتصال‌هاي شماره گيري يا اينترنت مورد استفاده قرار مي گيرند.
ويندوز NT 4.0 از (NTLM) Windows NT LAN manager به عنوان پروتكل اعتبار سنجي شبكه اي پيش فرض استفاده مي كند. به اين دليل NTLM هنوز در ويندوز ۲۰۰۰ وجود دارد تا سازگاري با نسخه هاي قبلي سيستم عامل هاي مايكروسافت حفظ شود. NTLM همچنين براي اعتبار سنجي logon به كامپيوترهاي مستقل ويندوز ۲۰۰۰ به كار مي رود. Kerberos، اعتبار سنجي شبكه اي پيش فرض براي ويندوز ۲۰۰۰ است.

Kerberos پروتكل اعتبارسنجي پر استفاده اي است كه بر يك استاندارد باز بنا نهاده شده است. تمام كامپيوترهاي ويندوز ۲۰۰۰ از Kerberos v5 در محيط شبكه اي استفاده مي كنند، به غير از شرايط زير:
• كامپيوترهاي ويندوز ۲۰۰۰ وقتي كه به سرورهاي ويندوز NT اعتبار سنجي مي شوند از NTLM استفاده مي كنند.
• وقتي كه كامپيوترهاي ويندوز ۲۰۰۰ به منابع domainهاي ويندوز NT 4.0 دستيابي پيدا مي كنند از NTLM استفاده مي كنند.

• وقتي كه كنترل كننده هاي domain ويندوز ۲۰۰۰، clientهاي ويندوز NT 4.0 را اعتبار سنجي مي كنند از NTLM استفاده مي كنند.
• Login كردن به صورت محلي به يك كنترل كننده domain ويندوز ۲۰۰۰٫
• ويندوز ۲۰۰۰٫
(DPA) Distributed Password Authentication يك پروتكل اعتبارسنجي است كه روي اينترنت به كار مي رود تا به كاربران امكان دهد تا از يك كلمه عبور براي اتصال به هر سايت اينترنتي كه به يك سازمان عضويت متعلق است، استفاده كنند. DPA توسط ويندوز ۲۰۰۰ پشتيباني شده است ولي به همراه آن ارائه نشده است. شما بايد PDA را به صورت جداگانه و به صورت يك محصول اضافي بخريد.
(EAP) Extensible Authentication Protocol يك گسترش براي پروتكل Point-to-Point است كه براي اتصال هاي شماره گيري به اينترنت به كار مي رود. هدف EAP اين است كه اضافه كردن پوياي ماژول هاي Plug-in اعتبار سنجي را هم در سمت سرور و هم در سمت سرويس گيرنده از يك اتصال اجازه دهد. اطلاعات بيشتر در مورد EAP در (EAP) PPP Extensible Authentication و Request for Comments (RFC) 2284 مورخ مارس ۱۹۹۸ يافت مي شود. همچنين مي توانيد اين RFC و RFCهاي ديگر را در آدرس www.rfc-editor.org/ پيدا كنيد.

Secure Channel شامل چهار پروتكل مرتبط است:
• Secure Sockets Layer (SSL) v2.0
• SSL v3.0
• Private Communication Technology (PCT) v1.0
• Transport Layer Security (TLS) v1.0

هدف اصلي استفاده از Schannel، فراهم كردن اعتبار سنجي، جامعيت داده‌ها و ارتباطات ايمن در اينترنت است. SSL معمولاً براي انتقال اطلاعات خصوصي به و از سايت هاي تجارت الكترونيك مورد استفاده قرار مي گيرد. هر چهار پروتكل در Schannel، اعتبارسنجي را با استفاده از گواهي نامه هاي ديجيتال فراهم مي كنند. گواهي نامه‌هاي ديجيتال با جزئيات بيشتر در فصل ۹، «Public Key Inftastructures. در ويندوز ۲۰۰۰» مورد بحث قرار گرفته اند.

مزاياي اعتبار سنجي Kerberos
همانطور كه محبوبيت و استفاده از ويندوز NT 4.0 در بازار افزايش يافت، علاقه جهان به سيستم هاي ويندوز NT نيز بيشتر شد. مايكروسافت با اضافه كردن اعتبار سنجي Kerberos در ويندوز ۲۰۰۰، به ميزان زيادي قابليت امنيتي سيستم عامل را افزايش داده است. NTLM براي سازگاري با نسخه هاي قبلي ارائه شده است، ولي به محض اينكه تمام سرويس گيرنده هاي روي شبكه بتوانند با استفاده از Kerberos اعتبار سنجي شوند (كه مستلزم سرورها و سرويس گيرهاي ويندوز ۲۰۰۰ محض هستند) بايد غيرفعال شود. تا وقتي كه NTLM در شبكه موجود است، امنيت در بالاترين سطح خود قرار ندارد.

مزاياي زيادي كه Kerberos فراهم كرده، آن را نسبت به NTLM، انتخاب بهتري براي اعتبارسنجي نموده است. Kerberos بر پايه استانداردهاي موجود بنا شده است، بنابراين به ويندوز۲۰۰۰ امكان مي دهد تا روي شبكه‌هاي ديگري كه از Kerberos v5 به عنوان مكانيزم اعتبارسنجي استفاده مي كنند كار كند. NTLM نمي تواند اين قابليت را فراهم كند، زيرا خاص سيستم عامل هاي

مايكروسافت است. اتصال به برنامه و سرورهاي فايل نيز در هنگام استفاده از Kerberos سريعتر است، زيرا براي تعيين اينكه آيا اجازه دستيابي داده مي شود يا خير، سرور Kerberos فقط لازم است كه هويتي كه سرويس گيرنده ارائه مي كند را بررسي كند. همين هويت ارائه شده توسط سرويس گيرنده مي تواند براي كل نشست logon به شبكه به كار رود. وقتي كه NTLM به كار مي رود، برنامه و سرورهاي فايل بايد با يك كنترل كننده domain تماس برقرار كنند تا تعيين كنند كه آيا اجازه دستيابي به سرويس گيرنده داده مي شود يا خير. اعتبارسنجي Kerberos همچنين هم براي سمت سرويس گيرنده و هم براي سمت سرور، اعتبارسنجي را فراهم مي كند ولي NTLM فقط براي سرويس گيرنده، اعتبار سنجي را فراهم مي كند. سرويس گينرده هاي NTLM مطمئناً نمي دانند كه سروري كه با آن ارتباط برقرار مي كنند يك سرور نادرست است.

Kerberos همچنين براي اعتمادها (trusts) سودمند است و در واقع اساس اعتمادهاي domain انتقالي است و ويندوز ۲۰۰۰، به صورت پيش فرض از اعتمادهاي دو طرفه انتقالي با domain هاي ويندوز ۲۰۰۰ ديگر در همين مجموعه (forest)، استفاده مي كند. يك اعتماد دو طرفه انتقالي از يك كليد بين ناحيه‌اي مشترك استفاده مي كند. domain ها به يكديگر اعتماد مي كنند، زيرا هر دو كليد مشترك را در اختيار دارند.

استانداردهاي اعتبارسنجي Kerberos
سالهاست كه Kerberos ارائه شده است. مهندساني كه روي Project Athena كار مي‌كردند، براي اولين بار Kerberos را در (MIT) Massachusetts Institute of Technology اختراع كردند. Project Athena در ۱۹۸۳ شروع شد، ولي اولين نمونه Kerberos تا سال ۱۹۸۶ عرضه نشد.

هدف Project Athena، ايجاد يك نسل جديد از امكانات كامپيوتري توزيع شده مبتني بر سرويس گيرنده/ سرور در سطح دانشگاه بود. Kerberos v4، اولين نسخه عمومي پروتكل اعتبارسنجي بود. Kerberos v5، بهبودهاي زيادي به پروتكل اضافه كرده است از جمله پشتيباني از بليط هاي قابل ارسال، قابل تجديد و تاريخ دار و تغيير الگوريتم key salt براي استفاده از كل اسم اصلي. دو تا از RFCهايي كه Kerberos v5 در آنها تعريف شده است

، RFC 1510، Network Authentication Service، The Kerberos (v5) مورخ سپتامبر ۱۹۹۳ و RFC 1964، The Kerberos Version 5 GSS-API Mechanism، مورخ ژوئن ۱۹۹۶ است (GSS-API علامت اختصاري Generic Security Service-Application Program Interface است). مايكروسافت بيان مي كند كه پياده سازي Kerberos در ويندوز ۲۰۰۰ بسيار مطابق با مشخصات تعيين شده در RFC 1510 براي پياده سازي پروتكل و RFC 1964 براي مكانيزم و فرمت ارسال نشانه هاي (token) امنيت در پيغام هاي Kerberos است.

گسترش هايي در پروتكل Kerberos
مايكروسافت، نسخه Kerberos را در ويندوز ۲۰۰۰ گسترش داده است تا اعتبارسنجي اوليه كاربر بتواند به جاي كليدهاي سري مشترك استاندارد مورد استفاده توسط Kerberos، با استفاده از گواهي نامه هاي كليد عمومي انجام شود. بهبود Kerberos به اين طريق امكان مي دهد كه logon به ويندوز ۲۰۰۰ با استفاده از كارت‌هاي هوشمند انجام شود. بهبودهايي كه مايكروسافت در Kerberos براي ويندوز ۲۰۰۰ ايجاد كرده است بر پايه مشخصات Public Key Cryptography for Initial Authentication in Kerberos كه توسط چند شركت بيروني مثل (DEC) Digital Equipment Corporation، Novell، CyberSafe Corporation و ديگران به (IETF) Internet Engineering Task Force پيشنهاد شده است، استوار است.

نگاه كلي به پروتكل Kerberos
اسم Kerberos (با تلفظ يوناني) يا Cerberus (با تلفظ لاتين) از افسانه هاي يونان آمده است. Kerberos، سگ سه سري بود كه از ورودي Hades محافظت مي كرد. Kerberos برخلاف پروتكل هاي ديگر (مثل NTLM) كه فقط سرويس گيرنده را اعتبارسنجي مي كنند، اعتبار سنجي دو طرفه هم براي سرورها و هم براي سرويس گيرنده ها را فراهم مي كند.

Kerberos با اين فرض كار مي كند كه تراكنش هاي اوليه بين سرويس گيرنده ها و سرورها روي يك شبكه ناامن انجام مي شوند. شبكه هايي كه ايمن نباشند مي توانند به سادگي بوسيله افرادي كه مي خواهند يك سرويس گيرنده يا سرور را براي كسب دستيابي به اطلاعاتي كه مي تواند به آنها در رسيدن به هدفشان كمك كند (اين اطلاعات هرچه مي تواند باشد) تقليد كنند، تحت نظارت قرار گيرد.

مفاهيم پايه
يك كليد سري مشترك، فقط بوسيله آنهايي كه نياز دارند كليد سري (secret) را بدانند به اشتراك گذاشته مي شود. كليد سري ممكن است بين دو فرد، دو كامپيوتر، سه سرور و غيره باشد. كليد سري مشترك به حداقل موجوديت هاي لازم براي انجام كار مورد نياز، محدود است و به آنهايي كه كليد سري مشترك را مي دانند امكان مي دهد تا هويت آنهايي كه كليد سري مشترك را مي دانند را بررسي كنند. Kerberos براي انجام اعتبارسنجي خود به كليدهاي مشترك وابسته است.

Kerberos از رمزنگاري كليد سري به عنوان مكانيزم پياده سازي كليدهاي سري مشترك استفاده مي‌كند. رمزنگاري متقارن كه در آن فقط يك كليد، هم براي رمزنگاري و هم براي گشودن رمز به كار مي رود، براي كليدهاي سري مشترك در Kerberos به كار مي‌رود. يك موجوديت، اطلاعات را رمزنگاري مي كند و موجوديت ديگر با موفقيت اين اطلاعات را از حال

ت رمز در مي آورد. اين امر دانستن كليد سري مشترك بين دو موجوديت را ثابت مي كند.
اعتبار سنج‌ها (Authenticators)
يك اعتبار سنج، اطلاعات يكتايي است كه در كليد سري مشترك رمزنگاري شده است. Kerberos از timestampها استفاده مي كند تا اعتبار سنج، يكتا باشد. اعتبار سنج ها فقط براي يك بار استفاده معتبر هستند، تا احتمال اينكه كسي سعي كند تا از هويت شخص ديگري استفاده كند را به حداقل برسانند. Replay كه يك تلاش براي استفاده مجدد اعتبار سنج است، نمي تواند در Kerberos v5 انجام شود. با اين احال، اعتبار سنجي دو طرفه وقتي مي تواند رخ دهد كه دريافت كننده اعتبار سنج، بخشي از اعتبار سنج اصلي را استخراج كند، آن را در يك اعتبار سنج جديد رمزنگاري كند و آن را به اولين اعتبار سنج بفرستد. بخشي از اعتبار سنج اصلي استخراج مي شود تا ثابت شود كه اعتبار سنج اصلي با موفقيت از رمز درآمده است. اگر كل اعتبار سنج اصلي بدون تغيير پس فرستاده شود، اعتبار سنج نمي داند كه آيا دريافت كننده مورد نظر و يا يك مقلد آن را فرستاده است يا خير.

Key Distribution Center
همانطور كه Kerberos در افسانه هاي يوناني سه سر داشت، در تكنولوژي نيز Kerberos سه قسمت دارد. پروتكل اعتبار سنجي Kerberos، يك سرويس گيرنده، يك سرور و يك مرجع مورد اعتماد دارد. (KDC) Key Distribution Center مرجع مورد اعتماد مورد استفاده در Kerberos،

پايگاه داده‌اي از تمام اطلاعات مربوط به principal (موجوديت)ها در قلمرو Kerberos را نگه مي دارد. يك principal (موجوديت)، يك موجوديت با اسم منحصر به فرد است كه در ارتباطات شبكه شركمت مي كند. يك قلمرو يا ناحيه، سازماني است كه يك سرور Kerberos دارد. از آنجايي كه سيستمي كه سرويس KDC را اجرا مي كند داراي پايگاه داده هاي با اطلاعات account هاي امنيتي است، بايد از نظر فيزيكي ايمن باشد. بخشي از اين اطلاعات امنيتي، كليد سري است كه بين يك موجوديت و KDC مشترك است.

هر موجوديت، كليد سري مربوط به خود را دارد كه دوام زيادي دارد به همين دليل به اين كليد، كليد دراز مدت نيز مي گويند. وقتي كه كليد دراز مدت بر يك موجوديت كاربر انساني استوار است، از كلمه عبور كاربر مشتق مي شود. اين كليد دراز مدت طبيعتاً، تقارني است.

كليد ديگري كه به همراه KDC مورد استفاده قرار مي گيرد، كليد نشست است كه وقتي كه يك موجوديت مي خواهد با موجوديت ديگر ارتباط برقرار كند، KDC آن را صادر مي كند. براي مثال، اگر يك سرويس گيرنده بخواهد با يك سرور ارتباط برقرار كند، سرويس گيرنده، درخواست را به KDC مي فرستد و KDC به نوبه خود، يك كليد نشست صادر مي كند ت

ا سرويس گيرنده و سرور بتوانند با يكديگر اعتبار سنجي شوند. هر قسمت از كليد نشست در قسمت مربوطه در كليد دراز مدت، هم براي سرويس گيرنده و هم براي سرور، رمز نگاري مي شود. به عبارت ديگر، كليد دراز مدت سرويس گيرنده، شامل كپي سرور از كليد نشست است و كليد دراز مدت سرور شامل كپي سرور از كليد نشست است. كليد نشست، طول عمر محدودي دارد و به اين دليل براي يك نشست login، مناسب مي باشد. بعد از اينكه نشست login به پايان رسيد، كليد نشست ديگر معتبر نيست. دفعه بعدي كه سرويس گيرنده نياز داشته باشد كه به همان سرور وصل شود، بايد براي يك كليد نشست جديد به KDC برود.

بليط هاي نشست (Session Tickets)
سرويس گيرنده يك پيغام رمزنگاري شده را از KDC دريافت مي كند كه شامل هم كپي سرويس گيرنده و هم كپي سرور كليد نشست است. كپي سرور كليد نشست در يك بليط نشست قرار دارد كه خود شامل اطلاعاتي درباره سرويس گيرنده است و با استفاده از كليد سري مشترك سرور و KDC رمزنگاري مي شود.

سرويس گيرنده نمي تواند به بليط نشست دستيابي داشته باشد، زيرا كليد سري مشتركي كه سرور و KDC به اشتراك گذاشته اند را نمي داند.
حال كه سرويس گيرنده، كليد نشست سرويس گيرنده و بليط نشست سرورها را از KDC دريافت كرده است. مي تواند با موفقيت با سرور تماس بگيرد. همانطور كه سرويس گيرنده يك پيغام كه حاوي بليط نشست است و يك اعتبار سنج كه با استفاده از كليد و نشست، رمزنگاري شده است به سرور مي فرستد.

بعد از اينكه سرور، گواهي هويت را از سرويس گيرنده دريافت مي كند، بليط نشست را با استفاده از كليد سري مشترك (مشترك بين سرور و KDC)، از رمز بيرون مي آورد و كليد نشست فرستاده شده توسط KDC را استخراج مي كند. سپس از كليد نشست، براي از رمز در آوردن اعتبار سنجي كه سرويس گيرنده فرستاده است استفاده مي كند. سرور، هويت بيان شده سرويس گيرنده را قبول دارد زيرا KDC، به عنوان مرجع مورد اعتماد، هويت سرويس گيرنده را به اطلاع سرور رسانده است. در اين زمان، اگر سرويس گيرنده درخواست اعتبار سنجي دو طرفه كرده باشد، تا وقتي flag درست در پيغامي كه مي فرستد تنظيم شده باشد، اين اعتبار سنجي دو طرفه مي تواند رخ دهد.
اين يكي از تفاوت هاي بين Kerberos و مكانيزم هاي اعتبارسنجي ديگر است كه فقط سرويس گيرنده ها را اعتبار سنجي مي كنند. اگر سرويس گيرنده، درخواست اعتبار سنجي دو طرفه كند، سرور با استفاده از كپي خود از كليد نشست، timestamp شامل ميلي ثانيه هاي اعتبار سنج سرويس گيرنده را به رمز در مي آورد و آن را به سرويس گيرنده مي فرستد.

بليط هاي نشست مي توانند براي يك دوره مشخص زماني كه بوسيله سياست Kerberos در محدوده تعيين مي شود، مجدداً مورد استفاده قرار گيرند. KDC، دوره زماني را در ساختار بليط قرار مي دهد. اين امر نياز موجوديت را براي اينكه هر دفعه كه بخواهد با موجوديت ديگر ارتباط برقرار كند مجبور باشد كه به KDC برود، كم مي كند. موجوديت سرويس گيرنده، بليط هاي نشست مورد نياز براي ارتباط با موجوديت هاي ديگر را در حافظه گواهي هويت خود نگه مي دارد. از طرفي ديگر، موجوديت هاي سرور، كليدهاي نشست را در حافظه گواهي هويت خود نگه نمي‌دارند، بلكه فقط منتظر مي مانند تا يك موجوديت سرويس گيرنده، يك بليط نشست را بفرستد و با استفاده از كليد سري مشترك آن را از رمز در آورد.

بليط هايي براي اعطاي بليط
بليط هاي نشست، تنها بليط هاي مورد استفاده در Kerberos نيستند. KDC با استفاده از يك بليط كه خود بليط هايي را در اختيار مي گذارد (TGT)، ارتباط برقرار مي كند و بررسي مي كند كه موجوديت ها هماني باشند كه بيان مي كنند. كاربري كه به يك محدود Kerberos، logon مي كند، از يك كلمه عبور استفاده مي كند كه از يك الگوريتم در هم سازي يك طرفه عبور مي كند و به يك كليد دراز مدت تبديل مي‌شود. بعد نتايج درهم سازي به KDC فرستاده مي شوند كه به نوبه خود يك كپي از درهم سازي را از پايگاه داده account خود دريافت مي كند. وقتي كه سرويس گيرنده، كليد دراز مدت را مي‌فرستد، يك بليط نشست و كليد نشست درخواست مي‌كند تا بتواند از آن براي برقراري ارتباط با KDC در طي نشست logon استفاده كند. بليطي كه KDC به سرويس گيرنده بر مي گرداند، TGT در كليد دراز مدت KDC، رمزنگاري مي شود و كپي سرويس گيرنده از كليد نشست در كليد دراز مدت سرويس گيرنده، رمزنگاري مي شود. بعد از اينكه سرويس گيرنده، پيغام پاسخ را از KDC دريافت مي كند، از كليد دراز مدت خود (كه روي سيستم سرويس گيرنده ذخيره شده است) براي از رمز در آوردن كليد نشست استفاده مي كند. بعد از اينكه كليد نشست، از رمز در آمد، كليد دراز مدت از حافظه نهان سرويس گيرنده بيرون كشيده مي شود، زيرا ديگر براي ارتباط با KDC براي بقيه مدت نشست logon و يا تا وقتي كه TGT منقضي نشود، مورد نياز نيست. اين كليد نشست، كليدنشست logon نيز ناميده مي شود.