انتقل إلى المحتوى
HexaTransfer
العودة إلى المدونة
التشفير والأمان

كيف تعمل مفاتيح التشفير: أساس أمان الملفات

افهم كيف تعمل مفاتيح التشفير بمصطلحات بسيطة. تعلم عن توليد المفاتيح وتبادلها وإدارتها.

مفتاح التشفير سلسلة من البتات العشوائية تُقفل البيانات وتفتحها. في نقل الملفات الحديث يعني ذلك عادةً مفتاح AES بطول 256 بتاً — 32 بايتاً من البيانات العشوائية يولّدها مولّد أرقام عشوائية مشفَّرة (CSPRNG). الخوارزمية ذاتها التي تحوّل مقطع فيديو بحجم 10 جيجابايت إلى نص مشفَّر لا يمكن فكّ تشفيره إلا بالمفتاح ذاته تماماً. أمان المفتاح هو المعركة الحقيقية: تشفير AES-256 المثالي لا قيمة له إن كان المفتاح ضعيفاً أو متوقعاً أو مكشوفاً. هذا المقال يستعرض كيف تُولَّد المفاتيح وتُشارَك وتُخزَّن وتُدمَّر في خدمات فعلية كـ HexaTransfer وTresorit وProton Drive.

المفاتيح مجرد أرقام عشوائية

مفتاح بطول 256 بتاً هو 32 بايت. إن أنشأته في المتصفح بدا كالتالي:

const key = crypto.getRandomValues(new Uint8Array(32));
// Uint8Array(32) [183, 45, 201, 77, ...]

ما يجعله "مفتاحاً" هو طريقة استخدام الخوارزمية له. تأخذ AES-256-GCM مفتاحاً بطول 256 بتاً وتوسّعه عبر جدول مفاتيح إلى 15 مفتاح جولة، وتستخدمها لتشفير كتل 128 بتاً عبر 14 جولة. الرياضيات لا تكترث بمصدر البتات — تتطلب فقط أن تكون سرية وغير متوقعة.

"غير متوقعة" هي النصف الأصعب. إن استطاع مهاجم تخمين حالة مولّد الأرقام العشوائية أعاد توليد مفتاحك. ثغرة OpenSSL في ديبيان عام 2006 خفّضت إنتروبيا المفاتيح إلى 15 بتاً لمدة سنتَين قبل اكتشافها — درس كلاسيكي في عواقب فشل العشوائية.

العشوائية المشفَّرة

توفر المتصفحات crypto.getRandomValues() التي تستمد من CSPRNG نظام التشغيل: /dev/urandom على Linux، وBCryptGenRandom على Windows، وSecRandomCopyBytes على macOS. تمزج هذه بدورها مصادر إنتروبيا متعددة — توقيتات المقاطعات وأوقات الوصول للقرص ورقائق RNG المعتمدة على الأجهزة كـ Intel RDRAND.

لا تستخدم Math.random() لتوليد المفاتيح؛ فهي تعتمد على Mersenne Twister المتوقعة ويمكن استعادة حالتها من بضعة مخرجات.

على جانب الخادم، توفر crypto.randomBytes() في Node.js وsecrets.token_bytes() في Python غلافاً على CSPRNG نظام التشغيل وهما آمنان. تحدد مواصفات NIST SP 800-90A وSP 800-90B متطلبات CSPRNG؛ يستخدم نواة Linux 5.17+ تصميماً يعتمد على BLAKE2s يستوفيها.

المفاتيح المتماثلة: مفتاح واحد لاتجاهَين

تستخدم الخوارزميات المتماثلة كـ AES مفتاحاً واحداً للتشفير وفكّ التشفير. خيارات حجم المفتاح:

  • 128 بتاً — 2^128 قيمة ممكنة، آمن لمعظم الأغراض، معتمد للتصنيف SECRET من قِبل NSA CNSSP-15.
  • 192 بتاً — نادر، يُستخدم في بعض السياقات الحكومية.
  • 256 بتاً — 2^256 قيمة، معتمد لـ TOP SECRET، الإعداد الافتراضي الحالي لخدمات نقل الملفات.

مضاعفة حجم المفتاح لا تضاعف صعوبة القوة الغاشمة بل ترفعها أسياً. 2^128 بعيد المنال أصلاً (عمر الكون مضروباً في 10 مليار مع كل حواسيب الأرض). 256 بتاً احتياط ضد الحواسيب الكمية حيث يُنصف خوارزمية Grover من فعالية المفاتيح المتماثلة.

