المحتويات

المقدمة

رأس المصدق

مصادقة الاستجابة

متى ينبغي توقع فشل التحقق من الصحة؟

إخفاء كلمة المرور

عمليات إعادة الإرسال

محاسبة

سمة مصدق الرسائل

متى ينبغي إستخدام مصدق الرسائل؟

متى ينبغي توقع فشل التحقق من الصحة؟

التحقق من صحة سمة مصدق الرسائل

معلومات ذات صلة

المقدمة

يصف هذا المستند آليتي أمان RADIUS:

- رأس المصدق

- سمة مصدق الرسائل

تغطي هذه الوثيقة ما هي آليات الأمان، وكيف يتم إستخدامها، ومتى يجب أن تتوقع فشل التحقق من الصحة.

رأس المصدق

وفقا لمعيار RFC 2865، يبلغ طول رأس المصدق 16 بايت. وعند إستخدامه في طلب الوصول، يسمى مصدق الطلب. عند إستخدامه في أي نوع من الاستجابة، يطلق عليه مصدق الاستجابة. تستخدم من أجل:

- مصادقة الاستجابة

- إخفاء كلمة المرور

مصادقة الاستجابة

إذا استجاب الخادم باستخدام "مصدق الاستجابة" الصحيح، يمكن للعميل إجراء الحساب إذا كانت الاستجابة مرتبطة بطلب صالح.

يرسل العميل الطلب مع رأس المصدق العشوائي. بعد ذلك، يقوم الخادم الذي يرسل الاستجابة بحساب مصدق الاستجابة باستخدام حزمة الطلب مع السر المشترك:

ResponseAuth = MD5(Code + ID + Length + RequestAuth + Attributes + Secret)

يقوم العميل الذي يستقبل الاستجابة بتنفيذ العملية نفسها. إذا كانت النتيجة هي نفسها، فإن الحزمة صحيحة.

ملاحظة: لا يمكن للمهاجم الذي يعرف القيمة السرية انتحال الاستجابة ما لم يكن قادرا على التعرف على الطلب.

متى ينبغي توقع فشل التحقق من الصحة؟

يحدث فشل التحقق من الصحة إذا لم يعد المحول يقوم بتخزين الطلب مؤقتا (على سبيل المثال، بسبب المهلة). قد تواجه أيضا هذا الأمر عندما يكون السر المشترك غير صالح (نعم - يتضمن Access-Reject أيضا هذا الرأس). بهذه الطريقة، يمكن لجهاز الوصول إلى الشبكة (NAD) اكتشاف عدم تطابق السر المشترك. عادة ما يتم الإبلاغ عنه بواسطة خوادم/عملاء المصادقة والتفويض والمحاسبة (AAA) كعدم تطابق مشترك للمفتاح، ولكنه لا يكشف التفاصيل.

إخفاء كلمة المرور

كما يتم إستخدام رأس المصدق لتجنب إرسال سمة كلمة مرور المستخدم في نص عادي. أولا، يتم حساب ملخص الرسالة 5 (MD5 - سري، المصدق). ثم يتم تنفيذ العديد من عمليات XOR بأجزاء كلمة المرور. تعد هذه الطريقة عرضة للهجمات غير المتصلة (جداول قوس قزح) نظرا لأنه لم يعد ينظر إلى MD5 على أنه خوارزمية قوية أحادية الإتجاه.

هنا ال بايثون نص أن يحسب المستعمل كلمة:

def Encrypt_Pass(password, authenticator, secret):

m = md5()

m.update(secret+authenticator)

return "".join(chr(ord(x) ^ ord(y)) for x, y in zip(password.ljust

(16,'\0')[:16], m.digest()[:16]))

عمليات إعادة الإرسال

إذا تم تغيير أي من السمات في طلب وصول RADIUS (مثل معرف RADIUS واسم المستخدم وما إلى ذلك)، فيجب إنشاء حقل المصدق الجديد ويجب إعادة حساب كافة الحقول الأخرى التي تعتمد عليه. إذا كان هذا إعادة إرسال، لا ينبغي أن يتغير شيء.

محاسبة

يختلف معنى رأس المصدق بالنسبة إلى طلب الوصول وطلب المحاسبة.

بالنسبة لطلب الوصول، يتم إنشاء المصدق بشكل عشوائي ومن المتوقع أن يتلقى إستجابة تم حساب ResponseAuthenticator عليها بشكل صحيح، مما يثبت أن الاستجابة كانت مرتبطة بذلك الطلب المحدد.

بالنسبة لطلب المحاسبة، فإن المصدق ليس عشوائيا، ولكنه يتم حسابه (وفقا ل RFC 2866):

RequestAuth = MD5(Code + ID + Length + 16 zero octets + Attributes + Secret)

بهذه الطريقة، يمكن للخادم التحقق من رسالة المحاسبة فورا وإفلات الحزمة إذا لم تتطابق قيمة إعادة الحساب مع قيمة المصدق. ترجع Identity Services Engine (ISE):

11038 RADIUS Accounting-Request header contains invalid Authenticator field

السبب النموذجي لهذا هو المفتاح السري المشترك غير الصحيح.

سمة مصدق الرسائل

