? 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 يكون قوي ضد التحليل.

هل كان الشرح مفيد؟

محتاج مساعدة باختيار المدرس الافضل؟ تواصل مع فريقنا الان لمساعدتك بتأمين افضل مدرس
ماهو التخصص الذي تبحث عنه؟
اكتب هنا...