des data encryption standard

برامج 0 ayman الوسوم:, , ,
Spread the love

فكرة عامة

بدأ ظهور خوارزمية الـ DES في عام 1974 م . وتعتمد هذه الخوارزمية على نظرية المفتاح المتناظر أي استخدام نفس المفتاح عند التشفير وفك التشفير . حجم النص المدخل ثابت (64 bit) أما مفتاح التشفير المستخدم فحجمه (56 bit).

تعمل خوارزمية الـ DES على عدة مراحل :

المرحلة الأولى:

معالجة مفتاح التشفير، حيث يتم في هذه المرحلة استخدام جداول وعمليات متسلسلة يتم فيها استخدام التدوير (Rotation) والتبديل (Permutation) لينتج عنها اخيرا 16مفتاح ليستخدم في المراحل اللاحقة.

المرحلة الثانية:

تطبيق الخوارزمية، في هذه المرحلة يتم استخدام جداول وعمليات متسلسلة يتم فيها استخدام التدوير (Rotation) والتبديل (Permutation) كما في المرحلة السابقة لكنها هنا تتم على النص المراد تشفيره وليس على مفتاح التشفير كما في المرحلة السابقة. تستخدم في هذه المرحلة أيضا جداول الاستبدل (Substitution).

الثالثة والاخيرة:

هي عملية عكسية لجزء مما تم في المرحلة الأولى حيث يتم تبديل النص باستخدام جدول التبديل (Permutation) .. عملية فك التشفير يتم بطريقة معاكسة لعملية التشفير – مع فروق بسيطة جدا – . هناك بعض العيوب في هذه الخوارزمية لكنها عولجت بالاصدار الجديد لها (Triple DES).

مقدمة

عند الحديث عن أمن المعلومات وحمايتها .. يخطر في بال الكثيرين برامج مكافحة الفيروسات، وضع جدران الحماية (Firewall)، استخدام برامج مكافحة التجسس وغيرها من طرق الحماية.
وبالرغم من أهمية هذه الطرق إلا انها لا تعتبر وسيله فعالة لعلاج التجسس وسرقة المعلومات .. فكان لابد من إضافة حماية اكثر وكان ذلك عن طريق فكرة التشفير.

ماهو التشفير؟

التشفير هو عبارة عن تحويل البيانات والمعلومات من شكل لآخر باستخدام خوارزميات رياضية تحفظ سرية البيانات أثناء انتقالها من مكان لآخر.. وعند وصولها للمستقبل تتم عملية فك التشفير[1].
من انواع التشفير المستخدمة حاليا: DES وهو ماسنتحدث عنه في هذا المقال.

ماهو الـ DES؟

بدأ ظهور الـ DES(اختصار لـ Data Encryption Standards)في عام 1974 عن طريق تعاون بين شركتي IBM وحكومة الولايات المتحدة الامريكيه .. كان الغرض من صياغة هذه الخوارزمية الجديدة هو الحصول على طريقة ذات سرية عالية ، سهلة الفهم والاستخدام ، متوسطة التكلفة لاستخدامها أثناء نقل البيانات من مكان لآخر.

وفي عام 1977 م تم اختيار الـ DES كمعيار للتشفير دولياً من قبل المعهد الدولي للمعايير الاستراتيجية(National Institute Standard NIST)[2][3]
يستخدم الـ DES نظرية المفتاح المتناظر (symmetric key) مما يعني ان المفتاح الذي يستخدمه المرسل لتشفير الرسالة هو نفس المفتاح الذي يستخدمه المستقبل لفك تشفير الرسالة.

مبادئ الـ DES

تعمل خوارزمية الـ DES على ادخال نص بحجم ثابت (64 bit)ثم يمرر بمجموعة من العمليات المعقدة ليتحول إلى نص آخر له نفس الحجم (64 bit ) .. مفتاح التشفير (cipher key) ايضأ مكون من (64 bit ) يستخدم منها (56 bit ) فقط أما الباقي فيستخدم للتحقق من صحة المفتاح (parity bit) أي أن حجم المفتاح الفعلي (56 bit) فقط. [1]

سرية الـDES

1- حجم المفتاح:

الـDESكغيره من الخوارزميات .. تعتمد سرية البيانات فيه على سرية المفتاح المستخدم في التشفير وليس على خوارزمية التشفير نفسها .. وكما أسلفت سابقا أن حجم المفتاح في الـ DES = 56 bit مما يعطينا (7 * 1015) احتمال للمفتاح الواحد .. للوهلة الأولى قد يبدو هذا الرقم كبيرا لكن مع التطور الهائل في المعالجات في هذا الوقت أصبح من الممكن اكتشاف المفتاح المستخدم بسهولة ومن ثم معرفة النص المرسل .. لذا قد يكون صغر حجم المفتاح عيباً أساسيا في هذه الخوارزمية لكن تم تعديله في النسخة المطورة منه (Triple DES).[4]

