التشفير المتماثل وغير المتماثل
مفتاح واحد أم زوج؟ ولماذا يجمع TLS بينهما؟ ⏱ نحو 40 دقيقة.
- تميّز التشفير المتماثل من غير المتماثل.
- تشرح مشكلة تبادل المفاتيح وحلّها.
- تصف التشفير الهجين في
TLS. - تختار النوع المناسب لكل حالة ولا تخترع تشفيرك.
١المتماثل: مفتاح واحد
التشفير المتماثل Symmetric يستخدم مفتاحًا واحدًا للتشفير والفكّ. سريع وقوي، مناسب لتشفير كميات كبيرة من البيانات. أشهر خوارزمياته AES:
const crypto = require('crypto');const key = crypto.randomBytes(32); // 256 بتconst iv = crypto.randomBytes(12);const c = crypto.createCipheriv('aes-256-gcm', key, iv);const enc = Buffer.concat([c.update('بيانات حسّاسة', 'utf8'), c.final()]);const tag = c.getAuthTag(); // GCM يضيف سلامة أيضًا// الفكّ يحتاج المفتاح نفسه و iv و tag
مشكلته الوحيدة: كيف يتفق الطرفان على المفتاح سرًّا دون أن يعترضه أحد؟ هذه مشكلة تبادل المفاتيح.
٢غير المتماثل: زوج مفاتيح
التشفير غير المتماثل Asymmetric يحلّ مشكلة التبادل بزوج مفتاحين مرتبطين رياضيًّا: عام يُنشَر للجميع، وخاص يبقى سرًّا. ما يشفّره العام لا يفكّه إلا الخاص:
| المتماثل | غير المتماثل | |
|---|---|---|
| المفاتيح | مفتاح واحد مشترك | زوج: عام وخاص |
| السرعة | سريع (للبيانات الكبيرة) | بطيء (للبيانات الصغيرة) |
| المشكلة المحلولة | التشفير السريع | تبادل المفاتيح والتوقيع |
| مثال | AES | RSA، ECC |
وله استخدام ثانٍ مهم معكوس: ما يشفّره الخاص يتحقق منه العام — وهذا أساس التوقيع الرقمي (الدرس القادم).
٣الأفضل: التشفير الهجين
المتماثل سريع لكن تبادل مفتاحه صعب؛ وغير المتماثل يحلّ التبادل لكنه بطيء. الحل الذي يستخدمه TLS (ومعظم الأنظمة) هو الهجين: نجمع قوّتيهما:
| الخطوة | النوع |
|---|---|
| 1. تبادل مفتاح جلسة عشوائي | غير متماثل (أو تبادل مفاتيح) |
| 2. تشفير كل البيانات بمفتاح الجلسة | متماثل (سريع) |
القاعدة العملية: لا تخترع تشفيرك. استخدم مكتبات ومعايير مجرَّبة (AES-GCM، TLS حديث)، فأخطاء التشفير اليدوي دقيقة وكارثية.
توقّع وتحقّق
التشفير المتماثل يستخدم:
يحلّ غير المتماثل مشكلة:
TLS يستخدم:
القاعدة الذهبية في التشفير:
الخلاصة
- المتماثل: مفتاح واحد، سريع، للبيانات الكبيرة
(AES). - غير المتماثل: زوج عام وخاص، يحلّ تبادل المفاتيح والتوقيع، لكنه بطيء.
- الهجين
(TLS): غير متماثل لتبادل مفتاح جلسة، ثم متماثل سريع للبيانات. - لا تخترع تشفيرك؛ استخدم معايير ومكتبات مجرَّبة.
تحدٍّ تصميمي: اختر التشفير المناسب
متوسطلكل حالة في متجر «رفيق»، حدّد نوع التشفير المناسب (متماثل، غير متماثل، أو هجين) مع سبب مختصر.
- (أ) تشفير قاعدة بيانات كبيرة من ملفات العملاء على القرص.
- (ب) تأمين الاتصال بين متصفح العميل والمتجر.
- (ج) السماح لأي شريك بإرسال بيانات مشفّرة لا يفكّها إلا المتجر.
- لكل حالة: النوع ثم السبب في سطر.
- (أ) متماثل
- (ب) هجين أو TLS
- (ج) غير متماثل
- (ج) السبب: المفتاح العام
💡 تلميح 1
(AES) سريع.💡 تلميح 2
(TLS) يجمع الاثنين.💡 تلميح 3
نموذج واحد من إجابات كثيرة صحيحة.
- (أ) تشفير قرص كبير
- متماثل
(AES): سريع وقوي للبيانات الكبيرة، والمفتاح يبقى في الخادم دون حاجة لتبادله. - (ب) اتصال المتصفح بالمتجر
- هجين
(TLS): غير متماثل للاتفاق على مفتاح جلسة، ثم متماثل سريع لتشفير كل التصفّح. - (ج) شركاء يرسلون بلا سرّ مشترك
- غير متماثل: ينشر المتجر مفتاحه العام للشركاء ليشفّروا به، ولا يفكّ إلا بمفتاحه الخاص، دون سرّ مشترك مسبق.