معيار التعمية المتقدم

من أرابيكا، الموسوعة الحرة
(بالتحويل من ايه اي اس (تعمية))
اذهب إلى التنقل اذهب إلى البحث
معيار التعمية المتقدم
Advanced Encryption Standard
خطوة SubBytes، وهي واحدة من الخطوات الأربعة لدورة معيار التشفير المتقدم

معلومات عامة
اختصار AES
المطورون فنسنت ريجمين [English] وجوان دايمن [English]
تاريخ النشر 1998
اشتقت من سكوير [English]
اشتق منها كريبتون [English]، أنوبيس [English]، جراند كرو [English]
معلومات التشفير
طول المفتاح [English] 128 أو 192 أو 256 بت
طول المجموعة [English] 128 بت
البنية شبكة الاستبدال والتبديل [English]
عدد الدورات 10 أو 12 أو 14 (اعتمادًا على طول المفتاح)
أفضل تحليل شيفرة عام
تحليل الشيفرة قد يؤدي هجوم المفاتيح ذات الصلة [English] إلى تقسيم ما يصل إلى 9 دورات من 256 بت معيار التشفير المتقدم

معيار التعمية المتقدم أو معيار التشفير المتقدم[1][2] (بالإنجليزية: Advanced Encryption Standard)‏ ويُدعى اختصارًا إيه إي إس (AES)، هو طريقة تشفير رسمية تبنتها NIST (المركز القومي للمعايير والتكنولوجيا وهو فرع في حكومة الولايات المتحدة).[3][4][5] هذه الخوارزمية لاقت قبولاً واسعاً في العالم إذ أنها تُعتبر طريقة آمنة للتشفير وذلك بسبب طول مفتاح التشفير. هذه الخوارزمية هي تطوير لافكار ظهرت في DES.

تاريخ

في عام 1997 بدأت NIST بالبحث عن بديل ل-DES وذلك لان DES كان يُعتبر بشكل واسع آنذاك انه غير آمن وذلك بسبب تطوير وسائل متطورة لكسر هذه الوسيلة، وقد كانت التسعينات نهاية DES حيث أنه Wiener في بداية التسعينيات أعلن عن آلة بقيمة 1000000 دولار لكسر DES في 3.5 ساعات فقط ! كل هذا ساهم بالاساس في الإعلان عن إصدار معيار تشفير اقوى، وقد كان إحدى أهداف هذا البحث هو الإعلان عن بديل يُستخدم بشكل عام ولا يقتصر على الجيش، ولاجل هذا دعت كل المتخصصين في علم التعمية لتقديم اقتراحاتهم وكانت الشروط كالتالي:

  1. يجب أن يتم تعريف AES علانية
  2. يجب أن يكون AES خوارزمية تشفير كُتل متماثل (symmetric block cipher).
  3. يجب تصميم AES بحيث أن طول المفتاح يمكن أن نطوله حسب الحاجة.
  4. يمكن برمجة AES بواسطة البرمجيات والعتاد الصلب للحاسوب (software and hardware)
  5. يجب على ِAES ان يكون مُتاح مجانا أو مُتاح بتناسق مع سياسة ANSI لبراءة الاختراعات
  6. الخوارزميات التي تتماشى مع النقاط السابقة سيتم اختبارها بناء على المعايير الآتية:
    1. الأمان: أي مدى مقاومته للأساليب المعروفة لكسر خوارزميات التشفير.
    2. جودة الحساب: أي قياس الزمن اللازم للتشفير وكلما كان اقل كانت الخوارزمية أكثر جودة.
    3. مُتطلبات الذاكرة: أي سعة الذاكرة الإلكترونية المستخدمة في تنفيذ الخوارزمية.
    4. ملاءمة الخوارزمية للبرمجيات والعتاد الصلب للحاسوب.
    5. بساطة الخوارزمية.
    6. مرونة الخوارزمية.
    7. متطلبات الترخيص.