2- المفتاح الضعيف (Weak key):

هو المفتاح الذي يعطي نتيجة تشفير غير مقبولة .. أي أنه يمكن اختراقها بسهولة كونها تعمل على تكوين ترتيب معين أو تسلسل معين يسهل كشفه من قبل المخترق.

هناك 4 مفاتيح ضعيفه في الـ DES ..وهي إما ان تكون جميع الـ bits في المفتاح عبارة عن الرقم 0 .. أو عبارة عن الرقم 1 .. أو نصفها من الرقم 0 والنصف الآخر من الرقم 1.[5]

كيف يعمل الـ DES؟

تعمل خوارزمية الـ DES على حسب الترتيب التالي:

  • معالجة مفتاح التشفير
  • تطبيق الخوارزمية
  • تحضير النص المشفر

والآن نتكلم عن كل مرحلة بشيء من التفصيل.

أولاً: معالجة مفتاح التشفير:

الخطوة الأولى:

نقوم بتمرير المفتاح(64 bit) بجدول يسمى –اختيار البديل- او اختصارا (PC-1).

des-1

يعمل هذا الجدول على إيجاد مواقع الـ bits في المفتاح الجديد .. فمن خلال الجدول نستطيع معرفة الموقع الجديد للـ bit رقم 34 مثلا . نبحث عن الرقم 34 في الجدول .. نلاحظ انه يقع في الصف رقم 8 وفي العمود رقم 4.. نقوم بجمع الرقمين (8+4=12) إذا الـ bit رقم 34 في المفتاح القديم سيكون موقعها 12 في المفتاح الجديد.. وهكذا إلى أن نصل الى مفتاح تشفير جديد بحجم 56 bit (الـ 8bitsالباقية ألغيت لأنها تستخدم للتحقق من صحة المفتاح كما ذكرت سابقا).

الخطوة الثانية:

في هذه الخطوة نقوم باستخدام المفتاح المستخرج من الخطوة السابقة لإيجاد 16 مفتاح تشفير مختلف لتستخدم لاحقاً أثناء تطبيق الخوارزمية .. وتتكون هذه الخطوة من عدة خطوات تعاد 16 مره لإنتاج 16 مفتاح تشفير(16 round):

1- نقوم بتقسيم المفتاح (56 bit)إلى جزئين متساويين .. كل منهما عبارة عن (28 bit) .. نسمي الجزء الاول من جهة اليمين R والجزء الآخر L.

2- نقوم بتدوير الجزءR(Rotation)إلى اليسار بمقدار حسب الجدول (Subkey Rotation Table) .. ونقوم بنفس العملية للجزء L أيضا إلى اليسار. (Round number يعني رقم الدورة)

des-2

3- نقوم بدمج L و R للحصول على مفتاح واحد.

4- نمرر المفتاح المستخرج من خطوة رقم -3- بالجدول (PC-2) والذي يعمل بنفس طريقة الجدول (PC-1) .. وبذلك نحصل على أول مفتاح K[1].

des-3

5- نقوم بتكرار الخطوات السابقه (من 1 – 4 )16 مرة حتى نصل إلى K[16].

ثانيا:تطبيق الخوارزمية:

الخطوة الأولى:

نقوم بتمرير النص المكون من 64 bit بجدول يسمى –التبديل المبدئي- أو اختصارا (IP).

des-4

وبنفس طريقة الجدول (PC-1) نقوم باستخراج النص الجديد المكون من 64 bit (في حالة كان النص اقل من 64 bit نقوم بإضافةbits إضافية ليكمل 64 bit).

الخطوة الثانية:

نقوم بتقسيم النص (64 bit)إلى جزئين متساويين .. كل منهما عبارة عن (32 bit) .. نسمي الجزء الاول من جهة اليمين R والجزء الآخر L لتستخدم في الخطوة اللاحقة.

الخطوة الثالثة:

نقوم بتكرار الخطوات التالية 16 مرة لتكوين 16 دورة (Round).

1- نمررR[n](حيث n هو رقم الدورة )بالجدول (E-Bit Selection Table) والذي يعمل بنفس طريقة الجدول (PC-1).

des-5

الفرق بين هذا الجدول والجداول السابقة أن الرقم هنا من الممكن أن يتكرر أكثر من مرة .. فمثلاً الرقم 1 والرقم 4 تكررا مرتين .. هذه العملية ستجعل عدد الـbits يزيد من (32 bit) إلى (48 bit).

2- نقوم بعملية (XOR )للنص من الخطوة رقم -1- ولنسمه مثلا y مع k[n] المستخرج من مرحلة معالجة مفتاح التشفير .(yXORK[n])

