AES هو معيار التشفير الأمريكي. الجزء الثالث

صورة



مقالات دورة أخرى
AES — . I

ES — . II

AES — . III

AES — . IV

AES — . V.





الدافع لنشر مثل هذه النصوص التفصيلية حول معيار AES هو توفير الفرصة للتعرف على ذلك بالتفاصيل الكافية ليس فقط لتطوير تطبيق برنامج مستقل لخوارزمية التشفير ، ولكن أيضًا لإنشاء خوارزميات للهجمات المشفرة المحتملة على التشفير ، أي لفك تشفير الشفرات دون معرفة المفتاح ...



تلك المنشورات المتوفرة في الشبكة ، لا تحقق هذه الأهداف ، ولا يمكنني استخدامها في عملية تدريب المتخصصين.



أحد المتطلبات الرئيسية القديمة (أو حتى القديمة) للشفرات هو إنشاء خوارزمية تشفير مفتوحة (يمكن الوصول إليها للدراسة) والتفاف حولها (الأوضاع والبروتوكولات وما إلى ذلك) كل شيء باستثناء مفتاح التشفير. المفتاح هو ما يجب الحفاظ عليه بثقة تامة من الجميع. ومع ذلك ، لا يحتوي المفتاح بالضرورة على ختم التوقيع "السري". حد مثل هذا الشرط هو أنه فقط المتلقي للشفرة يمتلك المفتاح ، هو نفسه ، من حيث المبدأ ، يجب أن يحدده.



هذا الشرط غير عملي لأنظمة التشفير المتماثل. وهذا هو الفرق الأساسي بين الأنظمة غير المتماثلة (مفتاحين) والأنظمة المتماثلة ، حيث قد لا يكون مصدر تسرب المعلومات حول المفتاح هو الوحيد. لوحظ سابقًا أن AES هو نسخة مبسطة من تشفير RIJNDAEL ، وهنا سنستخدم النسخة الكاملة في الأماكن.



AES (Key Schedule).



اختيار مفتاح عند تشفير رسالة مهمة مسؤولة. النهج العام هو أنه يتم اختيار ناقل ثنائي عشوائي واستخدامه للمفتاح في مساحة ناقل متعدد الأبعاد. وغالبًا ما يتميز عدد من خوارزميات التشفير والأصفار بوجود مفاتيح ضعيفة أو غير صالحة ، والتي يتم تحديدها إما أثناء تطوير الشفرات أو أثناء تشغيلها أثناء البحث الإضافي الخوارزميات من قبل المؤلفين أو محللي التشفير ، وبالتالي المنشورات حول هذا الموضوع.



وهذا بدوره يفرض قيودًا على إجراء إنشاء المفاتيح ، وهو أمر غير مرغوب فيه لأنه يعقده. تشبه الأسس الرياضية للتشفير إلى حد كبير الأسس الرياضية لتوليد المفاتيح ، ويمكنك القراءة عنها بالتفصيل هنا .



يسمى المتجه الثنائي المختار بمفتاح التشفير ويتم تحويله إلى "مربع" 4 × 4 = 16 بايت. بعد ذلك ، يتم تشكيل مفاتيح دائرية منه باستخدام إجراءين خاصين ، يتم استخدامهما في عمليات التشفير / فك التشفير ، الموضحة بالتفصيل هنا .



أحد الإجراءات يسمى توسيع المفتاح ، والآخر يسمى اختيار المفتاح الدائري. يتم توسيع المتجه العشوائي العشوائي المحدد بطول ثابت. من المهم أيضًا التفكير بعناية في اختيار مستشعر رقم عشوائي ، وإجراء اختباره واختباره.



توسيع المفتاح



يتكون الشعور بتوسيع المفتاح الأصلي (المحدد) من تقسيمه إلى كتل (32 بت لكل منها) ثم توليد العديد من الكتل الجديدة بنفس الطول لكل جولة.

لذا ، دع مفتاح التشفير المحدد (128 بت) AES = 2b 7e 15 16 28 ae d2 a6 ab f7 15 88 09 cf 4f 3c ، لـ Nk = 4 ، والذي يتم تمثيله في كتل من 4 بايتات وملحقه الدائري الأولي هو w [0 ] = 2b7e1516 ؛ ث [1] = 28aed2a6 ؛ w [2] = abf71588 ؛ ث [3] = 09cf4f3c. يشير الرمز w [i] في جدول QC ، i = 0 (1) 43 ، إلى عمود من 4 بايت من المفتاح الدائري.