سمة مصدق الرسائل هي سمة RADIUS المحددة في RFC 3579. تستخدم لغرض مشابه: التوقيع والتصديق. ولكن هذه المرة، لا يتم إستخدامها للتحقق من صحة إستجابة ما بل الطلب.

يقوم العميل الذي يرسل طلب الوصول (يمكن أيضا أن يكون خادما يستجيب باستخدام اعتراض الوصول) بحساب رمز مصادقة الرسائل المستندة إلى التجزئة (HMAC)-MD5 من الحزمة الخاصة به، ثم يضيف سمة مصدق الرسائل كتوقيع. وبعد ذلك، يمكن للخادم التحقق من تنفيذه لنفس العملية.

تبدو الصيغة مماثلة لرأس المصدق:

Message-Authenticator = HMAC-MD5 (Type, Identifier, Length, Request Authenticator,

Attributes)

تأخذ الدالة HMAC-MD5 في وسيطتين:

- حمولة الحزمة، والتي تتضمن حقل مصدق الرسائل سعة 16 بايت المملوء بالأصفار

- السر المشترك

متى ينبغي إستخدام مصدق الرسائل؟

يجب إستخدام مصدق الرسائل لكل حزمة، والتي تتضمن رسالة بروتوكول المصادقة المتوسع (EAP) (RFC 3579). ويتضمن ذلك كل من العميل الذي يرسل طلب الوصول والخادم الذي يستجيب مع "تحدي الوصول". يجب أن يقوم الجانب الآخر بإسقاط الحزمة بصمت إذا فشل التحقق من الصحة.

متى ينبغي توقع فشل التحقق من الصحة؟

سيحدث فشل التحقق من الصحة عندما يكون السر المشترك غير صالح. بعد ذلك، لا يمكن لخادم AAA التحقق من صحة الطلب.

يخبر ال‍ ISE:

11036 The Message-Authenticator Radius Attribute is invalid.

ويحدث ذلك عادة في المرحلة اللاحقة عند إرفاق رسالة EAP. لا تتضمن حزمة RADIUS الأولى لجلسة عمل 802.1x رسالة EAP؛ لا يوجد حقل مصدق رسالة ولا يمكن التحقق من الطلب، ولكن في تلك المرحلة، يمكن للعميل التحقق من الاستجابة باستخدام حقل المصدق.

التحقق من صحة سمة مصدق الرسائل

هنا مثال لتوضيح كيفية حساب القيمة يدويا للتأكد من حسابها بشكل صحيح.

تم إختيار الحزمة رقم 30 (طلب الوصول). هو في منتصف جلسة EAP، وتتضمن الحزمة حقل مصدق الرسالة. الهدف هو التحقق من صحة مصدق الرسالة:

1. انقر بزر الماوس الأيمن فوق بروتوكول Radius واختر تصدير وحدات بايت الحزم المحددة.

2. اكتب حمولة RADIUS إلى ملف (بيانات ثنائية).

3. لحساب حقل مصدق الرسائل، يجب وضع أصفار هناك وحساب HMAC-MD5.

على سبيل المثال، عند إستخدام المحرر سداسي/ثنائي، مثل VIM، بعد كتابة ":٪!xd"، والتي يتم تحويلها إلى الوضع سداسي العشري والأصفار 16 بايت بدءا من "5012" (50hex هو 80 في ديسمبر وهو نوع مصدق الرسائل، و 12 هو الحجم الذي يساوي 18 بما في ذلك رأس أزواج قيمة السمة (AVP)):

بعد هذا التعديل، تصبح الحمولة جاهزة. من الضروري العودة إلى الوضع سداسية عشرية/ثنائية (النوع: "٪!xd -r") وحفظ الملف (":wq").

4. أستخدم OpenSSL لحساب HMAC-MD5:

pluton # cat packet30-clear-msgauth.bin | openssl dgst -md5 -hmac 'cisco'

(stdin)= 01418d3b1865556918269d3cf73608b0
تأخذ الدالة HMAD-MD5 وسيطتين: الأولى من إدخال قياسي (stdin) هي الرسالة نفسها والثانية هي السر المشترك (cisco في هذا مثال). والنتيجة هي نفس قيمة مصدق الرسائل المرفق بحزمة طلب الوصول RADIUS.

نفس الشيء يمكن حسابه باستخدام برنامج Python النصي:

pluton # cat hmac.py

#!/usr/bin/env python

import base64

import hmac

import hashlib

f = open('packet30-clear-msgauth.bin', 'rb')

try:

body = f.read()

finally:

f.close()

digest = hmac.new('cisco', body, hashlib.md5)

d=digest.hexdigest()

print d

pluton # python hmac.py

01418d3b1865556918269d3cf73608b0

يوضح المثال السابق كيفية حساب حقل مصدق الرسائل من طلب الوصول. بالنسبة لتحدي الوصول وقبول الوصول ورفض الوصول، فإن المنطق هو نفسه تماما، ولكن من المهم تذكر أنه يجب إستخدام مصدق الطلب، والذي يتم توفيره في حزمة طلب الوصول السابقة.

معلومات ذات صلة

- المعيار RFC 2865

- المعيار RFC 2866

- المعيار RFC 3579

- الدعم التقني والمستندات - Cisco Systems