المشكلة الصعبة في المفاتيح المتماثلة: إيصال المفتاح ذاته إلى الطرفَين دون اعتراضه.

المفاتيح غير المتماثلة: حيلة الزوج

تشفير المفتاح العام يحل مشكلة توزيع المفاتيح. كل طرف يولّد زوجاً مترابطاً رياضياً: مفتاح عام (يُشارَك علناً) ومفتاح خاص (يُحفظ سراً). ما يُشفَّر بالمفتاح العام لا يمكن فكّ تشفيره إلا بالمفتاح الخاص.

أنواع المفاتيح غير المتماثلة الشائعة:

  • RSA-2048 — معامل 2048 بتاً، دعم واسع، بطيء. يُستخدم في شهادات TLS.
  • RSA-4096 — أقوى وأبطأ.
  • Curve25519 (X25519) — مفتاح منحنى إهليلجي بطول 256 بتاً، سريع، تستخدمه Signal وWireGuard.
  • Ed25519 — مفتاح توقيع بطول 256 بتاً، تستخدمه SSH وتوقيع Git.

المفتاح الخاص وحده يتراوح بين 32 و512 بايتاً حسب الخوارزمية. مفاتيح RSA الخاصة أكبر لأنها تحتوي على أعداد أولية متعددة؛ أما مفاتيح Curve25519 الخاصة فهي مجرد 32 بايت عشوائياً.

التشفير الهجين: الجمع بين الاثنَين للأنظمة الفعلية

لا يوجد نظام عملي يشفّر ملفات كبيرة مباشرةً بـ RSA. بدلاً من ذلك كل بروتوكول جدي — TLS وPGP وAge وSignal وكل خدمة جادة لنقل الملفات — يستخدم التشفير الهجين:

  1. توليد مفتاح AES عشوائي بطول 256 بتاً ("مفتاح الجلسة" أو "مفتاح الملف").
  2. تشفير الملف بـ AES-256-GCM.
  3. تشفير مفتاح الجلسة بالمفتاح العام للمستلم.
  4. إرسال الاثنَين معاً.

المستلم يفكّ تشفير مفتاح الجلسة بمفتاحه الخاص ثم يستخدمه لفكّ تشفير الملف. تحصل على سرعة التشفير المتماثل مع راحة توزيع مفاتيح التشفير غير المتماثل.

في نقل الملفات عبر المتصفح يُستعاض عن "المفتاح العام" في الغالب بجزء URL: يولّد المرسل مفتاح جلسة يضمّنه في URL بعد #، ويقرأه متصفح المستلم محلياً. أبسط وأجدى دون أن يتطلب من المستلمين امتلاك زوج مفاتيح.

اشتقاق المفاتيح من كلمات المرور

المستخدمون يكتبون كلمات مرور؛ الخوارزميات تريد بتات عشوائية منتظمة. تجسر دالة اشتقاق المفاتيح (KDF) الهوّة:

  • PBKDF2-HMAC-SHA-256 — تكرار دالة تجزئة. OWASP 2023 توصي بـ 600,000 تكرار. متاحة في Web Crypto API.
  • scrypt — صارمة في الذاكرة، تقاوم هجمات GPU. المعاملات: N=2^17, r=8, p=1.
  • Argon2id — أفضل الممارسات الحالية، فائزة بمسابقة تجزئة كلمات المرور 2015. المعاملات: memory=64 MB, iterations=3, parallelism=4.

تضيف KDF ملحاً (عشوائياً يُخزَّن مع النص المشفَّر) وعامل عمل (تكرارات) لإبطاء القوة الغاشمة. كلمة مرور عشوائية مكوّنة من 12 محرفاً عبر Argon2id بذاكرة 64 ميجابايت تحتاج مزارع GPU آلاف السنين لاستنفادها. أما كلمة مرور ضعيفة كـ summer2024 فتسقط في ثوانٍ بصرف النظر عن KDF — المفتاح لا يضيف إنتروبيا غير موجودة أصلاً.

تخزين المفاتيح: أين تعيش المفاتيح؟

