تنفيذ عملية تبادل المفاتيح - كتاب الأمن السيبراني - الصف 12 - الفصل 1 - المملكة العربية السعودية

الكتاب: كتاب الأمن السيبراني - الصف 12 - الفصل 1 | المادة: الأمن السيبراني | المرحلة: الصف 12 | الفصل الدراسي: 1

الدولة: المملكة العربية السعودية | المنهج: المنهج السعودي - وزارة التعليم

الدرس: تنفيذ عملية تبادل المفاتيح (Implementing the Key Exchange)

📚 معلومات الصفحة

الكتاب: كتاب الأمن السيبراني - الصف 12 - الفصل 1 | المادة: الأمن السيبراني | المرحلة: الصف 12 | الفصل الدراسي: 1

الدولة: المملكة العربية السعودية | المنهج: المنهج السعودي - وزارة التعليم

نوع المحتوى: درس تعليمي

مستوى الصعوبة: متوسط

📝 ملخص الصفحة

تقدم هذه الصفحة شرحًا عمليًا لتنفيذ خوارزمية تبادل المفاتيح Diffie-Hellman باستخدام لغة البرمجة Python. تبدأ بإعداد الخوارزمية من خلال استيراد المكتبات اللازمة مثل random و hashlib، وتحديد دالة mod_exp لحساب الأس المعياري. ثم تنتقل إلى تنفيذ عملية تبادل المفاتيح، حيث يتم توليد أعداد أولية كبيرة كقيم p و g، واختيار مفاتيح خاصة للأطراف (علي وأحمد)، وحساب المفاتيح العامة وتبادلها. أخيرًا، يتم توليد مفتاح سري مشترك عبر حساب الأس المعياري والتأكد من تطابقه بين الطرفين، مع إمكانية استخدام دالة تجزئة لاشتقاق مفتاح متماثل. تُظهر الصفحة مثالًا عمليًا يوضح كيفية تطبيق هذه الخطوات في برنامج Python، مع إخراج المفتاح السري المشترك كقيمة تجزئة SHA-256.

📄 النص الكامل للصفحة

--- SECTION: إعداد الخوارزمية --- إعداد الخوارزمية (Preparing the Algorithm) import random import hashlib # Modular exponentiation: (base^exponent) % modulus def mod_exp(base, exponent, modulus): return pow(base, exponent, modulus) # Generate a large prime number def generate_large_prime(bits=2048): return random.getrandbits(bits) | 1 # Command to create a prime number --- SECTION: تنفيذ عملية تبادل المفاتيح --- تنفيذ عملية تبادل المفاتيح (Implementing the Key Exchange) def dh_key_exchange(): # Agree on large prime numbers p and g p = generate_large_prime() g = generate_large_prime() # Each party selects a private key ali_private_key = generate_large_prime() ahmed_private_key = generate_large_prime() # Each party computes their public key ali_public_key = mod_exp(g, ali_private_key, p) ahmed_public_key = mod_exp(g, ahmed_private_key, p) # Each party exchanges their public key and computes the shared secret ali_shared_secret = mod_exp(ahmed_public_key, ali_private_key, p) ahmed_shared_secret = mod_exp(ali_public_key, ahmed_private_key, p) # Verify that the shared secrets match assert ali_shared_secret == ahmed_shared_secret # Optionally, hash the shared secret to derive a symmetric key shared_secret_hash = hashlib.sha256(str(ali_shared_secret).encode()).hexdigest() return shared_secret_hash --- SECTION: توليد المفتاح السري المشترك --- توليد المفتاح السري المشترك (Generating the Secret Shared Key) # Produce the shared secret key shared_secret = dh_key_exchange() print("Shared secret:", shared_secret) Shared secret: 74b40ad75c4d76edcef424bcb1e27be104c60c22072e0aad65b5a29b60d1ddab --- SECTION: Footer --- وزارة التعليم Ministry of Education 2025 - 1447 --- SECTION: Page Number --- 124

🎴 بطاقات تعليمية للمراجعة

عدد البطاقات: 5 بطاقة لهذه الصفحة

ما هي وظيفة دالة mod_exp في خوارزمية Diffie-Hellman؟

