الفرق الزرقاء — الدفاعمتقدم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 — كيف يعمل بسرعة
- Client Hello: قائمة cipher suites مدعومة.
- Server Hello: يختار cipher + يرسل الشهادة.
- Certificate verification: العميل يتحقق من سلسلة الشهادات حتى CA موثوق.
- Key exchange (ECDHE): يولّد مفتاح جلسة فريد.
- Finished: التحقق من سلامة المصافحة.
- تبادل البيانات بـ 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 passwordEncryption-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 سنوات.
نصائح ذهبية
- لا تخترع تشفيرك — استخدم مكتبات معروفة (libsodium, Tink, BoringSSL).
- استخدم AEAD دائماً (يدمج التشفير + السلامة).
- Constant-time comparison للمفاتيح و التوكنز (تجنّب timing attacks).
- لا تعد استخدام nonce/IV مع نفس المفتاح.
- دوّر المفاتيح دورياً، و خطّط للتدوير قبل الحاجة.
- وثّق نظام تهديد التشفير (Threat Model) قبل التصميم.