ولاحقا تم تحديد طول (المفتاح، الكتلة) الذي من المفترض ان يقدمها AES وهي: (256,128),(192,128),(128,128).

والمسابقة كانت على مرحلتين في المرحلة الأولى تقدمت 15 خوارزمية وفي عام 1999 تم اختيار 5 خوارزميات للتصفيات وهي:

  1. MARS
  2. RC6
  3. RIJNDEAL
  4. SERPENT
  5. TWOFISH

وفي تشرين أول من عام 2000 تم اختيار RIJNDEAL ليكون بديل DES وقد تم تغيير اسمه ل- AES وفي تشرين ثاني من عام 2001 أصبح معيارا رسميا (FIPS 197). مُخترعي هذا المعيار هما دايمن ورامين (Daemen and Rijmen)

رايندول

رايندول هو خوارزمية تشفير كتل وهو يدعم أطوال مفاتيح وأطوال نصوص متعددة. مفتاح التشفير k هو مصفوفة ذات أبعاد 4×Nk (أي طول المفتاح هو 4Nk بايت):

k_=(k0,0k0,1k0,Nk1k1,0k1,1k1,Nk1k2,0k2,1k2,Nk1k3,0k3,1k3,Nk1)

حيث كل ki,j يمكن اعتباره:

  • 8 بِْتْ أو 1 بَايْتْ أي انه عدد في المجموعة Z2,8
  • عدد صحيح في المجموعة Z256

طول المفتاح في خوارزمية رايندول يمكن أن يكون Nk=4,6,8(128,192,256) بايت.

قراءة مفتاح التشفير من المصفوفة تكون حسب كل عامود من اليسار إلى اليمين أي:

k_=(k0,0,k1,0,k2,0,k3,0,,k0,Nk1,k1,Nk1,k2,Nk1,k3,Nk1)

الكتلة أو النص الذي نريد تشفيره x_ هو مصفوفة ذات اطوال 4×Nb (أي طول المفتاح هو 4Nb بايت):

x_=(x0,0x0,1x0,Nb1x1,0x1,1x1,Nb1x2,0x2,1x2,Nb1x3,0x3,1x3,Nb1)

حيث كل xi,j يمكن اعتباره:

  • 8 بِْتْ أو 1 بَايْتْ أي انه عدد في المجموعة Z2,8
  • عدد صحيح في المجموعة Z256

الكتلة في خوارزمية رايندول يمكن أن تكون Nb=4,6,8(128,192,256) بايت.

قراءة الكتلة من المصفوفة تكون حسب كل عامود من اليسار إلى اليمين أي:

x_=(x0,0,x1,0,x2,0,x3,0,,x0,Nk1,x1,Nk1,x2,Nk1,x3,Nk1)

وضعية رايندال ω هو المصفوفة:

ω_=(ω0,0ω0,1ω0,Nb1ω1,0ω1,1ω1,Nb1ω2,0ω2,1ω2,Nb1ω3,0ω3,1ω3,Nb1)

حيث كل ωi,j هو عدد صحيح في Z256 .

رايندول هو تركيب تحويلات (Transformations) على وضعيات رايندول وهذه التحويلات سنسميها الدورات (iterations) أي: RIJ(x_)=y_=(TNrTNr1TN1TN0)

كل Ti:ωω أي أن المجال والمدى هو وضعيات رايندول،

عدد الدورات (Nr)يتعلق بطول المفتاح (Nk) وطول النص (Nb):

عدد دورات رايندول (Nr)
Nb=4 Nb=6 Nb=8
Nk=4 10 12 14
Nk=6 12 12 14
Nk=8 14 14 14

الدورة الأولى T0 هو XOR بين النص (الوضعية الأولى) وبين مفتاح التشفير أي:

T0(x)=(k0,0k0,1k0,Nk1k1,0k1,1k1,Nk1k2,0k2,1k2,Nk1k3,0k3,1k3,Nk1)(x0,0x0,1x0,Nk1x1,0x1,1x1,Nk1x2,0x2,1x2,Nk1x3,0x3,1x3,Nk1)

