الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

التشفير باستخدام XOR

بدأه مصطفى 36a2 في 6 نوفمبر 2013 · 5 رد · 5,543 مشاهدة · في المقالات العلمية و التقنية
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمة الله وبركاته

من أبسط طرق التشفير الرياضية .. طريقة التشفير باستخدام xor سنتحدّث عنها بإذن الله في هذه المقالة القصيرة

 

المبدأ الرياضي :
عملية xor هي عملية منطقية على الأعداد بالترميز الثنائي(تتعامل مع أصفار وواحدات فقط) .. وتأخذ معاملين بشكلها المعياري ..

تّسمّى xor عادة بكاشف اختلاف .. فهي تعطي في ناتجها 1 إذا كان الدخلان مختلفين 1 و 0 أو 0 و 1 ..
وتعطي صفراً .. إذا كان الدخلان متشابهين 1 و 1 أو 0 و 0 ..

سبب استعمالها بالتشفير هو الخاصّية التالية :

ليكن c هو ناتج العملية a xor b
إذا أخذنا ناتج c xor b فإننا سنحصل مرة أخرى على a !
أي أننا يمكننا تشفير a بمفتاح ما b ونحصل على الشيفرة c .. ومن ثمّ باستخدام نفس المفتاح b نحصل على الرسالة الأصلية a

تسمّى طريقة التشفير السابقة بالتشفير المتناظر : أي أن التشفير وفك التشفير يتم باستخدام العملية نفسها .. وفي حالتنا هي xor b

يمكن البرهان بسهولة على الخاصّية التالية : (بتجربة جميع الاحتمالات )
والاحتمالات موضّحة في الجدول التالي  :

  a  |  b  |  c= a xor b  |  ?= c xor b   |
-------------------------------------------
  0  |  0  |  0=0 xor 0   |  0= 0 xor 0 =a|
  0  |  1  |  1=0 xor 1   |  0= 1 xor 1 =a|
  1  |  0  |  1=1 xor 0   |  1= 1 xor 0 =a|
  1  |  1  |  0=1 xor 1   |  1= 0 xor 1 =a|
-------------------------------------------

قمنا بتشفير بت واحد .. ويمكننا تشفير أي عدد من البتّات باستخدام مفتاح بنفس الطول ..

 

سنقوم بتشفير رقم في المثال التالي :
ليكن لدينا الرقم 0x36a2 ونريد تشفيره باستخدام المفتاح 0x0023
نكتب الرسالة والمفتاح بالترميز بالنظام الثنائي :

0x36a2=0011 0110 1010 00100x0023=0000 0000 0010 0011

ونحصل على ناتج التشفير ( الشيفرة ) بتطبيق xor على كل بتّين في نفس الموضع كما يلي :

0x36a2=0011 0110 1010 0010
0x0023=0000 0000 0010 0011
__________xor_____________

0x3681=0011 0110 1000 0001

ويمكننا فك التشفير باستخدام xor مع المفتاح نفسه  (ملاحظة لو أخذنا xor مع الرسالة سنحصل على المفتاح )

كلمات عن تشفير الملفّات :
أبسط طريقة لتشفير الملفّات هي اعتماد مفتاح واحد .. ثم المرور على بايتات الملف واحداً واحداً وأخذ xor لهذا البايت مع المفتاح وطباعة الناتج في ملف الخرج .

كانت هذه هي الأفكار الأساسية للتشفير باستخدام xor ..أرجو أن يكون فيها الفائدة .. وننتظر من الأخوة إغناء الموضوع :)

كما أرجو تجنّب الردود التي لا تفيد القرّاء اللاحقين ..

والله ولي التوفيق
 

تم تعديل هذه المشاركة بواسطة مصطفى 36a2 في 6 نوفمبر 2013 في 19:08

5
#2

السلام عليكم

 

موضوع جميل, بارك الله فيك :)

 

الدالة التالية تقوم بتشفير محتوى ملف نصي و تخزنه في ملف نصي آخر :

void encrypt_file(FILE* input_file, FILE* output_file, char* key) {
    int key_count = 0;
    int encrypt_byte;

    while ((encrypt_byte = fgetc(input_file)) != EOF) {
        fputc(encrypt_byte ^ key[key_count], output_file);

        key_count++;
        if (key_count == strlen(key))
            key_count = 0;
    }
}

بشكل عام, التشفير باستخدام XOR سهل و جيد أيضا إلا أنه يمكن كشفه من خلال تتبع تشفير أجزاء الكلمات الاكثر تكراراً في اللغة (نفس المشكلة نجدها في خوارزمية Playfair و كذلك Vigenère).

 

 

 

تحياتي,

1
#3

نعم ولكنني فكّرت في تطوير لهذه الطريقة في التشفير .. ويصبح بعدها صعب الكسر بشكل كبير جداً ...