الإجابة: هي دالة لحساب الأس المعياري: (base^exponent) % modulus، وتستخدم لحساب الأسس الكبيرة بأمان في عملية تبادل المفاتيح.

الشرح: هذه الدالة أساسية في خوارزمية Diffie-Hellman لأنها تتيح حساب الأسس الكبيرة مع تطبيق العملية المعيارية للحفاظ على الأمان والكفاءة.

تلميح: فكر في العملية الرياضية التي تجمع بين الأس والعمليات المعيارية.

التصنيف: تعريف | المستوى: متوسط

ما هي الخطوات الأساسية لتنفيذ عملية تبادل المفاتيح باستخدام خوارزمية Diffie-Hellman كما وردت في الكود؟

الإجابة: 1. الاتفاق على عددين أوليين كبيرين p و g. 2. اختيار كل طرف لمفتاحه الخاص. 3. حساب المفتاح العام لكل طرف باستخدام الأس المعياري. 4. تبادل المفاتيح العامة. 5. حساب المفتاح السري المشترك من المفتاح العام للطرف الآخر والمفتاح الخاص. 6. التحقق من تطابق المفتاح السري المشترك. 7. استخدام دالة هاش لاشتقاق مفتاح متناظر.

الشرح: هذه الخطوات تمثل جوهر بروتوكول Diffie-Hellman لتبادل المفاتيح، حيث يسمح للأطراف بإنشاء مفتاح سري مشترك عبر قناة غير آمنة.

تلميح: ركز على التسلسل المنطقي: الاتفاق، الاختيار، الحساب، التبادل، ثم الحساب النهائي.

التصنيف: صيغة/خطوات | المستوى: صعب

ما الفرق بين المفتاح الخاص (Private Key) والمفتاح العام (Public Key) في عملية تبادل المفاتيح Diffie-Hellman؟

الإجابة: المفتاح الخاص: رقم سري يختاره كل طرف لنفسه ولا يتم مشاركته مع الآخرين (مثل ali_private_key و ahmed_private_key). المفتاح العام: يتم حسابه من المفتاح الخاص والأعداد الأولية المتفق عليها (p و g)، ويتم تبادله بين الأطراف (مثل ali_public_key و ahmed_public_key).

الشرح: هذا التمييز هو أساس أمان خوارزمية Diffie-Hellman، حيث يبقى المفتاح الخاص سرياً دائماً، بينما يمكن تبادل المفتاح العام علناً دون خطر.

تلميح: فكر في أي المفاتيح يبقى سرياً وأيها يتم تبادله علناً.

التصنيف: فرق بين مفهومين | المستوى: متوسط

ما هو الغرض من استخدام دالة الهاش (hash) على المفتاح السري المشترك في نهاية عملية Diffie-Hellman؟

الإجابة: الغرض هو اشتقاق مفتاح متناظر (symmetric key) مناسب للاستخدام في خوارزميات التشفير المتناظرة، حيث يحول القيمة الرقمية الكبيرة إلى تنسيق ثابت الطول وآمن.

الشرح: المفتاح السري المشترك الناتج من Diffie-Hellman هو رقم كبير جداً، ودالة الهاش تحوله إلى تنسيق مناسب وآمن للاستخدام كمفتاح في خوارزميات التشفير مثل AES.

تلميح: فكر في لماذا قد نحتاج إلى تحويل الناتج الرقمي الكبير إلى تنسيق آخر.

التصنيف: مفهوم جوهري | المستوى: متوسط

كيف يتم التحقق من نجاح عملية تبادل المفاتيح في خوارزمية Diffie-Hellman؟

الإجابة: يتم التحقق عن طريق مقارنة المفتاح السري المشترك الذي حسنه كل طرف على حدة (ali_shared_secret و ahmed_shared_secret)، والتأكد من أنهما متطابقان باستخدام أمر assert.

الشرح: هذا التحقق ضروري للتأكد من أن العملية الحسابية تمت بشكل صحيح وأن كلا الطرفين توصلا إلى نفس المفتاح السري المشترك، وهو شرط أساسي للاتصال الآمن.

تلميح: تذكر أن كلا الطرفين يحسبان قيمة منفصلة، ولكن يجب أن تكونا متماثلتين.

التصنيف: مفهوم جوهري | المستوى: سهل