الدورات التي تأتي بعد هذا سوف تُعنى بتحويل الوضعية الحالية، ولتتم هذا الخوارزمية تفعل هذا في مراحل:

  1. عملية الخلط الخطية - التحويلات هي ShiftRow و- MixColumn  ;
  2. العملية غير الخطية - وهي التحويلة ByteSub  ;
  3. عملية إضافة المفتاح - التحويلة AddRoundKey .

حتى نُظهر المُعمى يكفي ان نقلب التحويلات أي: RIJ1(y_)=x_=(TN01TN11TNr11TNr1)

عملية الاستبدال

عملية استبدال البايت هي مصفوفة S ثابتة دائما (أي عندما نريد التشفير عملية الاستبدال تتم من خلال هذا الصندوق دوما) والاستبدال يتم وفقا للمصفوفة التالية:

word8 S[256] = {

99, 124, 119, 123, 242, 107, 111, 197, 48, 1, 103, 43, 254, 215, 171, 118,

202, 130, 201, 125, 250, 89, 71, 240, 173, 212, 162, 175, 156, 164, 114, 192,

183, 253, 147, 38, 54, 63, 247, 204, 52, 165, 229, 241, 113, 216, 49, 21,

4, 199, 35, 195, 24, 150, 5, 154, 7, 18, 128, 226, 235, 39, 178, 117,

9, 131, 44, 26, 27, 110, 90, 160, 82, 59, 214, 179, 41, 227, 47, 132,

83, 209, 0, 237, 32, 252, 177, 91, 106, 203, 190, 57, 74, 76, 88, 207,

208, 239, 170, 251, 67, 77, 51, 133, 69, 249, 2, 127, 80, 60, 159, 168,

81, 163, 64, 143, 146, 157, 56, 245, 188, 182, 218, 33, 16, 255, 243, 210,

205, 12, 19, 236, 95, 151, 68, 23, 196, 167, 126, 61, 100, 93, 25, 115,

96, 129, 79, 220, 34, 42, 144, 136, 70, 238, 184, 20, 222, 94, 11, 219,

224, 50, 58, 10, 73, 6, 36, 92, 194, 211, 172, 98, 145, 149, 228, 121,

231, 200, 55, 109, 141, 213, 78, 169, 108, 86, 244, 234, 101, 122, 174, 8,

186, 120, 37, 46, 28, 166, 180, 198, 232, 221, 116, 31, 75, 189, 139, 138,

112, 62, 181, 102, 72, 3, 246, 14, 97, 53, 87, 185, 134, 193, 29, 158,

225, 248, 152, 17, 105, 217, 142, 148, 155, 30, 135, 233, 206, 85, 40, 223,

140, 161, 137, 13, 191, 230, 66, 104, 65, 153, 45, 15, 176, 84, 187, 22

};

مثال: إذا كان العدد الذي نريد استبداله هو 0x19 (حسب نظام العد الستة عشري) حينها يتم استبداله كالتالي: نذهب للسطر الأول العامود التاسع والناتج هو 0x4d أو 212(حسب القاعدة 10) كما هو مبين في الصورة:

عملية ازاحة السطر

وهي عملية تزيح اسطر الوضعية بإزاحة دائرية، وهي تزيح السطر ال-i : i ازاحات يساراً،

SR:ω=(ω0,0ω0,1ω0,2ω0,3ω1,0ω1,1ω1,2ω1,3ω2,0ω2,1ω2,2ω2,3ω3,0ω3,1ω3,2ω3,3)(ω0,0ω0,1ω0,2ω0,3ω1,1ω1,2ω1,3ω1,0ω2,2ω2,3ω2,0ω2,1ω3,3ω3,0ω3,1ω3,2)

خلط العواميد