الفكرة بسيطة جداً وهي كالتالي :

نحدد أكثر من مفتاح واحد .. ونبدأ بالتشفير .. أول بايت بالمفتاح الأول .. ثاني بايت بالمفتاح الثاني ... البايت n بالمفتاح n  ثم نكرر الحلقة ... البايت n+1 بالمفتاح 1 والبايت n+2 بالمفتاح 2 ..

 

ما رأيك ؟ لا يمكن كسر هذا التشفير بطريقة دراسة التكرار :) وستسغرق وقتا مستحيلاً في طريقة Brute Force يساوي (256 مرفوعة لقوّة n عدد المفاتيح ) (تخيل وجود 10 مفاتيح ×_×)

 

ولكن لا أحبذ شرح طرق التطوير التي أفكر بها فقد أستخدمها يوماً ما  :p

 

شكرا لك :)

#4

أخ مصطفى ... 

فكرتك هي ببساطة , زيادة طول المفتاح .. و طبيعي .. كلما كان المفتاح اطول كان كسره أصعب ..

من طرق كسر التشفير هو معرفتنا المسبقة بالبيانات مثلا , ملف الــ PDF  يبدأ بالمحارف : 

%PDF-1.5

 أي أن ثاني و ثالث و رابع محرف هو الاحرف  PDF   (الكثير من الملفات ذات التنسيق فيها هذه الخاصية , mdb  اعتقد ايضا) .. فلو التقطت النص المشفر و قارنت البايتات الثاني و الثالث و الرابع مع البتات الموافقة للأحرف PDF  , فربما اعرف المفتاح ... :huh:

 

لا تنسى انه لدينا مفهوم  (Multiphase Encryption) .

يعني نشفر أول مرة بمفتاح K1  و الناتج نشفره بمفتاح ثاني K2  و الناتج الأخير نشفرة بمفتاح ثالث K3  و لكسر التشفير , فانت بحاجة لعمليات أكثر لمعرفة المفاتيح الثلاثة ..

تذكر الــ (Triple DES) .

 

لمزيد من الملعلومات في الورقة البحثية : 

Multiphase Encryption: A New Concept in Modern Cryptography

رابط .

تم تعديل هذه المشاركة بواسطة حسام الشامي في 7 نوفمبر 2013 في 23:02

1

لا إله إلا الله ... محمد رسول الله

لو كانت مشاركتي مفيدة و تريد تشجيعي على المزيد من العطاء , فضلا قم بتقييم المشاركة

المعرًف القديم : houssam11350_11350

من مواضيعي : ArabGenCode : مولد كود و إجراءات مخزنة و واجهات لجداول سيكوال سيرفر

#5

بالنسبة للفكرة .. هي كما قلت .. وجه آخر لزيادة طول المفتاح .. (يعني لن أحصل على براءة اختراع على أي حال -_-)

 

اقتباس
لا تنسى انه لدينا مفهوم  (Multiphase Encryption) .

هذا المفهوم كثيراً ما أجده غير مجدٍ ..

وهو غير فعّال في تشفير xor على أي حال وهذا هو البرهان :

لدينا رسالة a  ومفتاح المرحلة الأولى b  ومفتاح المرحلة الثانية c ..

a xor b نضعه في E

E xor c نضعه في D

الشيفرة الآن هي D ولنفرض أننا وصلنا إليها ولو بمئة مرة تشفير... وسأثبت لك أنه يمكننا الوصول من D  إلى a بمفتاح واحد ..

 

فإنه يوجد مفتاح k يحقق k xor D سيعطيك a مباشرة ..

خذ D xor a وستحصل على المفتاح k الذي سينقلك فوراً من الشيفرة إلى الرسالة .. أي أن k xor D سيعطيك a مباشرة ..

 

طبعاً ستصل إلى k بنفسك BruteForce مثلاً ..

 

وبذلك يمكننا القول أن التشفير متعدد المراحل غير مفيد في تشفير xor  ..

 

إن أخطأت فنبّهني فمعرفتي بالتشفير مجرّد عناوين وغالب الأفكار تفكير بحت..

 

والله ولي التوفيق

#6
اقتباس
وبذلك يمكننا القول أن التشفير متعدد المراحل غير مفيد في تشفير xor  .

 

هذا صحيح ,

لكنه مفيد في خوارزميات اخرى  3DES .

1

لا إله إلا الله ... محمد رسول الله

لو كانت مشاركتي مفيدة و تريد تشجيعي على المزيد من العطاء , فضلا قم بتقييم المشاركة

المعرًف القديم : houssam11350_11350

من مواضيعي : ArabGenCode : مولد كود و إجراءات مخزنة و واجهات لجداول سيكوال سيرفر

مواضيع مشابهة