تعمية قيصر

بديل=تقابل أبجدية تعمية قيصر حيث يتم مقابلة كل حرف بالحرف الثالث الذي يليه في الترتيب الأبجدي|تصغير|تقابل أبجدية تعمية قيصر حيث يتم مقابلة كل حرف بالحرف الثالث الذي يليه في الترتيب الأبجدي|320x320بك
**تعمية قيصر**، تسمى أيضا **التعمية بالإزاحة**، هي طريقة من طرق التعمية التقليدية  تستعمل لتعمية النصوص، شاع استخدام هذه الطريقة قديمًا ويُعتقد أن يوليوس قيصر كان أول من استخدم هذه الوسيلة في الفترة ما بين 58 ق.م حتى 51 ق.م. تتميز هذه التعمية بسهولة تطبيقها لذلك تعتمد غالبا مدخلًا للتعرف على علم التعمية التقليدي غير أنها ليست أقدم طريقة تعمية مسجلة تاريخيا، إذ تعود أول محاولة تاريخية مسجلة لممارسة فن التعمية إلى العام 1900 قبل الميلاد. فكرة الطريقة مشابهة لحد ما لتعمية أتبش ولطرق أخرى كانت منتشرة قديما، بحيث أنها تعتمد على مقابلة حروف الأبجدية بنسخة محوَّرة من نفس الحروف وذلك باعتماد *تحوير* بسيط غالبا ما يكون سريا ومتفق عليه. ويقوم مبدأ تعمية قيصر أو تعمية الإزاحة على مقابلة حروف الأبجدية بنسخة من نفس الأحرف تمت إزاحتها بموضع ثلاثة أحرف، فمثلا تعمية حرف «أ» يكون هو حرف «ث» وتعمية الكلمة «مرحبا» يكون بذلك هو «وشذجث». وكما جاء على لسان المؤرخ الروماني سويتونيوس في كتابه القياصرة الاثنى عشر، فإن أغسطس قيصر، و هو ابن أخ يوليوس قيصر، استخدم أيضاً نفس المبدأ للتعمية، غير أنه كان يعتمد على إزاحة بمقدار موضع واحد فقط، مع تعمية آخر حرف في الأبجدية بتكرار أول حرف من الأبجدية مرتين.

لا يمكن اعتبار تعمية قيصر خوارزمية تعمية حقيقية حسب المعايير الحالية لأنها لا تحترم مبادئ كيرشوف وخصوصا مبدأ الإعتماد على سرية المفتاح وليس على سرية الخوارزمية. بذلك تكون تعمية قيصر مثل سائر الطرق القديمة غير آمن البتة إذ أنه انطلاقا من النص المعمى يمكن استنباط النص الأصلي، وذلك لأن طبيعة توزيع الحروف في النص لا تتغير وبالتالي حسب طبيعة التوزيع الأصلي للغة الأصل يمكن استنباط النص الأصلي، وهذا النوع من الهجمات يسمى: هجوم النص المعمى المعروف. رغم انعدام الحماية عند استخدام تعمية قيصر إلا أنها تجد استخدامات لها (في صيغتها العامة) في بعض الحالات التي لا تستدعي حماية بقد ما تستدعي إخفاء لحظي للنص كخوارزمية روت 13 التي تستخدم في العديد من المواضع كالمجلات وبعض الأجهزة الإلكترونية.

## اصطلاحات

قبل البدء بتوصيف تعمية قيصر لا بد من توضيح بعض الاصطلاحات الرئيسة:

