AES: ما هو، خوارزمية التشفير المتماثل وأين يُستخدم

المؤلف: IT Sectr نُشر: 2026-04-02 وقت القراءة: 9 دق

AES (معيار التشفير المتقدم) هو خوارزمية تشفير متماثل بالكتل تم اعتمادها في عام 2001 من قبل المعهد الوطني للمعايير والتكنولوجيا الأمريكي (NIST) كمعيار رسمي. حل AES محل DES القديم ومنذ ذلك الحين أصبح خوارزمية التشفير الأكثر انتشاراً في العالم، المستخدمة من الأنظمة المصرفية إلى التطبيقات المحمولة. وفقاً لـ NIST (2023)، يوفر AES أماناً يعادل 2^256 عملية لمفتاح بطول 256 بت، مما يجعله غير قابل للاختراق لهجمات القوة العمياء الحديثة. NIST FIPS 197، 2023

الملخص

  • AES هو تشفير متماثل بالكتل بحجم كتلة ثابت 128 بت ومفاتيح 128 أو 192 أو 256 بت.
  • وضع GCM هو وضع تشغيل AES الموصى به للتطبيقات المحمولة، حيث يوفر تشفيراً موثقاً.
  • AES-256 هو الإصدار بأقصى مستوى أمان، موصى به لحماية البيانات عالية الحساسية.
  • التسريع العتادي — تسمح تعليمات AES-NI للمعالج بتنفيذ التشفير بسرعة تصل إلى 10 جيجابايت/ثانية على الأجهزة الحديثة.
  • Android و iOS يوفران واجهات برمجة تطبيقات مدمجة لـ AES: Android Keystore و iOS CryptoKit مع دعم التسريع العتادي.

ما هو AES؟

AES (معيار التشفير المتقدم) هو تشفير متماثل بالكتل طوره عالما التشفير البلجيكيان جوان ديمن وفينسنت رايمن تحت اسم Rijndael. في عام 2001، اختار NIST خوارزمية Rijndael كفائزة في مسابقة معيار التشفير الأمريكي الجديد بعد خمس سنوات من الاختبار والتحليل العلني. يعمل AES مع كتل بيانات ذات حجم ثابت (128 بت) ويدعم ثلاثة أطوال للمفاتيح: 128 و 192 و 256 بت. يعتمد عدد جولات التحويل على طول المفتاح: 10 جولات لمفتاح 128 بت، و 12 لمفتاح 192 بت، و 14 لمفتاح 256 بت. تتضمن كل جولة أربع عمليات: SubBytes (استبدال غير خطي للبايتات عبر S-box)، و ShiftRows (إزاحة دورانية للصفوف)، و MixColumns (خلط الأعمدة)، و AddRoundKey (XOR مع مفتاح الجولة).

تاريخ معيار AES

بدأ تطوير AES في عام 1997 عندما أعلن NIST عن مسابقة لاستبدال DES، الذي تم اختراق مفتاحه 56 بت في 22 ساعة في عام 1998 على جهاز Deep Crack المتخصص. شاركت خمسة عشر خوارزمية من دول مختلفة، بما في ذلك Serpent (المملكة المتحدة) و Twofish (الولايات المتحدة) و RC6 (الولايات المتحدة). بحلول نهائيات عام 1999، بقي 5 مرشحين. فازت Rijndael بفضل مزيجها من السرعة العالية على جميع المنصات (من متحكمات 8 بت إلى خوادم 64 بت)، ومقاومتها لتحليل الشفرات، وتنفيذها المضغوط في العتاد. منذ عام 2006، يُستخدم AES لتشفير البيانات المصنفة SECRET و TOP SECRET في الأنظمة الحكومية الأمريكية. اليوم، AES مدمج في جميع البروتوكولات الرئيسية: TLS 1.2/1.3، IPsec، SSH، Wi-Fi WPA2/WPA3، و Bluetooth BR/EDR.

كيف يعمل تشفير AES

AES يعالج البيانات في كتل بحجم 128 بت (16 بايت)، منظمة كمصفوفة 4x4 بايت تسمى state. تؤدي كل جولة تشفير سلسلة من التحويلات الحتمية التي تخلق معاً تأثير الانهيار الجليدي: تغيير بت واحد من بيانات الإدخال يغير حوالي 50% من بتات المخرجات. هذا التأثير يجعل AES مقاوماً لتحليل الشفرات التفاضلي والخطي — الطرق الأساسية لكسر تشفير الكتل.

