Artificial Intelligence - هوش مصنوعی

Artificial Intelligence - هوش مصنوعی (http://artificial.ir/intelligence/)
-   رمزنگاری تصویر (Image Encryption) (http://artificial.ir/intelligence/forum143.html)
-   -   مبانی رمزنگاری (قسمت اول) (http://artificial.ir/intelligence/thread12777.html)

zeyton ۰۲-۲۰-۱۳۹۳ ۰۹:۲۲ بعد از ظهر

مبانی رمزنگاری (قسمت اول)
 
دوستان عزیزم سلام.
در این تاپیک قصد دارم مطالبی در مورد مبانی رمز نگاری بذارم، امیدوارم به دردتون بخوره.


مبانی رمز نگاری مدرن و روش رمزنگاریdes :
پروفسور آگوست کرکهف استاد زبان شناسی در دانشسرای عالی مطالعات بازرگانی در پاریس اصالتاً هلندی و مسلط به چندین زبان بود که شهرت خود را از پژوهشهای زبان شناسی و کتابهای متعددی که در این خصوص و زبان ولاپوک نوشته بود، کسب کرده است. شأنی که وی در دنیای امنیت اطلاعات بدست آورده صرفاً مرهون دومقاله ای است که در سال 1883 در مجله علوم نظامی فرانسه چاپ کرد. این مقاله ها که با عنوان رمزنگاری نظامی منتشر شدند شامل شش اصل اساسی بودند که اصل دوم آن به عنوان یکی از قوانین اساسی در رمزنگاری مدرن موردتأیید دانشمندان و زیربنای هر فعالیت و پژوهش قرار گرفت.

اصول شش گانه کرکهف:
1) سیستم رمزنگاری اگر نه به لحاظ تئوری که در عمل غیرقابل شکست می باشد.
2) سیستم رمزنگار نباید هیچ نکته پنهان و محرمانه ای داشته باشد بلکه تنها چیزی که باید سری نگاه داشته شود کلید رمز است. طراح سیستم رمزنگار نباید جزئیات سیستم خود را حتی از دشمنان مخفی نگه دارد.
3) کلید رمز باید بگونه ای قابل انتخاب باشد که اولا بتوان براحتی آن را عوض کرد و ثانیا بتوان آن را بخاطر سپرد. و نیازی به یادداشت کردن کلید رمز نباشد.
4) متون رمزنگاری شده باید از طریق خطوط تلگراف قابل مخابره باشند.
5) دستگاه رمزنگاری یا اسناد رمز شده باید توسط یک نفر قابل حمل ونقل باشد.
6) سیستم رمزنگاری باید به سهولت قابل راه اندازی و کاربری باشد. چنین سیستمی نباید به آموزشهای مفصل و رعایت فهرست بزرگی از قواعد و دستورالعمل ها نیاز داشته باشد.

اگرچه تمام این قواعد به نحوی در دنیای رمزنگاری مورداستناد قرار گرفته اند، اما اصل دوم (که تأکید می کند جزئیات الگوریتم های رمزنگاری باید آشکار و در دید عموم باشند و فقط کلیدهای رمز، سری و محرمانه هستند) به اصل اساسی کرکهف شهرت یافته است به تبعیت از همین اصل جزئیات تمام الگوریتمهای رمزنگاری کاملاً مشخص و دراختیار عموم قرار می گیرد.

تعاریف و اصطلاحات:
قبل از آنکه به معرفی روش های رمز نگاری بپردازیم، بهتر است با تعدادی از اصطلاحاتی که در این روش ها به کار می رود، آشنا شویم:

متن آشکار(Plain text / Clear text):
اطلاعات اصلی، قبل از اعمال الگوریتم رمزگذاری را متن آشکار می نامند. اطلاعات در این حالت برای انسان قابل فهم هستند.

متن رمز(Cipher text):
به اطلاعات به دست آمده بعد از اعمال الگوریتم رمزگذاری، متن رمز شده گفته می شود. اطلاعات رمز شده توسط انسان قابل فهم نیستند.

کلید رمز(Key):
پارامتری که متن آشکار بر اساس مقدار آن به نحو غیر قابل پیش بینی و مبهم، درهم و بی معنی می شود.

رمزگذاری(Encryption):
عملیاتی است که با استفاده از کلید رمز، متن آشکار را به متن رمز شده تبدیل می کند.

رمزگشایی(Decryption):
عملیاتی است که با استفاده از کلید رمز، متن رمز شده را به متن آشکار بازمیگرداند.

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

1) رمزنگاری متقارن یا کلید خصوصی(Symmetric Key, Private Key):
در این روش، رمزنگاری و رمزگشایی اطلاعات با کلید مشابه انجام می شود. این کلید باید بین طرفین (گیرنده و فرستنده) مورد توافق باشد.



ویژگی های کلی سیستم های رمزنگاری متقارن:

- سرعت بالا و امکان پیاده سازی نرم افزاری و سخت افزاری، به صورت بدون وقفه و با سرعت مناسب
- رمزنگاری داده ها در قالب بلوکهایی با طول ثابت
- نیاز به توافق و رد و بدل کردن کلید رمز با روشی مطمئن
- نیاز به تعداد زیادی کلید در ارتباطات چند طرفه و ایجاد مشکل به خاطر سپاری یا نگهداری کلیدها در هر طرف
- تکرار رمزنگاری در چند دور(Round) برای ایجاد امنیت بیشتر
- تشابه عملیات رمزنگاری و رمزگشایی

2) رمز نگاری نامتقارن یا کلید عمومی(Asymmetric Key, Public Key):
در این روش از دو کلید عمومی و خصوصی برای رمز گذاری و رمزگشایی استفاده می شود. از کلید عمومی برای رمزنگاری استفاده می شود و به راحتی می توان آن را در اختیار دیگران قرار داد. کلید خصوصی در نزد صاحب آن به صورت سری، می ماند و از آن برای رمز گشایی متن رمز شده استفاده می شود.


ویژگی های کلی سیستم های رمزنگاری نامتقارن:
- برای یک ارتباط چندگانه، صرفا به تعداد طرفین ارتباط به کلید نیاز می باشد.
- اشکال بزرگ این روش، سرعت پایین آن است که استفاده از این روش را برای کل اطلاعات با مشکل مواجه می کند.

zeyton ۰۲-۲۱-۱۳۹۳ ۰۶:۳۳ بعد از ظهر

مبانی رمزنگاری (قسمت دوم)
 
رمزنگاری سزار:
رمز سزار یکی از ساده ترین و شناخته ترین تکنیکهای رمز نگاری است. نام آن از ژولیوس سزار امپراتور روم گرفته شده است. او از این روش برای ارتباط با فرماندهان خود استفاده می کرد. این رمز یک نوع رمز جانشینی است که هر حرف در متن اصلی با حرف دیگری با فاصله ثابت جابجا می شود. برای مثال با مقدار انتقال 3،حرف A با D و حرف D با E جانشین می شوند.

الگوریتم رمز گذاری:
رمزگذاری سزار به وسیله فرمول زیر تعریف می شود:

C = ( P + K ) mod 26

P علامت اختصاری متن ساده است. C نیز علامت اختصاری متن رمزشده قلمداد می شود. K نیز علامت اختصاری کلید است.
حال الگوریتم را روی عبارت "Attack at dawn" و با کلید K=’E’ بررسی می کنیم :

Plain Text = “ Attack at dawn “

Key = ‘E

در این الگوریتم به هر یک از حروف یک عدد نسبت داده می شود. مثلا برای حروف A تا Z اعداد صفر تا 25.سپس عملیات رمزگذاری حرف به حرف انجام می گیرد:

C= ( P + K ) mod 26= ( ‘A’ + ‘E’ ) mod 26= ( 0 + 4 ) mod 26= 4= ‘E’