3- نقوم بتقسيم الناتج من خطوة -2- الى 8 أجزاء . كل منها عبارة عن (6 bit) . نسميها من اليسار إلى اليمين B[1] , B[2] ,…., B[8]

4- في هذه الخطوة سنستخدم مجموعة من الجداول تسمى -جداول التبديل- (Substitution Box) او اختصارا (S-Box) .. وهي عبارة عن 8 جداول مرقمة من S1 إلى S8 ..نبدأ بأول جدول S1

des-6

الآن نأخذ B[1] من الخطوة رقم -3- . تتكون B[1] من 6 bits كما ذكرنا سابقا .. نقوم بأخذ اول وآخر bitفيها وندمجها لتكون رقم واحد يتراوح مابين 0 – 3 يمثل رقم الصف .. ثم نأخذ باقي الـ bits وندمجها لتمثل رقم واحد يتراوح مابين 0 – 15 يمثل رقم العمود ثم نأخذ الرقم الذي يقع في تقاطعهما في الجدول . فمثلا لو كانت B[1] = 011101 سيكون رقم الصف = 01 = 1 ، ورقم العمود = 1110 = 14 . إذا سيكون الناتج الرقم 3 = 0011.

وبنفس الطريقة لـ B[2] مع S2 ، B[3] مع S3 ,….., إلى B[8] مع S8.

وهذه هي الجداول من S2 إلى S8

des-7

des-8

des-9

des-10

des-11

des-12

des-13

5- بعد الخطوة -4- نكون قد حصلنا على 8 أرقام كل منها عبارة عن 4bits نقوم بدمجها مع بعضها البعض لتكون رقما واحدا مكونا من 32 bit .. نقوم بتمرير هذا الرقم على جدول –التبديل- أو اختصارأ (P) .. والذي يعمل بنفس طريقة الجدول (PC-1).

des-14

6- نقوم بعملية (XOR )للناتج من الخطوة رقم -5- ولنسيمه y مثلا مع k[n] المستخرج من مرحلة معالجة مفتاح التشفير (y XOR k[n]). الناتج من هذا العملية نسميهR[n+1] .. ونضع قيمة R[n] في المتغيرL[n+1] ليستخدمان في الدورة التالية.

7- في هذه الخطوة سيكون لدينا R[n+1] و L[n+1] جاهزتان للاستخدام في الدورة التالية . نقوم بزيادة قيمة الـ n بواحد ونعيد الخطوات السابقة من 1 – 7 إلى أن نصل إلى n = 16 لنكمل الـ 16 دورة (Round).

بعد ان نعيد الخطوات السابقة سنصل لقيمة R[16] و L[16] نقوم بدمج هذين الرقمين لتكوين رقم واحد بحيث يشغل R[16] جهة اليسار و L[16] جهة اليمين . الآن تكون لدينا رقم واحد من 64 bitوهو النتيجة قبل النهائية (pre-output).

ثالثا: تحضير النص المشفر

تعتبر الخطوة الأخيرة في تشفير النص وذلك بتمريره على جدول يسمى – معكوس التبديل المبدئي- أو اختصارا (IP-1).. هذا الجدول هو المعكوس لجدول IP الذي استخدمناه في مرحلة تحضير النص.

des-15

ونستخدم نفس الطريقة التي استخدمناها سابقا في الجدول (PC-1) .. وبذلك يخرج لنا النص مشفرا جاهزا لعملية الإرسال. [3][6][7]

فك التشفير

فك التشفير في خوارزمية الـ DES يتم بنفس طريقة التشفير .. أي أنه يمر بالخطوات نفسها وبالترتيب نفسه .. الاختلاف الوحيد يكون في المرحلة الثانية –تطبيق الخوارزمية-في الخطوة الثالثة نقوم باستخدام المفاتيح بالمعكوس .. ففي أول دورة نستخدم المفتاح k[16] بدل k[1] وفي الدورة الثانية نستخدم k[15] بدل k[2] وهكذا . [6]

الخلاصة

يعمل الـ DES على إدخال وإخراج نص ثابت بحجم (64 bit) وتشفيره بمفتاح من (56 bit) .. تمر خطوات التشفير بثلاث مراحل : المرحلة الأولى :معالجة مفتاح التشفير، حيث يتم انتاج 16 مفتاح مختلف من مفتاح واحد مدخل . المرحلة الثانية : تطبيق الخوارزمية ، يتم فيها تحضير النص ومن ثم دمجه مع مفتاح التشفير. المرحلة الثالثة : تحضير النص المشفر ، حيث تتم عملية عكسيه لما تم في المرحلة الأولى. ولأن الـDES يتسخدم نظرية المفتاح المتناظر ، فك التشفير يتم بطريقة معاكسه للتشفير مع وجود بعض الاختلافات البسيطة.

الكاتب ayman

ayman

مواضيع متعلقة

اترك رداً