الگوریتم رمزنگاری AES Advanced Encryption Standard

الگوریتم رمزنگاری AES (Advanced Encryption Standard) یکی از روش‌های رمزنگاری امنیتی بسیار قوی است که برای محافظت از اطلاعات در سیستم‌ها و ارتباطات از آن استفاده می‌شود. AES به یکی از سه کلید 128 بیتی، 192 بیتی یا 256 بیتی استفاده از یک متن آشکار (plaintext) و یک کلید (key) به منظور تولید یک متن رمزنگاری شده (ciphertext) می‌پردازد. در ادامه مراحل رمزنگاری AES را به طور خلاصه توضیح می‌دهم:

1. مرحله اول
- افزودن کلید (Key Expansion):
در این مرحله کلید ورودی به کلید‌های جعلی (Round Keys) تبدیل می‌شود. این کلید‌های جعلی در مراحل بعدی مورد استفاده قرار می‌گیرند.

2. مرحله دوم
- آغاز مراحل راند (Rounds):
AES در مراحل راند استفاده می‌کند. تعداد مراحل بر اساس طول کلید مشخص می‌شود. به عنوان مثال، در AES-128، داریم:
- در هر مرحله، متن آشکار به یک تابع جایگشت (SubBytes) می‌رود که جدول جایگشت‌های S-Box را استفاده می‌کند.
- سپس متن جایگشت‌یافته (SubBytes) از نظر ستونی (ShiftRows) جابه‌جا می‌شود.
- ستون‌های ماتریس نتیجه با یک عملیات مخصوص (MixColumns) ترکیب می‌شوند.
- در پایان، یک متن ثابت (Round Key) با متن رمزنگاری شده جاری ترکیب می‌شود (AddRoundKey).

3. مرحله سوم
- مرحله آخر (Final Round):
در مرحله آخر، همه مراحل راند که در مرحله دوم توضیح داده شد، انجام می‌شوند با این تفاوت که مرحله MixColumns اجرا نمی‌شود.

4. نتیجه نهایی:
پس از انجام تمام مراحل رمزنگاری، متن آشکار به متن رمزنگاری شده (ciphertext) تبدیل می‌شود. AES یکی از معتبرترین و امن‌ترین الگوریتم‌های رمزنگاری مدرن است و بسیاری از سیستم‌ها و برنامه‌های امنیتی از آن بهره می‌برند.

به منظور تشریح دقیق‌تر الگوریتم رمزنگاری AES، بیایید یک مثال ساده را با استفاده از یک کلید و متن آشکار 128 بیتی انجام دهیم. البته در واقعیت، الگوریتم بر روی بلوک‌های 128 بیتی اعمال می‌شود و تعداد مراحل رمزنگاری ممکن است متفاوت باشد.

مثال:
فرض کنید متن آشکار ما (plaintext) 128 بیتی به صورت زیر باشد:


```
Plaintext:  00110010101011001010101010011011
```

همچنین، یک کلید 128 بیتی داریم:


```
Key:       01011010111110100100101011110101
```

مرحله 1: افزودن کلید (Key Expansion) در این مرحله، کلید ورودی به کلید‌های جعلی تبدیل می‌شود. این مراحل تنها یک‌بار انجام می‌شوند.

مرحله 2: مراحل راند (Rounds) در مرحله دوم، متن آشکار (Plaintext) به مراحل مختلف می‌رود.


- Round 1: SubBytes متن آشکار با استفاده از جدول جایگشت S-Box تغییر می‌کند. اعداد در هر بایت با عدد متناظر در جدول جایگشت S-Box جایگزین می‌شوند. برای مثال:


  ```
  00110010 10101100 10101010 10011011
  ```

تبدیل می‌شود به:


  ```
  11000001 00000010 01101111 10100011
  ```


- Round 2: ShiftRows در این مرحله، ستون‌های ماتریس متن جابه‌جا می‌شوند. این جابه‌جایی بر اساس مکان ستون در ماتریس انجام می‌شود. برای مثال:


  ```
  11000001 00000010 01101111 10100011
  ```

تبدیل می‌شود به:


  ```
  11000001 00000010 10100011 01101111
  ```


- Round 3: MixColumns در این مرحله، ستون‌های ماتریس ترکیب می‌شوند. این ترکیب بر اساس یک عملیات خاص انجام می‌شود و اثر ترکیبی روی هر بایت دارد.


- Round 4: AddRoundKey در این مرحله، کلید راند جاری با متن رمزنگاری شده جاری ترکیب می‌شود. این عملیات از یک عمل XOR استفاده می‌کند. برای مثال:


  ```
  Key:       01011010 11111010 01001010 11110101
  ```

کلید راند جاری ترکیب می‌شود با:


  ```
  11000001 00000010 10100011 01101111
  ```

و متن رمزنگاری شده بدین صورت خواهد بود:


  ```
  10011011 00000000 11101001 10111110
  ```

مرحله 3: مرحله آخر (Final Round) در مرحله آخر، همه مراحل راند که در مرحله دوم توضیح داده شد، انجام می‌شوند با این تفاوت که مرحله MixColumns اجرا نمی‌شود.

نتیجه نهایی:
پس از انجام تمام مراحل رمزنگاری، متن آشکار به متن رمزنگاری شده (ciphertext) تبدیل می‌شود. در اینجا متن رمزنگاری شده نهایی خواهد بود:


```
Ciphertext: 10011011 00000000 11101001 10111110
```

این مثال نشان دهنده‌ی یک مرحله از رمزنگاری AES با استفاده از یک کلید و متن آشکار 128 بیتی است. در واقعیت، تعدادی مرحله و تغییرات بیشتر وجود دارد که این مثال به صورت ساده توضیح داده شد.

AES (Advanced Encryption Standard) یک الگوریتم رمزنگاری است که برای محافظت از اطلاعات در ارتباطات امن و ذخیره‌سازی امن استفاده می‌شود. این الگوریتم از یک کلید مخصوص برای رمزنگاری و رمزگشایی پیام‌ها استفاده می‌کند. AES سه نسخه با اندازه‌های مختلف کلید (128 بیت، 192 بیت و 256 بیت) دارد.

برای تشریح عملکرد AES، فرض کنید که می‌خواهید پیام متنی "HELLO" را با کلید "SECRETKEY" رمزنگاری کنید. در اینجا چند مرحله‌ی اصلی را توضیح می‌دهم:

1. افتراق بلوک: متن و کلید به بلوک‌های 128 بیتی تقسیم می‌شوند. در این مثال، "HELLO" به بلوک 128 بیتی تبدیل می‌شود.

2. مراحل اصلی: AES شامل 10 دور عملیات متفاوت است (برای کلید 128 بیت)، که هر دور شامل انجام جابجایی‌ها، جمع‌وتفریق‌ها و جایگذاری‌های معکوس است.

3. نتیجه‌ی رمزنگاری: پس از انجام 10 دور مراحل AES بر روی متن و با استفاده از کلید، پیام "HELLO" به یک متن رمزگشایی نشده تبدیل می‌شود.

4. رمزنگاری نهایی: متن رمزگشایی نشده به شکل یک دنباله از بایت‌ها (بایت‌های 128 بیتی) خروجی داده می‌شود که می‌توان آن را به فرمت مورد نظر تبدیل کرد.

در مثال بالا، اگر HELLO را با کلید SECRETKEY و با استفاده از AES 128 بیت رمزنگاری کنید، خروجی رمزنگاری شده ترکیبی از بایت‌ها خواهد بود که برای یک فرد بدون دسترسی به کلید، بسیار دشوار به رمزگشایی است.

  1. Entering the English page