C= ( ‘t’ + ‘E’ ) mod 26= ( 19 + 4 ) mod 26= 22= ‘W’



C= ( ‘w’ + ‘E’ ) mod 26= ( 22 + 4 ) mod 26= 26 mod 26= 0= ‘A’

C= ( ‘n’ + ‘E’ ) mod 26= (16 + 4 ) mod 26= 20= ‘U’



Cipher Text = EWWEGO EW HEAR

الگوریتم رمزگشایی:
فرآیند رمزگشایی دقیقا عکس فرآیند رمزنگاری است الگوریتم رمزگشایی به وسیله فرمول زیر تعریف می شود:

P = ( C – K ) mod 26

جانشينی تک حرفی:
در این روش جابجاکردن حروف براساس جدول فراوانی حروف(با توجه به اينکه ادبيات نوشتاری در هر زبان دارای شاخص های آماری مشخص است) انجام می شود. فراوانی حروف انگلیسی در جدول زیر نشان داده شده است:


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

zeyton ۰۲-۲۱-۱۳۹۳ ۱۰:۱۰ بعد از ظهر

مبانی رمزنگاری (قسمت سوم)
 
رمزنگاری دو حرفی Playfair:
در سال 1854، «ليون پلي فر»روشي را براي رمز نگاري متون به دربار بريتانيا پيشنهاد داد كه اصالتاً بايد آن را يك روش جانشيني دو حرفي به شمار آورد. بعداً مشخص شد كه اين روش را دوست دانشمند او«چارلز وتستون» ابداع كرده ولي چون «پلي فر»به دربار راه داشته،اين روش به نام او ثبت شده است.

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

عملیات پیش پردازش:
1) فواصل بین حروف حذف می شود.
2) متن به صورت دو حرف دو حرف تفکیک می شود.
3) در صورت وجود دو حرف مشدد، بین آن ها x یا z قرار داده می شود.
4) یک جدول 5*5 در نظر گرفته می شود. (معادل 25 خانه، زیرا حروف انگلیسی 26 حرف است و J و I معادل در نظر گرفته می شوند.)
5) کلید رمز از بالا و چپ، با حذف حروف تکراری، در جدول نوشته می شود.
6) سایر خانه های جدول، به ترتیب، با حروف غایب جدول الفبا پر می شود.
اکنون جدول رمز آماده است.

برای رمزنگاری، متن اصلی به صورت دو حرف دو حرف طبق الگوریتم زیر جایگزین می شود:
1) هرگاه دو حرف اصلی در یک سطر جدول باشند، هر حرف با حرف سمت راست آن جایگذاری می شود.
2) هرگاه دو حرف اصلی در یک ستون باشند، هر حرف با حرف زیرین آن جایگذاری می شود.
3) هرگاه دو حرف اصلی در یک سطر و یک ستون نباشند، سطر محل حرف اول را ادامه می دهیم تا حرف محل تلاقی آن را با ستون حاوی حرف دوم را به دست آوریم. (حرف اول)آنگاه سطر حاوی حرف دوم را ادامه می دهیم تا حرف محل تلاقی آن را با ستون حاوی حرف اول به دست آوریم. (حرف دوم)
طبق الگوریتم فوق، کل متن به صورت دو حرف دو حرف، رمز خواهد شد. برای رمزگشایی این روش کافی است، عکس این الگوریتم را انجام دهیم.

عیب این روش این است که، برای شکستن چنین رمزی، می توان از شاخص آماری دو یا چند حرفی ها استفاده کرده و در نهایت نتایج را با دیکشنری مطابقت داد. بنابراین این روش در قرن بیستم جایی ندارد.

مثالی از روش Playfair:
كلمه FREEDOM ابتدا به FREXEDOM تبديل مي شود.سپس جدولي 5*5 (معادل 25 خانه) ترسيم وكليد رمز به ترتيب از سمت چپ وبالا در اين جدول درج مي شود مشروط بر آنكه حروف تكراري كلمه رمز حذف شوند. در زير فرض كنيد كليد رمز FIRSTAMMEND بوده است:
پس از درج كليد رمز باقيمانده خانه هاي اين جدول به ترتيب با بقيه حروف الفباي انگليسي كه در كلمه رمز نيامده اند پر مي شوند. حرف I و J نيز معادل هم ودر يك خانه فرض مي شود تا به جاي 26 حرف به 25 حرف بسنده شود وبتوان همه آنها را در جدولي 5*5 جا داد در مثال بالا با كسر حروف FIRSTAMMEND از حروف انگليسي پانزده حرف BCGHKLOPQUVWXYZ باقي مي ماند كه بايد از چپ به راست در جدول قرار بگيرد.

ابتدا متن به صورت دوحرف دوحرف تفکيک می شود (فواصل خالی حذف می شوند) و هرگاه دو حرف تکراری کنار هم باشند، بين آنها X يا Z قرار می گيرد. (FREEDOM FREXEDOM)
سپس در جدول 5*5 کليد رمز نوشته می شود و بقيه جدول با ديگر حروف الفبا پر می شود. حالا متن اصلی بصورت زير جايگزين می شود:

1) دو حرف اصلی در يک سطر: هر حرف با حرف کناری سمت راست عوض می شود.

2) دو حرف اصلی در يک ستون: هر حرف با پايينی خود جابجا می شود.
مثال: دوحرفی FI به IR دوحرفی OQ به PU

3) دو حرف اصلی نه در يک سطر نه دريک ستون: محل تقاطع سطر و ستون به صورت ضربدری جابجا می شوند.
مثال: دوحرفی IM به MC دوحرفی GX به PR
مثال: دوحرفی GU به KP دوحرفی YM به WN


حال متن اصلي به صورت دو حرف دو حرف طبق روال زير جايگزين مي شوند:

الف) هرگاه دو حرف اصلي در يك سطر از جدول قرار داشته باشند هر حرف با حرف كناري سمت راست آن عوض مي شود. به عنوان مثال طبق جدول قبل دو حرفي FI بهIR و OQ به PU تبديل مي شود طبق اين قرارداد KB نيز به BC تبديل خواهد شد.

ب) هرگاه دو حرف اصلي در يك ستون از جدول قرار داشته باشند هر حرف با حرف زيرين خود جايگزين مي شود طبق اين قرارداد IM به MC و GX به PR تبديل خواهد شد.

طبق روال فوق كل متن به صورت دو حرف دو حرف رمز خواهد شد براي رمز گشايي كافي است روال بالا را تكرار كنيد با اين تفاوت كه حركت به سمت راست يا پايين برعكس شود.

zeyton ۰۲-۲۴-۱۳۹۳ ۱۰:۰۵ بعد از ظهر

مبانی رمزنگاری (قسمت چهارم)
 
رمز نگاري چند حرفي هيل:
وجود شاخصهاي آماري براي دو يا سه حرفي ها، «لستراس هيل» را به اين فكر واداشت كه بايستي بيش از سه حرف را در هم ادغام كرد تا بلكه استحكام بيشتري در مقابل حملات مبتني بر شاخصهاي آماري متن به وجود بيايد.
آقاي هيل وشريكش يراي رمز نگاري و رمز گشايي متون، ماشيني مكانيكي را طراحي و به عنوان اختراع در سند US-patent 1.845.947 به ثبت رساندند. این ماشین حروف متن را در دسته هاي شش حرفي ادغام و رمز نگاري مي كرد و كلاً از چرخ دنده و زنجير و تسمه ساخته مي شد و از لحاظ ظاهر به چرخ خياطي شباهت داشت ولي هيچكس سفارش خريد چنين ماشيني را نداد. در شکل زیر تصویر ماشین رمزنگاری هیل را مشاهده می کنید.


اين رياضي دان در روش خود از جبر ماتريسي بهره گرفت:
الف) هر حرف انگليسي به ترتيب با عددي صحيح بين صفر تا 25 جايگزين مي شود.
ب) متن در قالب گروه هاي n حرفي به n حرف جديد نگاشته مي شود.

