تعمية قيصر
المحتويات

على سبيل التعريف، تعمية قيصر، تسمى كذلك التعمية بالإزاحة، هي طريقة من طرق التعمية التقليدية تستعمل لتعمية النصوص، شاع استخدام هذه الطريقة قديمًا ويُعتقد أن يوليوس قيصر كان أول من استعمل هذه الوسيلة في الفترة ما بين 58 ق.م حتى 51 ق.م. تتميز هذه التعمية بسهولة تطبيقها لذلك تعتمد غالبا مدخلًا للتعرف على علم التعمية التقليدي غير أنها ليست أقدم طريقة تعمية مسجلة تاريخيا، إذ تعود أول محاولة تاريخية مسجلة لممارسة فن التعمية إلى العام 1900 قبل الميلاد. فكرة الطريقة مشابهة لحد ما لتعمية أتبش ولطرق أخرى كانت منتشرة قديما، بحيث أنها تعتمد على مقابلة حروف الأبجدية بنسخة محوَّرة من نفس الحروف وذلك باعتماد تحوير بسيط غالبا ما يكون سريا ومتفق عليه. ويقوم مبدأ تعمية قيصر أو تعمية الإزاحة على مقابلة حروف الأبجدية بنسخة من نفس الأحرف تمت إزاحتها بموضع ثلاثة أحرف، فمثلا تعمية حرف «أ» يكون هو حرف «ث» وتعمية الكلمة «مرحبا» يكون بذلك هو «وشذجث». وكما جاء على لسان المؤرخ الروماني سويتونيوس في كتابه القياصرة الاثنى عشر، فإن أغسطس قيصر، و هو ابن أخ يوليوس قيصر، استعمل كذلك نفس المبدأ للتعمية، غير أنه كان يعتمد على إزاحة بمقدار موضع واحد فقط، مع تعمية آخر حرف في الأبجدية بتكرار أول حرف من الأبجدية مرتين. وفيما يلي تفاصيل أوسع عن ذلك.
إضافةً إلى ذلك، لا يمكن اعتبار تعمية قيصر خوارزمية تعمية حقيقية حسب المعايير الحالية لأنها لا تحترم مبادئ كيرشوف وخصوصا مبدأ الإعتماد على سرية المفتاح وليس على سرية الخوارزمية. بذلك تكون تعمية قيصر مثل سائر الطرق القديمة غير آمن البتة إذ أنه انطلاقا من النص المعمى يمكن استنباط النص الأصلي، وذلك لأن طبيعة توزيع الحروف في النص لا تتغير وبالتالي حسب طبيعة التوزيع الأصلي للغة الأصل يمكن استنباط النص الأصلي، وهذا النوع من الهجمات يسمى: هجوم النص المعمى المعروف. رغم انعدام الحماية عند استخدام تعمية قيصر إلا أنها تجد استخدامات لها (في صيغتها العامة) في بعض الحالات التي لا تستدعي حماية بقد ما تستدعي إخفاء لحظي للنص كخوارزمية روت 13 التي تستعمل في الكثير من المواضع كالمجلات وبعض الأجهزة الإلكترونية.
تعمية قيصر
إضافةً إلى ذلك، لا تعتمد خوارزمية تعمية قيصر على مفتاح سري لكنها تعتمد على سرية الخوارزمية. تعوض الخوارزمية ببساطة كل حرف بحرف يليه في الترتيب الأبجدي بعدد محدد من الحروف، بعبارة أخرى، لنفترض أن مجموعة الحروف الأبجدية مرقمة ترتيبيا وفق الجدول الآتي. ( سنستعمل للدلالة على مجموعة الحروف ونظيرتها من مجموعة الأعداد بشكل متماثل في ما يلي):
عملية تعمية قيصر هي خوارزمية معرفة كالآتي:
نص برمجي
ومن جهة أخرى، فيما يلي نص برمجي بلغة بايثون يوضح عمليتي التعميةوفك التعمية باعتماد مفتاح إزاحة معين. تُستعمل أبجدية اللغة العربية المعرفة حسب الترميز الموحد كما يلي (تضم 29 حرف باعتبار التاء المروبوطة كحرف مستقل):alphabet = [*range(0x0627, 0x063B), *range(0x0641, 0x0649), 0x064A] # أبجدية عربية
طرق كسر تعمية قيصر
وفي السياق ذاته، نتناول في هذه الفقرة بعض طرق كسر تعمية قيصر بشكل عام، أي أننا سنستعمل العبارتين تعمية قيصر و تعمية الإزاحة للدلالة على الحالة العامة حيث يكون هناك مفتاح سري .
تعميم تعمية قيصر: التعمية بالإزاحة
يعاد تعريف خوارزمية التعمية في هذه الحالة العامة كالآتي:
ويعاد تعريف خوارزمية فك التعمية المقابلة لها كما يلي:
في هذا الإطار، لا تعتمد تعمية قيصر في الأصل على أي مفتاح سري بل على سرية الخوارزمية. يمكن تعميم تعمية قيصر وذلك بإدخال متغير يمثل المفتاح السري الذي يمثل قيمة الإزاحة اللتي ينبغي تطبيقها على حروف الأبجدية. من الواضح أن هذه القيمة السرية لا يجب أن تكون منعدمة (لأنه في هذه الحالة لن يكون هناك أي تعمية)، كما أنه لن يكون هناك معنى لاختيار قيمة أكبر من أو تساوي حجم الأبجدية (مثلا باختيار المفتاح 28، وهو عدد حروف الأبجدية العربية، لن يكون هناك أي تعمية). وبالتالي نعرف المفتاح بحيث تمثل عدد عناصر الحروف الأبجدية. في حالتنا هذه والتي نهتم من خلالها بأبجدية الأحرف العربية، فإن المفتاح ينبغي أن ينتمي للمجموعة .
ومن ناحية أخرى، يمكننا التأكد من صحة الخوارزمية (بالإنجليزية: proof of correctness) ببساطة كما يلي:
تعمية قيصر ليست آمنة الدلالة
وعلى صعيد آخر، بالعودة إلى المثال الأول من الفقرة السابقة، يمكنك ملاحظة وجود تطابق نمطي بين النص الواضح والنص المُعَمَّى. بعبارة أخرى، يمكنك ملاحظة أن حرف الياء في النص «ويكيبيديا» دائما ما يُعمَّى باستخدام حرف الشين في النص المُعَمَّى «سشخشضشقشص». وبالتالي يمكن لأي خصم التفريق بين نصين معميين مختلفتين فقط بتحليل النصوص المتعمية. لتوضيح هذا الأمر سنفترض السيناريو التالي: نفترض أن هناك خصم متنصت على محادثة متعمية بين طرفين، قام خلالها برصد التعمية «نبن». نفترض أن المتنصت يعلم مسبقا أن هذه التعمية هي جواب لسؤال معلوم يقبل فقط إجابتين هما: «فجر» أو «ليل». واضح من تحليل التعمية فقط، ودون الحاجة لكسرها أو محاولة معرفة المفتاح، أن النص الواضح الموافق للنص المُعَمَّى «نبن» هو «ليل» وليس «فجر»، لأن هناك تطابق في أنماط الكلمتين «نبن» و«ليل» (كلاهما يبدءان بحرف وينتهيان بنفس الحرف) . نقول في هذه الحالة إن تعمية قيصر ليست آمنة دلاليا (بالإنجليزية: semantically secure).
فك التعمية
وفي هذا الصدد، يمكن تصنيف تعمية قيصر ضمن خوارزميات تعمية بالمفتاح المتناظر، وبذلك سنعتمد فقط على عكس خوارزمية التعمية لصياغة خوارزمية فك التعمية التي سيُرمز لها ب . ويمكن تعريف كالآتي:
إضافةً إلى ذلك، بعبارة أخرى فإن تحول كل حرف إلى الحرف الثالث قبله في الترتيب الأبجدي.
النص البرمجي للتعمية
def encrypt(key, message, alphabet):
اصطلاحات
عملية التعمية وفكها
علاوةً على ذلك، النص الواضح (يسمى كذلك النص المجرد) وهو النص الأصل المراد تعميته، سيُرمز له بالحرف وهو مركب من مجموعة من الحروف، كل حرف ينتمي لمجموعة تُسمى الأبجدية، نرمز لهذه الأبجدية بالحرف ، و نقول أن هو نص مكون من حرف. مثلا: كلمة «مرحبا» هي نص واضح ينتمي ل مجموعة النصوص المكونة من خمسة حروف، بحيث مجموعة حروف الأبجدية العربية.
وعلى صعيد آخر، النص المعمى وهو نتيجة تطبيق خوارزمية التعمية على النص الواضح، سيُرمز له بالحرف . في حالة تعمية قيصر أو تعمية الإزاحة إذا كان فإن كذلك، أي بعبارة أخرى و لهما الطول نفسه.
ومن ناحية أخرى، قبل البدء بتوصيف تعمية قيصر لا بد من توضيح بعض الاصطلاحات الرئيسة:
ومن ناحية أخرى، دالة فك التعمية أو خوارزمية فك التشفير، سنرمز لها ب ، وهي تَعْكُس عمل خوارزمية التعمية ، أي أنها تربط النص المعمى بالنص الواضح كما يلي: . في حالة تعمية قيصر فلا حاجة لمفتاح لذلك يمكننا صياغة هذه العلاقة في هذه الحالة ب .
كذلك، دالة التعمية أو خوارزمية التعمية، نرمز لها ب ، و هي الخوارزمية التي تربط النص الواضح بالنص المعمى كما يلي: بحيث هو مفتاح التعمية. في حالة تعمية قيصر فلا حاجة لمفتاح لأن التعمية ثابتة وتعتمد فقط على خوارزمية التعمية، لذلك يمكننا صياغة هذه العلاقة في هذه الحالة ب .
هجوم التحليل الإحصائي
علاوةً على ذلك، هجوم التحليل الإحصائي أو تحليل التكرار (بالإنجليزية: frequency analysis)، هو طريقة من أبرز طرق تحليل الشفرات التقليدية وهو من اختراع وتطوير العرب. ولعل هذه كانت أول محاولة تاريخية لتطوير علم رياضي يهتم بكسر وواستخراح المعمى، وقد كان يسميه العرب حينها علم استخراج المعمَى. يقوم مبدأ هذا النوع من الهجمات على استخدام التحليل الإحصائي للغة التعمية وللتعمية ذاتها ومحاولة مطابقة تردد حروف التعمية مع تردد حروف اللغة الأصلي، وبذلك يتمكن المحلل من التوصل إلى تقابل بين أبجدية النص الواضح وأبجدية النص المُعَمَّى. يستطيع هذا النوع من الهجمات كسر كل التعمية بالإعاضة الأحادية بدون استثناء، والتي من ضمنها تعمية قيصر وتعمية الإزاحة وأنواع أخرى عديدة. مثلا، باعتبار اللغة العربية، نعلم انطلاقا من تحليل التكرار أن حرف الألف هو أكثر الأحرف تواترا في اللغة، يليه حرف اللام. انطلاقا من هذه المعلومة يمكننا موافقة حرف الألف بالحرف الأكثر تواترا في النص المُعَمَّى (مثلا ليكن هو حرف الصاد)، و هكذا نستطيع كشف مفتاح الإزاحة المعتمد في تشفير الإزاحة والذي يكون في هذه الحالة هو 13.
في هذا الإطار، بصيغة أخرى مماثلة، يمكن كذلك الاعتماد على مؤشر التطابق (بالإنجليزية: index of coincidence)، و هو مؤشر مبني على التحليل الإحصائي للغة يتم استخدامه لتحليل وكسر عدد من التعمية التقليدية. لكن يجب التنويه إلى أنه للقيام بهجوم تحليل التكرار يجب أن يكون بحوزة المهاجم كم كافي من النصوص المتعمية.
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)
- مثال تطبيقي
- النص الواضح: مرحبا من ويكيبيديا الموسوعة الحرة
- النص المعمى: كدثيو كل نهفهيهحهو وقكنرنطا وقثدا
مثال
وفي هذا السياق، يُطبق المبدأ نفسه لتعمية سائر الحروف فيكون على النص المعمى «وشذجث».
ومن جهة أخرى، يمكن إنجاز التعمية يدويًا أو آليًا باعتماد هذه الخوارزمية التي تعتمد على الحسابيات المعيارية.
وفي هذا الصدد، لتعمية الكلمة «مرحبا» يُعمَّى كل حرف على حدة باستخدام الخوارزمية . لتعمية هذه الحروف يجب مقابلة كل حرف بالرقم المقابل له، مثلًا حرف «م» يقابله العدد 23 في الجدول أعلاه، فيكون بذلك تعمية حرف «م» هو الحرف المقابل ل أي هو الحرف «و».
مثال
بالتالي، يكون النص المعمى هو «سشخشضشقشص».
في هذا الإطار، لتعمية الرسالة التالية «ويكيبيديا» باستخدام مفتاح تعمية . تُطبَّق الخوارزمية باستخدام المفتاح المختار على كل حرف على حدة:
النص البرمجي لفك التعمية
def decrypt(key, ciphertext, 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)
هجوم الإكراه الأعمى
ومن ناحية أخرى، قد يسمى كذلك هجوم القوة العمياء، (بالإنجليزية: Brute-force attack)، وهو ببساطة هجوم يقتضي تجريب كل المفاتيح الممكنة إلى غاية إيجاد المفتاح الصحيح. نُذَكِّر أن حقل المفاتيح الممكنة صغير جدا ، و بالتالي تجريب كل هذه المفاتيح لن يتطلب مجهود ووقت كبيرين قبل العثور على المفتاح المناسب. يمكن القيام بهجوم الإكراه الأغمى في حالتنا هذه سواء يدويا أو آليا.
📝 هل في هذه المقالة خطأ؟
إذا وجدت معلومة تحتاج تصحيحاً أو إضافة، أو أردت حذف المقالة، أرسل لنا طلباً وسنراجعه.
ما رأيك في هذه المقالة؟