# النص الواضح (يسمى أيضا النص المجرد) وهو النص الأصل المراد تعميته، سيُرمز له بالحرف P وهو مركب من مجموعة من الحروف، كل حرف ينتمي لمجموعة تُسمى الأبجدية، نرمز لهذه الأبجدية بالحرف \Sigma، و نقول أن P \in \Sigma^L هو نص مكون من L حرف. مثلا: كلمة «مرحبا» هي نص واضح ينتمي ل \Sigma^5 مجموعة النصوص المكونة من خمسة حروف، بحيث \Sigma = \{\text{... ،ث ،ت ،ب ،أ }\} مجموعة حروف الأبجدية العربية.
# النص المعمى وهو نتيجة تطبيق خوارزمية التعمية على النص الواضح، سيُرمز له بالحرف C. في حالة تعمية قيصر أو تعمية الإزاحة إذا كان P \in \Sigma^L فإن C \in \Sigma^L أيضا، أي بعبارة أخرى P و C لهما الطول نفسه.
# دالة التعمية أو خوارزمية التعمية، نرمز لها ب E، و هي الخوارزمية التي تربط النص الواضح بالنص المعمى كما يلي: C = E(K, P) بحيث K هو مفتاح التعمية. في حالة تعمية قيصر فلا حاجة لمفتاح لأن التعمية ثابتة وتعتمد فقط على خوارزمية التعمية، لذلك يمكننا صياغة هذه العلاقة في هذه الحالة ب C = E(P).
# دالة فك التعمية أو خوارزمية فك التشفير، سنرمز لها ب D، وهي تَعْكُس عمل خوارزمية التعمية E، أي أنها تربط النص المعمى بالنص الواضح كما يلي: P = D(K,C ). في حالة تعمية قيصر فلا حاجة لمفتاح لذلك يمكننا صياغة هذه العلاقة في هذه الحالة ب P = D(C).

## عملية التعمية وفكها

### تعمية قيصر
لا تعتمد خوارزمية تعمية قيصر على مفتاح سري لكنها تعتمد على سرية الخوارزمية. تعوض الخوارزمية ببساطة كل حرف بحرف يليه في الترتيب الأبجدي بعدد محدد من الحروف، بعبارة أخرى، لنفترض أن مجموعة الحروف الأبجدية \Sigma مرقمة ترتيبيا وفق الجدول الآتي. ( سنستخدم \Sigma للدلالة على مجموعة الحروف ونظيرتها من مجموعة الأعداد بشكل متماثل في ما يلي):

عملية تعمية قيصر هي خوارزمية E معرفة كالآتي:

\begin{array}{lcr} \ E: \Sigma \longrightarrow \Sigma 
\\  \qquad P\longmapsto P + 3 \quad (mod \ 28) \end{array}

#### مثال
لتعمية الكلمة «**مرحبا**» يُعمَّى كل حرف على حدة باستخدام الخوارزمية E. لتعمية هذه الحروف يجب مقابلة كل حرف بالرقم المقابل له، مثلًا حرف «**م**» يقابله العدد `23` في الجدول أعلاه، فيكون بذلك تعمية حرف «**م**» هو الحرف المقابل ل E(23)= 23 + 3 \  (mod \ 28) = 26 أي هو الحرف «**و**».

يُطبق المبدأ نفسه لتعمية سائر الحروف فيكون على النص المعمى «**وشذجث**».

يمكن إنجاز التعمية يدويًا أو آليًا باعتماد هذه الخوارزمية التي تعتمد على الحسابيات المعيارية.

#### فك التعمية
يمكن تصنيف تعمية قيصر ضمن خوارزميات تعمية بالمفتاح المتناظر، وبذلك سنعتمد فقط على عكس خوارزمية التعمية لصياغة خوارزمية فك التعمية التي سيُرمز لها ب D. ويمكن تعريف D كالآتي:

\begin{array}{lcr} \ D: \Sigma \longrightarrow \Sigma 
\\  \qquad C\longmapsto C - 3 \quad (mod \ 28) \end{array}

بعبارة أخرى فإن D تحول كل حرف إلى الحرف الثالث قبله في الترتيب الأبجدي.

### تعميم تعمية قيصر: التعمية بالإزاحة
لا تعتمد تعمية قيصر في الأصل على أي مفتاح سري بل على سرية الخوارزمية. يمكن تعميم تعمية قيصر وذلك بإدخال متغير يمثل المفتاح السري الذي يمثل قيمة الإزاحة اللتي ينبغي تطبيقها على حروف الأبجدية. من الواضح أن هذه القيمة السرية لا يجب أن تكون منعدمة (لأنه في هذه الحالة لن يكون هناك أي تعمية)، كما أنه لن يكون هناك معنى لاختيار قيمة أكبر من أو تساوي حجم الأبجدية (مثلا باختيار المفتاح `28`، وهو عدد حروف الأبجدية العربية، لن يكون هناك أي تعمية). وبالتالي نعرف المفتاح K\in  \{1, 2, 3, \cdots, |\Sigma|-1 \} بحيث |\Sigma| تمثل عدد عناصر الحروف الأبجدية. في حالتنا هذه والتي نهتم من خلالها بأبجدية الأحرف العربية، فإن المفتاح ينبغي أن ينتمي للمجموعة \mathcal{K}:=\{1, 2, 3, \cdots, 27\}.

