شرح مادة التشفير - Table of Block Cipher Modes
هندسة برمجيات | Software Engineering UML امن معلومات | Information Security
جامعة الطائف
- 2026-09-29
? Slide 36 — Table of Block Cipher Modes
السلايد عبارة عن جدول مقارنة بين الـModes.
وأنا عايزك من دلوقتي تحفظ إن الخمسة دول مش خمس Encryption Algorithms مختلفة.
دي:
طرق مختلفة لاستخدام نفس الـBlock Cipher.
يعني ممكن يكون عندي:
AES + ECB
أو:
AES + CBC
أو:
AES + CFB
وهكذا.
? Slide 37 — Modes Diagram
السلايد دي رسمة توضيحية للـModes، ومفيش نص تفصيلي مستخرج منها في الملف.
المهم تفهم إننا بدأنا نقارن الطرق المختلفة لتغذية الـBlock Cipher بالـPlaintext والـCiphertext.
والسلايد اللي بعدها بتديك المعايير اللي بنقارن بيها.
? Slide 38 — Criteria for Evaluating Modes
السلايد بتقول إننا نقيم الـModes باستخدام مجموعة معايير.
1. Overhead
يعني:
البيانات الإضافية المطلوبة
مثلًا IV أو Nonce أو بيانات إضافية حسب الـMode.
2. Error Recovery
يعني:
لو حصل Error، هل النظام يقدر يتعافى منه بسهولة؟
3. Error Propagation
يعني:
لو حصل Bit Error في جزء من الـCiphertext، هيأثر على كام جزء أثناء الـDecryption؟
4. Diffusion
هل تغيير جزء من الـPlaintext ينتشر تأثيره في الـCiphertext؟
5. Security
هل الـMode بيوفر الخصائص الأمنية المطلوبة؟
? Slide 39 — Modes / Comparison
السلايد دي عبارة عن جزء من المقارنة بين الـModes، والنص المستخرج منها مش بيحتوي تفاصيل كافية أقدر أنسبها حرفيًا لكل خانة.
لكن خليك فاهم إن الهدف من الجدول هو إنك متختارش Mode بشكل عشوائي.
لازم تبص على خصائصه:
Security + Error + Diffusion + Overhead + طريقة التعامل مع البيانات.
? Slide 40 — Cipher Feedback Mode
ندخل بقى على:
CFB
يعني:
Cipher Feedback Mode
السلايد بتقول:
For AES, DES, or any block cipher, encryption is performed on a block of b bits
يعني Block Cipher بيشتغل على Block حجمه:
b bitsb\ bits
بالنسبة لـDES:
b=64b=64
بالنسبة لـAES:
b=128b=128
CFB وOFB وCTR
السلايد بتقول إن فيه ثلاث Modes ممكن يحولوا استخدام الـBlock Cipher إلى طريقة شبيهة بالـStream Cipher:
- CFB
- OFB
- CTR
ودي نقطة مهمة جدًا.
? Slide 41 — CFB Mode
دي من الرسومات اللي لازم نمشي فيها واحدة واحدة.
عندنا:
IV
يعني:
Initialization Vector
أول خطوة
الـIV يدخل على:
Encrypt
باستخدام:
Key K
فينتج Output.
بعد كده:
Select s bits
يعني ناخد أول:
s bits
من الناتج.
وبعدين:
Discard b-s bits
يعني باقي الـBits مش بنستخدمها في الجزء الحالي.
بعد كده XOR
الـs bits اللي خرجوا بيتعمل لهم XOR مع:
P1
عشان نطلع:
C1
يعني:
C1=P1⊕O1C_1=P_1\oplus O_1
وبعدها
الـCiphertext:
C1
يدخل في الـShift Register.
وبعدين نكرر العملية.
يعني:
IV
↓
Encrypt(K)
↓
Select s bits
↓
XOR with P1
↓
C1
↓
Shift Register
↓
Encrypt(K)
↓
...
ليه اسمه Cipher Feedback؟
لأن الـCiphertext نفسه بيرجع:
Feedback
إلى العملية التالية.
يعني:
C1
بيأثر على إنتاج الـKeystream التالي.
Decryption
في فك التشفير بنستخدم نفس فكرة الـEncryption للـBlock Cipher لتوليد الـKeystream، وبعدها:
P1=C1⊕O1P_1=C_1\oplus O_1
لأن XOR بيرجع لنا الـPlaintext.
? Slide 42 — CFB Continued
السلايد دي بتكمل نفس Figure بتاعة CFB في شكل أوضح للـEncryption والـDecryption.
أهم حاجة تفهمها:
Encryption:
IV → Encrypt → Select s bits → XOR with Plaintext → Ciphertext
وبعدها:
Ciphertext → Shift Register
Decryption:
IV → Encrypt → Select s bits
وبعدين:
Ciphertext XOR generated bits → Plaintext
خلي بالك من نقطة مهمة
في CFB، حتى في الـDecryption إحنا بنستخدم:
Encryption function
بتاعة الـBlock Cipher.
مش لازم نستخدم Decryption function نفسها لتوليد الـstream.
? Slide 43 — OFB Mode
دلوقتي:
Output Feedback Mode
وده شبه CFB، لكن فيه فرق مهم جدًا.
في CFB:
الـFeedback اللي بيرجع هو:
Ciphertext
أما في OFB:
الـFeedback اللي بيرجع هو:
Output بتاع الـEncryption نفسه.
نمشيها:
عندنا:
Nonce
يدخل على:
Encrypt(K)
ينتج:
O1
ناخد O1 وندخله تاني:
Encrypt(K)
ينتج:
O2
وبعدين:
O2 → Encrypt → O3
وهكذا.
وبعدها
الـPlaintext يتعمله XOR مع الـOutput:
C1=P1⊕O1C_1=P_1\oplus O_1 C2=P2⊕O2C_2=P_2\oplus O_2
وهكذا.
الفرق بين CFB وOFB
دي نقطة مهمة جدًا:
CFB:
Ciphertext
↓
Feedback
OFB:
Encryption Output
↓
Feedback
يعني الـCiphertext مش هو اللي بيرجع في OFB.
? Slide 44 — OFB Continued
السلايد دي بتكمل نفس الرسم.
لاحظ إن في Encryption:
Nonce
↓
Encrypt
↓
O1
↓
Encrypt
↓
O2
↓
Encrypt
↓
O3
وبعدين:
P1 XOR O1 = C1
P2 XOR O2 = C2
P3 XOR O3 = C3
وفي Decryption:
بنولد نفس الـOutputs:
O1
O2
O3
وبعدين:
C1 XOR O1 = P1
C2 XOR O2 = P2
C3 XOR O3 = P3
?️ قول للطلبة:
"في OFB إحنا بنولد Stream من الـBlock Cipher، والـStream ده مش بيعتمد على الـCiphertext. بنبدأ بـNonce أو Initial Value، نعمل عليه Encryption، الناتج نعمل عليه Encryption تاني، والناتج الجديد نعمل عليه Encryption تاني، وهكذا. وبعدين الـOutputs دي بنعمل لها XOR مع الـPlaintext عشان نطلع Ciphertext."
? Slide 45 — Counter Mode
وصلنا لآخر Mode في المحاضرة:
CTR
يعني:
Counter Mode
الفكرة هنا جميلة جدًا.
بدل ما أعمل Feedback من Ciphertext أو Output، أستخدم:
Counter
أول Block
عندي:
Counter 1
أعمل عليه:
Encrypt(K)
فينتج:
O1
وبعدين:
C1=P1⊕O1C_1=P_1\oplus O_1
ثاني Block
أستخدم:
Counter 2
وأعمل:
Encrypt(K)
ينتج:
O2
وبعدين:
C2=P2⊕O2C_2=P_2\oplus O_2
وهكذا
Counter 1 → Encrypt → O1 → XOR P1 → C1
Counter 2 → Encrypt → O2 → XOR P2 → C2
Counter 3 → Encrypt → O3 → XOR P3 → C3
? Slide 46 — CTR Continued
السلايد بتكمل نفس فكرة CTR في الـDecryption.
المهم جدًا إننا في الـDecryption بنستخدم نفس الـCounter values.
يعني:
Counter 1 → Encrypt → O1
Counter 2 → Encrypt → O2
Counter 3 → Encrypt → O3
وبعدين:
P1=C1⊕O1P_1=C_1\oplus O_1 P2=C2⊕O2P_2=C_2\oplus O_2
وهكذا.
? ليه CTR مهم؟
لأن الـBlocks ممكن تتعالج بشكل مستقل.
يعني:
Counter 1
مش لازم يستنى:
Counter 2
والاتنين ممكن يتعملوا بالتوازي في Implementation مناسب.
وده بيدي:
Parallel Processing
وهو سبب مهم جدًا في كفاءة CTR.
? الفرق النهائي بين CFB وOFB وCTR
عايزك تحفظ الجدول ده:
| Mode | الـFeedback / Input التالي |
|---|---|
| CFB | Ciphertext |
| OFB | Encryption Output |
| CTR | Counter |
بالبلدي جدًا:
CFB:
"أنا هطلع Ciphertext، وهرجّعه تاني."
OFB:
"أنا هطلع Output، وهرجع الـOutput نفسه."
CTR:
"أنا مش هعتمد على اللي فات، هستخدم Counter جديد."
? Slide 47 — Chapter 2 Summary
السلايد دي بتراجع الجزء الأول من الفصل.
أول حاجة:
Understand the distinction between stream ciphers and block ciphers
يعني لازم تكون فاهم الفرق بين:
Stream
و
Block
بعدها:
Present an overview of the Feistel cipher and explain how decryption is the inverse of encryption
يعني فاهم:
Feistel Structure
وفاهم إن Decryption بيعكس عملية Encryption باستخدام ترتيب المفاتيح المناسب.
بعد كده:
Present an overview of Data Encryption Standard (DES)
يعني تعرف:
DES
وخصائصه الأساسية.
وبعدين:
Explain the concept of the avalanche effect
Avalanche Effect
دي نقطة مهمة جدًا حتى لو السلايدات اللي بين إيدينا ما فصلتش تعريفها بالتفصيل.
الفكرة العامة:
تغيير صغير جدًا في الـInput أو Key يؤدي إلى تغيير كبير في الـOutput.
يعني:
Plaintext A
↓
Encryption
↓
Ciphertext X
لو غيرت Bit واحدة:
Plaintext B
↓
Encryption
↓
Ciphertext مختلف جدًا
وده مطلوب عشان الـCipher يكون قوي ضد التحليل.
هل كان الشرح مفيد؟
شروحات مشابهة
- هندسة برمجيات | Software Engineering UML
- امن معلومات | Information Security
- برمجة | Programming
- تحليل وتصميم نظم | Systems Analysis and design
- برمجة سي شارب | c# programming
- برمجة جافا | Java programming
- برمجة بي اتش بي | Php programming
- برمجة html | Html programming
- برمجة سي اس اس | Css programming
- برمجة روبي | Ruby programming