مي توان روابط بالا را به صورت ماتريسي نشان داد:
C=(K.P)MOD 26
كه در آن P,C دو بردار n*1 هستند و به ترتیب معادل متن رمز شده و متن اصلی می باشند و k ماتريسي n*n است. در رمز «هيل» كليد رمز در حقيقت همين ماتريس k است.

در اين رمزگذاری طول گروه های n حرفی با امنيت رابطه مستقيم دارد. برای رمز گشايي از وارون k استفاده می شود.

مثالی از روش هیل:
فرض کنید بخواهیم کلمه "ACT" را رمز کنیم، اگر کلید رمز به صورت زیر فرض شده باشد:
آنگاه کلمه رمز شده به صورت زیر به دست خواهد آمد:

عیب های روش هیل:
1) در رمزنگاری هیل هرچه طول n افزایش یابد امنیت روش بهبود خواهد یافت ولی در عوض کلید رمز که همان ماتریس k است به شدت بزرگ شده و راهی جز یادداشت کردن آن باقی نخواهد ماند. که برخلاف اصول شش گانه کرکهف، امنیت را به گونه دیگری به مخاطره می افکند.
2) در مجموع روش هیل بر حمله مبتنی بر متن حساس است. چرا که کاملا خطی است و با داشتن تعداد کافی متن اصلی و معادل رمز شده می توان به کلید رمز دست یافت.

zeyton ۰۲-۲۴-۱۳۹۳ ۱۱:۲۷ بعد از ظهر

مبانی رمزنگاری (قسمت پنجم)
 
رمز نگاري one time pad(رمز ورنام):
«گيلبرت سند فورد ورنام» (1960-1890)يكي از مهندسين شركت بل در آمريكا عملگر بسيار ساده XOR را براي رمز نگاري دنباله اطلاعات پيشنهاد داد. در طرح او كه در سال 1918 و قبل از ابداع كامپيوتر و براي ماشينهاي تحرير تله تايپ ارائه شد، پيشنهاد آن بود كه يك كليد رمز بسيار بزرگ كاراكتري بر روي يك نوار كاغذي درج و درون ماشين قرار داده شود. سپس دنباله حروف متن كاراكتر به كاراكتر با اين كليد رمز XOR شوند.
البته آقاي ورنام در طرح خود عملكرد رمز نگار را با نماد XOR معرفي نكرده چرا كه اين واژه ها زائيده عصر ديجيتال محسوب مي شوند. در عوض او از جبر منطقي و الگوي قطع و وصل رله ها بهره گرفته است آژانس امنيت ملي امريكا ابداع ورنام را مهمترين اتفاق در تاريخ رمز نگاري مي داند.

شرایط کلید در رمز ورنام:
شرط اول : كليد به صورت كاملا تصادفي انتخاب شود واحتمال صفر و يك بودن بيتهاي كليد دقيقاً 1/2 و مستقل از يكديگر باشد.
شرط دوم : طول كليد و متن اصلي برابر باشند. شرط دوم از شرط اول قابل استنتاج است چرا كه هر گاه طول كليد از طول متن كوتاه تر باشد قاعدتاً مجبور به تكرار كليد خواهيم بود كه اين موضوع شرط استقلال بيتها ي كليد را مخدوش مي كند.
شرط سوم: براي رمز نگاري متون مختلف هيچگاه از يك كليد دوبار استفاده نشود.

رمز نگاری و رمزگشایی one time pad:
كليد رمز كه بايد بطور كاملاً تصادفي وهمسان با طول دنباله متن انتخاب شود به Pad شهرت دارد كه اين كليد هرگز نبايد تكرار يا استفاده مجدد شود به همین دلیل اين روش رمز نگاري، عموماً با عنوان one time pad نيز شناخته مي شود. براي ارائه يك رابطه رياضي از روش one time pad فرض كنيد متن اصلي را P ناميده و دنباله بيتهاي اين متن را به ترتيب Pi بناميم بيتهاي متن رمز شده Ci به صورت زير تعريف مي شود:
Ci = Pi xor Ki
براي رمز گشايي نيز كافي است به صورت زیر عمل کنیم:
Pi = Ci xor Ki

مشکلات روش one time pad:
1) از آنجا كه كليد بايد از لحاظ طول با اصل پيام هم اندازه باشد فلذا هر گز در عمل نمي توان كليد را بخاطر سپرد پس هم گيرنده و هم فرستنده بايد كليد را از قبل توافق و در جايي ذخيره كنند.(برخلاف اصول كركهف)
2) چون براي پيامهاي متفاوت بايستي از padهاي متفاوت استفاده كرد و از هيچ padبيش از يكبار استفاده نمي شود لذا گيرنده و فرستنده مجبورند پيشاپيش هزاران pad را توافق و در جايي ذخيره كنند تا براي پيامهاي متوالي خود از آنها استفاده كرده و سپس آن را دور بيندازند.
3) حجم كل داده هايي كه مي تواند ارسال شود به حداكثر طول padبستگي دارد.
4) اگر گيرنده فقط يك بيت از ميان كل بيتهاي رمز شده را از دست بدهد و به هر دليل نتواند وجود يكي از بيتها را تشخيص بدهد مابقي بيتهاي دريافتي از لحاظ ترتيب با pad هماهنگ نيستند و مابقي متن از رمز خارج نخواهدشد.
5) توليد دنباله تصادفي pad نياز به مولد هاي شبه تصادفي دارد.
6) روش one time pad به حمله known plaintext هرگز مقاوم نيست.

zeyton ۰۲-۲۵-۱۳۹۳ ۰۹:۲۸ بعد از ظهر

مبانی رمزنگاری (قسمت ششم)
 
الگوريتم هاي مولد دنباله هاي شبه تصادفي:
يكي از روشهايي كه مي تواند دنباله بزرگي از كليدها را با كليدي كوتاه جايگزين و روش مبتني بر xor را در عمل امكان پذير مي كند استفاده از الگوريتمهاي مولد دنباله هاي شبه تصادفي است. در اين روش الگوريتمي طراحي مي شود كه با يك پارامتر كوچك به نام كليد كار خود را آغاز و در روالي نامحدود دنباله اي از بيتهاي شبه تصادفي را توليد كند. الگوي كلي چنين روشي، به سيستم رمز دنباله اي شهرت دارد.

مشکلات روش مولد دنباله شبه تصادفي:
1) بر خلاف روش one time pad يك سيستم رمز دنباله اي را نمي توان الگوي متعالي رمز دانست زيرا مولد دنباله شبه تصادفي كه در سطح نرم افزار يا سخت افزار پياده مي شود بخاطر محدوديتهاي عملي پس از توليد تعدادي بيت، دنباله بيتها را تكرار خواهد كرد و تكرار بيت ها شرط تصادفي بودن وعدم وابستگي بيت ها به يكديگر را مخدوش مي كند.

2) هر گاه طول كليد كه در حقيقت حالت اوليه الگوريتم مولد دنباله شبه تصادفي را تعيين مي كند كوچك باشد رمز شكن مي تواند تمام فضاي كليد (key space) را يكي يكي جستجو كند.

3) طراحي مولد دنباله شبه تصادفي به اندازه طراحي يك الگوريتم رمز نگاري پيچيده است زيرا براي توليد دنباله اي شبه تصادفي از بيتها سيستم مولد بايد سه شرط زير را برآورده كند:
1- دوره تناوب دنباله بيتهاي شبه تصادفي بايد به حد كافي بزرگ باشد وهرگز در خلال رمز نگاري يك پيام بزرگ اين دنباله تكرار نشود.
2- دنباله بيتهاي شبه تصادفي بايد به روشي قابل پياده سازي در سطح سخت افزار توليد شود.
3- هر گز نتوان بر اساس مقادير توليد شده كنوني بيتهاي بعدي مولد را تخمين زد.

