نمايش پست تنها
قديمي ۰۳-۱۴-۱۳۹۳, ۱۰:۴۴ بعد از ظهر   #14 (لینک دائم)
zeyton Female
عضو فوق فعال
 
آواتار zeyton
 
تاريخ عضويت: تير ۱۳۹۰
محل سكونت: همه جای ایران سرای من است..
پست ها: 26
تشكرها: 4
21 تشكر در 17 پست
My Mood: Mehrabon
Post مبانی رمزنگاری (قسمت چهاردهم)

در الگوریتم DES حلقه تکرار ده دور محاسبات رمز نگار را انجام می دهد. هر دور شامل چهار عمل است:

1) Substitute:
این تابع یکایک بایتهای ماتریس state را بر اساس یک جدول جانشینی ثابت و مشخص با مقادیر جدید جایگزین می کند. جدول جانشینی بایت در AES دارای 256 درایه (Entry) است که در یک ماتریس 16×16 سازماندهی شده اند. برای جایگزین کردن بایت با مقدار معادل، چهار بیت پر ارزش آن بایت به عنوان شماره سطر و چهار بیت کم ارزش به عنوان شماره ستون به این جدول اعمال شده و درایه متناظر با آن بجای مقدار اصلی قرار می گیرد. برخلاف DES که دارای 8 جدول جانشینی برای هر دور است، AES در این مرحله فقط یک جدول BOX ـ S بیشتر ندارد (نقطه قوت این الگوریتم: نیاز به حافظه نوع ROM را در پیاده سازی سخت افزاری آن کاهش خواهد داد.) تمام بایتهای متغیر state طبق همین الگو با مقدار معادل، جایگزین می شوند.


2) rotate-rows:
این تابع هر چهار سطر از آرایه state را به سمت چپ می چرخاند؛ سطر شماره صفر، صفر بایت می چرخد ، سطر شماره 1، یک بایت بصورت چرخشی به سمت چپ می چرخد. سطر شماره 2، دو بایت و سطر شماره 3، سه بایت. در این گام جای بایتهای داده تغییر می کند.


3)mix_columns:
این تابع هر ستون از آرایه state را بطور مستقل از دیگر ستون ها تلفیق و در هم سازی می کند. هر ستون از state، در یک ماتریس ثابت ضرب می شود تا ستون جدید بدست آید؛ عمل ضرب ماتریسی، بر روی میدان GF که یک میدان محدود گالوا است، صورت می گیرد.


آنچه که AES را از دیگر روشهای موجود متمایز ساخته است زیر بنای ریاضی «عملیات تلفیق و در هم سازی» است.
در چهارمین مرحله و آخرین مرحله هر دور «کلید فرعی متناسب با آن دور» با داده ها XOR خواهد شد.

4) xor_roundkey_into_state:
این تابع محتویات متغیر state را با محتویات کلید متناظر با دور (یعنیrk[r] ) بایت به بایت XOR می کند.


در دورهای بعدی این چهار عمل متوالیاً بر روی محتویات ماتریس state انجام می گیرد.
پس از انجام تمام دورهای پردازش، کل عملیات رمزنگاری بلوک داده 128 بیتی به پایان می رسد و حاصل رمزنگاری داده ها که درون متغیر state قرار دارد به متغیر ciphertext منتقل میشود.
if(r<ROUNDS) mox_columns(state);
عمل تلفیق و درهم سازی ستونی استثناء در دور آخر انجام نمی شود تا الگوریتم حالت تقارن خود را حفظ کرده و رمزگشایی آن به راحتی ممکن باشد.
__________________

هرگاه خداوند تو را به لبه پرتگاه هدایت کرد به او اعتماد کن،
زیرا یا تو را از پشت میگیرد
یا به تو پرواز را می آموزد.

zeyton آفلاين است   پاسخ با نقل قول