مرّت نحو 300 سنة حتى تمّ فكّ شِفرة الاستبدال المحميّ بواسطة الكلمة الدّالّة، والتي تُعتبر "غير قابلة للفكّ". أسرار التشفير: المقالة الرابعة في السلسلة
هذه هي المقالة الرّابعة في سلسلة المقالات التي تتناول الكلمات المشفّرة. إنّها قائمة بذاتها، لكن يوصى بقراءة المقالة السّابقة، المخصّصة لشِفرة فيجنر، والمقالة الأولى والمقالة الثانية في السّلسلة.
شكّلت شِفرة فيجنر، التي طُوّرت في القرن السادس عشر الميلاديّ، تحدّيًا مُستعصيًا في وجه منظّمات التجسّس الأوروبيّة. فعلى الرّغم من اعتمادها على طريقة استبدال بسيطة (إزاحة قيصر)، حيث يتمّ استبدال كل حرفٍ بحرفٍ آخر يتواجد على مسافةٍ ثابتة منه بأحرف الأبجديّة، فقد تمّ إضافة كلمة دالّة خَلَطت هذه المسافات، وأوجدت مسافة مختلفة لكلّ حرف. نتيجةً لذلك، أصبح من الصّعب على أجهزة المخابرات فكّ الرسائل المشفّرة، بدون الحصول على الكلمة الدّالة.
أُطلِقَ على شِفرة فيجنر لفترة زمنيّة طويلة باللّغة الفرنسيّة "le chiffre indéchiffrable"، التي تعني "الشّفرات غير القابلة للفكّ". في سنة 1863م، نشر فريدريتش كاسيسكي (Kasiski)، الذي كان ضابطًا في الجّيش البروسيّ، طريقةً تُسهّل بشكل كبير فكّ الشِفرة، ولذلك سميّت باسمه. يعود الفضل الحقيقيّ في هذا الإنجاز إلى عالِم الرّياضيّات والمخترع البريطانيّ تشارلز بابيج (Babbage)، الذي اشتُهر بدايةً بسبب الآلات الحسابيّة الميكانيكيّة التي بناها، والتي شكّلت بعد عقودٍ حجرَ الأساس لتطوير الحاسوب الحديث. فقد فكّ باببيج الشّفرة صدفةً، بعد التّحدي الذي طرحه عليه طبيب أسنانٍ هاوٍ للشّفرات. لكن الحكومة البريطانيّة فرضت تعتيمًا على تلك الطريقة، لكي لا تقع في أيدي أعداء المملكة في حرب القرم، ما جعل كاسيسكي سعيدًا بذلك.
أوّل من فكّ شِفرة فيجنر كان عالِم الرّياضيّات والمخترع البريطاني، لكن كاسيسكي البروسي هو من حَظِي بتلك السمعة. تشارلز باببيج | رسم توضيحي: roseed abbas, Shutterstock
طريقة الفكّ
استفاد كاسيسكي وبابيج من التركيبة الطبيعيّة للّغة، وخصوصًا حقيقة وجود الكثير من الكلمات المكرّرة مراتٍ عديدة في النّصوص الطويلة، على سبيل المثال كلمات الرّبط وحروف الجرّ. في نهاية المطاف، ستُشفّر هذه الكلمة أو تلك بنفس الطريقة تمامًا في مكانين أو أكثر في النّص. المسافة الفاصلة بين هذه التّسلسلات المتطابقة، أي عدد الأحرف الفاصلة بين بداية التّسلسل الأوّل وبداية التّسلسل المطابق له، سيكون حتمًا ضعف عدد الأحرف في الكلمة الدّالة- التي تحدّد الدورة التي وفقًا لها سيتمّ تمويه الشّفرة من حرفٍ إلى آخر في النّص.
إمكانيّة تشفير كلمتين مختلفتين بنفس الصورة ضئيلٌ جدًا. في ظلّ هذه الفرضيّة، يمكننا البحث عن التّسلسلات، واكتشاف طرف الخيط الذي سيوصلنا إلى معرفة طول الكلمة الدّالّة. تتضمّن طريقة القيام بذلك خطوتين، أوّلهما البحث في النّص عن متواليات متكرّرة وقياس المسافة بينهما، ثمّ إيجاد قاسمٍ مشترك، وهو العدد الذي يمكن من خلاله تقسيم جميع المسافات دون باقٍ، أو على الأقلّ معظمها.
هناك احتماليّة كبيرة أن يكون القاسم المشترك الذي وجدناه هو طول الكلمة الدّالّة، لأنها تدخل بشكل دوريّ في جميع مسافات التّسلسل. مثلًا، إذا وجدنا أنّ العدد المقسوم عليه هو 2، فإنّنا نفهم من ذلك أنّ الكلمة الدّالّة مكوّنة من حرفين. لذلك، يمكننا معرفة أنّ الحرف الأول في النّص شُفّرَ وفْقًا لإزاحة معيّنة، وشُفّرَ الحرف الثاني حسب إزاحةٍ أخرى، والحرف الثّالث مرّة أخرى شُفّر حسب الإزاحة الأولى، وهكذا دواليك. يمكننا الآن تقسيم النّصّ إلى قسمين، لكلّ إزاحة، وعلى كلّ قسم تفعيل طريقة تحليل التّردد- التي تستعين بمعرفتنا تردّد كلّ حرف في اللّغة، للقيام بتخمينات مدروسة حول كلّ حرفٍ مشفّر مذكور في النّص الذي يمثّل حرفًا في النّص الأصليّ. وبعد ذلك، من خلال إكمال الكلمات وتحليلٍ آخر، يمكننا الحصول على النّص الكامل.
مثال:
نستعين بمربّع فيجنر
بدايةّ، لنرَ مثالًا على ذلك حتّى لو كانت فيه كلمات متشابهة في النّص، فلن نستطيع من تحديدها إذا لم يتمّ تقسيم المسافة بينها بواسطة الكلمة الدّالة. لذلك سنستخدم الكلمة الدّالة "عن"، وستكون الجملة "لا مولود، لا ولد" سنكتب الجملة وفوقها الكلمة الدّالة:
المسافة بين الكلمتين المتشابهتين "لا" سبعة حروف- عدد لا يقبل القسمة على طول الكلمة الدّالة، وهو كما ذكرنا سابقًا حرفان. لذلك لن نتعرّف على التسلسلات المتطابقة في الجملة المشفّرة.
لنقوم بفكّ شفرة الجملة الأصلية: "لا مولود، ولا ولد" باستخدام نفس الكلمة الدالّة:
المسافة الآن بين الكلمات المتطابقة هي ثمانية حروف، وهو رقم يقبل القسمة على 2. النّص المشّفر الذي حصلنا عليه هو:
شن نصمشم وشن ظفن
سننظر إلى الجملة الآن من وجهة مرسلها، يمكننا إعداد جدول تسلسل، يحوي في هذه الحالة سجلًّا واحدًا:
القواسم المشتركة هي 1 ،2 ،4 و 8. يمكننا تجاهل الرقم 1، لأنّه شِفرة قيصر العاديّة. سنتحقّق الآن من باقي القواسم المشتركة. لو كان النّص المشفّر طويلًا، لكان الأمر أسهل بالنّسبة لنا، لأنّه حينها تكرار الحروف تعكس بشكل أفضل تردّدها في اللّغة العربيّة. نَظرًا لكون الجملة قصيرة جدًا، استعمال برنامج الحاسوب لتجربة جميع احتمالات الإزاحة سيعطينا إمكانيّة جيّدة للوصول إلى الجملة الأصليّة. يمكن العثور على أمثلة أفضل وأطول على الإنترنت (باللغّة الإنجليزيّة).
مادّة للتفكير
-
كلّما كانت الكلمة الدّالة أقصر والنّص أطول، كانَ فكّ الشِفرة أسهل. من الممكن ألّا يتكوّن تسلسلات متطابقة عندما يكون النّص قصيرًا، ومن دونها سنفتقد طرف الخيط المطلوب لفكّ الشّفرة.
-
مبدئيًّا، يمكن الحصول على تسلسلات عشوائيّة متكرّرة لا تتعلّق بالكلمات المتكرّرة في النّص الأصليّ. في مثل هذه الحالات، قد تقدّم لنا المسافة بينهما معلومات مضلّلة لا تتعلّق بطول الكلمة الدّالة التي نبحث عنها، وبالتالي لن نجد القاسم المشترك. مع ذلك، يعتقد كاسيسكي أنّ احتماليّة الحصول على مثل هذه التسلسلات المتطابقة ضئيلة.
-
في بعض الأحيان، كما في المثال الذي أوردناه، قد يكون هناك أكثر من قاسم مشترك، وسيتعيّن علينا فحصها جميعًا واختيار أكثر قاسم مشترك مناسب بينها. وهذا جزء لا يتجزّأ من عمل مفكّكي الشفرات. تحدث الكثير من المعضلات في عالم الشِفرات، وجزء من الموضوع هو تفعيل تخمينات مدروسة والتّحقق من جميعها.
تحدٍّ لعُشّاق الاحتمالات
إحدى فرضيّات كاسيسكي أنّ احتماليّة تشفير كلمتين مختلفتين لتركيبة نفس الأحرف ضئيلة.