الفرق الزرقاء — الدفاعمتقدم60mL17

علم التشفير والبنية التحتية للمفاتيح العامة (PKI)

التشفير المتماثل وغير المتماثل، ثغرات TLS و JWT

#AES#RSA#TLS#PKI#JWT

لماذا تحتاج لفهم التشفير حتى لو لم تطبّقه؟

تشبيه — شرح مبسط
التشفير مثل القفل: لست بحاجة لتصنع القفل بنفسك، لكن إن لم تعرف الفرق بين قفل ورق و قفل فولاذ، ستضع قفلاً ضعيفاً على بابك. معظم اختراقات التشفير ليست كسر الخوارزمية، بل سوء استخدامها.

الأنواع الأساسية

Symmetric — تماثلي
مفتاح واحد للتشفير و فك التشفير. سريع جداً. مثال: AES-GCM, ChaCha20-Poly1305. المشكلة: كيف تشارك المفتاح بأمان؟
Asymmetric — غير تماثلي
مفتاحان: عام و خاص. أبطأ بكثير لكن يحلّ مشكلة المشاركة. مثال: RSA, ECDSA, Ed25519, Curve25519.
Hash
دالة باتجاه واحد. لا يمكن العكس. مثال: SHA-256, BLAKE2, BLAKE3.ليس تشفيراً — يستخدم للسلامة و التحقق.
MAC / HMAC
Hash مع مفتاح — يضمن السلامة و المصدر معاً. مثال: HMAC-SHA256.

ماذا تستخدم في 2026؟

  • تشفير بيانات: AES-256-GCM أو ChaCha20-Poly1305 (مع AEAD دائماً، لا CBC وحده).
  • تبادل مفاتيح: ECDH على Curve25519 (X25519).
  • توقيع: Ed25519 (أسرع و أأمن من RSA).
  • كلمات مرور: Argon2id (الأفضل) أو bcrypt — أبداً MD5/SHA-1/SHA-256 وحدها.
  • هاش عام: SHA-256 / BLAKE3.
  • RNG: /dev/urandom, getrandom(), crypto.randomBytesأبداً Math.random().
ما يجب تجنّبه
MD5, SHA-1, RC4, DES/3DES, ECB mode, CBC بدون MAC، RSA بـ PKCS#1 v1.5 padding، الـ hardcoded IVs.

TLS — كيف يعمل بسرعة

  1. Client Hello: قائمة cipher suites مدعومة.
  2. Server Hello: يختار cipher + يرسل الشهادة.
  3. Certificate verification: العميل يتحقق من سلسلة الشهادات حتى CA موثوق.
  4. Key exchange (ECDHE): يولّد مفتاح جلسة فريد.
  5. Finished: التحقق من سلامة المصافحة.
  6. تبادل البيانات بـ AES-GCM أو ChaCha20-Poly1305.
TLS 1.3 يحذف
MD5, SHA-1, RC4, DES, RSA key transport, CBC modes, compression، و كل ما لا يدعم AEAD.افرض TLS 1.2 كحد أدنى، 1.3 مفضّل.

PKI — البنية التحتية للمفاتيح

  • CA — سلطة الإصدار. الجذر offline دائماً. الإصدار الفعلي عبر Intermediate CAs.
  • CRL / OCSP / OCSP Stapling — للإلغاء.
  • Certificate Transparency (CT) — كل شهادة تُسجّل في سجل عام (crt.sh).
  • HSTS preload — يجبر المتصفح على HTTPS.
  • HPKP — مهجور لخطورته، استبدل بـ Expect-CT.

إدارة الشهادات داخلياً

  • step-ca, HashiCorp Vault PKI — للـ CA الداخلي.
  • cert-manager على Kubernetes.
  • Let's Encrypt + ACME للشهادات العامة.
  • تدوير قصير المدى (90 يوم أو أقل) أفضل من شهادات سنوية.

مزالق شائعة في التطبيق

JWT — الأخطاء الكلاسيكية

  • قبول alg: none.
  • السر ضعيف يُكسر بـ hashcat.
  • عدم التحقق من aud, iss, exp.
  • تخزين JWT في localStorage بدلاً من HttpOnly cookie.
  • عدم تدوير المفاتيح.
  • Algorithm confusion RS256 → HS256 (المفتاح العام كسر).

Password Hashing

Argon2id parameters (2026)
# OWASP recommended
m=19456 KiB (19 MB)
t=2 iterations
p=1 thread
salt=128 bits random per password

Encryption-at-Rest

  • تشفير على مستوى التطبيق + تشفير على مستوى التخزين (defense in depth).
  • المفتاح في HSM / KMS، ليس في الكود.
  • Envelope encryption — KEK يشفّر DEKs.

Post-Quantum Cryptography

الحواسيب الكمومية ستكسر RSA و ECC في النهاية. NIST اختار خوارزميات ما بعد الكم في 2024:

  • ML-KEM (Kyber) — لتبادل المفاتيح.
  • ML-DSA (Dilithium) — للتوقيع.
  • SLH-DSA (SPHINCS+) — توقيع مبني على hash.
Harvest now, decrypt later
المهاجمون اليوم يجمعون البيانات المشفّرة و ينتظرون. ابدأ التحوّل الآن لأي بيانات يجب أن تبقى سرّية بعد 10 سنوات.

نصائح ذهبية

  1. لا تخترع تشفيرك — استخدم مكتبات معروفة (libsodium, Tink, BoringSSL).
  2. استخدم AEAD دائماً (يدمج التشفير + السلامة).
  3. Constant-time comparison للمفاتيح و التوكنز (تجنّب timing attacks).
  4. لا تعد استخدام nonce/IV مع نفس المفتاح.
  5. دوّر المفاتيح دورياً، و خطّط للتدوير قبل الحاجة.
  6. وثّق نظام تهديد التشفير (Threat Model) قبل التصميم.