تبدأ العملية بـ AddRoundKey — إجراء XOR للمفتاح الأولي مع state. ثم يتم تنفيذ الجولات: SubBytes تستبدل كل بايت من state بقيمة من S-box (جدول الاستبدال). ShiftRows تزيح الصف الثاني بشكل دوري بمقدار موضع واحد، والثالث بمقدار 2، والرابع بمقدار 3 — مما يضمن الخلط بين الأعمدة. MixColumns تضرب كل عمود من state بمصفوفة ثابتة في حقل غالوا GF(2^8)، مما يخلق اعتماداً لكل بايت ناتج على جميع البايتات الأربع المدخلة للعمود. AddRoundKey تطبق XOR مع مفتاح الجولة التالي، المشتق من المفتاح الأصلي عبر Key Expansion. الجولة الأخيرة تخلو من عملية MixColumns. يستخدم فك التشفير العمليات العكسية InvSubBytes و InvShiftRows و InvMixColumns و AddRoundKey بترتيب عكسي. بالنسبة لمطوري التطبيقات المحمولة، ليس من الضروري فهم البنية الداخلية لـ AES — يكفي معرفة كيفية استدعاء واجهات برمجة التطبيقات المدمجة للمنصة بشكل صحيح مع المعاملات المناسبة.

تأثير الانهيار الجليدي والقوة التشفيرية لـ AES

الخاصية الرئيسية لـ AES التي تضمن قوته التشفيرية هي تأثير الانهيار الجليدي. يؤدي تغيير بت واحد في النص العادي أو المفتاح إلى تغيير حوالي 50% من بتات النص المشفر، مما يجعل AES مقاوماً للغاية لتحليل الشفرات التفاضلي والخطي. يخلق الجمع بين SubBytes (اللاخطية عبر S-box) و MixColumns (الانتشار عبر الضرب في حقل غالوا) تعقيداً رياضياً بحيث لا يسمح حتى بمعرفة جزء من النص المشفر باستعادة المفتاح أسرع من القوة العمياء. وفقاً لتحليل NIST (2018)، فإن أفضل هجوم معروف على AES-128 — هجوم biclique — يقلل طول المفتاح الفعال بمقدار 2 بت فقط (إلى 126.2 بت)، دون إعطاء ميزة عملية للمهاجم. بالنسبة لـ AES-256، لا توجد أي هجمات عملية مجدية تتجاوز القوة العمياء.

أحجام مفاتيح AES ومستويات الأمان

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

حجم المفتاحعدد الجولاتمستوى الأمانالتطبيق
AES-12810128 بتالتطبيقات التجارية، TLS
AES-19212192 بتالأنظمة الحكومية (SECRET)
AES-25614256 بتTOP SECRET، القطاع المالي

قاعدة عملية: للتطبيقات المحمولة استخدم AES-256 افتراضياً. فرق الأداء بين AES-128 و AES-256 على الأجهزة الحديثة مع دعم AES-NI لا يتجاوز 10–15%، لكن مستوى الأمان يتضاعف. وفقاً للتحليل الكمي (Grassl et al.، 2016)، يتطلب اختراق AES-128 حوالي 2^77 عملية كمومية عبر خوارزمية جروفر، بينما يتطلب AES-256 حوالي 2^149، مما يجعل AES-256 مقاوماً للهجمات الكمومية للسنوات 20–30 القادمة. حتى AES-128 يوفر حماية كافية للغالبية العظمى من السيناريوهات التجارية: اختراق مفتاح 128 بت بالقوة العمياء يتطلب طاقة أكثر مما موجود في الكون وفقاً لتقدير بروس شناير. ومع ذلك، فإن معايير الأمان (GDPR، HIPAA، PCI DSS) غالباً ما تتطلب صراحة AES-256، لذلك يجب أن تستخدم مشاريع الإنتاج أقصى طول للمفتاح.

أوضاع تشغيل AES

