تبادل المفاتيح والتشفير الهجين
تعرّف على كيفية جمع تبادل المفاتيح Diffie-Hellman وTLS بين الأساليب المتماثلة وغير المتماثلة لتحقيق الأداء والأمان معًا.
تبادل المفاتيح والتشفير الهجين درس مجاني في Cloud & IT Cert Prep على CoddyKit. هذا هو الدرس 4 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Cloud & IT Cert Prep، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Cloud & IT Cert Prep 4 دروس في المجموع.
مشكلة تبادل المفاتيح
يتطلب التشفير المتماثل أن يتشارك الطرفان المفتاح السري نفسه قبل أن يتمكنا من التواصل بأمان. لكن كيف يمكن مشاركة هذا المفتاح بأمان عند عدم وجود قناة آمنة مسبقًا؟ اعتُبرت مشكلة توزيع المفاتيح غير قابلة للحل حتى عام 1976، عندما نشر Whitfield Diffie وMartin Hellman بحثًا ثوريًا. وقد أتاح حلهما، وهو تبادل مفاتيح Diffie-Hellman، لطرفين إنشاء مفتاح سري مشترك عبر قناة غير آمنة من دون إرسال المفتاح نفسه على الإطلاق، حتى مع وجود متصنتين يراقبون القناة.
مفهوم تبادل مفاتيح Diffie-Hellman
تستخدم Diffie-Hellman (DH) حيلة رياضية ذكية تستند إلى مسألة اللوغاريتم المتقطع. يتفق الطرفان على قيمتين عامتين (عدد أولي كبير p ومولّد g). وينشئ كل طرف رقمًا عشوائيًا خاصًا، ويحسب منه قيمة عامة، ثم يتبادلان القيم العامة. بعد ذلك يمكن لكل طرف حساب السر المشترك نفسه باستخدام رقمه الخاص والقيمة العامة للطرف الآخر، لكن المتصنت الذي يرى القيم العامة فقط لا يستطيع حساب السر المشترك من دون حل مسألة اللوغاريتم المتقطع، وهو أمر غير ممكن عمليًا من الناحية الحسابية للأعداد الكبيرة.
# Diffie-Hellman conceptual flow:
# 1. Agree on public parameters: prime p=23, generator g=5
# 2. Alice picks private a=6: computes A = g^a mod p = 5^6 mod 23 = 8
# 3. Bob picks private b=15: computes B = g^b mod p = 5^15 mod 23 = 19
# 4. Alice sends A=8 to Bob; Bob sends B=19 to Alice
# 5. Alice: s = B^a mod p = 19^6 mod 23 = 2
# 6. Bob: s = A^b mod p = 8^15 mod 23 = 2
# Shared secret = 2 (without either party transmitting it!)ECDH: Elliptic Curve Diffie-Hellman
إن Elliptic Curve Diffie-Hellman (ECDH) هو الإصدار الحديث والأكثر كفاءة من تبادل مفاتيح Diffie-Hellman. ويستخدم رياضيات المنحنيات الإهليلجية بدلًا من الأسّية المعيارية، محققًا مستوى الأمان نفسه باستخدام معلمات أصغر بكثير. ويوفر مفتاح ECDH بطول 256 بت أمانًا يعادل مفتاح DH بطول 3072 بت. أما ECDHE (فالحرف 'E' اختصار لـ Ephemeral) فينشئ زوج مفاتيح جديدًا لكل جلسة، ما يوفر السرية التامة للأمام. ويفرض TLS 1.3 استخدام ECDHE لتبادل المفاتيح، ما يجعله آلية تبادل المفاتيح السائدة في أمان الويب الحديث.
السرية التامة للأمام (PFS)
تضمن السرية التامة للأمام (PFS) عدم انكشاف مفاتيح الجلسات حتى إذا سُرق المفتاح الخاص طويل الأمد للخادم لاحقًا. وتتحقق PFS باستخدام أزواج مفاتيح مؤقتة لتبادل مفاتيح كل جلسة؛ إذ يُشتق مفتاح الجلسة من زوج مفاتيح مؤقت ويُتخلّص منه بعد انتهاء الجلسة. ومن دون PFS (عند استخدام تبادل مفاتيح RSA)، يستطيع مهاجم يسجل حركة المرور المشفرة اليوم ثم يسرق المفتاح الخاص لاحقًا فك تشفير جميع البيانات السابقة بأثر رجعي. أما مع PFS، فتبقى الجلسات السابقة آمنة حتى بعد اختراق المفتاح.
# Check if a website uses Perfect Forward Secrecy
openssl s_client -connect google.com:443 2>/dev/null | grep 'Cipher'
# Cipher : TLS_AES_256_GCM_SHA384 (TLS 1.3 - always has PFS)
# Or look for ECDHE in cipher name:
# Cipher : ECDHE-RSA-AES256-GCM-SHA384 (TLS 1.2 with PFS)
# DHE-RSA-AES256-GCM-SHA384 (DHE = also PFS)
# RSA-AES256-SHA (NO PFS - static RSA key exchange)التشفير الهجين: أفضل ما في النوعين
يجمع التشفير الهجين بين التشفير غير المتماثل والتشفير المتماثل لتحقيق كلٍّ من فوائد إدارة المفاتيح التي يوفرها التشفير غير المتماثل وأداء التشفير المتماثل. وتتم العملية كما يلي: (1) إنشاء مفتاح جلسة متماثل عشوائي، (2) تشفير البيانات الأساسية بهذا المفتاح المتماثل (بسرعة)، (3) تشفير المفتاح المتماثل بالمفتاح العام للمستلم (لنقل المفتاح بأمان)، (4) إرسال البيانات المشفرة والمفتاح المشفر معًا. يفك المستلم تشفير المفتاح المتماثل باستخدام مفتاحه الخاص، ثم يفك تشفير البيانات باستخدام المفتاح المتماثل المستعاد.
# Hybrid encryption example with OpenSSL
# 1. Generate a random AES-256 session key
openssl rand -out session.key 32
# 2. Encrypt the large file with the symmetric session key
openssl enc -aes-256-cbc -pbkdf2 -in largefile.tar -out largefile.enc -pass file:session.key
# 3. Encrypt the session key with recipient's RSA public key
openssl rsautl -encrypt -inkey recipient_public.pem -pubin -in session.key -out session.key.enc
# Send: largefile.enc + session.key.encمصافحة TLS: التشفير الهجين عمليًا
تُعد مصافحة TLS أكثر تطبيقات التشفير الهجين شيوعًا في العالم الحقيقي. في TLS 1.3: (1) يرسل العميل مجموعات التشفير المدعومة ومشاركة المفتاح (القيمة العامة لـ ECDHE). (2) يرد الخادم بمشاركة مفتاحه، وشهادته (التي تتضمن مفتاحه العام)، وتوقيع. (3) يحسب الطرفان السر المشترك نفسه باستخدام ECDH. (4) تُشفَّر جميع حركة المرور اللاحقة باستخدام مفتاح متماثل مشتق من السر المشترك (AES-256-GCM). تنشئ العملية بأكملها قناة مشفرة في رحلة ذهاب وإياب واحدة، من دون إرسال المفتاح المتماثل مباشرةً في أي وقت.
# Observe the TLS 1.3 handshake
openssl s_client -connect example.com:443 -tls1_3
# You'll see:
# TLSv1.3, Handshake [length 0002], ServerHello
# Cipher : TLS_AES_256_GCM_SHA384
# Session-ID: (no session ID in TLS 1.3, uses PSK)
# Verify return code: 0 (ok)آليات تغليف المفاتيح (KEM)
يستخدم علم التشفير الحديث آليات تغليف المفاتيح (KEM) باعتبارها نهجًا أكثر رسمية وأمانًا لتبادل المفاتيح من تشفير مفتاح جلسة مباشرةً باستخدام التشفير غير المتماثل. تتيح KEM لطرفٍ ما إنشاء مفتاح متماثل و«تغليفه» باستخدام المفتاح العام للمستلم، بطريقة لا تمكّن من فك تغليفه (واستعادته) إلا المستلم. يُعد معيار NIST لما بعد الحوسبة الكمومية CRYSTALS-Kyber آلية KEM تعتمد على مسائل الشبكات، لا على تحليل الأعداد الصحيحة إلى عوامل أو المنحنيات الإهليلجية، مما يجعلها مقاومة لهجمات الحواسيب الكمومية.
تبادل مفاتيح RSA مقابل ECDHE
حتى الإصدار TLS 1.3، كان تبادل مفاتيح RSA شائعًا: إذ ينشئ العميل سرًا أوليًا رئيسيًا، ويشفّره بالمفتاح العام لـ RSA الخاص بالخادم، ثم يرسله إلى الخادم. وتكمن المشكلة في أن هذا الأسلوب لا يوفر السرية التامة للأمام. فإذا تعرض المفتاح الخاص للخادم للاختراق لاحقًا، أمكن فك تشفير جميع الجلسات السابقة التي شُفرت بهذه الطريقة. يزيل TLS 1.3 تبادل مفاتيح RSA بالكامل (ولا يسمح إلا بـ ECDHE) تحديدًا لفرض السرية التامة للأمام في جميع الاتصالات. ولهذا يُعد تعطيل TLS 1.0 وTLS 1.2 (اللذين لا يزالان يسمحان باستخدام RSA الثابت) وفرض TLS 1.3 تحسينًا أمنيًا.
اشتقاق مفتاح الجلسة
لا يُستخدم السر المشترك الناتج عن تبادل Diffie-Hellman مباشرةً كمفتاح تشفير. بل يُمرَّر إلى دالة اشتقاق المفاتيح (KDF) لإنتاج مفاتيح التشفير الفعلية ومتجهات التهيئة. يستخدم TLS 1.3 دالة HKDF (دالة اشتقاق المفاتيح المعتمدة على HMAC) لاشتقاق مفاتيح منفصلة للتشفير في كل اتجاه. تضيف دوال KDF تكلفة حسابية (مما يجعل هجمات القوة الغاشمة أصعب)، وتوسّع الأسرار القصيرة إلى العدد المطلوب من بايتات المفاتيح، وتضمن امتلاك المفاتيح المشتقة خصائص إحصائية جيدة لاستخدامها كمفاتيح متماثلة.
تشفير البريد الإلكتروني باستخدام PGP: التشفير الهجين في البريد
يستخدم كلٌّ من Pretty Good Privacy (PGP) ونظيره مفتوح المصدر OpenPGP التشفير الهجين للبريد الإلكتروني. عندما ترسل Alice رسالة بريد إلكتروني مشفرة إلى Bob، ينشئ PGP مفتاح جلسة متماثلًا عشوائيًا، ويشفّر متن الرسالة به (باستخدام AES)، ويشفّر مفتاح الجلسة بالمفتاح العام لـ RSA أو ECC الخاص بـ Bob، ثم يرسل العنصرين معًا. أما في الرسائل الموقعة، فيحسب PGP تجزئة للرسالة ويوقّع التجزئة باستخدام المفتاح الخاص لـ Alice، مما يوفر عدم التنصل. ويُعد نموذج شبكة الثقة في PGP (حيث يوقّع المستخدمون مفاتيح بعضهم بعضًا) بديلًا عن بنية PKI المعتمدة على سلطات إصدار الشهادات.
# Encrypt and sign an email file with GPG (OpenPGP)
# Encrypt to Bob using his public key, sign with Alice's private key
gpg --encrypt --sign --recipient bob@example.com --armor message.txt
# Decrypt (Bob uses his private key)
gpg --decrypt message.txt.asc
# List available keys
gpg --list-keys
gpg --list-secret-keysخطر الرجل الوسيط في تبادل المفاتيح
يكون تبادل مفاتيح Diffie-Hellman آمنًا ضد المتنصتين السلبيين، لكنه يكون عرضةً لـ هجمات الرجل الوسيط النشطة (MITM) إذا لم يتحقق الطرفان من هوية بعضهما. يمكن للمهاجم اعتراض القيمة العامة لـ Alice واستبدالها بقيمته، ثم إنشاء جلستي DH منفصلتين مع Alice وBob، بحيث يعتقد كل منهما أنه يتواصل مع الآخر. ولهذا يجمع TLS بين تبادل مفاتيح DH والمصادقة باستخدام الشهادات: إذ تثبت شهادة الخادم (الموقعة من سلطة إصدار شهادات موثوقة) هوية الخادم، وتمنع استبدال المفتاح العام بهجوم الرجل الوسيط أثناء المصافحة.
تحقق سريع
اختبر مدى فهمكم لمفاهيم CompTIA Security+ (SY0-701) الواردة في هذا الدرس.
مراجعة الدرس
تعلمتم في هذا الدرس أن Diffie-Hellman يحل مشكلة تبادل المفاتيح، إذ يتيح للأطراف اشتقاق سر مشترك عبر قناة غير آمنة؛ وأن ECDHE (المؤقت) يوفر السرية التامة للأمام؛ وأن التشفير الهجين يجمع بين تبادل المفاتيح غير المتماثل والتشفير المتماثل للبيانات الأساسية لتحقيق الكفاءة؛ وأن TLS 1.3 يفرض استخدام ECDHE في جميع الاتصالات. في الخطوة التالية، سنستكشف سلطات إصدار الشهادات وسلاسل الثقة.
الأسئلة الشائعة
هل درس «تبادل المفاتيح والتشفير الهجين» مجاني؟
نعم — نص درس «تبادل المفاتيح والتشفير الهجين» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Cloud & IT Cert Prep، انتقل إلى CoddyKit PRO. تتضمن دورة Cloud & IT Cert Prep 4 دروس في المجموع.
ماذا ستتعلم في «تبادل المفاتيح والتشفير الهجين»؟
تعرّف على كيفية جمع تبادل المفاتيح Diffie-Hellman وTLS بين الأساليب المتماثلة وغير المتماثلة لتحقيق الأداء والأمان معًا. تتمرن على Cloud & IT Cert Prep مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Cloud & IT Cert Prep؟
لا تُشترط خبرة سابقة. Cloud & IT Cert Prep على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 4 من أصل 4.
كم من الوقت يستغرق درس «تبادل المفاتيح والتشفير الهجين»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Cloud & IT Cert Prep هذا؟
نعم. كل درس في Cloud & IT Cert Prep يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- خوارزميات التشفير المتماثل
- التشفير غير المتماثل وأزواج المفاتيح
- التجزئة وسلامة البيانات
- تبادل المفاتيح والتشفير الهجين