يعاد تعريف خوارزمية التعمية في هذه الحالة العامة كالآتي:

\begin{array}{lcr} \ E: \Sigma \longrightarrow \Sigma 
\\  \qquad P\longmapsto P + K \quad (mod \ 28) \end{array}

ويعاد تعريف خوارزمية فك التعمية المقابلة لها كما يلي:

\begin{array}{lcr} \ D: \Sigma \longrightarrow \Sigma 
\\  \qquad C\longmapsto C - K \quad (mod \ 28) \end{array}

يمكننا التأكد من صحة الخوارزمية (بالإنجليزية: **proof of correctness**) ببساطة كما يلي:

\begin{align} D(E(K,P)) & = D(P + K \; (mod \, 28))  \\
 & = (P + K \; (mod \, 28)) - K \; (mod \, 28) \\
 & =  (P + K - K) \; (mod \, 28) \\
& = P \end{align}

#### مثال
لتعمية الرسالة التالية «**ويكيبيديا**» باستخدام مفتاح تعمية K = 13. تُطبَّق الخوارزمية E باستخدام المفتاح المختار على كل حرف على حدة:

\begin{array}{lcr}
E(13, 26) & = & 26 + 13 \; (mod \, 28) &= & 11
\\
E(13, 27) & = & 27 + 13 \; (mod \, 28) &= & 12
\\
E(13, 21) & = & 21 + 13 \; (mod \, 28) &= & 6
\\
E(13, 27) & = & 27 + 13 \; (mod \, 28) &= & 12
\\
E(13, 1) & = & 1 + 13 \; (mod \, 28) &= & 14
\\
E(13, 27) & = & 27 + 13 \; (mod \, 28) &= & 12
\\
E(13, 7) & = & 7 + 13 \; (mod \, 28) &= & 20
\\
E(13, 27) & = & 27 + 13 \; (mod \, 28) &= & 12
\\
E(13, 0) & = & 0 + 13 \; (mod \, 28) &= & 13
\end{array}

بالتالي، يكون النص المعمى هو «سشخشضشقشص».
#### نص برمجي
فيما يلي نص برمجي بلغة بايثون يوضح عمليتي التعميةوفك التعمية باعتماد مفتاح إزاحة معين. تُستعمل أبجدية اللغة العربية المعرفة حسب الترميز الموحد كما يلي (تضم 29 حرف باعتبار التاء المروبوطة كحرف مستقل):
```python
alphabet = [*range(0x0627, 0x063B), *range(0x0641, 0x0649), 0x064A] # أبجدية عربية
```


##### النص البرمجي للتعمية

```python
def encrypt(key, message, alphabet):
    ciphertext = []
    for letter in message:
        try:
            i = alphabet.index(ord(letter))
        except:
            ciphertext.append(letter)
        else:
            ciphertext.append(chr(alphabet[(i + key) % len(alphabet)]))
            
    return "".join(ciphertext)
```


##### النص البرمجي لفك التعمية

```python
def decrypt(key, ciphertext, alphabet):
    plaintext = []
    for letter in ciphertext:
        try:
            i = alphabet.index(ord(letter))
        except:
            plaintext.append(letter)
        else:
            plaintext.append(chr(alphabet[(i - key) % len(alphabet)]))
            
    return "".join(plaintext)
```

##### مثال تطبيقي
النص الواضح: **<big>مرحبا من ويكيبيديا الموسوعة الحرة</big>**

النص المعمى: **<big>كدثيو كل نهفهيهحهو وقكنرنطا وقثدا</big>**

## تحليل أمن تعمية قيصر

كما هو معلوم، فإن تعمية قيصر الأصلية لا تعتمد على مفهوم المفتاح لتعمية النصوص بل تعتمد على سرية الخوارزمية، وهذا يخرق مبادئ كيرشوف كما تمت الإشارة سابقا في هذا المقال. لذلك سنعتمد على تعمية الإزاحة (تعمية قيصر العامة) والتي تعتمد على مفهوم المفتاح والتي تم تناولها في الفقرة السابقة للقيام بتحليل أمن التعمية.