AES كتشفير بالكتل يقوم بتشفير كتل ذات حجم ثابت (128 بت). لتشفير بيانات ذات طول عشوائي، تُستخدم أوضاع التشغيل. يؤثر اختيار الوضع بشكل حاسم على الأمان: الوضع الخاطئ يمكن أن يلغي قوة AES.

  • ECB (دفتر الشفرات الإلكتروني) — أبسط وأكثر الأوضاع عدماً للأمان. يتم تشفير كل كتلة بشكل مستقل بنفس المفتاح. كتل النص العادي المتطابقة تنتج كتل نص مشفر متطابقة، مما يسمح باستعادة بنية البيانات. محظور في جميع معايير الأمان الحديثة. لا تستخدم ECB أبداً في التطبيقات المحمولة.
  • CBC (ترابط كتل الشفرات) — تُستخدم كل كتلة نص مشفر سابقة كمتجه تهيئة (IV) للكتلة التالية. يتطلب IV عشوائياً لكل رسالة. عرضة لهجمات padding oracle عند التنفيذ غير الصحيح. مناسب لتشفير الملفات لكنه يتطلب MAC (HMAC) لسلامة البيانات.
  • GCM (وضع غالوا/العداد) — الوضع الموصى به للتطبيقات المحمولة. يوفر تشفيراً موثقاً (AEAD): تشفير + التحقق من السلامة في عملية واحدة. يستخدم عداداً لتوليد تدفق المفتاح وضرباً في حقل غالوا للمصادقة. يتطلب GAM nonce فريداً (12 بايت) لكل رسالة. موصى به من NIST، مستخدم في TLS 1.2/1.3 و Android Keystore.
  • CCM (العداد مع CBC-MAC) — وضع AEAD بديل يعتمد على CTR + CBC-MAC. أبطأ من GCM ولا يدعم المعالجة المتوازية. يُستخدم في بروتوكولات ZigBee و 802.11 (Wi-Fi). للتطبيقات المحمولة، يُفضل GCM.

لمشاريع المحمول استخدم AES-256-GCM مع nonce بطول 12 بايت. يحل GCM مشكلتين في وقت واحد: تشفير البيانات والمصادقة، مما يمنع هجمات padding oracle و chosen ciphertext. يدعم Android Keystore و iOS CryptoKit AES-GCM بشكل مدمج دون الحاجة إلى أساسيات تشفير إضافية. عند العمل مع GCM، من المهم جداً عدم إعادة استخدام nonce مع نفس المفتاح — فهذا يدمر أمان التشفير بالكامل. قم بتوليد nonce عشوائي جديد لكل تشفير واحفظه مع النص المشفر.

تنفيذ AES في التطبيقات المحمولة

لنلقِ نظرة على مثال لتنفيذ آمن لـ AES-256-GCM على Android باستخدام Jetpack Security. يوضح الكود أدناه الدورة الكاملة: إنشاء مفتاح AES-256 عبر MasterKey، تشفير وفك تشفير سلسلة مع بيانات موثقة إضافية (AAD).

kotlin
import androidx.security.crypto.MasterKey
import androidx.security.crypto.EncryptedSharedPreferences

val masterKey = MasterKey.Builder(context)
    .setKeyScheme(MasterKey.KeyScheme.AES256_GCM)
    .build()

val securePrefs = EncryptedSharedPreferences.create(
    context,
    "secure_prefs",
    masterKey,
    EncryptedSharedPreferences.PrefKeyEncryptionScheme.AES256_SIV,
    EncryptedSharedPreferences.PrefValueEncryptionScheme.AES256_GCM
)

fun storeSecureData(key: String, value: String) {
    securePrefs.edit().putString(key, value).apply()
}

fun readSecureData(key: String): String? {
    return securePrefs.getString(key, null)
}

الميزة الرئيسية لهذا الحل هي أن AES-256-GCM يُستخدم على مستويين: لتشفير أزواج المفتاح-القيمة (PrefValueEncryptionScheme) ولحماية أسماء المفاتيح نفسها (PrefKeyEncryptionScheme يستخدم AES-256-SIV، المقاوم لإعادة استخدام nonce). يتم إنشاء MasterKey باستخدام خوارزمية AES-256-GCM وتخزينه في Android Keystore، المحمي عتادياً على الأجهزة المزودة بـ Trusted Execution Environment. على الأجهزة دون دعم عتادي (TEE)، يتم تشفير المفتاح عبر Bouncy Castle، وهو مع ذلك أكثر أماناً من التخزين في SharedPreferences.

لتشفير كميات كبيرة من البيانات مباشرة (مثل الصور أو الملفات)، استخدم AES-256-GCM عبر EncryptedFile من AndroidX Security. لتصدير المفاتيح (مثل النسخ الاحتياطي)، استخدم تشفيراً إضافياً بكلمة مرور المستخدم عبر PBKDF2 مع 100000+ تكرار.

AES على iOS عبر CryptoKit

