موقف من الحياة اليومية#
قاعد في كافيه، ووصلت بالواي فاي المجاني، وبعت رسالة لصاحبك، ودخلت على حساب البنك. الشبكة دي عامة: أي حد قاعد جنبك ووصل بنفس الشبكة ممكن يشوف البيانات اللي رايحة وجاية.
طب ليه محدش قدر يقرا رسالتك ولا كلمة سر البنك؟ لأن البيانات دي كانت متشفّرة: اللي بيشوفها في السكة بيلاقي رموز ملخبطة مالهاش معنى.
خلاصة سريعة#
- Encryption · التشفيرتحويل البيانات المقروءة إلى صيغة غير مفهومة باستخدام خوارزمية ومفتاح، بحيث لا يقرؤها إلا من يملك المفتاح المناسب.عرض في القاموس بيحوّل الكلام المقروء لكلام ملخبط، ومحدش يرجّعه زي ما كان غير اللي معاه المفتاح الصح.
- أي تشفير فيه حاجتين: الخوارزمية (الطريقة، ومعروفة للكل) والمفتاح (السر، ومحدش يعرفه غير أصحابه).
- كل ما المفتاح أطول، كل ما بقى تخمينه أصعب. وكل بت زيادة في المفتاح بيضاعف عدد الاحتمالات.
ببساطة#
فكّر في قفل بأرقام على شنطة:
- شكل القفل وطريقة شغله معروفين لأي حد يشتري نفس القفل. ده الخوارزمية.
- الرقم السري اللي بيفتحه، ده بس اللي انت مخبّيه. ده المفتاح.
- لو القفل فيه 3 أرقام، حرامي صبور يجرّب الـ 1000 احتمال. لكن لو فيه 20 رقم، العمر كله مش هيكفّيه. ده طول المفتاح.
والتشفير بالظبط كده: الطريقة معروفة، والأمان كله في المفتاح.
بالتفصيل#
التشفير يعني إيه بالظبط؟#
Encryption · التشفيرتحويل البيانات المقروءة إلى صيغة غير مفهومة باستخدام خوارزمية ومفتاح، بحيث لا يقرؤها إلا من يملك المفتاح المناسب.عرض في القاموس (Encryption) هو إنك تاخد بيانات مقروءة وتحوّلها لشكل مش مفهوم، باستخدام خوارزمية ومفتاح. والعملية العكسية اسمها Decryption · فك التشفيرإعادة النص المشفّر إلى النص الأصلي المقروء باستخدام الخوارزمية والمفتاح المناسب.عرض في القاموس (Decryption): ترجّع البيانات زي ما كانت، بنفس الخوارزمية والمفتاح المناسب.
وفيه 4 كلمات هتقابلها في كل مقالات التشفير:
| المصطلح | معناه | في مثال قيصر |
|---|---|---|
| Plaintext · النص الأصلي (الواضح)البيانات المقروءة التي تدخل إلى عملية التشفير.عرض في القاموس (النص الأصلي) | البيانات قبل التشفير | HELLO |
| Ciphertext · النص المشفّرالبيانات بعد تشفيرها، وتبدو غير مفهومة لمن لا يملك المفتاح.عرض في القاموس (النص المشفّر) | البيانات بعد التشفير | KHOOR |
| Cipher (Encryption Algorithm) · الشفرة (خوارزمية التشفير)الطريقة أو الخطوات المحددة التي تحوّل النص الأصلي إلى نص مشفّر وتعيده مرة أخرى.عرض في القاموس (الخوارزمية) | الطريقة أو الخطوات | «حرّك كل حرف لقدام» |
| Key (Cryptographic Key) · المفتاح (مفتاح التشفير)قيمة سرية تُستخدم مع خوارزمية التشفير وتحدد نتيجتها، فالنص نفسه يعطي نتيجة مختلفة مع كل مفتاح.عرض في القاموس (المفتاح) | القيمة السرية اللي بتحدد النتيجة | 3 |
ولاحظ إن نفس النص مع مفتاح تاني بيطلع نتيجة مختلفة خالص. لو المفتاح 1 بدل 3، HELLO هتبقى IFMMP.
والتشفير بيحمي السرية، وهي أول هدف من أهداف أمن المعلومات التلاتة (CIA Triad (Confidentiality, Integrity, Availability) · السرية والسلامة والإتاحةالأهداف الثلاثة لأمن المعلومات، أي أن تبقى المعلومة سرية عن غير المصرح لهم، وسليمة دون تعديل غير مصرح به، ومتاحة لأصحاب الحق فيها وقت الحاجة.عرض في القاموس). ولو محتاج تراجعهم، شوف مقال ما هو أمن المعلومات؟.
السر في المفتاح، مش في الطريقة#
ممكن تفكر إن الأكثر أمانًا إنك تخبّي الطريقة نفسها. لكن من سنة 1883 فيه مبدأ مشهور في التشفير اسمه مبدأ Kerckhoffs: نظام التشفير لازم يفضل آمن حتى لو العدو عرف طريقته، والسر الوحيد هو المفتاح.
ليه؟ لأن:
- الطريقة المخبّية ممكن تتكشف في أي وقت، وساعتها كل اللي اتشفّر بيها يبقى في خطر. لكن المفتاح لو اتكشف، تغيّره هو بس.
- الخوارزمية المنشورة بيقدر أي خبير يفحصها ويدوّر على عيوبها. ومثلًا AES اتختارت سنة 2000 في مسابقة نظمها NIST، قبل ما تبقى معيار.
- علشان كده خوارزميات زي AES منشورة للكل، وأي حد يقدر يقرا خطواتها بالتفصيل.
طول المفتاح: ليه بيفرق؟#
المفتاح في الكمبيوتر عبارة عن Bit (Binary Digit) · البتأصغر وحدة لتخزين المعلومات في الحاسوب، وقيمتها إما 0 أو 1.عرض في القاموس (أصفار وواحدات)، و**Key Length (Key Size) · طول المفتاحعدد البتات في المفتاح. كل بت إضافي يضاعف عدد المفاتيح الممكنة.عرض في القاموس** هو عدد البتات دي. ولو حد معاه النص المشفّر ومعاهوش المفتاح، أبسط حاجة يعملها إنه يجرّب كل المفاتيح الممكنة واحد واحد.
وهنا السحر: كل بت زيادة بيضاعف عدد المفاتيح:
- مفتاح 3 بت = 8 احتمالات بس.
- مفتاح 56 بت = حوالي 72 ألف تريليون احتمال.
- مفتاح 128 بت = رقم من 39 خانة.
ومثال حقيقي: معيار DES صدر سنة 1977، ومفتاحه 56 بت. وسنة 2005 المعهد الأمريكي للمعايير NIST لغى المعيار ده، لأنه ما بقاش بيدّي الأمان المطلوب، وشجّع على استخدام AES بداله، بمفاتيح أطول بكتير: 128 أو 192 أو 256 بت.
نوعين أساسيين من التشفير#
- Symmetric Encryption · التشفير المتماثلتشفير يستخدم المفتاح السري نفسه للتشفير وفك التشفير، ويجب أن يملكه الطرفان.عرض في القاموس (Symmetric): نفس المفتاح بيشفّر وبيفك التشفير، زي شفرة قيصر وAES. سريع جدًا، بس المشكلة: إزاي توصّل المفتاح للطرف التاني من غير ما حد يشوفه؟
- Asymmetric Encryption (Public-Key Cryptography) · التشفير غير المتماثل (تشفير المفتاح العام)تشفير يستخدم مفتاحين مختلفين مرتبطين، أحدهما عام يعرفه الجميع والآخر خاص يحتفظ به صاحبه.عرض في القاموس (Asymmetric): مفتاحين مرتبطين ببعض: واحد عام تديه لأي حد، وواحد خاص معاك انت بس. وده بيحل مشكلة توصيل المفتاح.
وكل نوع منهم ليه مقال كامل في المجال ده.
تاريخ مختصر#
| الوقت | اللي حصل |
|---|---|
| أيام يوليوس قيصر | قيصر كان بيبعت رسايله السرية بإنه يبدّل كل حرف بالحرف اللي بعده بـ 3: مكان A يكتب D. ومن هنا جه اسم شفرة قيصر. |
| 1883 | Auguste Kerckhoffs بينشر مبدأه: السر في المفتاح، مش في الطريقة. |
| 1976 | Whitfield Diffie وMartin Hellman بينشروا فكرة المفتاح العام، وبداية التشفير غير المتماثل. |
| 1977 | صدور معيار DES بمفتاح 56 بت. |
| 2001 | NIST بيصدر معيار AES (FIPS 197). |
| 2005 | NIST بيلغي معيار DES، وبيشجّع على AES بداله. |
| 2024 | NIST بيصدر أول معايير التشفير ما بعد الكمّي، زي FIPS 203. |
وشفرة قيصر طبعًا سهلة الكسر جدًا: فيها 25 مفتاح بس ممكن تجرّبهم كلهم بإيدك في دقايق. لكنها بتوضح الفكرة كلها: خوارزمية + مفتاح.
جرّب بنفسك: شفّر ملف وفك تشفيره#
- افتح الطرفية، واعمل ملف فيه رسالة:
echo "رسالة سرية" > secret.txt- شفّر الملف بخوارزمية AES بمفتاح 256 بت:
openssl enc -aes-256-cbc -pbkdf2 -a -in secret.txt -out secret.encالنتيجة المتوقعة: هيطلب منك كلمة سر مرتين. اكتب أي كلمة سر وافتكرها (ومش هتظهر وانت بتكتبها، وده طبيعي):
enter AES-256-CBC encryption password: Verifying - enter AES-256-CBC encryption password:
- شوف الملف المشفّر:
cat secret.encالنتيجة المتوقعة: سطر رموز ملخبطة، زي ده (عندك هيطلع مختلف):
U2FsdGVkX19XNvIyrgktt4bpFM58DkW2MbLltpr+Wp6ZX0XVlJbcOi03kI2sPBNA
- فك التشفير بنفس كلمة السر:
openssl enc -d -aes-256-cbc -pbkdf2 -a -in secret.encالنتيجة المتوقعة: بعد ما تكتب كلمة السر، هتظهر الرسالة الأصلية: رسالة سرية.
-aes-256-cbc: الخوارزمية AES بمفتاح 256 بت.-pbkdf2: بيحوّل كلمة السر اللي كتبتها لمفتاح بطريقة آمنة.-a: بيكتب الناتج حروف وأرقام بدل بايتات مش مقروءة.-d: يعني فك التشفير (Decrypt).
لو حصلت مشكلة:
- لو كتبت كلمة سر غلط، غالبًا هتطلع رسالة
bad decrypt، وساعات كلام ملخبط. وده المقصود: من غير المفتاح الصح مفيش رسالة. - لو ظهرت رسالة إن الأمر
opensslمش موجود، ثبّته من مدير الحزم في توزيعتك (الحزمة اسمها غالبًاopenssl).
للمتعمقين
حسبة عدد المفاتيح
لو المفتاح طوله n بت، عدد المفاتيح الممكنة = 2^n.
2^56= 72,057,594,037,927,936.2^128= حوالي3.4 × 10^38.
يعني مفتاح 128 بت مش «أكبر شوية» من 56 بت، ده أكبر منه 2^72 مرة.
مفتاح DES مكتوب 64 بت، بس فعليًا 56
المعيار بيقول إن مفتاح DES بيتكتب 64 بت، منهم 56 بت بس هم المفتاح الحقيقي، و8 بت للتأكد من إن المفتاح ما اتغيرش بالغلط (Parity).
AES بيشتغل على بلوكات
الـ AES بيشفّر البيانات حتت ثابتة، كل حتة 128 بت، أيًّا كان طول المفتاح. والرقم في اسم AES-128 وAES-192 وAES-256 هو طول المفتاح بس.
ليه التشفير ما بعد الكمّي؟
الـ كمبيوتر الكمّي نوع مختلف من الكمبيوترات، وNIST أصدر سنة 2024 معايير تشفير جديدة يُعتقد إنها آمنة حتى قدام مهاجم عنده كمبيوتر كمّي، أولها FIPS 203 (اتنشر في 13 أغسطس 2024)، ووظيفته إن طرفين يتفقوا على مفتاح سري مشترك عن طريق شبكة مفتوحة.
أخطاء شائعة#
- «لو خبّيت طريقة التشفير هبقى في أمان»: لأ. ده عكس مبدأ Kerckhoffs. الطريقة المخبّية بتتكشف، والأمان الحقيقي في المفتاح.
- «Base64 تشفير»: لأ. Base64 طريقة ترميز (Encoding) بتكتب البيانات بحروف وأرقام وكام رمز، ومفيهاش مفتاح: أي حد يقدر يرجّعها في ثانية. الترميز بيغيّر الشكل، والتشفير بيخبّي المعنى.
- «الـ Hash نوع من التشفير»: لأ. التشفير بيرجع بالمفتاح، لكن الـ Hash طريق في اتجاه واحد ما بيرجعش. وليه مقال كامل في المجال ده.
- «أنا أعمل خوارزمية تشفير بنفسي أحسن»: الخوارزميات المعيارية زي AES اتفحصت علنًا قبل ما تتعتمد. الخوارزمية اللي بتعملها لوحدك محدش فحصها، وممكن يكون فيها عيوب مش هتشوفها، واستخدام خوارزميات قديمة أو مفاتيح قصيرة أو طرق غير معيارية من أشهر نقاط الضعف في التشفير.
المصطلحات#
- التشفير (Encryption · التشفيرتحويل البيانات المقروءة إلى صيغة غير مفهومة باستخدام خوارزمية ومفتاح، بحيث لا يقرؤها إلا من يملك المفتاح المناسب.عرض في القاموس): تحويل البيانات المقروءة إلى صيغة غير مفهومة باستخدام خوارزمية ومفتاح.
- فك التشفير (Decryption · فك التشفيرإعادة النص المشفّر إلى النص الأصلي المقروء باستخدام الخوارزمية والمفتاح المناسب.عرض في القاموس): إعادة النص المشفّر إلى النص الأصلي باستخدام الخوارزمية والمفتاح المناسب.
- النص الأصلي (Plaintext · النص الأصلي (الواضح)البيانات المقروءة التي تدخل إلى عملية التشفير.عرض في القاموس): البيانات المقروءة قبل التشفير.
- النص المشفّر (Ciphertext · النص المشفّرالبيانات بعد تشفيرها، وتبدو غير مفهومة لمن لا يملك المفتاح.عرض في القاموس): البيانات بعد تشفيرها.
- الخوارزمية (Cipher (Encryption Algorithm) · الشفرة (خوارزمية التشفير)الطريقة أو الخطوات المحددة التي تحوّل النص الأصلي إلى نص مشفّر وتعيده مرة أخرى.عرض في القاموس): الخطوات التي تحوّل النص الأصلي إلى نص مشفّر وتعيده.
- المفتاح (Key (Cryptographic Key) · المفتاح (مفتاح التشفير)قيمة سرية تُستخدم مع خوارزمية التشفير وتحدد نتيجتها، فالنص نفسه يعطي نتيجة مختلفة مع كل مفتاح.عرض في القاموس): قيمة سرية تحدد نتيجة الخوارزمية.
- طول المفتاح (Key Length (Key Size) · طول المفتاحعدد البتات في المفتاح. كل بت إضافي يضاعف عدد المفاتيح الممكنة.عرض في القاموس): عدد البتات في المفتاح.
- التشفير المتماثل (Symmetric Encryption · التشفير المتماثلتشفير يستخدم المفتاح السري نفسه للتشفير وفك التشفير، ويجب أن يملكه الطرفان.عرض في القاموس): تشفير بمفتاح واحد مشترك بين الطرفين.
- التشفير غير المتماثل (Asymmetric Encryption (Public-Key Cryptography) · التشفير غير المتماثل (تشفير المفتاح العام)تشفير يستخدم مفتاحين مختلفين مرتبطين، أحدهما عام يعرفه الجميع والآخر خاص يحتفظ به صاحبه.عرض في القاموس): تشفير بمفتاحين، عام وخاص.
اختبر نفسك#
شفّرت كلمة CAT بشفرة قيصر بالمفتاح 3. النتيجة إيه؟
إظهار الإجابة
FDW. كل حرف بيتحرك 3 حروف لقدام: C تبقى F، وA تبقى D، وT تبقى W.
خوارزمية التشفير اللي بتستخدمها منشورة على الإنترنت وأي حد يقدر يقراها. هل ده معناه إن بياناتك مش آمنة؟
إظهار الإجابة
لأ. حسب مبدأ Kerckhoffs، الطريقة المفروض تكون معروفة، والأمان كله في المفتاح. طول ما المفتاح سري وطويل كفاية، البيانات آمنة.
مفتاح طوله 10 بت، وزوّدناه بت واحد بقى 11 بت. عدد المفاتيح الممكنة حصله إيه؟
إظهار الإجابة
اتضاعف. من 2^10 (يعني 1024) لـ 2^11 (يعني 2048). وكل بت زيادة بيضاعف العدد تاني.