المفاتيح يجب أن توجد في مكان ما، وذلك المكان قرار أمني بالغ الأهمية:

  • ذاكرة المتصفح (للجلسة فقط). الإعداد الافتراضي لنقل الملفات المؤقت. يُولَّد المفتاح ويُستخدم ويُتخلى عنه ضمن تحميل الصفحة.
  • جزء URL. يُشارَك عبر الرابط ويُخزَّن في تاريخ متصفح المستلم. مدة الصلاحية المحدودة مهمة.
  • Local storage / IndexedDB. دائم لكن متاح لأي JavaScript على المصدر. محفوف بالمخاطر ما لم يُشفَّر بمفتاح آخر.
  • سلسلة مفاتيح نظام التشغيل — macOS Keychain وWindows DPAPI وLinux libsecret. مدعوم بالأجهزة على بعض المنصات.
  • وحدة أمان الأجهزة (HSM) — YubiKey وCloud HSM (AWS CloudHSM وAzure Dedicated HSM). المفاتيح لا تغادر الجهاز أبداً.
  • خدمة إدارة المفاتيح (KMS) — AWS KMS وGoogle Cloud KMS وHashiCorp Vault. مركزية وقابلة للتدقيق وتتكلف نحو دولار/مفتاح/شهر.

في نقل الملفات بمعرفة صفرية يعيش المفتاح في جزء URL ومتصفح المرسل. الخادم لا يخزّنه أبداً.

تدوير المفاتيح وتدميرها

المفاتيح طويلة العمر تراكم المخاطر. أفضل الممارسات تقضي بالتدوير:

  • شهادات TLS: تدوير كل 90 يوماً (إعداد Let's Encrypt الافتراضي)، 398 يوماً كحد أقصى لهيئات CA العامة منذ 2020.
  • مفاتيح تشفير البيانات: تُدوَّر عادةً كل 90 يوماً إلى سنة في الأنظمة المتوافقة (PCI DSS 4.0 المتطلب 3.6).
  • المفاتيح الرئيسية: تُدوَّر سنوياً أو عند تغيير الموظفين.

التدمير مهم أيضاً. مجرد حذف ملفات المفاتيح من القرص غير كافٍ — أقراص SSD قد تحتفظ بالبيانات في مناطق تسوية التآكل. يستلزم التدمير الآمن الكتابة فوق المفاتيح أو استخدام أوامر الحذف في HSM. المسح التشفيري — رمي المفتاح لتصبح البيانات المشفَّرة غير قابلة للقراءة نهائياً — غالباً أنظف أسلوب للبيانات الضخمة.

تستخدم خدمات نقل الملفات عادةً مفاتيح خاصة بكل ملف تعيش طول مدة النقل فقط (24 ساعة إلى 7 أيام) وتُتخلى عنها مع النص المشفَّر عند انتهاء الصلاحية.

التعرف على ممارسات المفاتيح الضعيفة

ثلاثة أنماط فشل شائعة يجب الانتباه إليها:

  • مفاتيح مُضمَّنة في كود العميل. إن كان المفتاح ذاته لكل مستخدم فليس مفتاحاً — إنه مجرد تعتيم.
  • مفاتيح مُخزَّنة بجانب النص المشفَّر على الخادم أو قاعدة البيانات ذاتها. اختراق واحد يكشف كليهما.
  • لا تدوير للمفاتيح. الأنظمة القديمة التي تستخدم مفاتيح تشفير منذ عشر سنوات تحمل مخاطر متراكمة منذ عشر سنوات.

الخدمة ذات السمعة الطيبة تنشر ورقة بيضاء مشفَّرة تغطي توليد المفاتيح وتخزينها وتدويرها وتدميرها، وتخضع لعمليات تدقيق من طرف ثالث كـ Cure53 وTrail of Bits.

خلاصة عملية

لمشاركة الملفات الحساسة: اختر خدمة تولّد مفاتيح بطول 256 بتاً من جانب العميل عبر crypto.getRandomValues()، وتضمّنها في جزء URL فقط (لا تُرسَل أبداً للخادم)، وتدعم مفاتيح مشتقة من كلمات المرور عبر PBKDF2 أو Argon2id، وتنتهي صلاحية المفتاح والنص المشفَّر تلقائياً خلال 24 ساعة.

جرّبها على hexatransfer.com — مجاني، بدون حساب، حتى 10 جيجابايت.

أرسل ملفات كبيرة بأمان مع تشفير من طرف إلى طرف

انقل ملفات حتى 10 جيجابايت مجاناً مع تشفير من طرف إلى طرف. لا حاجة لحساب. يتم تشفير ملفاتك في متصفحك قبل الرفع — لا أحد آخر يستطيع قراءتها.

إرسال ملف