جلسة التشفير هي التحضير والتحويل الخوارزمي للرسالة ، مثل الرسالة. ينقسم نص الرسالة في تمثيل البتات إلى كتل ذات طول ثابت Nb = 128 أو 192 أو 256 بت. في AES ، يبلغ طول الكتلة 128 بت فقط.



ثم يتم تمثيل كل كتلة بمربع أو (مستطيل بأربعة أسطر) ويتم تشفيرها بشكل منفصل لعدد ثابت من الجولات Nr = Nr (Nb ، Nk) ، وهي وظيفة لمتغيرين: طول الكتلة Nb وطول المفتاح Nk ، والتي يمكن أن تأخذ قيمًا بشكل مستقل 128 ، 192 ، 256 بت.



لا يفرض اختيار مفتاح التشفير أي قيود على تسلسل البت نفسه. تستخدم كل جولة من جولات Nr مفتاحها الدائري المُشكَّل مسبقًا أو المحسوب مباشرةً {w [i]}.



يتم إنشاء المفاتيح المستديرة من مفتاح التشفير باستخدام خوارزمية خاصة ، والتي تتضمن إجراء توسيع المفتاح وإجراء تحديد المفتاح المستدير. تعيين مفاتيح مستديرة مباشرة ، تجاوز هذه الإجراءات ، أمر غير مقبول.



جوهر وغرض الإجراء الأول هو تحويل مفتاح تشفير المصدر المحدد إلى مفتاح أطول وموسع (مفتاح موسع). يتم تحديد إجمالي عدد بتات المفتاح الموسع الذي يتم اختيار المفاتيح المستديرة منه بواسطة المنتج K = Nk (Nr + 1) - يتم ضرب عدد بتات كتلة المفتاح في عدد الجولات التي يتم زيادتها بمقدار واحد.



مثال 1 . دع Nb = Nk = 4 ، يتم إعطاء الكتل بطول 4 × 32 = 128 بت ، ثم Nr = 10.

الطول K بالبت للمفتاح الموسع K = 128 ∙ 11 = 1408 بت.



الإجراء الثاني (RoundKey Selection) هو اختيار متسلسل 32Nk ، أي 4 كلمات 32 بت من المفتاح الموسع ، أي أن مفتاح الجولة الأولى يتم تمثيله بالكلمات Nk الأولية التي تم تشكيلها حديثًا ، ويتم تمثيل مفتاح الجولة الثانية بالكلمات Nk التالية ، وهكذا حتى الجولة الأخيرة.



مثال 2... باستخدام نفس البيانات الأولية (انظر المثال السابق) ، يحتوي الطول الإجمالي للمفتاح الموسع بالبايت على Nk (Nr + 1) = 4 ∙ 11 = 44 كلمات رباعية البايت W (i) ،

i = 0 (1) Nk (Nr + 1) - 1 يتم ترقيم صفوف QC بأرقام طبيعية. السطر الأول مرقم 4 ، حيث أن 4 أسطر (مرقمة 0،1،2،3) مع مفتاح التشفير غير مدرجة في جدول مراقبة الجودة.



مفتاح تشفير الجدول AES لجميع الجولات العشر (انظر جدول مراقبة الجودة أدناه).







تنقسم صفوف الجدول إلى مجموعات (4 صفوف لكل منها). في كل مجموعة ، يتم ملء جميع الحقول في سطر علوي واحد فقط. في الأسطر الثلاثة التالية ، يتم ملء الحقول المتطرفة (اليسرى واليمنى) فقط. يحتوي الحقل الأيسر ( درجة الحرارة ) للخطين التاليين والخطين اللاحقين على القيم المأخوذة من الحقل الأيمن للخط فوقه.



دعنا نعطي مثالاً لملء الصف الأول بالرقم i = 4 من جدول مراقبة الجودة. العمود الأيسر - تبدأ أرقام الأسطر الحالية بالقيمة (4) حيث لا يتم تضمين قيم 0،1،2،3 الأولى في الجدول. بشكل عام ، يعمل المؤشر (رقم السطر) i على القيم i = 0 (1) Nk (Nr + 1) -1 أو i = 0 (1) 43 بإجمالي 44 كلمة من 32 بت.