وهي عملية خلط خطية للعواميد، بمعنى انها تتم بواسطة مصفوفة، وهذه العملية مُعرفة بواسطة عمليات في GF(28) . أي انه لكل عامود

[s0's1's2's3']=[2311123111233112][s0s1s2s3]

الحقل GF(28) مبني على متعدد الحدود x8+x4+x3+x+1 .

طريقة أخرى لتنفيذ العملية هي:

[b0b1b2b3]=[f(a0,a1,a2,a3)f(a1,a2,a3,a0)f(a2,a3,a0,a1)f(a3,a0,a1,a2)]

في حين أَنَّ: f(a0,a1,a2,a3)=(a1a2a3)g((a0a1)<<1) و- g(x)={x11Bx,x100x truex,

مقلوب هذه التحويلة هو أيضا خطي وهو مشابه جدا للعملية نفسها ما عدا اننا نكتب d مكان f :

d1(a0,a1,a2,a3)=a0a1a2a3

d2(a0,a1,a2,a3)=g(d1(a0,a1,a2,a3)<<1)(a0a2)

d3(a0,a1,a2,a3)=g(d2(a0,a1,a2,a3)<<1)(a0a1)

d(a0,a1,a2,a3)=g(d3(a0,a1,a2,a3)<<1)(a1a2a3)

إضافة مفتاح الدورة

ببساطة هذه العملية تعمل التالي: تأخذ الوضعية الحالية وتعمل XOR مع مفتاح الدورة (مفتاح الدورة لديه نفس طول الوضعية الحالية أي النص) مفتاح الدورة نحسبه بواسطة خوارزمية إنتاج المفاتيح. إذا كانت الوضعية الحالية هي: ω ومفتاح الدورة هو k حينها:

(k0,0k0,1k0,2k0,3k1,0k1,1k1,2k1,3k2,0k2,1k2,2k2,3k3,0k3,1k3,2k3,3)(ω0,0ω0,1ω0,2ω0,3ω1,0ω1,1ω1,2ω1,3ω2,0ω2,1ω2,2ω2,3ω3,0ω3,1ω3,2ω3,3)

التشفير وفك التشفير

التشفير كالتالي:

  1. أولا نضيف المفتاح الدورة الأول (K0)
  2. Nr دورات في كل دورة:
    1. عملية الاستبدال
    2. ازاحة الاسطر
    3. خلط الأعمدة (ما عدا الدورة الأخيرة)
    4. إضافة مفتاح الدورة (أي انه في الدورة i نضيف المفتاح Ki).

حتى نفك التشفير كما ذكرنا في البداية يجب قلب ترتيب عمليات التشفير حسب الترتيب.

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

وهي ضرورية لإنتاج مفتاح جديد من الذي استخدمناه سابقا (لذا لن نستخدم نفس المفتاح مرتين) والخوارزمية مدخلها مصفوفة بكبر Nk كلمات (كل كلمة هي 32 بيت) والخوارزمية تحسب مفتاح الدورة Nr+1 (الدورة القادمة), ليكن W مصفوفة كلمات وهو بكبر W[4*(Nr+1) . حينها 4 الكلمات الأولى تصبح مفتاح الدورة الأولى و 4 الكلمات القادمة هي مفتاح الدورة الثانية وهكذا... والخوارزمية هي كالتالي:

W[0..Nk-1] = key[*];
for i := Nk to 4*(Nr+1)-1 do {
temp = W[i-1]
if((i%Nk)==0)
temp = bytesubstitution(temp<<<8) ^ RCON[i/Nk];
if((Nk==8) & ((i%Nk)==4))
temp = bytesubstitution(temp);
W[i] = W[i-Nk] ^ temp;
}
  • ()bytesubstitution هي تنفيذ للمصفوفة S ,
  • في حين ان RCON هو المصفوفة التالية:

word32 RCON[] = {

01x,02x,04x,08x,10x,20x,40x,80x,

1bx,36x,6cx,d8x,abx,4dx,9ax,2fx

} لاحظ ان هذه الاعداد هي قوى العدد 2 في الحقل GF(28)

خواص الامان

  1. لا يوجد صفة المُكمل كما في DES . أي انه AESk(x)AESk¯(x¯)
  2. امان الخوارزمية كله متعلق باختيار المصفوفة S وهي الجزء الوحيد في الخوازمية الذي ليس خطيا أو تآلفي حيث أنه: S[i]+S[j]S[i+j], مثلا إذا كان S مصفوفة تآلفية حينها كل العملية كانت لتكون تآلفية وبالتالي ليس آمنا ويمكن كسره بسهولة.
  3. أفضل الهجمات على هذه الخوارزمية وهي على 7 دورات من الخوارزمية تأخذ وقت 2110 عندما طول المفتاح هو 128 بيت، اما إذا طول المفتاح 256 بيت فأفضل الهجمات على 8 دورات هو 2204 , لا يوجد هجمات مع وقت أقصر من هذا. كما أنه لا يوجد هجوم فعال على كل الدورات بمعنى ان وقت اللازم لكسر كل الخوارزمية هو 2128 عندما طول المفتاح هو 128 بيت.
  4. بالرغم من انه لا يوجد برهان على أن رايندول آمن ولكن الخوارزمية آمنة لكل أنواع الهجمات المعروفة وقد تم فحص فعالية هذه الهجمات على الخوارزمية وكلها بائت بالفشل حيث أنها لم تستطع ان تخفض الوقت اللازم لكسر الخوارزمية أي ان أفضل وقت للهجوم على الخوارزمية هو 2128 بهذه الوسائل.

هل AES دالة وحيدة الاتجاه؟

بشكل عام لا يوجد برهان على أنَّ AES هي دالة وحيدة الاتجاه ولا حتى انه غير قابل للكسر ! ولكن بشكل عام يُعتقد أنها غير قابلة للكسر ما يجعل منها مرشحة لتكون دالة وحيدة الاتجاه، ولكن حتى الآن يُمكن اعتبارها كذلك وذلك لان نسبة البيانات التي نستطيع الحصول على مقلوبها هو صغير جدا.

استخدامات

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

  • يستخدم AES في برامج (WINZIP) في حالة ان المُستخدم طلب تشفير البيانات بعد ضغطها.
  • يُستخدم في برتوكول TLS , وهو برتوكول لإنشاء اتصال آمن.
  • له كذلك استخدام في برتوكول IPsec وهو برتوكول لضمان الامان في اتصالات التي تعمل بواسطة IP عبر الإنترنت.

انظر أيضًا

مصادر

  1. ^ "Al-Qamoos القاموس - English Arabic dictionary / قاموس إنجليزي عربي". www.alqamoos.org. مؤرشف من الأصل في 2018-08-06. اطلع عليه بتاريخ 2018-08-06.
  2. ^ "ترجمة و معنى advanced encryption standard بالعربي في قاموس المعاني. قاموس عربي انجليزي مصطلحات صفحة 1". www.almaany.com. مؤرشف من الأصل في 2018-08-06. اطلع عليه بتاريخ 2018-08-06.
  3. ^ Alex Biryukov؛ Orr Dunkelman؛ Nathan Keller؛ Dmitry Khovratovich؛ Adi Shamir (19 أغسطس 2009). "Key Recovery Attacks of Practical Complexity on AES Variants With Up To 10 Rounds". مؤرشف من الأصل في 2010-01-28. اطلع عليه بتاريخ 2010-03-11.
  4. ^ "Breaking AES-128 in realtime, no ciphertext required | Hacker News". News.ycombinator.com. مؤرشف من الأصل في 2018-01-26. اطلع عليه بتاريخ 2012-12-23.
  5. ^ Cryptology ePrint Archive: Report 2009/317 نسخة محفوظة 25 يناير 2018 على موقع واي باك مشين.