aroben2007
01-14-2007, 07:57 PM
مقدمة Introduction :
التشفير استخدم قديما في الحضارات القديمة لإخفاء المعلومات والمراسلات ولكن التشفير كعلم مؤسس منظم يدين بولادته ونشأته للعلماء الرياضيين واللغويين العرب إبان العصر الذهبي للحضارة العربية ومن أشهرهم الفراهيدي والكندي, وقد ألف هؤلاء العلماء مفاهيم رياضية متقدمة من أهمها التوافيق والتباديل . وكذلك توظيف الكندي ومن تبعه مفاهيم الإحصاء والاحتمالات في كسر الشفرة , وقد سبقت هذه الكتابات كتابات باسكال وفيرما بحوالي ثمانية قرون !!!
وقد شاع في أيامنا استخدام مصطلح "التشفير" ليدل على إخفاء المعلومات. ولكن كلمة "التشفير" وافدة من اللغات الأوربية (Cipher) وهذه بدورها جاءت أصلا من اللغة العربية ولكن بمعنى آخر لكلمة "الصفر". فكما هو معلوم أن العرب قد تبنوا مفهوم الصفر والخانات العشرية واستخدموه في الحساب, وهو ما لم يكن الأوربيون يعرفونه في القرون الوسطى , وكان مفهوم الصفر جديدا وغريبا لدرجة أنهم أخذوه بنفس الاسم فأسموه "Cipher". ولأن مفهوم الصفر الجديد كان في منتهى التعقيد والغموض فقد صاروا يستخدمون كلمة "Cipher" للدلالة على الأشياء المبهمة وغير الواضحة.
ومن هنا تطور استخدام كلمة "Cipher" في جميع اللغات الأوربية تقريبا لتعني إخفاء المعلومات وقمنا – نحن العرب- بعد ستة قرون بإعادة بضاعتنا الأصلية ولكن بمعنى مختلف فنحتنا كلمة غريبة على اللغة العربية هي "التشفير".
وعملية فك التشفير كالتالي:
التشفير: هو تحويل المعلومات المهمة أو التي لا تريد أن يطلع عليها أحد إلى نص مخفي( أي لا يمكن فهمه)
وكمثال بسيط على ذلك نأخذ على سبيل المثال كلمة Arab الخطوات أو الخوارزمية لتشفير تلك الكلمة:
نجعل كل حرف يساوي الحرف الذي تليه أي أن:
A = B
R = S
A = B
B = C
وفي هذا المثال النص الأصلي Plaintext هو Arab والنص المشفر هو BSBC وبذلك قد أخفينا النص الأصلي وعندما تصل إلى الطرف الثاني فإنه يقوم بعكس التشفير أي أننا :
نجعل كل حرف يساوي الحرف السابق , وبذلك قد حصلنا على النص الأصلي.
وسوف نتطرق إلى بعض الطرق المتبعة في التشفير إن شاء الله، وهي:
• طريقة Caesar
• طريقة Monoalphabetic
• طريقة Playfair
• طريقة Vigenere
• طريقة Caesar :
وهي من أبسط طرق التشفير وهذه الطريقة تعتبر من أقدم طرق التشفير, وفكرة هذه الطريقة هي تبديل كل حرف بثالث حرف بعده مثلا((A=D. وهكذا
عيــــــوب هذه الطريقة :
1.لو نظرنا إلى هذه الطريقة من جانب أمني لرأينا أنها سهلة الكسر لدينا 26 احتمالية (عدد الحروف الانجليزية) أو بالأصح 25 احتمالية لأن الحرف لا يساوي نفسه .
ولنأخذ على سبيل المثال الحرف A لكسره نجرب كل الحروف ماعدا الحرف نفسه وهذه طريقة معروفه لكسر التشفير وتسمى البحث الشامل Brute force Search .
2. لا يوجد مفتاح Key, وسوف نرى في الطرق الأخرى فائدة المفتاح أي أن هذه الطريقة ثابتة,(نقوم بإرسال النص المشفر فقط ).
• طريقة Monoalphabetic :
فكرة هذه الطريقة أن يكون لدينا مفتاح Key ونقوم بتبديل النص الأصلي بالمفتاح Key.وهي أفضل من طريقة Caesar لأن المفتاح متغير :
الشرح:
لدينا الأحرف من a-z:
سؤال: لماذا قمنا باختيار هذا المفتاح DKVQFIBJWPESCXHTMYAUOLRGZN هل له قاعدة ؟
الجواب: نحاول أن نختار المفتاح عشوائيا, و ليس له قاعدة قمنا باختياره عشوائيا ونحاول أن نوزع الحروف بشكل متباعد.
والآن وبعد أن و ضعنا المفتاح ال Key ونريد تشفير رسالتنا بذلك المفتاح ولنفرض أن الرسالة plaintext التي لدينا هي : " Arab"
ولتشفيرها : نبدأ بحرف A ننظر إلى الحروف Plain ونبحث عن الA و نرى ماذا يقابله ( في الجدول السابق) , ويقابلة حرف الـD . ثم نأتي للحرف التالي وهو ال R وننظر لمقابلة في الجدول وهو حرف الـ Y.... وهكذا إلى أن نحصل على النص المشفر Cipher text :
" DYDK"
مثال أخر:
النص الأصلي:
Plaintext: ifwewishtoreplaceletters
والمفتاح كما في الجدول السابق، ناتج التشفير:
Ciphertext: WIRFRWAJUHYFTSDVFSFUUFYA
التشفير استخدم قديما في الحضارات القديمة لإخفاء المعلومات والمراسلات ولكن التشفير كعلم مؤسس منظم يدين بولادته ونشأته للعلماء الرياضيين واللغويين العرب إبان العصر الذهبي للحضارة العربية ومن أشهرهم الفراهيدي والكندي, وقد ألف هؤلاء العلماء مفاهيم رياضية متقدمة من أهمها التوافيق والتباديل . وكذلك توظيف الكندي ومن تبعه مفاهيم الإحصاء والاحتمالات في كسر الشفرة , وقد سبقت هذه الكتابات كتابات باسكال وفيرما بحوالي ثمانية قرون !!!
وقد شاع في أيامنا استخدام مصطلح "التشفير" ليدل على إخفاء المعلومات. ولكن كلمة "التشفير" وافدة من اللغات الأوربية (Cipher) وهذه بدورها جاءت أصلا من اللغة العربية ولكن بمعنى آخر لكلمة "الصفر". فكما هو معلوم أن العرب قد تبنوا مفهوم الصفر والخانات العشرية واستخدموه في الحساب, وهو ما لم يكن الأوربيون يعرفونه في القرون الوسطى , وكان مفهوم الصفر جديدا وغريبا لدرجة أنهم أخذوه بنفس الاسم فأسموه "Cipher". ولأن مفهوم الصفر الجديد كان في منتهى التعقيد والغموض فقد صاروا يستخدمون كلمة "Cipher" للدلالة على الأشياء المبهمة وغير الواضحة.
ومن هنا تطور استخدام كلمة "Cipher" في جميع اللغات الأوربية تقريبا لتعني إخفاء المعلومات وقمنا – نحن العرب- بعد ستة قرون بإعادة بضاعتنا الأصلية ولكن بمعنى مختلف فنحتنا كلمة غريبة على اللغة العربية هي "التشفير".
وعملية فك التشفير كالتالي:
التشفير: هو تحويل المعلومات المهمة أو التي لا تريد أن يطلع عليها أحد إلى نص مخفي( أي لا يمكن فهمه)
وكمثال بسيط على ذلك نأخذ على سبيل المثال كلمة Arab الخطوات أو الخوارزمية لتشفير تلك الكلمة:
نجعل كل حرف يساوي الحرف الذي تليه أي أن:
A = B
R = S
A = B
B = C
وفي هذا المثال النص الأصلي Plaintext هو Arab والنص المشفر هو BSBC وبذلك قد أخفينا النص الأصلي وعندما تصل إلى الطرف الثاني فإنه يقوم بعكس التشفير أي أننا :
نجعل كل حرف يساوي الحرف السابق , وبذلك قد حصلنا على النص الأصلي.
وسوف نتطرق إلى بعض الطرق المتبعة في التشفير إن شاء الله، وهي:
• طريقة Caesar
• طريقة Monoalphabetic
• طريقة Playfair
• طريقة Vigenere
• طريقة Caesar :
وهي من أبسط طرق التشفير وهذه الطريقة تعتبر من أقدم طرق التشفير, وفكرة هذه الطريقة هي تبديل كل حرف بثالث حرف بعده مثلا((A=D. وهكذا
عيــــــوب هذه الطريقة :
1.لو نظرنا إلى هذه الطريقة من جانب أمني لرأينا أنها سهلة الكسر لدينا 26 احتمالية (عدد الحروف الانجليزية) أو بالأصح 25 احتمالية لأن الحرف لا يساوي نفسه .
ولنأخذ على سبيل المثال الحرف A لكسره نجرب كل الحروف ماعدا الحرف نفسه وهذه طريقة معروفه لكسر التشفير وتسمى البحث الشامل Brute force Search .
2. لا يوجد مفتاح Key, وسوف نرى في الطرق الأخرى فائدة المفتاح أي أن هذه الطريقة ثابتة,(نقوم بإرسال النص المشفر فقط ).
• طريقة Monoalphabetic :
فكرة هذه الطريقة أن يكون لدينا مفتاح Key ونقوم بتبديل النص الأصلي بالمفتاح Key.وهي أفضل من طريقة Caesar لأن المفتاح متغير :
الشرح:
لدينا الأحرف من a-z:
سؤال: لماذا قمنا باختيار هذا المفتاح DKVQFIBJWPESCXHTMYAUOLRGZN هل له قاعدة ؟
الجواب: نحاول أن نختار المفتاح عشوائيا, و ليس له قاعدة قمنا باختياره عشوائيا ونحاول أن نوزع الحروف بشكل متباعد.
والآن وبعد أن و ضعنا المفتاح ال Key ونريد تشفير رسالتنا بذلك المفتاح ولنفرض أن الرسالة plaintext التي لدينا هي : " Arab"
ولتشفيرها : نبدأ بحرف A ننظر إلى الحروف Plain ونبحث عن الA و نرى ماذا يقابله ( في الجدول السابق) , ويقابلة حرف الـD . ثم نأتي للحرف التالي وهو ال R وننظر لمقابلة في الجدول وهو حرف الـ Y.... وهكذا إلى أن نحصل على النص المشفر Cipher text :
" DYDK"
مثال أخر:
النص الأصلي:
Plaintext: ifwewishtoreplaceletters
والمفتاح كما في الجدول السابق، ناتج التشفير:
Ciphertext: WIRFRWAJUHYFTSDVFSFUUFYA



