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

DES: Data Encryption Standard
در ابتدای دهه 70 دولت فدرال آمریکا وشرکت IBM مشترکا روشی را برای رمزنگاری داده ها ایجاد کردند، تا به عنوان استانداردی برای محرمانه نگه داشتن اسناد دولتی مورد استفاده قرار بگیرد. می توان ابداع و استانداردسازی DES را نقطه عطف در تاريخ چند هزار ساله رمزنگاری دانست، زيرا: تا قبل از سال 1970 در بازار نوپای کامپيوتر هيچ محصول نرم افزاری برای رمزنگاری اطلاعات يافت نمی شد. DES سرآغاز شروع علم رمزنگاری و تحليل رمز بصورت آکادميک، مدون و هدفمند است.
این روش در عین اینکه روشی اشکار و همگانی بود ولی بسیاری از دلایل و مشی انتخاب جداول و ثابتهای درونی الگوریتم، در طول این 40سال نا مکشوف باقی مانده است. متاسفانه چون حامی و سفارش دهنده اصلی این روش ” سازمان امنیت ملی امریکا ” بود لذا شایعات بسیار گسترده ای در خصوص وجود ” شاه کلید فوق سری“ یا وجود الگوریتم های زیرکانه برای رمز شکنی مطرح شد و هیچگاه کسی نتوانست آن را رد یا اثبات کند. این شایعات برای این روش گران تمام شد و محبوبیت آن رو به افول گذاشت.


الگوریتم رمزنگاری DES:
1) ورودی رمز نگار یک رشته 64 بیتی است، بنابراین داده های ورودی بایست در گروه های هشت کاراکتری دسته بندی و به ورودی سخت افزار رمزنگار DES، اعمال شوند.

2) اولین عملی که برروی رشته ورودی انجام می شود جابجا کردن محل رشته 64 بیتی طبق جدول است. به عنوان مثال طبق این جدول، بیت پنجاه وهشتم از ورودی به موقعیت یکم و بیت یکم به موقعیت چهلم منتقل می شود. به این عمل (جایگشت مقدماتی) گفته می شود و کلید رمز هیچ دخالت و تاثیری در این جابجایی ندارد. این عمل تنها وابستگی آماری بیت های مجاور را به هم می ریزد.
جدول جايگشت مقدماتی IP:


3) در گام بعد رشته 64 بیتی جایگشت شده از گام قبل، به دو نیمه 32 بیتی چپ و راست تقسیم بندی خواهد شد.

4)در گام چهارم، فرآیند رمز نگاری مبتنی بر کلید آغاز می شود و تا شانزده «دور» (Round) ادامه می یابد. ماهیت پردازش در تمام دورها دقیقاً یکسان است با این تفاوت که پارامترهای ورودی در هر دور متفاوتند. این 16 دور به شانزده کلید 48 بیتی متفاوت نیاز دارد که همگی آنها به روشی غیر خطی و نسبتاً پیچیده از کلید 56 بیتی اصلی، استخراج می شوند.
این 16 کلید درون یک آرایه در اختیار است. در هر دور، 32 بیت سمت راست مستقیماً به سمت چپ منتقل شده و 32 بیت سمت چپ طبق رابطه زیر به یک رشته 32 بیتی جدید تبدیل و به سمت راست منتقل خواهد شد.
Li-1 xor f(Ri-1,Ki)

f تابعی غیر خطی، خاص و مبهم است.

Li-1 رشته 32 بیتی سمت چپ از مرحله قبل است.

Ri-1 رشته 32 بیتی سمت راست از مرحله قبل است.

Ki کلید فرعی هر دور است.

5) پس از دور شانزدهم، جای نیمه 32 بیتی سمت چپ و راست عوض خواهد شد. سپس عکس عمل جایگشتی که در ابتدا انجام شده بود صورت می گیرد تا بیتها سرجای اصلی شان برگردند.

6) حال خروجی 64 بیتی رمز شده، در خروجی آماده است.


جزئیات تابع f:
تابع f یک تابع غیر خطی مشتمل بر عملیات «توسیع» (Expansion)، «جانشینی»، " XOR " و «جایگشت» است؛ پیچیدگی و استحکام DES از همین تابع منشاء گرفته است.

الف) در اولین گام رشته 32 بیتی ورودی (Ri-1) با تکرار برخی از بیتها، به یک رشته 48 بیتی توسعه داده می شود.

ب) در گام بعد، کلید فرعی متناظر با شماره دور، با رشته توسعه یافته، بیت به بیت XOR می شود. بدین ترتیب یک رشته جدید 48 بیتی جدید پدید می آید.

ج) در گام سوم، رشته 48 بیتی حاصل بایست به 32 بیت کاهش یابد، برای این کار رشته 48 بیتی در قالب 8 دسته شش بیتی به هشت S-Box متفاوت وارد می شود. هر یک از این S-Box ها، یک عدد شش بیتی را گرفته و آن را بر اساس جدولی به یک عدد 4بیتی می نگارد.

د)در گام آخر، بیتهای رشته 32 بیتی بدست آمده از مرحله قبل، جایگشت داده می شوند. به عبارتی جای هر بیت بر اساس جدول تغییر می کند.


ادامه دارد...
__________________

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

zeyton آفلاين است   پاسخ با نقل قول
از zeyton تشكر كرده اند:
amirali21 (۰۳-۱۰-۱۳۹۳), Cipher (۰۳-۱۷-۱۳۹۳)