بررسی جامع استاندارد رمزنگاری پیشرفته (AES)
مقدمه: تعریف AES
استاندارد رمزنگاری پیشرفته (AES، مخفف Advanced Encryption Standard) یک الگوریتم رمزنگاری متقارن است که برای حفاظت از دادهها در سیستمها و ارتباطات امن طراحی شده است. این الگوریتم در سال 2001 توسط مؤسسه ملی استاندارد و فناوری آمریکا (NIST) بهعنوان استاندارد جایگزین DES انتخاب شد و به دلیل امنیت بالا، سرعت، و انعطافپذیری، به استاندارد جهانی تبدیل شده است.
AES از کلیدهای 128، 192، یا 256 بیتی برای تبدیل متن آشکار (plaintext) به متن رمزنگاریشده (ciphertext) و بالعکس استفاده میکند. دادهها در بلوکهای 128 بیتی (16 بایت) پردازش میشوند.
تاریخچه و اهمیت AES
در دهه 1990، الگوریتم DES با کلید 56 بیتی در برابر حملات brute-force آسیبپذیر شد. در سال 1997، NIST رقابتی برای انتخاب الگوریتم جدید برگزار کرد. الگوریتم Rijndael، طراحیشده توسط جوآن دیمن و وینسنت ریمن، به دلیل امنیت، کارایی، و انعطافپذیری بهعنوان AES انتخاب شد.
AES در حوزههای بانکداری، ارتباطات امن (HTTPS، VPN)، و ذخیرهسازی دادهها (BitLocker) کاربرد گستردهای دارد و استاندارد جهانی برای امنیت سایبری است.
ساختار فنی و مراحل رمزنگاری AES
AES یک الگوریتم رمزنگاری بلوکی است که دادهها را در ماتریس 4x4 بایت (128 بیت) پردازش میکند. تعداد دورهای رمزنگاری به طول کلید بستگی دارد:
| طول کلید (بیت) | تعداد دورها | اندازه کلیدهای راند (بایت) |
|---|---|---|
| 128 | 10 | 176 |
| 192 | 12 | 208 |
| 256 | 14 | 240 |
مراحل رمزنگاری AES:
- افزودن کلید (Key Expansion): کلید ورودی به کلیدهای راند تبدیل میشود.
- مرحله اولیه: دادهها با کلید اولیه XOR میشوند (AddRoundKey).
- مراحل راند: شامل SubBytes، ShiftRows، MixColumns، و AddRoundKey.
- مرحله نهایی: شامل SubBytes، ShiftRows، و AddRoundKey (بدون MixColumns).
عملیات ریاضی در AES
میدان گالوا (GF(2^8))
AES از عملیات در میدان گالوا (GF(2^8)) برای S-Box و MixColumns استفاده میکند. این میدان شامل 256 عنصر (0 تا 255) است که با چندجملهای غیرقابلتقلیل m(x) = x^8 + x^4 + x^3 + x + 1 تعریف میشود. عملیات شامل جمع (XOR)، ضرب، و معکوس در این میدان است.
1. Key Expansion
کلید ورودی به کلیدهای راند تبدیل میشود. برای AES-128 (کلید 16 بایت):
- کلید به 4 کلمه 32 بیتی تقسیم میشود.
- برای هر کلید راند:
- RotWord: چرخش بایتها (مثلاً
[a0, a1, a2, a3]به[a1, a2, a3, a0]). - SubBytes: اعمال S-Box به هر بایت.
- Rcon: XOR با ثابت دور (مانند
[01, 00, 00, 00]برای دور اول). - XOR با کلمه قبلی.
- RotWord: چرخش بایتها (مثلاً
مثال: برای کلید 000102030405060708090a0b0c0d0e0f، اولین کلید راند مشابه کلید اصلی است، و کلیدهای بعدی با الگوریتم تولید میشوند.
2. SubBytes
هر بایت با جدول S-Box جایگزین میشود. S-Box از دو مرحله تشکیل شده است:
- معکوس در GF(2^8): برای بایت
a، معکوسa^(-1)محاسبه میشود (به جز 0 که به 0 نگاشت میشود). - تبدیل آفین: نتیجه با ماتریس ثابت و بردار ثابت ترکیب میشود:
[1 0 0 0 1 1 1 1] [b0] [1] [1 1 0 0 0 1 1 1] [b1] [1] [1 1 1 0 0 0 1 1] [b2] [0] [1 1 1 1 0 0 0 1] [b3] [0] [1 1 1 1 1 0 0 0] [b4] + [0] [0 1 1 1 1 1 0 0] [b5] [1] [0 0 1 1 1 1 1 0] [b6] [1] [0 0 0 1 1 1 1 1] [b7] [0]
مثال: برای بایت 00، خروجی S-Box برابر 63 است.
3. ShiftRows
سطرهای ماتریس 4x4 چرخش میکنند:
- سطر 1: بدون تغییر.
- سطر 2: یک واحد به چپ.
- سطر 3: دو واحد به چپ.
- سطر 4: سه واحد به چپ.
مثال: ماتریس [s0, s1, s2, s3; s4, s5, s6, s7; s8, s9, s10, s11; s12, s13, s14, s15] به [s0, s1, s2, s3; s5, s6, s7, s4; s10, s11, s8, s9; s15, s12, s13, s14] تبدیل میشود.
4. MixColumns
هر ستون با ماتریس ثابت ضرب میشود:
[02 03 01 01]
[01 02 03 01]
[01 01 02 03]
[03 01 01 02]
ضرب در GF(2^8) انجام میشود. برای مثال، ضرب 02 در بایت a برابر است با a شیفت چپ یک بیت و در صورت سرریز، XOR با 0x1B.
مثال: برای ستون [d4, bf, 5d, 30]، خروجی MixColumns:
[04, 66, 81, e5]
5. AddRoundKey
دادهها با کلید راند XOR میشوند. این عملیات ساده اما حیاتی است.
نمودار مراحل AES
Plaintext → [Key Expansion] → [AddRoundKey] → [Rounds: SubBytes → ShiftRows → MixColumns → AddRoundKey] → [Final Round: SubBytes → ShiftRows → AddRoundKey] → Ciphertext
مثال عملی رمزنگاری AES-128
برای متن آشکار و کلید زیر (هگزادسیمال):
Plaintext: 00112233445566778899aabbccddeeff
Key: 000102030405060708090a0b0c0d0e0f
مراحل رمزنگاری:
- Key Expansion: تولید 11 کلید راند (176 بایت).
- دور اولیه: XOR با کلید اولیه:
State: 00112233445566778899aabbccddeeff Key: 000102030405060708090a0b0c0d0e0f Result: 00102030405060708090a0b0c0d0e0f0 - دور اول:
- SubBytes: جایگزینی با S-Box.
- ShiftRows: چرخش سطرها.
- MixColumns: ضرب ماتریس.
- AddRoundKey: XOR با کلید راند.
- دورهای 2 تا 9: تکرار مراحل.
- دور نهایی: SubBytes، ShiftRows، AddRoundKey.
خروجی نهایی:
Ciphertext: 69c4e0d86a7b0430d8cdb78070b4c55a
مثال متنی: رمزنگاری "HELLO"
برای رمزنگاری «HELLO» با کلید «SECRETKEY»:
- پدینگ: متن «HELLO» (5 بایت) با PKCS#5 به 16 بایت:
Plaintext: 48454c4c4f0b0b0b0b0b0b0b0b0b0b0b Key: 5345435245544b45590b0b0b0b0b0b0b - مراحل: 10 دور رمزنگاری.
- خروجی:
Ciphertext: 7a9f102789d5f50b2beffd9f3dca4ea7
پیادهسازی نمونه با پایتون
کد پایتون با pycryptodome برای رمزنگاری و رمزگشایی:
from Crypto.Cipher import AES
from Crypto.Util.Padding import pad, unpad
import binascii
# دادهها و کلید
plaintext = "HELLO".encode('utf-8')
key = b"SECRETKEY1234567"
# رمزنگاری
cipher = AES.new(key, AES.MODE_CBC, iv=b'1234567890123456')
ciphertext = cipher.encrypt(pad(plaintext, AES.block_size))
print("Ciphertext:", binascii.hexlify(ciphertext).decode('utf-8'))
# رمزگشایی
cipher = AES.new(key, AES.MODE_CBC, iv=b'1234567890123456')
decrypted = unpad(cipher.decrypt(ciphertext), AES.block_size)
print("Decrypted:", decrypted.decode('utf-8'))
خروجی نمونه: 7a9f102789d5f50b2beffd9f3dca4ea7
تست رمزنگاری AES
متن و کلید را وارد کنید (16 کاراکتر):
تحلیل فنی و ریاضی پیشرفته
امنیت رمزنگاری
AES در برابر حملات مقاوم است:
- تحلیل تفاضلی: غیرخطی بودن S-Box از حملات جلوگیری میکند.
- Brute-force: فضای کلید 2^256 برای AES-256 غیرقابل نفوذ است.
حملات احتمالی
- حملات کانال جانبی: تحلیل توان (DPA) و زمانبندی.
- حملات کوانتومی: الگوریتم گروور زمان brute-force را کاهش میدهد.
بهینهسازی
- AES-NI: دستورات سختافزاری برای سرعت.
- T-table: جداول از پیش محاسبهشده.
- حالتهای عملیاتی: GCM برای رمزنگاری و احراز هویت.
مقایسه AES با سایر الگوریتمها
| الگوریتم | نوع | طول کلید (بیت) | امنیت | سرعت |
|---|---|---|---|---|
| AES | متقارن | 128, 192, 256 | بالا | سریع |
| DES | متقارن | 56 | پایین | کند |
| RSA | نامتقارن | 2048, 4096 | بالا | کند |
کاربردها و مطالعات موردی
- HTTPS: رمزنگاری TLS با AES-256.
- BitLocker: رمزنگاری دیسک در ویندوز.
- واتساپ: رمزنگاری end-to-end با AES-256.
چشمانداز آینده
AES-256 در برابر حملات کوانتومی مقاومتر است. NIST الگوریتمهای مقاوم در برابر کوانتوم را توسعه میدهد. AES در بلاکچین و IoT همچنان کلیدی است.
سؤالات متداول
- چرا AES امن است؟ به دلیل غیرخطی بودن S-Box و پخششدگی MixColumns.
- حالتهای عملیاتی چیست؟ ECB، CBC، CTR، GCM، CCM.
- چگونه کلیدها را مدیریت کنیم؟ با KMS و HSM.
بیشتر بخوانید
برای اطلاعات بیشتر به صفحه انگلیسی ما مراجعه کنید:
ورود به صفحه انگلیسی