إلى العمود المؤقتالقيمة w [i-1] = 09cf4f3c موضوعة بالتناوب (التحول الدوري لبايت واحد) RotWord () نحصل على القيمة CF4F3C09 ، التي يتم وضعها في العمود الثالث. يحتوي العمود الرابع على نتيجة استبدال 8A84EB01 بايت بايت من القيم من العمود الثالث ، أي CF → 8A ؛ 4F → 84 ؛ 3C → EB؛ 09 → 01 => 8A84EV01.



يتم تعبئة كل صف رابع من الجدول في العمود الخامس بالقيمة Rcon [i / Nk] ، وهو ثابت محسوب بالصيغة Rcon (J) = 01000000 ، j = [i / Nk] = 2 j-1 = 2 0 = 1) تتم كتابة القيمة 01 00 00 00 من 4 كلمات بايت ، أول بايت منها 2 0 = 1 ، أي 0000 0001 2 ، البايتات المتبقية من هذه الكلمة ذات 32 بت هي صفر.



يحتوي حقل العمود 6 على مجموع (XOR) للحقليين الرابع والخامس 8A84EB01 + 01000000 = 8B84EB01 ؛

يحتوي حقل العمود 7 على W [i - Nk] = W [4 - 4] = W [0] = 2B7E1516 ؛

يحتوي الحقل العمود 8 على مجموع حقول الأعمدة 6 و 7 W [i = 4] = 884EB01 + 2B7E1516 = A0FAFE17 ؛

والآن سننظر في الإجراءات المذكورة بالتفصيل وبالتفصيل.



إجراء توسيع المفتاح



دعونا نفكر بالتفصيل في إجراء توليد مفتاح موسع من مفتاح التشفير الأصلي. سيتم وصف المفتاح الموسع رسميًا W بتسلسل الكتل W [i] ، i = 0 (1) Nk (Nr + 1) -1 ، الكلمات 4 بايت (المفاتيح المستديرة) الموجودة في العمود الأخير من جدول مراقبة الجودة ، حيث يكون Nk الأول 32 بت تمثل الكلمات المفتاح الأصلي ، أي

W = {W [0] ، W [1] ، W [2] ، W [3] ، W [4] ، ... ، W [K-1]}



اللاحقة i-th يتم تشكيل الكلمات بشكل متكرر من الكلمات السابقة وفقًا لتعبير يكون فيه الجمع XOR.



...



بالنسبة للكلمات W [i] للمفتاح ، والتي يكون فهرسها مضاعفًا لـ Nk ، تخضع قيم W [i-1] إلى تحويل إضافي قبل تنفيذ عملية XOR. يوصف هذا التحول على النحو التالي.



يحتوي وصف التحويل على وظائف:



RotWord () - تحول دوري بايت لكلمة 32 بت a (0) a (1) a (2) a (3) وفقًا للقاعدة

{a (0) a (1) a (2) a (3)} → {a (3) أ (0) أ (1) أ (2)} ؛



SubWord () - استبدال البايت a (j) بعناصر من مربع S للدالة SubBytes () ، على سبيل المثال ، يتم استبدال البايت (af) بالبايت s (a، f) من S-box ؛ الإجراء هو نفسه عند معالجة رسالة ،

Rcon [j] - مصطلح XOR يساوي 2 j-1 .





المواضع المميزة التي هي مضاعفات Nb ، والتي يتم تشكيل قيمها باستخدام وظائف SubWord () و RotWord () و Rcon (). يتم تعبئة المراكز W [0] –W [3] وفقًا للبيانات الأولية المحددة ، ويتم حساب جميع المواقع اللاحقة وفقًا لنسبة W [i].



اختيار مفتاح الجولة



اختيار المفتاح الدائري (RoundKeySelection). للجولة الحالية بالرقم r. يتم تحديد المفتاح الدائري على أنه {W [Nb (r) -1] ، ... ، W [Nb (r + 1) - 1]} ،

r = 1 (1) Nr.



نلاحظ هنا أن خوارزمية التشفير العامة توفر خيارات مختلفة لمجموعات المتغيرات Nb و Nk و Nr. من أجل تنفيذ محدد لإصدار ثابت ، يمكن تبسيطه بشكل كبير. يمكن حساب المفتاح الدائري بشكل فوري ، والذي لا يتطلب ذاكرة كبيرة لتخزين التسلسل بالكامل W. يمكنك تحديد نفسك بمخزن مؤقت لكلمات Nk.