### تعمية قيصر ليست آمنة الدلالة
بالعودة إلى المثال الأول من الفقرة السابقة، يمكنك ملاحظة وجود تطابق نمطي بين النص الواضح والنص المُعَمَّى. بعبارة أخرى، يمكنك ملاحظة أن حرف الياء في النص «**ويكيبيديا**» دائما ما يُعمَّى باستخدام حرف الشين في النص المُعَمَّى «**سشخشضشقشص**». وبالتالي يمكن لأي خصم التفريق بين نصين معميين مختلفتين فقط بتحليل النصوص المتعمية. لتوضيح هذا الأمر سنفترض السيناريو التالي: نفترض أن هناك خصم متنصت على محادثة متعمية بين طرفين، قام خلالها برصد التعمية «**نبن**». نفترض أن المتنصت يعلم مسبقا أن هذه التعمية هي جواب لسؤال معلوم يقبل فقط إجابتين هما: «**فجر**» أو «**ليل**». واضح من تحليل التعمية فقط، ودون الحاجة لكسرها أو محاولة معرفة المفتاح، أن النص الواضح الموافق للنص المُعَمَّى «**نبن**» هو «**ليل**» وليس «**فجر**»، لأن هناك تطابق في أنماط الكلمتين «**نبن**» و«**ليل**» (كلاهما يبدءان بحرف وينتهيان بنفس الحرف) . نقول في هذه الحالة إن تعمية قيصر ليست آمنة دلاليا (بالإنجليزية: **<span lang="en" dir="rtl">semantically secure</span>**).

### طرق كسر تعمية قيصر
نتناول في هذه الفقرة بعض طرق كسر تعمية قيصر بشكل عام، أي أننا سنستخدم العبارتين تعمية قيصر و تعمية الإزاحة للدلالة على الحالة العامة حيث يكون هناك مفتاح سري .

#### هجوم الإكراه الأعمى
قد يسمى أيضا هجوم القوة العمياء، (بالإنجليزية: Brute-force attack)، وهو ببساطة هجوم يقتضي تجريب كل المفاتيح الممكنة إلى غاية إيجاد المفتاح الصحيح. نُذَكِّر أن حقل المفاتيح الممكنة صغير جدا \mathcal{K}:=\{1, 2, 3, \cdots, 27\}، و بالتالي تجريب كل هذه المفاتيح لن يتطلب مجهود ووقت كبيرين قبل العثور على المفتاح المناسب. يمكن القيام بهجوم الإكراه الأغمى في حالتنا هذه سواء يدويا أو آليا.

#### هجوم التحليل الإحصائي
هجوم التحليل الإحصائي أو تحليل التكرار (بالإنجليزية: frequency analysis)، هو طريقة من أبرز طرق تحليل الشفرات التقليدية وهو من اختراع وتطوير العرب. ولعل هذه كانت أول محاولة تاريخية لتطوير علم رياضي يهتم بكسر وواستخراح المعمى، وقد كان يسميه العرب حينها علم استخراج المعمَى. يقوم مبدأ هذا النوع من الهجمات على استخدام التحليل الإحصائي للغة التعمية وللتعمية ذاتها ومحاولة مطابقة تردد حروف التعمية مع تردد حروف اللغة الأصلي، وبذلك يتمكن المحلل من التوصل إلى تقابل بين أبجدية النص الواضح وأبجدية النص المُعَمَّى. يستطيع هذا النوع من الهجمات كسر كل التعمية بالإعاضة الأحادية بدون استثناء، والتي من ضمنها تعمية قيصر وتعمية الإزاحة وأنواع أخرى عديدة. مثلا، باعتبار اللغة العربية، نعلم انطلاقا من تحليل التكرار أن حرف الألف هو أكثر الأحرف تواترا في اللغة، يليه حرف اللام. انطلاقا من هذه المعلومة يمكننا موافقة حرف الألف بالحرف الأكثر تواترا في النص المُعَمَّى (مثلا ليكن هو حرف الصاد)، و هكذا نستطيع كشف مفتاح الإزاحة المعتمد في تشفير الإزاحة والذي يكون في هذه الحالة هو `13`.

بصيغة أخرى مماثلة، يمكن أيضا الاعتماد على مؤشر التطابق (بالإنجليزية: index of coincidence)، و هو مؤشر مبني على التحليل الإحصائي للغة يتم استخدامه لتحليل وكسر عدد من التعمية التقليدية. لكن يجب التنويه إلى أنه للقيام بهجوم تحليل التكرار يجب أن يكون بحوزة المهاجم كم كافي من النصوص المتعمية.

## مصادر

تصنيف:معميات تقليدية
تصنيف:تعمية
تصنيف:نظرية الزمر
تصنيف:يوليوس قيصر