على iOS، يتم تنظيم عمليات AES عبر إطار CryptoKit (Swift 5.0+). يتم إنشاء مفتاح AES-256 عبر SymmetricKey(size: .bits256) وتخزينه في Secure Enclave — معالج تشفير عتادي معزول عن وحدة المعالجة المركزية الرئيسية ونظام التشغيل. يوفر CryptoKit تنفيذين لـ AES: AES.GCM (موصى به) و AES.CBC (للتوافق مع الصيغ القديمة). يتم التشفير عبر طريقة seal()، التي تأخذ البيانات والمفتاح و nonce (12 بايت)، وتعيد AES.GCM.SealedBox — بنية تحتوي على النص المشفر ووسم المصادقة. فك التشفير عبر open(). توصي Apple بشدة بعدم استخدام CommonCrypto مباشرة: يختار CryptoKit تلقائياً المعاملات المثلى، ويحمي من هجمات القناة الجانبية، ويستخدم تسريع AES-NI العتادي على معالجات Apple Silicon. على الأجهزة المزودة بـ Secure Enclave، لا تغادر المفاتيح الوحدة العتادية أبداً، مما يمنع سرقتها حتى مع اختراق التطبيق بالكامل. لتسلسل المفتاح، استخدم طريقة withUnsafeBytes متبوعة بالتخزين في Keychain عبر SecItemAdd مع السمة kSecAttrAccessible = kSecAttrAccessibleWhenUnlockedThisDeviceOnly.

الأسئلة الشائعة

ما هو AES بكلمات بسيطة؟

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

ما الفرق بين AES-128 و AES-256؟

AES-128 يستخدم مفتاحاً بطول 128 بت وينفذ 10 جولات تشفير. AES-256 يستخدم مفتاحاً بطول 256 بت و 14 جولة، مما يجعله أصعب 2^128 مرة في الاختراق. للتطبيقات المحمولة، يُوصى باستخدام AES-256 بسبب فرق الأداء البسيط.

ما هو وضع AES الأكثر أماناً؟

AES-256-GCM هو الوضع الأكثر أماناً والموصى به. يوفر GCM تشفيراً موثقاً (تشفير + التحقق من السلامة). وضع ECB محظور، و CBC يتطلب MAC منفصلاً. GCM هو المعيار الفعلي للتطبيقات المحمولة.

هل يمكن اختراق AES؟

نظرياً، يمكن اختراق AES بالقوة العمياء، لكن لـ AES-256 سيتطلب 2^256 محاولة — أكثر من عدد الذرات في الكون المرئي. لا توجد هجمات عملية على AES-256. هجمات القناة الجانبية (Spectre، Meltdown) لا تخترق AES بل تسرق المفاتيح من الذاكرة، لذلك التخزين العتادي للمفاتيح أمر بالغ الأهمية.

كيف أستخدم AES في تطبيق محمول على Android؟

استخدم مكتبة AndroidX Security: MasterKey.Builder مع KeyScheme.AES256_GCM ينشئ مفتاحاً محمياً في Android Keystore، ويقوم EncryptedSharedPreferences بتشفير جميع البيانات تلقائياً عبر AES-256-GCM. لا حاجة لتشفير يدوي — API آمن افتراضياً، بدون خطر أخطاء المطور.

الخلاصة

  • AES هو خوارزمية التشفير المتماثل الأكثر انتشاراً واختباراً، المعيارية من NIST في 2001.
  • AES-256 يوفر أقصى مستوى أمان مع هامش ضد الهجمات الكمومية للسنوات 20–30 القادمة.
  • وضع GCM هو الوضع الوحيد الموصى به للتطبيقات المحمولة: تشفير + مصادقة في عملية واحدة.
  • Android Keystore و iOS Secure Enclave — مخازن عتادية تعزل مفاتيح AES عن التطبيق.
  • Jetpack Security (Android) و CryptoKit (iOS) يوفران تنفيذات آمنة لـ AES-256-GCM بدون تشفير يدوي.
  • Nonce (IV) لـ GCM يجب أن يكون فريداً لكل تشفير — إعادة الاستخدام تدمر الأمان تماماً.
  • توصية: استخدم AES-256-GCM عبر EncryptedSharedPreferences على Android و CryptoKit على iOS لجميع البيانات الحساسة.

سنقوم بتطوير تطبيق جوال جاهز

تقدم IT Sectr تطبيقات iOS وAndroid للشركات الناشئة والشركات منذ عام 2017. سوف نقدم لك النصح ونقترح أفضل حل.

مناقشة المشروع

اقرأ أيضًا