روش مبتني بر شيفت رجيسترهاي فيدبك دار خطي:
در اين روش كه براي پياده سازي در سطح سخت افزار بسيار مناسب است یك شيفت رجيستر كه مي توان آن را به صورت سريال و موازي بارگذاري كرد، با يك مقدار اوليه بار گذاري و سپس برخي از بيتها با يك عملگر خطي مثل xor در هم تلفيق شده و در رجيستر فيدبك مي شود و اين روال ادامه مي يابد.

روش مبتني بر شيفت رجيسترهاي فيدبك دار غير خطي:
در اين روش نيز همانند روش قبل از يك شيفت رجيستر استفاده مي شود ولي براي تلفيق برخي از بيتها وبازگرداندن آن در رجيستر از توابع غير خطي(مثل جدول جانشيني توابع درجه 2 يا3 يا توابع بيضوي بهره گرفته مي شود تا كار تخمين دنباله شبه تصادفي دشوارتر شود.

zeyton ۰۲-۲۶-۱۳۹۳ ۰۸:۴۷ بعد از ظهر

مبانی رمزنگاری (قسمت هفتم)
 
قبل از اینکه به معرفی روش های مدرن رمزنگاری بپردازیم، ابتدا مقدمه ای راجع به این روش ها ارائه می دهیم.

ويژگی های بنيادين سيستم های مدرن رمزنگاری متقارن:
1. پخش و پراکنده سازی
2. گمراه کنندگی
3. اثر فروپاشی بهمنی
4. توليد شبه نويز
5. رعايت اصل دوم کرکهف
6. وجود مؤلفه های غير خطی
7. برابری طول خروجی با ورودی
8. عدم امکان مدلسازی رمزنگار با روابط جبری
9. قدرت تمام کليدها

دو ويژگی «پخش و پراکنده سازی» (Diffusion) و «گمراه کنندگی » (Confusion) در سال 1949 توسط «کلود شانون» ارائه شد.اين دو ويژگی عموما معياری غير کمی هستند.

1. پخش و پراکنده سازی (Diffusion):
در سيستم رمزنگار، نبايد هيچگونه همبستگی بين بيت های خروجی ، کليد و بيت های متن رؤيت شود. مثل مخلوط کردن چند ماده طوری که تشخيص مواد اوليه از روی محلول با توجه به رنگ، بو و مزه غير ممکن باشد.
هر متن آشكار فارغ از آنكه ماهيتاً از چه جنسي باشد (متن،صدا،تصوير و....) داراي الگو وشاخصهاي آماري خاص خود است و طبعاً الگوي آماري يك متن آشكار رمز نشده را مي توان با چندين پارامتر كمي مدلسازي كرد.
از ديدگاه تئوري سيستم رمز نگار بايد ساختار و كل شاخصهاي آماري متن آشكار را بر روي كل متن رمز شده توزيع و پراكنده كند. به بيان ديگر يك سيستم رمزنگار هرگز نبايد ويژگيهاي آماري متن را به هر نحو در خروجي رمز شده منتقل كند. بدين ترتيب هر گاه خروجي يك سيستم رمز نگار را تحليل آماري مي كنيد، نبايد هيچ گونه همبستگي بين بيتهاي خروجي، كليد و بيتهاي متن رؤيت شود.
نکته:
هر گاه روشي بخواهد به جاي كاراكتر با كوچكترين واحد اطلاعات يعني بيتها كار كند براي پخش و پراكنده سازي اثر بيتهاي ورودي به دنباله وسيعي از بيتهاي خروجي بايستي از عملگر XOR (در حقيقت عمل جمع پيمانه اي به پيمانه 2 بوده و وران پذير است) استفاده كند و بيتها را در چندين دوره بر روي هم تأثير بدهد.

2. گمراه کنندگی (Confusion):
در عمل هرگز نبايد بتوان بين ورودی ، خروجی و کليد هيچ رابطه ی سرراست و مشخصی پيدا کرد. به بياني ديگر پيچيدگي يك سيستم رمز نگاري متقارن بايد آنقدر زياد وژرف باشد كه استنتاج رابطه اي كه بر اساس آن خروجي سيستم بر حسب كليد و ورودي بدست مي آيد، در عمل از عهده هيچ كسي در جهان بر نيايد؛ حتي اگر به ابر رايانه هاي فوق سريع مجهز باشند.
تأكيد مي كنيم كه سيستمهاي رمزنگاري متقارن ملزم به داشتن چنين ويژگي هستند در حالي كه در روش هاي نا متقارن (كليد عمومي) رابطه بين ورودي، خروجي و كليد رمز كاملاً مشخص است.

3. اثر فروپاشی بهمنی (Avalanche Effect) :
يعنی يک تغيير جزئی در ورودی يا کليد ( حتی به انداره يک بيت) به طرز بسيار گسترده، غير قابل پيش بيني وغير متمركز خروجي را تغيير داده و متحول كند و در عين حال هيچ شاخص آماري از اين تغيير و تحول به جا نگذارد. گاهي اثر فروپاشي بهمني را با شاخص كمي بيان مي كنند.

4. توليد شبه نويز:
هرگاه خروجی رمزنگار را به ازای هزاران ورودی يا کليد مختلف مشاهده می کنيم، بايد آن را شبيه به يک دنباله کاملا تصادفی مستقل از ورودي، مستقل از كليد و بدون هيچ شاخص آماري مرتبط با متن ارزيابي كنيد.

5. رعايت اصل دوم کرکهف:
آگاهی از جزئيات الگوريتم رمزنگاری هرگز نبايد سبب تضعيف آن شود و امنيت الگوريتم صرفا بايد در گرو مخفی نگه داشتن کليد رمز باشد.

6. وجود مؤلفه های غير خطی:
تابعی مثل f را غير خطی می گوييم هرگاه (f(a+b) != f(a)+f(b.
تابعي مثل f را به شدت غير خطي مي گوييم مشروط بر آنكه تابع نه تنها غير خطي باشد بلكه تخمين اين رابطه به صورتf(a+b) = g (f(a))+g(f(b)) نيز غير ممكن باشد.
در هر الگوريتم رمز نگاري متقارن بايستي ار مؤلفه هايي بهره گرفت كه غير خطي عمل مي كنند. اگر XOR را عمل جمع به پيمانه 2فرض كنيم جايگشت نسبت به اين جمع خطي وعمل جانشيني نسبت به اين جمع به شدت غير خطي است مشروط بر آنكه جداول جانشيني به درستي انتخاب شده باشد.

7. برابری طول ورودی با خروجی:
سيستم رمز نگار متقارن حق ندارد طول داده ها را افزايش بدهد يا از آن بكاهد. (طول ورودي وخروجي ضمن هم اندازه بودن عموماً ثابت است.)

8. عدم امکان مدل سازی رمزنگار با روابط جبری:
الگوريتم بايد چنان پيچيده وگمراه كننده باشد كه هرگز نتوان آن را با رابطه اي جبري (حتي رابطه اي تقريبي) مدل كرد.

9. قدرت تمام کليد ها:
الگوريتم رمزنگاری متقارن بايستی به گونه ای طراحی شده باشد که انتخاب هر کليد امنيت يکسانی داشته باشند، همچنین بايد به گونه اي طراحي شود كه انتخاب هر كليد از فضاي حالات ممكن تفاوتي نداشته باشد وچيزي به نام كليدهاي ضعيف يا كليدهاي قوي مطرح نباشد.

zeyton ۰۲-۲۷-۱۳۹۳ ۱۰:۲۵ بعد از ظهر

مبانی رمزنگاری (قسمت هشتم)
 
اجزای سيستم های رمزنگاری مدرن:

P-box(جعبه جایگشت)
در سيستمهاي رمز نگاري مدرن، داده ها در چندين مرحله (موسوم به دور يا round) درهم سازي مي شوند و ضمن استفاده از عملگر پر قدرت XOR از اجزاي درهم ساز متعدد ديگري نيز بهره مي گيرند. يكي از ساده ترين مؤلفه هاي رمز نگاري كه در تركيب با ديگر اجزا در بسياري از روشهاي رمز نگاري مدرن و متقارن كاربرد دارد، p-box است. در يك عبارت بسيار كوتاه و گويا p-box ابزاري است كه ترتيب بيتهاي ورودي را به هم مي ريزد و آنها را در خروجي ظاهر مي كند. بديهي است كه مقدار بيتها را تغيير نخواهد داد بلكه جاي آنها را عوض مي كند. پياده سازي سخت افزاري چنين مؤلفه اي به هيچ عنصري مثل ترانزيستور نياز ندارد و كافي است ترتيب سيمهاي ورودي به p- box را طبق الگوي دلخواهتان به خروجي متصل كنيد.


S-box(جعبه جانشینی)
مؤلفه ديگر كه در روشهاي رمز نگاري مدرن و متقارن كاربرد بسيار زيادي دارد، s-box است. s-box هر عدد n بيتي را به صورت يك به يك به عددي n بيتي مي نگارد؛ اين جانشيني بر اساس جدول نگاشت مورد نظر طراح انجام مي گيرد. راهكارهاي متفاوتي براي پياده سازي وجود دارد ولي راه سرراست و كلي آن تبديل n ورودي به 2^n خط توسط يك ديكورد است تا به ازاي هر الگوي ورودی، فقط يكي از خروجي ها فعال شود. حال مي توانيد با جابجا كردن ترتيب اين خطوط و وصل آن به يك انكودر جدول نگاشت مورد نظرتان را پياده سازي كنيد.


مشكل پياده سازي s-box:
بزرگترين مشكل در پياده سازي s-box آن است كه با افزايش تعداد ورودي ها پيچيدگي مدار با نسبت نمايي افزايش مي يابد به عنوان مثال ساخت يك s-box 64بیتی(يا حتي 32و16 بيتي) در عمل ممكن نيست. لذا براي ايجاد s-box با تعداد ورودي زياد بايد از تركيبي مختلط بهره گرفت براي طراحي s_box مختلط ساختاري منظم از آنها بكار گرفته مي شود.بدين ترتيب پس از جانشيني سه بيتي در چهار s-box 12 بيت بدست مي آيد كه بار ديگر با جايگشت بيتي در p-box بعدي ترتيب بيتها جابجا مي شود تا بيتهاي خروجي هرs-box از مرحله قبل در تركيب كاملاً متفاوتي به ورودي s-boxهاي مرحله جديد وارد شوند اين فرآيند به دفعات دلخواه تكرار مي شود تا خروجي نهايي بدست آيد.

zeyton ۰۲-۲۸-۱۳۹۳ ۰۸:۰۰ بعد از ظهر

مبانی رمزنگاری (قسمت نهم)
 
رمز نگاری SPN (شبكه جانشيني و جايگشت كليددار):
P-box، S-box دو مؤلفه بنيادي سيستمهاي رمز نگاري مدرن، يك روش رمز نگاري بسيار ساده مبتني بر سه ركن P-box، S-box و تلفيق كليد با عملگر XOR را ایجاد می کنند. فرآيند رمز نگاري در چهار دوره مشابه تكميل مي شود و در هر دوره ورودي 16 بيتي طبق الگوریتم زیر رمز مي شود:

1. ابتدا بيتهاي ورودي با كليدي 16 بيتي XOR مي شوند. (در كل فرآيند رمز نگاري جمعاً به پنج كليد 16 بيتي نياز است.) به اين كليدها كليد فرعي يا كليد دوره گفته مي شود و همه آنها را مي توان از يك كليد 16 بيتي يا طولاني تر بدست آورد.

2. در گام دوم نتيجه عملیات مرحله قبل در چهار گروه چهار بيتي به چهار S-box وارد مي شوند این S-boxها كه جدول جانشيني متفاوتي دارند هر چهار بيت را با مقادير جديد جانشين مي كنند.

3. در گام سوم با عمل جايگشت بيتي هر يك از بيتهاي خروجي S-boxها به گونه اي تغيير موقعيت مي دهند تا تأثير خروجي هر يك از S-box ها در ورودي تمام S-boxهاي دوره بعدي ظاهر شود به عبارت ديگر خروجي هر S-box در يك دور، ورودي تمام S-boxهاي دور بعدي را تحت تأثير قرار مي دهد.


معماری رمز فيستل ( Feistel ):
«هارست فيستل» از شرکت IBM بر اساس پيشنهادات «شانون» الگويي عام برای رمزنگاری متقارن پيشنهاد کرد، که بسياری از روش های مدرن رمزنگاری بر اساس معماری او طراحی شدند.


ويژگيهاي بنيادي معماري رمز فيستل به شرح زيراست:

1) رمزنگاري مشتمل بر تعدادي مرحله تكراري و مشابه موسوم به دور است و در هر دور فقط كليد رمز و احتمالاً ثابت ها تغيير مي كنند و ماهيت عمل در تمام دورها يكسان و آشكار است.

2) ورودي هر دور به دونيمه چپ و راست تقسيم شده و در هر دور يك نيمه از ورودي دست نخورده باقي مي ماند در حالي كه نيمه دوم براساس تركيبي بسيار پيچيده و به شدت غيرخطي از نيمه اول، دوم و كليد رمزنگاري مي شود. (يک نيمه خروجی همان ورودی است و نيمه ديگر حاصل ترکيب غير خطی از دو نيمه ورودی است.)

3) براي رمزگشايي هر دور، در اختيار داشتن نيمه دست نخورده و كليد دور كافي است.

