34 تغريدة 154 قراءة Nov 30, 2022
ثريد عن علم التشفير أو "التعمية"وبالإنجليزية يسمى "Cryptography"
التعمية لغة هي "تحويل نص واضح إلى آخر غير مفهوم باستعمال طريقة محددة، يستطيع من يعرفها أن يفهم النص"
التعمية بيتم استخدامها من قديم الأزل لأن طرق نقل المعلومات كانت تقليدية عن طريق رسول أو حمام زاجل وغيره
فهتلاقيها موجودة عند كل الناس بصور مختلفة بداية من الفراعنة فاليهود فاليونان فالرومان ثم العرب فأوروبا
التعمية أو التشفير في الأوقات دي كانت عبارة عن حرفة قائمة على نقل رسالة مشفرة ويكون المرسل والمرسل إليه هم بس اللي عارف فك الشفرة بدون ما يكون فيه أساس علمي لعملية التشفير دي
لكن العرب اهتموا جدا بالتعمية وهم اللي اتعاملوا معاه كعلم واعتنوا بتطويره والمهتم يراجع كتاب "علم التعمية واستخراج المعمى عند العرب"
الكتاب بيناقش
1 - "رسائل في استخراج المعمى" للكندي
2 - "المؤلف للملك الأشرف" لابن عدلان
3 - "مفتاح الكنوز في إيضاح المرموز" لابن الدريهم
النص المشفر أو الشفرة بالإنجليزية تسمى "Cipher" وده مشتق من الكلمة العربية "صفر" وده دليل على إن بداية علم التشفير/التعمية كانت عند العرب وعنهم أخذ علماء أوروبا وطوروا
عموما فأنا مهتم هنا بالتشفير والتعمية مش بتأريخهم وعلى هذا هبدأ شرح
التشفير بيتقسم تقسيمات كتير حسب معايير مختلفة ولكن بيروق لي تقسميه لنوعين هم :
- تشفير كلاسيكي -قديم- Classical cryptography
- تشفير حديث Modern cryptography
- التشفير الكلاسيكي
التشفير الكلاسيكي هو النوع اللي كان موجود في العصور القديمة وكان استخدامه شائع وبيتعمد على طريقتين أساسيتين
1 - الإحلال Substitution
2 - الإبدال Transposition
1 - التشفير الكلاسيكي بالإحلال
ده تشفير بيكون عن طريق تغيير الحروف في الرسالة واستبدالها بحروف أخرى ويكون المرسل والمستقبل عارفين طريقة التشفير وبالتالي عارفين طريقة فك الشفرة
فبدلا من إنك تلاقي " حضر الجنود" تلاقي "دظس تنخوار" فمستحيل تفهم الرسالة بدون ما تعرف المفتاح
التشفير الكلاسيكي بالإحلال له أنواع كتير هشرح أهمهم وهنبدأ مع شفرة قيصر ودي يقال إن يوليوس قيصر استعملها في مراسلاته السرية وهي بسيطة جدا
أ-شفرة قيصر
ودي فكرتها إنك بتمسك كل حرف وتبدله بما بعده ب 3 حروف ف A هي D و Z هي C وهكذا
فمثلا لو عايزين نكتب Apple هنكتبها Dssoh وهكذا
بما إننا بدلنا كل حرف بما يليه ب 3 حروف فاحنا اسمنا كده شفرنا النص بمفتاح 3 فعدد الحروف اللي اتحركتها هو المفتاح
لو حابب تشفر بشفرة قيصر استخدم الموقع ده ولو عايز تشفر بالعربي فممكن تحط الحروف العربية مكان الإنجليزي
"ابتثجحخدذرزسشصضطظعغفقكلمنهوي"
cryptii.com
ب - شفرة أتباش
احنا لسه مع التشفير الكلاسيكي بالإحلال ولكن هنشرح شفرة تانية وهي شفرة أتباش
شفرة أتباش دي شفرة يهودية استخدمها اليهود في تشفير نصوص الكابالا والتوراة المكتوبة بالعبرية ولكنها تنفع لكل اللغات وهي بسيطة
كل اللي بتعمله هو تستبدل أول حرف بآخر حرف والثاني بما قبل الأخير وهكذا
فلو عايز تكتب DOG هتكتبها WLT
النوع ده من التشفير بسيط وساذج زيادة عن اللزوم ويكفي لكسره إنك تجرب كل التبديلات الممكنة فمثلا فالإنجليزية هتجرب ب 25 مفتاح فقط -عدد الحروف- وهتقدر تكسرها
أنت هتجرب كل المفاتيح وهتوصل للحل لكن فيه علماء زي "يعقوب أبو إسحاق الكندي" جالك وقالك على فكرة أجمد
قالك أنا ليه أجرب كل المحاولات الممكنة لما أنا عارف إن أي نص مكتوب بأي لغة دايما بيكون فيه حروف معينة منتشرة أكثر من غيرها فمثلا فالعربية أكتر حروف بتتكرر هي الألف واللام
وعلى هذا فأنت تجيب النص المشفر وتجيب أكثر حروف مكررة وتجرب تبدلهم بأكثر حروف بتتكرر فالعربية وهكذا تقلل عدد المحاولات الممكنة وده اللي اتطور بعدين وبقا يتسمى frequency analysis وعليه مثال مهم هنذكره قدام
بالتالي نستنتج إن حوار التشفير الكلاسيكي بالإحلال ده ضعيف شوية
لكن الموضوع موقفش عند الحد ده فهنلاقي ظهرت محاولات تطوير مهمة في النوع ده فظهرت شفرة أفاين Affine Cipher
ج- شفرة فجينير
وللتغلب شوية على فك الشفرات بتجريب كل المحاولات الممكنة أو بالتحليل الاحصائي للنص المشفر ظهرت شفرة فجينير Vigenere Cipher
دي شفرة مختلفة شوية وأكثر تعقيدا
مش احنا مشكلتنا إن الألف واللام بيترددوا بكثرة فالنص وبالتالي سهل فك الشفرة؟
احنا نخلي للرسالة عدة مفاتيح فأول حرف يتشفر بمفتاح 3 مثلا والحرف التاني بمفتاح 5 والحرف التالت بمفتاح 7 مثلا ثم لما تخلص المفاتيح نكرر فالحرف الرابع يتشفر بمفتاح 3 والخامس ب 5 والسادس ب 7 وهكذا نكرر
الفكرة هنا إن طول المفتاح مش معلوم فممكن تعمل مفتاح من 5 أرقام وممكن من 10 والفكرة الأهم هي إنك ممكن تشفر نفس الحرف بحروف مختلفة فالألف ممكن يتكتب ب في موضع وممكن ي في موضع آخر على حسب المفتاح اللي هيتحول بيه
فأنت كده ضمنت إن التحليل الاحصائي تم تحجيمه وطبعا فيه طرق لكسر الشفرة
2 - التشفير الكلاسيكي بالإبدال
ده تشفير بيكون عن طريق تغيير مواضع كل حرف في الرسالة فمثلا لو عايز أكتب "العدو قادم" أكتب "دقم لوعاداد" فأنا هتلاقيني مغيرتش أي حرف ولكن غيرت ترتيب الحروف وغيرت مواضعها فقط
لكن لأن النوع ده من التشفير ضعيف فمش بيتم استخدامه
فبدلا من استخدامه لوحده بيتم دمجه مع التشفير بالإحلال وهنا الأمور بتتعقد وبتصبح أصعب جدا
عموما فلو أنت عايز تطلع من القصة دي بحاجة مفيدة فلازم تتعرف على شفرة One time pad ودي شفرة غير قابلة للكسر وتعتبر شبه فجينير
شفرة فجينير قلنا إن كل حرف ليه مفتاح وبعد يخلص نكرر
فلو المفتاح مثلا 952 فأول حرف مفتاحه 9 والتاني 5 والتالت 2 ثم نكرر
فال one time pad دي أنت هيكون عندك مفتاح بطول الرسالة بحيث إن الرسالة لو من 2000 حرف فيكون عندك 2000 مفتاح وطبعا المفاتيح دي عشوائية بيتم استخدامها مرة واحدة فقط وده اللي يخليها مستحيلة الكسر
فلو أنت عايز تطبق الشفرة دي عسكريا فكل ما عليك إنك تطبع كتاب مرتين كل صفحة فيه فيها مفاتيح كتير تكون مع المرسل نسخة والمستقبل نسخة
المرسل يشفر ويرسل النص مرفق معاه رقم الصفحة ثم يحرق الصفحة بعد الإرسال والمستقبل يستلم النص المشفر ويفك الشفرة ثم يحرق الصفحة بمجرد الإستلام
التشفير الكلاسيكي على الورق صعب وهياخد وقت طويل خصوصا لو أنت بتدمج بين الإحلال والإبدال ولذلك فمن التطبيقات العسكرية على الأنواع دي من الشفرات كانت صناعة Rotor machines بتشفر وتفك الشفرة تلقائيا حسب طريقة ضبطها
من أشهرهم Hebern و Lorenz و بالطبع Enigma
الإنيجما كانت مبنية على التشفير الكلاسيكي بالإحلال ولكن اختراع الكمبيوتر مع الكبر والغرور بتاع الألمان اللي خلاهم يستخدموا نفس الشفرات ويكرروا جمل معينة في الخطابات العسكرية سهل مهمة اختراقها
للعلم كان فيه حوالي 159 كوانتيليون -18 صفر- احتمال ممكن للي ممكن تكون الإنيجما بتطلعه
- تشفير حديث Modern cryptography
وده بينقسم هو كذلك لثلاثة أنواع
1 - تشفير تماثلي Symmetric encryption
2 - تشفير غير تماثلي Asymmetric encryption
3 - دالة التجزيئ Cryptographic hash function
1 - تشفير تماثلي Symmetric encryption
هنبدأ مع التشفير التماثلي وده نوع تشفير تقدر تقول عليه بسيط
بيكون عندك نص تشفره بطريقة ما -مفتاح-وعشان تفك الشفرة هتستخدم المفتاح فأنت عشان تفك الشفرة محتاج حاجتين
- النص المشفر
- مفتاح التشفير
العيب هنا إن المفتاح لو انتشر فالشفرة انكسرت
ملحوظة : كتير من الشفرات الكلاسيكية تندرج تحت النوع ده من التشفير ولكن اللي بيميز التشفير التماثلي الحديث ده هو إنه بيكون رقمي
من الأمثلة على التشفير التماثلي AES و DES وشرحهم صعب لأنه عبارة عن رياضيات وضرب مصفوفات بشكل أساسي
الموضوع بيكون بتكرار عمليات رياضية على النص
2 - تشفير غير تماثلي Asymmetric encryption
النوع ده من التشفير أكثر تعقيدا لسبب: بيكون عندك مفتاحين واحد عام معروف وواحد خاص مرتبطين ببعض
أنت تشفر النص بالمفتاح العام ولكن الشيء الوحيد القادر على فك التشفير هو المفتاح الخاص، فأنت ترسل المفتاح العام وتستلم الشفرة وتفكها بالخاص
النوعين دول من التشفير موجودين على الانترنت فمثلا المتصفح عشان يدخلك على موقع ما بيتصل مع خادم الموقع "السيرفر" عن طريق TLS handshake ودي بتكون مشفرة بتشفير غير تماثلي Asymmetric
بعد ما يتم الاتصال بيتم تبادل المعلومات بين المتصفح والخادم وهي مشفرة بتشفير تماثلي Symmetric
عموما بشكل عام فأنت فهمت لمحة عامة عن النوعين فالتشفير التماثلي بيكون فيه نص مشفر بمفتاح ونفس المفتاح بنستخدمه لفك التشفير
فالتشفير الغير تماثلي بنشفر بمفتاح عام وده عادي يكون مع الكل وبنفك بمفتاح خاص المستقبل بس يكون عارفه والمفاتيح فالنوع ده من التشفير بتكون أكثر طولا وتعقيدا
3 - دالة التجزئة Cryptographic hash function
دالة التجزيء أو التجزئة لها خصائص :
1 - بتاخد input -مدخول- بأي حجم ممكن لكن بتخرجه بحجم ثابت فمهما كان حجم اللي دخلته ليها فدايما هيخرجلك output بحجم ثابت
2- كل مدخول أو نص بتدخله للدالة دي بيخرج hash بقيمة مميزة
فأي تغيير مهما كان بسيط فالمدخول هيؤدي لتغيير كبير جدا فال hash الخارج ودي ميزة مهمة
لو دخلت كلمة أو جملة أو حتى صفحة فدايما هيخرجلك hash بنفس الحجم مميز لا يتكرر ولو غيرت حرف فالمدخول هيخرجلك hash مختلف جذريا
لو أنت معاك رسالة ومعاك hash function فسهل تطلع hash value لكن لو معاك hash value و hash function متقدرش تطلع الرسالة وعشان كده اسمها one way hash functions
فيه أنواع كثيرة من دوال التجزئة زي MD5 أو SHA1 أو SHA 256 أو SHA512
للعلم ف SHA256 هي المستعملة فالبتكوين
نظريا فبما إننا بندخل عدد لا محدود من النصوص والرسائل وبنخرج هاش بعدد خانات محدد وبطول محدد فده معناه إنه مؤكد إنه يحصل تكرار فمن الممكن نظريا إنك تلاقي نصين بيطلعوا نفس الهاش ودي حاجة سيئة جدا لل hash function
التكرار ده بيسمى تصادم وده شيء سيء للدالة
ده مثلا جدول بيوضح التصادمات اللي حصلت لبعض ال hash functions واللي كل ما بتزيد كل ما بتضعف الدالة وتفقد قيمتها
كده أكون شرحت بشكل مختصر جدا أهم أقسام علم التشفير القديم والحديث بدون الخوض في الآليات المعقدة للتشفير نفسها
ده ثريد معمول كثريد ملحق بثريد جاي قريبا إن شاء الله يخص الكريبتو والعملات الرقمية

جاري تحميل الاقتراحات...