شفرة قيصر  شفرة قيصر ، تسمى أيضا تشفير قيصر أو تشفير الإزاحة، هي طريقة من طرق التشفير التقليدي لتشفير أو تعمية النصوص، هذه الشفرة شاع استخدامها قديما ويُعتقد أن يوليوس قيصر كان أول من استخدم هذه الوسيلة وكان ذلك بين 58 ق.م حتى 51 ق.م. تتميز هذه الشفرة بسهولة تطبيقها لذلك يتم اعتمادها غالبا كمدخل للتعرف على علم التعمية الكلاسيكي غير أنها ليست أقدم شفرة مسجلة تاريخيا، إذ تعود أول محاولة تاريخية مسجلة لممارسة فن التعمية إلى العام 1900 قبل الميلاد. فكرة الشفرة مشابهة لحد ما لشفرة أتباش وشفرات أخرى كانت منتشرة قديما، بحيث أنها تعتمد على مقابلة حروف الأبجدية بنسخة محوَّرة من نفس الحروف وذلك باعتماد "تحوير" بسيط غالبا ما يكون سريا ومتفق عليه. ويقوم مبدأ شفرة قيصر أو شفرة الإزاحة على مقابلة حروف الأبجدية بنسخة من نفس الأحرف تمت إزاحتها بموضع ثلاثة أحرف، فمثلا تشفير حرف «أ» يكون هو حرف «ث» وتشفير الكلمة «مرحبا» يكون بذلك هو «وشذجث». وكما جاء على لسان المؤرخ الروماني سويتونيوس في كتابه القياصرة الاثنى عشر، فإن أغسطس قيصر، و هو ابن أخ يوليوس قيصر، استخدم هو الآخر نفس المبدأ للتشفير، غير أنه كان يعتمد على إزاحة بمقدار موضع واحد فقط، مع تشفير آخر حرف في الأبجدية بتكرار أول حرف من الأبجدية مرتين.  لا يمكن اعتبار شفرة قيصر كشفرة حقيقية حسب المعايير الحالية لأنها لا تحترم مبادئ كيرشوف وخصوصا مبدأ الإعتماد على سرية المفتاح وليس على سرية الخوارزمية. بذلك يكون تشفير قيصر كباقي العديد من الشفرات الكلاسيكية تشفير غير آمن البتة إذ أنه انطلاقا من النص المشفر يمكن استنباط النص الأصلي، وذلك لأن طبيعة توزيع الحروف في النص لا تتغير وبالتالي حسب طبيعة التوزيع الأصلي للغة الأصل يمكن استنباط النص الأصلي، هذا النوع من الهجمات يسمى: هجوم الإكتفاء بالنص المشفر أو هجوم النص المشفر فقط. رغم انعدام الحماية عند استخدام شفرة قيصر إلا أنها تجد استخدامات لها (في صيغتها العامة) في بعض الحالات التي لا تستدعي حماية بقد ما تستدعي إخفاء لحظي للنص كشفرة روت 13 التي تستخدم في العديد من المواضع كالمجلات وبعض الأجهزة الإلكترونية.  قبل البدأ بتوصيف تشفير قيصر لا بد من توضيح بعض الاصطلاحات الأساسية:  سنبدأ أولا بتوصيف تشفير قيصر الأصلي أي كما كان مستخدم من طرف يوليوس قيصر، كما هو معلوم فخوارزمية التشفير هذه لا تعتمد على مفتاح سري لكنها تعتمد على سرية الخوارزمية ككل. تقوم الخوارزمية ببساطة بتعويض كل حرف بالحرف الثالث اللذي يليه في الترتيب الأبجدي، بعبارة أخرى، لنفترض أن مجموعة الحروف الأبجدية formula_2 مرقمة ترتيبيا وفق الجدول الآتي. ( سنستخدم formula_2 للدلالة على مجموعة الحروف ونظيرتها من مجموعة الأعداد بشكل متماثل في ما يلي):  عملية تشفير قيصر هي خوارزمية formula_12 معرفة كالآتي:  formula_23  لتشفير الكلمة «مرحبا» فإننا سنقوم بتشفير كل حرف على حدة باستخدام الخوارزمية formula_12. لتشفير هذه الحروف يجب مقابلة كل حرف بالرقم المقابل له، مثلا حرف «م» يقابله العدد codice_1 في الجدول أعلاه، فيكون بذلك تشفير حرف «م» هو الحرف المقابل ل formula_25 أي هو الحرف «و».  نطبق نفس المبدأ لتشفير باقي الحروف فنحصل على الشفرة «وشذجث».  يمكن القيام بالتشفير يدويا أو آليا باعتماد هذه الخوارزمية التي تعتمد على الحسابيات المعيارية، كما يمكن القيام بالتشفير فقط باستخدام ورقة وقلم وجدول المقابلات كما هوموضح في الصورة أعلاه.  يمكن تصنيف شفرة قيصر ضمن خوارزميات التشفير المتماثل، وبذلك سنعتمد فقط على عكس خوارزمية التشفير لصياغة خوارزمية فك التشفير التي سنرمز لها ب formula_16. ويمكن تعريف formula_16 كالآتي:  formula_28  بعبارة أخرى فإن formula_16 تحول كل حرف إلى الحرف الثالث قبله في الترتيب الأبجدي.  كما أشرنا سابقا، تشفير قيصر الأصلي لايعتمد على أي مفتاح سري بل يعتمد على سرية الخوارزمية. يمكن تعميم تشفير قيصر وذلك بإدخال متغير يمثل المفتاح السري الذي يمثل قيمة الإزاحة اللتي ينبغي تطبيقها على حروف الأبجدية. من الواضح أن هذه القيمة السرية لا يجب أن تكون منعدمة (لأنه في هذه الحالة لن يكون هناك أي تشفير)، كما أنه لن يكون هناك معنى لاختيار قيمة أكبر من أو تساوي حجم الأبجدية (مثلا باختيار المفتاح codice_2، وهو عدد حروف الأبجدية العربية، لن يكون هناك أي تشفير). وبالتالي نعرف المفتاح formula_30 بحيث formula_31 تمثل عدد عناصر الحروف الأبجدية. في حالتنا هذه والتي نهتم من خلالها بأبجدية الأحرف العربية، فإن المفتاح ينبغي أن ينتمي للمجموعة formula_32.  نعيد تعريف خوارزمية التشفير في هذه الحالة العامة كالآتي:  formula_33  ونعيد تعريف خوارزمية فك التشفير المقابلة لها كما يلي:  formula_34  يمكننا التأكد من صحة الخوارزمية (بالإنجليزية: proof of correctness) ببساطة كما يلي:  formula_35  لنفترض أننا بصدد تشفير الرسالة التالية «ويكيبيديا» باستخدام مفتاح تشفير formula_36. نقوم بتطبيق الخوارزمية formula_12 باستخدام المفتاح المختار على كل حرف على حدة (راجع جدول المقابلات أعلاه):  formula_38  بالتالي، يكون النص المشفر هو «سشخشضشقشص». لربما يمكنك للتو ملاحظة ضعف هذه الشفرة إنطلاقا من هذا المثال، سنتطرق في الفقرة التالية لتحليل أمن شفرة قيصر (شفرة الإزاحة)، وسنتطرق أيضا لبعض طرق كسر هذا التشفير.  نضع فيما يلي كود برمجي بلغة بايثون يوضح عمليتي التشفير و فك التشفير باعتماد مفتاح إزاحة معين. نعتبر أبجدية اللغة العربية المعرفة حسب كود الترميز الموحد كما يلي (تضم 29 حرف باعتبار التاء المروبوطة كحرف مستقل): alphabet = [*range(0x0627, 0x063B), *range(0x0641, 0x0649), 0x064A] # أبجدية عربية  def encrypt(key, message, alphabet):  def decrypt(key, ciphertext, alphabet):  النص الواضح: مرحبا من ويكيبيديا الموسوعة الحرة  النص المشفر: كدثيو كل نهفهيهحهو وقكنرنطا وقثدا  كما هو معلوم، فإن شفرة قيصر الأصلية لا تعتمد على مفهوم المفتاح لتشفير النصوص بل تعتمد على سرية الخوارزمية، وهذا يخرق مبادئ كيرشوف كما تمت الإشارة سابقا في هذا المقال. لذلك سنعتمد على شفرة الإزاحة (شفرة قيصر العامة) والتي تعتمد على مفهوم المفتاح والتي تم تناولها في الفقرة السابقة للقيام بتحليل أمن الشفرة.  بالعودة إلى المثال الأول من الفقرة السابقة، يمكنك ملاحظة وجود تطابق نمطي بين النص الواضح والنص المشفر. بعبارة أخرى، يمكنك ملاحظة أن حرف الياء في النص «ويكيبيديا» دائما ما يتم تشفيره باستخدام حرف الشين في النص المشفر «سشخشضشقشص». وبالتالي يمكن لأي خصم التفريق بين شفرتين مختلفتين فقط بتحليل النصوص المشفرة. لتوضيح هذا الأمر سنفترض السيناريو التالي: نفترض أن هناك خصم متنصت على محادثة مشفرة بين طرفين، قام خلالها برصد الشفرة «نبن». نفترض أن المتنصت يعلم مسبقا أن هذه الشفرة هي جواب لسؤال معلوم يقبل فقط إجابتين هما: «فجر» أو «ليل». واضح من تحليل الشفرة فقط، ودون الحاجة لكسرها أو محاولة معرفة المفتاح، أن النص الواضح الموافق للنص المشفر «نبن» هو «ليل» وليس «فجر»، لأن هناك تطابق في أنماط الكلمتين «نبن» و«ليل» (كلاهما يبدءان بحرف وينتهيان بنفس الحرف) . نقول في هذه الحالة إن شفرة قيصر ليست آمنة دلاليا (بالإنجليزية: semantically secure).  نتناول في هذه الفقرة بعض طرق كسر شفرة قيصر بشكل عام، أي أننا سنستخدم العبارتين شفرة قيصر و شفر الإزاحة للدلالة على الحالة العامة حيث يكون هناك مفتاح سري .  قد يسمى أيضا هجوم القوة العمياء، (بالإنجليزية: Brute-force attack)، وهو ببساطة هجوم يقتضي تجريب كل المفاتيح الممكنة إلى غاية إيجاد المفتاح الصحيح. نُذَكِّر أن حقل المفاتيح الممكنة صغير جدا formula_32، و بالتالي تجريب كل هذه المفاتيح لن يتطلب مجهود ووقت كبيرين قبل العثور على المفتاح المناسب. يمكن القيام بهجوم الإكراه الأغمى في حالتنا هذه سواء يدويا أو آليا.  هجوم التحليل الإحصائي أو تحليل التكرار (بالإنجليزية: frequency analysis)، هو طريقة من أبرز طرق تحليل الشفرات التقليدية وهو من اختراع وتطوير العرب. ولعل هذه كانت أول محاولة تاريخية لتطوير علم رياضي يهتم بكسر وتحليل الشفرات، وقد كان يسميه العرب حينها علم استخراج المعمَى. يقوم مبدأ هذا النوع من الهجمات على استخدام التحليل الإحصائي للغة الشفرة وللشفرة ذاتها ومحاولة مطابقة تردد حروف الشفرة مع تردد حروف اللغة الأصلي، وبذلك يتمكن المحلل من التوصل إلى تقابل بين أبجدية النص الواضح وأبجدية النص المشفر. يستطيع هذا النوع من الهجمات كسر كل شفرات الإبدال الأحادي بدون استثناء، والتي من ضمنها شفرة قيصر و شفرات الإزاحة وشفرات أخرى عديدة. مثلا، باعتبار اللغة العربية، نعلم انطلاقا من تحليل التكرار أن حرف الألف هو أكثر الأحرف تواترا في اللغة، يليه حرف اللام. انطلاقا من هذه المعلومة يمكننا موافقة حرف الألف بالحرف الأكثر تواترا في النص المشفر (مثلا ليكن هو حرف الصاد)، و هكذا نستطيع كشف مفتاح الإزاحة المعتمد في تشفير الإزاحة والذي يكون في هذه الحالة هو codice_3.  بصيغة أخرى مماثلة، يمكن أيضا الاعتماد على مؤشر التطابق (بالإنجليزية: index of coincidence)، و هو مؤشر مبني على التحليل الإحصائي للغة يتم استخدامه لتحليل وكسر عدد من الشفرات التقليدية. لكن يجب التنويه إلى أنه للقيام بهجوم تحليل التكرار يجب أن يكون بحوزة المهاجم كم كافي من النصوص المشفرة.