4) پس از هر دور بايد جاي دو نيمه تعويض شود تا نيمه دست نخورده در دور بعدي مشمول عمل رمزنگاري شود.

5) فرايند رمزنگاري نيمه دوم ورودي، بايد توسط تابعي به شدت غيرخطي و غيرجبري انجام بگيرد، اگر اين تابع پيچيده را f بناميم استحكام و سرعت سيستم رمزنگاري در گرو ماهيت دروني f خواهد بود.
به تابع f‌ اصطلاحاً تابع خردكن گفته مي شود. اين تابع پس از آنكه داده ها را به روشي غيرخطي درهم كرد آنها را در بيتهاي كليد تلفيق كرده و پس از جايگشت، داده ها را به خروجي مي فرستد. تابع f‌ مي تواند تابعي يك طرفه باشد بدين معنا كه حتي با داشتن كليد و خروجي رمز شده نتوان معکوس f را محاسبه كرد ولي بايد تابعي پوشا باشد.

6) با اعمال دوباره f بر روی پارامترهای ورودی، رمزگشايي صورت می گيرد.

7) تعداد دور بايد آن قدر زياد باشد تا دنبال كردن رابطه ورودي، خروجي و كليد در عمل غيرممكن باشد. افزايش تعداد دورها ويژگي گمراه كنندگي را افزايش خواهد داد.

8) هر دور از عمليات رمزنگاري بايد داراي كليدي متفاوت از دور قبلي باشد در عين حال كليدهاي فرعي بايد به روشي پيچيده و نامتعارف از كليد اصلي مشتق شده باشند توليد كليدهاي فرعي مستقل از فرايند رمزنگاري است وليكن پيچيدگي روش توليد در قدرت و استحكام كل سيستم رمزنگار تاثير جدي مي گذارد.

9) روش توليد كليدهاي فرعي از شاه كليد، بايستي حتماً يك طرفه باشد تا حتي با لو رفتن يك يا چند تا از كليدهاي فرعي كسي نتواند شاه كليد يا بخش قابل توجهي از بيت هاي كليد را كشف و بازيابي كند.

