
AES الموسع من Protectstar
حجم الكتلة: ٥١٢ بت (٦٤ بايت)
أحجام المفاتيح: ١٢٨، ٢٥٦ و٥١٢ بت (١٦، ٣٢ و٦٤ بايت) (الافتراضي ٢٥٦ بت)
أوضاع التشغيل: ECB، CBC، CFB، OFB وCTR (الافتراضي CTR)
عدد الجولات: ٢٤
الملخص
توضح هذه الوثيقة تفاصيل النسخة الموسعة من خوارزمية التشفير AES التي تستخدم طول كتلة ثابت ٥١٢ بت وثلاثة أطوال ممكنة للمفاتيح: ١٢٨، ٢٥٦ أو ٥١٢ بت.
١. الدافع
يستخدم معيار AES طول كتلة رسائل يبلغ ١٢٨ بت (أي ١٦ بايت) وطول مفتاح يبلغ ١٢٨ بت. كما يدعم AES أطوال المفاتيح ١٩٢ و٢٥٦ بت. بالنسبة لتركيبة ١٢٨/١٢٨ (الكتلة/المفتاح)، يمكن تمثيل كتلة الرسائل والمفتاح كمصفوفة ٤×٤. كل خلية في المصفوفة تمثل بايتًا واحدًا، و٤×٤ = ١٦ خلية، أي ١٦ بايت، ما يعادل ١٢٨ بت.
وبالمثل، في AES الموسع نستخدم مصفوفة ٤×١٦ (٤: عدد الصفوف، ١٦: عدد الأعمدة) لتمثيل كتل الرسائل والمفاتيح الدورية. يستخدم AES الموسع بعض خصائص ووظائف AES الأصلي تمامًا (مثل إضافة المفتاح الدوري، خلط الأعمدة، إلخ)، بينما هناك خصائص ووظائف محددة لـAES الموسع (مثل عدد الجولات الكلي، إزاحة الصفوف، إلخ).
في الأقسام التالية، سيتم شرح الخصائص والوظائف المستخدمة في كل من AES الأصلي والموسع بالتفصيل.
٢. أوضاع التشغيل
تم تنفيذ جميع أوضاع التشغيل المدعومة في AES الأصلي (أي Electronic Code Book (ECB)، Cipher Block Chaining (CBC)، Cipher Feedback (CFB)، Output Feedback (OFB) وCounter (CTR)) أيضًا في AES الموسع.
٣. عدد الجولات الكلي
لتشفير وفك تشفير كتلة واحدة، يطبق خوارزم AES الأصلي وظائفه في ١٠ جولات. يتم حساب هذا العدد ١٠ باستخدام الصيغة التالية:
عدد الجولات = (طول المفتاح أو الكتلة بالكلمات) + ٦
الرقم الثابت ٦ تم تحديده من قبل مصممي AES وفقًا للهجمات المعروفة. إذا كان طول المفتاح ٢٥٦ بت، فهناك حاجة إلى ١٤ جولة (٨+٦).
بالنسبة لـAES الموسع، فإن طول الكتلة ثابت عند ٥١٢ بت، ما يشكل ١٦ كلمة، حيث أن كل كلمة = ٤ بايت. العدد الكلي للجولات محسوب كـ ٢٢ باستخدام الصيغة أعلاه. لكن نحتاج فعليًا إلى جولتين إضافيتين بسبب عملية ShiftRow كما سيتم شرحه لاحقًا. وبالتالي، يطبق AES الموسع ٢٤ جولة لتشفير وفك تشفير كتلة واحدة.
٤. الحشو
عملية الحشو شائعة جدًا لملء كتل الرسائل والمفاتيح في الشفرات الكتلية. في AES الموسع، نحتاج إلى حشو كل من الرسائل والمفاتيح.
٤.١ حشو الرسالة
يجب أن يكون طول الرسائل المدخلة من مضاعفات ٥١٢. نتبع آلية الحشو الموضحة في RFC 1321. وفقًا لهذه الطريقة، بعد البت الأخير في الرسالة، يتم إدراج بت "١"، ثم تُضاف بتات "٠" حتى تصل الكتلة الأخيرة إلى ٥١٢ بت. إذا لم يتبقَ مكان للحشو، تُضاف كتلة جديدة بحجم ٥١٢ بت في نهاية الرسالة.
٤.٢ حشو المفتاح
يدعم AES الموسع أطوال مفاتيح ١٦، ٣٢ و٦٤ بايت. لاستخدام المفتاح، يتم الاعتماد على كلمة مرور من المستخدم. إذا لم تكن الكلمة كافية لملء كتلة المفتاح، يُملأ المتبقي بأصفار. هذه الطريقة كافية لـAES الأصلي، لكنها غير كافية للموسع. فمثلاً إذا كانت كلمة المرور تحتوي على ١٠ بايت فقط من أصل ٦٤، فإن ٥٤ بايت تكون أصفار. وهذا يؤدي إلى توليد مفاتيح دورية كثيرة تحتوي على أصفار. لتجنب ذلك، نطبق تشفير AES الأصلي على كتلة المفتاح بعد ملئها بالأصفار باستخدام مفتاح ثابت وفي وضع CBC. تكون النتيجة هي المفتاح المحشو لتوليد المفاتيح الدورية وتفادي مشكلة الأصفار.
٥. توليد المفاتيح الدورية
يتم توليد المفاتيح الدورية من كتلة المفتاح المحشوة كما هو موضح في قسم "حشو المفتاح". عملية توليد المفاتيح الأصلية (راجع Rijndael Block Cipher Specification، ص١٥) تم تعديلها قليلًا في AES الموسع ويُستخدم الخوارزم التالي:
KeyExpansion(byte Key[4*Nk] word W[Nb*(Nr+1)])
{
for(i = 0; i < Nk; i++)
W[i] = (key[4*i],key[4*i+1],key[4*i+2],key[4*i+3]);
for(i = Nk; i < Nb * (Nr + 1); i++)
{
temp = W[i - 1];
if (i % Nk == 0 || (I % Nk==4 && Nk>6))
temp = SubByte(RotByte(temp)) ^ Rcon[i / Nk];
else if ((i % Nk == 8 || i % Nk == 12) && Nk>6)
temp = SubByte(temp);
W[i] = W[i - Nk] ^ temp;
}
}
٦. الوظائف
يستخدم AES الأصلي أربع وظائف أساسية: عملية xor بين كتلة الرسائل والمفتاح الدوري (AddRoundKey)، واستبدال القيم من جدول (Sbox)، وإزاحة الصفوف (ShiftRow)، وخلط الأعمدة (MixColumn).
١.١.١ AddRoundKey
لا يوجد اختلاف في عملية إضافة المفتاح بين AES الأصلي والموسع.
١.١.٢ SboxSubstitution
عملية استبدال Sbox هي نفسها في النسختين.
١.١.٣ ShiftRow
تختلف عملية إزاحة الصفوف في النسختين. في AES الأصلي تُستخدم الإزاحات {0,1,2,3}، أي أن الصف الأول لا يُزاح، والثاني يُزاح بايت واحد لليسار، والثالث باثنين، والرابع بثلاثة. هذا يؤدي إلى نشر كامل في المصفوفة بعد جولتين.
لكن إذا طُبقت نفس الإزاحات في AES الموسع، لا يتم الوصول إلى الانتشار الكامل إلا بعد ٥ جولات. لذا كتبنا برنامجًا (com.crypt.test.OptimumShiftRow.java) لحساب أفضل الإزاحات ووجدنا أن الإزاحات {0,1,4,5} تحقق الانتشار الكامل بعد ٤ جولات.
١.١.٤ MixColumn
نفس العملية تُستخدم في النسختين، لكن في AES الأصلي هناك ٤ أعمدة فقط، بينما يحتوي AES الموسع على ١٦ عمودًا.
تحميل الشيفرة المصدرية:
Protectstar Extended AES Algorithm (230kb / PDF)
- AES: http://en.wikipedia.org/wiki/Advanced_Encryption_Standard
- Modes of Operation: http://en.wikipedia.org/wiki/Block_cipher_modes_of_operation
- PKCS #5 v2.1: Password-Based Cryptography Standard (RSA Laboratories, October 5, 2006): ftp://ftp.rsasecurity.com/pub/pkcs/pkcs-5v2/pkcs5v2_1.pdf