مثال 3 . دعونا نشرح الافتراضات النظرية أعلاه بمثال رقمي. دع ، كما كان من قبل ، Nb = Nk = 4 ، Nr = 10. يتم إعطاء مفتاح التشفير كتسلسل سداسي عشري K = 2b7e1516 282ed2a6 abf71588 09cf4f3c







تحدد العمارة "المربعة" والحوسبة الموجهة بالبايت شكل عرضها في الجدول التالي.





يضاف العمود الأيسر في الجدول - رقم (ص) للجولة.في

السطر الأول r = 1 ، i = 4 ، البايت السابق W [i-1] = W [3] مكتوب في العمود الثالث. البايت الأخير من مفتاح التشفير K. نظرًا لأن الفهرس i = 4 هو مضاعف Nk = 4 ، فإننا في العمود 6 نكتب (Rcon (J) = 01000000 ، j = [i / Nk] = 2 j-1 = 2 0 = 1) القيمة 01 00 00 00 4- كلمة x بايت ، البايت الأول منها 2 0 = 1 ، أي 0000 0001 ، البايتات المتبقية من هذه الكلمة ذات 32 بت هي صفر.



في العمود الرابع من الجدول ، نقوم بإدخال القيم من العمود السابق ، ولكن يتم إزاحتها دوريًا بمقدار 1 بايت إلى اليسار (تدوير الكلمات - RotWord). يحتوي العمود الخامس على نتيجة استبدال البايت لقيم العمود السابق بقيم البايت من كتلة S (دالة SubWord - استبدال البايت). بعد ذلك ، يتم إجراء إضافة mod2 (XOR) لمحتويات العمودين 5 و 6 ، 8a84eb01 + 0100 0000 = 8b84eb01 ، ويتم إدخال نتيجة الجمع في العمود 7.



في التمثيل الثنائي للبايت 0000 0001 2 = 01 ، توجد 16 بت الأقل أهمية على اليمين.



يحتوي العمود 8 على قيمة الكلمة W [i-Nk] = W [0] (بالنسبة للسطر الأول ، هذه هي قيمة الكلمة الأولى 4 بايت من مفتاح التشفير W [0]) ، والتي تتم إضافتها بواسطة عملية XOR 8b 84 eb 01+ 2b 7e 15 16 = a0 fa fe 17 بمحتويات 7 أعمدة. نتيجة الجمع (العمود 9) هي بالتحديد الكلمة الأولى من الكلمات الأربع ، 4 بايت من مفتاح الجولة للجولة الأولى.



يتم تشكيل الكلمات الثلاث الأخرى للمفتاح المستدير للجولة الأولى دون استخدام وظيفة التحول الدوري والاستبدال و Rcon [j] ، نظرًا لأن أعدادها ليست مضاعفات Nk. يتم نقل محتويات العمود 9 إلى العمود الثالث من الصف التالي من الجدول.



تعريف Rcon [ي]. يتم تنفيذ هذا الإجراء وفقًا لخوارزمية خاصة ، سنوضح إجراءاتها بالأمثلة. الوسيطة j للدالة Rcon [j] هي عدد صحيح ويتم تحديدها من خلال القيمة الحالية للمتغير i - رقم الكلمة الرئيسية. من الواضح أن

j = 1 ، 2 ، 3 ، ... لـ i = Nk ، 2Nk ، 3Nk ، ....



نظرًا لأن Nk في مثالنا هو 4 ، فلدينا قيم صحيحة لـ j لـ i = 4 ، 8 ، 12. علاوة على ذلك ، لكل عدد صحيح j ، Rcon [j] = 2 j-1 = 1 ، 2 ، 4 ، 8 ، 16 ، ....

يُسمح بمضاعفة القيم طالما أن Rcon [j] هو عنصر في حقل GF (2 8 ).



من أجل i> 32 نحصل على j> 8. يجب إعادة القيم خارج الحقل إلى الحقل. يتم تحقيق ذلك عن طريق تقليل التمثيل متعدد الحدود لعناصر المجال Rcon [j] (modφ (x)).



مثال 4... دع i = 32 ، 36 ، 40. ثم j = 8 ، 9 ، 10. هذه القيم خارج المجال. نعيدها إلى الحقل عن طريق الحد المعياري x (x) وحساب القيم المطلوبة.

دعونا نحدد القيم المقابلة ل Rcon [j]. يتم جدولة نتائج الحسابات.





هذا يكمل مراجعة خطوات توليد مفاتيح التشفير AES المستديرة.



All Articles