10) پياده سازي سخت افزاري و نرم افزاري روشهاي فيستلي بايستي بتواند داده ها را با حداقل تاخير ممكن و ترجيحاً بصورت بي درنگ رمزنگاري كند.

11) طول شاه كليد و كليدهاي دور بايستي به قدري بزرگ باشد تا هيچكس نتواند با اتكا به روش سعي و خطا كل فضاي كليد را جستجو كند.

12) حداقل طول مجاز داده 64 بيت است ولي در روشهاي جديد هر بلوك داده 128 بيت درنظر گرفته شده است.

zeyton ۰۳-۸-۱۳۹۳ ۱۰:۴۷ بعد از ظهر

مبانی رمزنگاری (قسمت دهم)
 
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 ۰۳-۱۰-۱۳۹۳ ۰۵:۳۴ بعد از ظهر

مبانی رمزنگاری (قسمت یازدهم)
 
نمایی از عملکرد تابع F:


روش استخراج کليدهای فرعی از کليد اصلی:
استخراج کلیدهای فرعی (48 بیتی) از کلید اصلی (56 بیتی) روند ساده و سریعی دارد ولی روال ابهام آلود وسردرگم کننده آن به استحکام DES کمک شایانی کرده است.
روال تولید کلیدهای فرعی برگشت پذیر نیست (اصطلاحاً یکطرفه است) بدین معنا که با داشتن یک یا چند کلید فرعی نمی توان بصورت سر راست و مستقیم شاه کلید را پیدا کرد.


برای استخراج 16 کلید فرعی، روال زیر شانزده بار تکرار می شود:

1) در اولین گام ،بیتهای کلید اصلی جایگشت داده می شوند. این جایگشت بیتی که اختصاراً PC-I = Permuted Choice one نامیده شده طبق جدول زیر انجام می گیرد.


2) در دومین گام، 56 بیت خروجی مرحله قبل در قالب دو نیمه 28بیتی با دو رجیستر با قابلیت شیفت چرخشی به سمت چپ وارد می شوند. تعداد شیفت ها در هر یک از مراحل 16 گانه تفاوت دارد و به شماره دور بستگی دارد. تعداد شيفت طبق جدول زير است:


3) در سومین گام از تولید کلید فرعی، خروجی شیفت یافته مرحله قبل، در قالب یک رشته بیتی 56 بیتی واحد ،مجدداً تحت جایگشت بیتی قرار می گیرد. این جایگشت بیتی که اختصاراً PC-2 Permuted Choice Two نامیده شده طبق جدول زیر انجام می گیرد. دقت کنید که در این جایگشت برخی از بیتهای ورودی در خروجی حضور ندارند زیرا باید از مجموع 56 بیت 48 بیت به عنوان کلید دور انتخاب شود.


برای تولید مابقی کلیدها همین روال از گام دوم تکرار می شود.

DESرمزگشایی:
یکی از زیبایی های DES آن است که عمل رمزگشایی داده ها نیاز به الگوریتم مجزا ندارد؛ هر گاه در الگوریتم رمز نگاری ترتیب کلیدها واژگون شود، رمزگشایی صورت خواهد گرفت به عبارت دیگر اگر در الگوريتم رمزنگاری بيت ها در کليدها را واژگون کنيم و بلوک رمز شده را به عنوان ورودی به الگوريتم اعمال کنيم، رمزگشايي صورت می گيرد.
رمز نگاری و رمز گشایی DES فرآیندی مستقل از جزئیات درونی تابع است. بدین معنا که می توانید در الگوریتم DES جزئیات تابع F را طبق میل خود تغییر بدهید و الگوریتم رمزنگاری و رمز گشایی مخصوص به خود را ایجاد کنید. روشن است که تابع F نقش بسیار پر اهمیتی در استحکام الگوریتم رمز نگاری ایفاء می کنید. این تابع باید بشدت غیر خطی و گمراه کننده باشد.

DESبررسی استحکام:
از زمانی که DES با پشتیبانی آژانس امنیت ملی آمریکا معرفی و به عنوان استاندارد فدرال توصیه شد، مناقشات و شایعات گسترده ای پیرامون آن در گرفت و شبهات زیادی به استحکام و امنیت آن وارد آمد.
در سال 1977 دو پروژه رمزنگاری از دانشگاه استنفورد به نام های «دیفی» و «هلمن»، طرح ماشینی برای شکستن رمز DES ارائه کردند و تخمین زدند این ماشین با هزینه ای حدود 20 میلیون دلار قابل ساخت است. این ماشین می توانست با داشتن یک قطعه کوچک از متن اصلی و کل متن رمز شده، کلید رمز را بین 256 حالت مختلف، در کمتر از یک روز پیدا کند. آن سالها کسی چنین پولی را نداد و چنین ماشینی هرگز ساخته نشد تا شایعه ضعف DES باقی بماند! حدود 20 سال بعد با ارزانتر شدن تکنولوژی و فراگیر شدن اینترنتت، رمز شکنی DES (به روش جستجوی کلید) میسر شد. با ارزان تر شدن پردازنده ها، ماشین های چند پردازنده متعددی برای شکستن DES طراحی و گاه ساخته شدند.
به هر حال شایعات و اتهامات هیچ گاه از دامان DES پاک نشدند و تلاش IBM نیز برای قدرتمندتر کردن آن با معرفی DES ـ 3 کمک چندانی به محبوبیت آن نکرد و سرانجام با معرفی روش AES تیر خلاص به DES زده شد.

طبیعت الگوریتم DES:
پيچيدگی DES از «به شدت غير خطي» بودن جداول جانشينی و غير قابل بازگشت بودن تابع F در صورت در اختيار نداشتن کليد k ، ناشی شده است.
آنچه که در خصوص معيارهای انتخاب S-Box های هشت گانه آشکار شده، آن است که:
1) خطی نبودن رابطه بين بيت های خروجی
2) هر سطر از جدول نگاشت S-Box ها تمام 16 حالت مختلف 0 تا 15 را در بر می گيرد تا فضای حالت خروجی دقيقا 16 باشد.
3) هرگاه دو ورودی 6 بيتی از يک S-Box واحد ، تنها در يک بيت تفاوت داشته باشد، خروجی آنها حداقل در دو بيت اختلاف دارد.
4) هرگاه دو ورودی به S-Box واحد در دو بيت ابتدايي اختلاف داشته باشند و در دو بيت انتهايي مشابه باشند، خروجی يکسان حاصل نمی شود.
شرایط فوق معیارهایی هستند که رمز شکن ها را متقاعد می سازد که S-BOX ها به شدت غیر خطی هستند و این الگوریتم از سطح گمراه کنندگی بالایی برخوردار است.

DES ـ 3
الگوریتم رمزنگاری DES ـ 3 (Triple DES)، روش مستقل و جدیدی به شمار نمی آید بلکه حاصل تلاش IBM برای افزایش موثر طول کلید و ایجاد اطمینان بیشتراست. در الگوریتم DES- 3 داده ها به کمک دو کلید 56 بیتی سه بار رمزنگاری می شوند. بنابراین فضای حالت کلید از 256 به112 افزایش می یابد که طول قابل قبولی است و دست هیچ یک از ماشینهای رمز شکن به چنین فضای بیکرانی نخواهد رسید.
در روش DES ـ 3 بلوک 64 بیتی ورودی ابتدا با کلید K1 رمزنگاری می شود. سپس حاصل این مرحله با کلید K2 رمزگشایی می شود. (رمزگشایی با کلید K2 هیچ تفاوتی با رمزنگاری ندارد.) سپس بار دیگر حاصل با کلید K1 رمز نگاری خواهد شد تا نتیجه رمز شده در خروجی بدست آید.


در اينجا از دو مرحله رمزنگاری و يک مرحله رمزگشايي برای رمزنگاری استفاده می شود. دليل رمزگشايي در مرحله دوم آن است که هرگاه کليدهای K1 و K2 مثل هم انتخاب شوند، دو بلوک اول تاثير يکديگر را خنثی می کنند و 3-DES به DES تبديل خواهد شد.

zeyton ۰۳-۱۲-۱۳۹۳ ۰۸:۵۹ بعد از ظهر

مبانی رمزنگاری (قسمت دوازدهم)
 
1(ها)ضميمه
در این پست پیاده سازی des رو با استفاده از نرم افزار matlab به همراه تمام جداول موردنیاز گذاشتم. امیدوارم به دردتون بخوره...

zeyton ۰۳-۱۳-۱۳۹۳ ۰۹:۰۹ بعد از ظهر

مبانی رمزنگاری (قسمت سیزدهم)
 
رمزنگاری AES:
DES قربانی حمایت دولت فدرال آمریکا شد. NIST نخواست که تجربه ناموفق DES را تکرار کند. بنابراین رقابتی چند مرحله ای از ژانویه 1977 تا نوامبر 2001 ترتیب داد تا استاندارد جدیدی برای رمزنگاری از بین روش هایی که توسط شخصیتهای حقیقی پیشنهاد شده اند، انتخاب شود و هر گونه شائبه دخالت در فرآیند طراحی و وجود (Backdoor) را از بین ببرد.
پس از طی مراحل چندگانه این رقابت:
دو جوان بلژیکی Rijmen و Daemen پیروز این رقابت شدند.
الگوریتم این دو توسط NIST استاندارد سازی و در سند FIPS 197 تحت نام AES (Advanced Encryption Standard ) عرضه شد. این الگوریتم در ابتدا Rijndael نامیده شد. این روش نه تنها DES را که الگوریتمهای دیگری مثل RC4 را نیز به حاشیه رانده است.

دلایل شگفتی سازی روش رمزنگاری Rijndael در دنیای رمزنگاری کلید متقارن :

1) عدم پیروی این روش از الگوی سنتی روشهای فیستلی و مبتنی بر حالت خاصی از «میدان های گالوا» (Galios Field ) می باشد.
2) انتخاب این روش بعنوان استاندارد دولت فدرال آمریکا در فضائی آزاد و بدون اعمال نفوذ عوامل جاسوسی یا امنیتی ایالات متحده و ثبت تحت قوانین غیر انحصاری و لذا بهره برداری آزاد از آن در محصولات مختلف
3) امنیت بسیار بالا، سرعت زیاد، پیاده سازی ساده، فضای حافظه مورد نیاز کم و قابلیت انعطاف بالا

اختلاف بين Rijndael و AES :

1) در Rijndael، طول کلید و طول بلوک داده می تواند 128، 192 و 256 بیت باشند لذا می توان گفت که Rijndael دارای 9 انتخاب متفاوت برای رمزنگاری اطلاعات است.
2) در AES طول بلوک داده صرفاً باید 128 بیتی (معادل 4 کلمه 32 بیتی) باشد ولی طول کلید را از بین یکی از مقادیر 128، 192 و 256 بیتی انتخاب می کنند بدین ترتیب AES کلاً دارای سه انتخاب است.
این پارامترها باید به الگوریتم رمزنگاری وارد شوند:
Nb: طول بلوک داده ورودی (در AES هميشه 4 است.)
Nk: طول کليد (4 ، 6 يا 8)
Nr : تعداد دورهای رمزنگاری( به طول کليد وابسته است)


بلوک داده و کليد طبق الگوی شکل زير در ماتريسی با 4 سطر ذخيره می شود و عمليات پردازش بر روی ستون های 4 بايتی انجام می گيرد.


بررسی شبه کد AES برای حالت خاص AES-128:


تابع رمزنگار rijndael دارای 3 آرگومان است:
1) plaintext: آرايه ای به طول 16بايت حاوی داده های رمز نشده اصلی
2) Ciphertext: آرايه ای به طول 16 بايت برای برگرداندن معادل رمزنگاری شده ی داده های ورودی
3) Key : آرايه ای به طول 16 بايت حاوی کليد رمزنگاری
متغير دو بعدی state يک آرايه 4*4 است که داده های ورودی درون آن منتقل و پردازش ها بر روی آن انجام می گیرد. (متغير حالت)
متغير سه بعدی rk دارای 11 عنصر است، که هر عنصر يک کليد است. هر عنصر آن خود یک ماتریس 4×4 است بنابراین rk[0] تا rk[10] همگی ماتریس هائی هستند که باید در هر دور از برنامه با «متغیر حالت» XOR شوند.
فقط یک شاه کلید 16 بایتی وجود دارد مابقی ده کلید فرعی، طبق الگوریتم نسبتاً پیچیده ای از روی شاه کلید اصلی تولید می شود.

اولین اختلاف AES با DES:
DESبر روی بیت ها کار می کند و AES بر روی کلمات 32 بیتی

متغیر سه بعدی rk:


1) در ابتدای برنامه با فراخوانی تابع() expand-key، شاه کلید (یعنی متغیر key) به یازده کلید فرعی، توسعه داده می شود و درون متغیر rk قرار می گیرد تا در برنامه از آنها استفاده شود.
2) در مرحله بعدی ،متن اصلی به درون آرایه state منتقل می شود تا در ده دور متوالی پردازش شود. عمل کپی داده ها به درون آرایه state باید به صورت ستونی انجام گیرد: یعنی چهار بایت اول در ستون اول، چهار بایت دوم در ستون دوم و...... شماره گذاری سطر ها و ستونها از صفر آغاز می شود.
3) قبل از شروع حلقه تکرار،rk[0] با آرایه state، بایت به بایت XOR می شود.

zeyton ۰۳-۱۴-۱۳۹۳ ۱۰:۴۴ بعد از ظهر

مبانی رمزنگاری (قسمت چهاردهم)
 
در الگوریتم 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 ۰۳-۱۵-۱۳۹۳ ۰۸:۰۸ بعد از ظهر

مبانی رمزنگاری (قسمت پانزدهم)
 
توسيع کليد در AES:
تعداد کليدهای فرعی مورد نياز، به تعداد دورها(Nr) و تعداد دورها نيز به کليد(Nk) وابسته است.
در AES تنها یک (Master key) وجود دارد که کلیه «کلید های دور» (Round key)، طبق یک الگوریتم پیچیده وارون ناپذیر از روی آن ساخته می شود.
در 128 ـ AES طول کلید 128 بیت و تعداد دورها ده تا است لذا باید ده کلید فرعی دیگر از روی شاه کلید ساخته شود.

1) برای تولید اولین کلید فرعی، «شاه کلید» در ستون صفر تا 3 از یک ماتریس (به ابعاد 4 سطر و 44 ستون) قرار می گیرد.

2) ستون چهارم از کلید (یعنی ستون با اندیس 3) را به درون یک آرایه 4×1 منتقل کرده و در اولین گام، به آن یک شیفت چرخشی از پائین به بالا می دهیم. پس از این چرخش یکایک بایتهای ستون طبق یک جدول جانشینی ثابت با مقادیر جدید جایگزین می شوند.

3) پس از عمل جانشینی بایت ها، ستون جدید با ستون اول (ستون شماره صفر) از کلید اصلی XOR می شود.

4) XORمجدد آن با ستون متناظر از جدولی ثابت به نامRcon(round constant) انجام می شود. ستون متناظر از این جدول عبارتست از شماره ستون فعلی (که در حال ساخت آن هستیم یعنی ستون شماره 4) تقسیم بر NK، که در این مرحله برابر [1] Rcon می شود.

5) ستون اول از کلید فرعی حاضر است. سه ستون بعدی راحت تر بدست می آیند: ستون اول از کلید جدید با ستون دوم از کلید قبلی، XOR شده و ستون دوم از کلید جدید را می سازند. ستون جدید مجدداً با ستون سوم از کلید قدیم باز هم XOR شده و ستون سوم از کلید جدید را می سازد. بدین ترتیب چهار ستون از کلید فرعی اول محاسبه می شود.

6) برای محاسبه دومین کلید فرعی کافی است کلید محاسبه شده قبلی را کلید اصلی فرض کرده و همین روال تکرار تا کلید دوم بدست آید.

این روال تا تولید تمام کلیدهای مورد نیاز تکرار می شود.

يک مثال از توسيع کليد:


zeyton ۰۳-۱۶-۱۳۹۳ ۰۶:۳۱ بعد از ظهر

مبانی رمزنگاری (قسمت شانزدهم)
 
پيش زمينه های رياضی در رمزنگاری AES:

گروه:
گروه تشکيل شده ازيک مجموعه مثل G که به همراه عملگرفرضی ⨁ بصورت (G, ⨁) نشان داده می شود و دارای خواص زير است:
1) اين عملگر روی مجموعه G بسته است.
2) اين عملگر دارای خصوصيت شرکت پذيری است.
3) اين عملگر بايد دارای عضو همانی باشد.
4) به ازای هر عنصر مثل a از G ، يک عنصر معکوسa متعلق به G وجود داشته باشد.

گروه آبلی (Abelian Group) يا گروه جابجايي: علاوه بر شرايط گروه شرايط زير را دارا باشد: a,b ∈G ⇒a⨁b=b⨁a∀

گروه محدود (Finite Group): تعداد عناصر G محدود و قابل شمارش باشد. برای گروه های محدود، نماد Ord(G) تعداد عناصر گروه را مشخص می کند.

گروه چرخه ای: هرگاه يک مؤلفه مثل a درG پيدا شود به نحوی که توانهای متوالی آن به شکل a^i ، تمام عناصر G را توليد کند.

قضيه لاگرانژ: Ord(H) | Ord(G)
يعنی تعداد عناصر H ، تعداد عناصر G را می شمارد.

حلقه:
يک حلقه تشکيل شده از يک مجموعه به نام R که دو عملگر فرضی ⨂و⨁ بر روی آن تعريف و با نماد (R,⨁,⨂) معرفی می شود.با شرايط زير:
1) (R,⨁) بايد يک گروه آبلی باشد.
2) Rبر روی عملگر دوم بايد دارای خواص شرکت پذيری باشد.
3) عملگر دوم بر روی عملگر اول بايد دارای خصوصيت پخشی از چپ به راست باشد.
4) عملگر دوم نيز بايد به ازای تمام عناصر R ، دارای عضو همانی در همين مجموعه باشد.

ميدان:
هرگاه مجموعه F به همراه دو عملگر فرضی يک حلقه جابجايی باشد و در عين حال هر عضو F بر روی عملگر دوم نيز معکوس داشته باشد.

میدان محدود: تعداد عناصر میدان F محدود و قابل شمارش باشد Ord(F) تعداد عناصر میدان است.
اگر P عددی اول باشد Zp اعداد غیر صفر کمتر از p باشد عملگر ضرب پیمانه ای و مجموعه Zp یک گروه آبلی می باشد.

چند جمله های روی Zp: مجموعه Zp (باقيمانده اعداد به پيمانه P) با دو عملگر جمع و ضرب پيمانه ای يک ميدان محدود را تشکيل خواهد داد. جمع دو چندجمله ای عبارت خواهد بود از جمع ضرايب جملات هم توان به پيمانه p و ضرب چندجمله ها نيز به پيمانه p انجام می گيرد يعنی پس از محاسبه ضرايب ، نتيجه به پيمانه P کاهش مي يابد.

ميدان گالوا GF(p) : مجموعه Zp به همراه دو عملگر جمع و ضرب پيمانه ای (p) يک ميدان محدود را تشکيل می دهند، که به آن ميدان گالوای GF(p) می گويند.

zeyton ۰۳-۱۹-۱۳۹۳ ۰۷:۰۹ بعد از ظهر

مبانی رمزنگاری (قسمت هفدهم)
 
توصيف رياضی روش AES:
کوچکترين واحد اطلاعات در الگوريتم AES يک بايت است. نمايش رياضی آن در ميدان GF(2) بصورت زير است:
پياده سازی عمل جمع دو بايت که در ميدان GF(2) مدل شده اند، همان عمل xor است.

میدان گالوای GF(2):
مجموعه Z2 یعنی{1،0} به همراه عملگرهای جمع و ضرب پیمانه ای به پیمانه 2 یک میدان محدود است.
چندجمله ایهای روی این میدان خود یک حلقه را تشکیل می دهند. ضرایب هر جمله یا صفر یا یک است ومحاسبات در پیمانه 2 می باشد.
یکی از کاربردهای آن در CRC میباشد.

جمع بایتها:

ضرب بایتها:
حال باید حاصلضرب را به پیمانه m(x) کاهش داد تا در هشت بیت قابل نمایش باشد:
مجموعه چند جمله ايها با دو عملگر xor و «ضرب پيمانه ای به پيمانه m(x) » يک ميدان را تشکيل می دهد.

تبدیل Mix Columens در رمزنگاری AES:
این تابع هر ستون از آرایه State را به طور مستقل از دیگر ستون ها، تلفیق و درهم سازی می کند. عمل تلفیق به این نحو است که هر ستون در یک ماتریس ثابت ضرب می شود تا ستون جدید بدست آید.


درجه ستونی مانریس ثابت حداکثر 3 می باشد.

الگوریتم رمزگشایی AES:
الگوریتم رمزگشایی AES فقط در ثابت ها و کلید های دور با الگوریتم رمزگذاری تفاوت دارد.


تفاوت های الگوریتم رمز گشای AES با رمز گذار آن:
1) وارون عمل AddRoundKey (یا همان XOR) تکرار آن است. زیرا:
a XOR k XOR k = a
2) برای عمل وارون جانشینی بایت ها، کافی است جدول جانشینی با مقادیر مناسب پر شود و از لحاظ ماهیت پیاده سازی تفاوتی ندارد.
3) وارون عمل شیفت چرخشی، باز هم شیفت چرخشی است.
4) برای وارون سازی MixColumens کافی است همین عمل با مقادیر «ماتریس وارون» یا a^-1 از نو تکرار شود. پس برای رمز گشایی AES فقط باید در ثابت های الگوریتم تغییر داد، نه در ماهیت عمل.

تصویری از پیاده سازی سخت افزاری AES:


sahar_gtc ۱۲-۱۵-۱۳۹۴ ۱۱:۰۱ قبل از ظهر

سلام
وقتتون بخیر
من دارم روی s-box الگوریتم aes مطالعه میکنم..ممنونم میشم اگه کد این قسمت و تو متلب یا زبانهای دیگه دارید برام ارسال کنید .
مرسی وقت میزارید.
sahar_gtc3146@yahoo.com
ممنون میشم به این آدرس ارسال نمایید.
با تشکرو احترام

امین 58 ۰۱-۳۰-۱۳۹۵ ۰۸:۵۷ بعد از ظهر

خطی بودن توابع و ...
 
سلام دوست عزیز . تشکر بابت مطلب مفیدتون.
موضوع پایان نامه من درمورد خطی بودن و غیر خطی بودن و یکنواختی دیفرانسیل در توابع دوری در رمزنگاری s-boxes هست .
تشکر میکنم اگر منبع مقاله یا کتاب برام معرفی کنین .


زمان محلي شما با تنظيم GMT +3.5 هم اکنون ۱۰:۲۶ قبل از ظهر ميباشد.

Powered by vBulletin® Version 3.8.3
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.1.0 ©2007, Crawlability, Inc.