بخشی از مقاله
*** این فایل شامل تعدادی فرمول می باشد و در سایت قابل نمایش نیست ***
بالا بردن امنيت الگوريتم رمزنگاري RC٥ با بکارگيري مولدهاي شبه تصادفي (PRG- based RC5)
چکيده
در اين مقاله هدف اصلي بالا بردن امنيت الگوريتم RC٥ با ايجاد تغييراتي در قسمت گسترش کليد و قسمت رمز کننده ميباشد؛ که اين هدف با به کار بردن اعداد شبه تصادفي تامين ميشود. براي اين منظور يک مولد شبه تصادفي بکار ميبريم که از همان کليد مربوط به رمزنگاري منتخب کاربر براي توليد سري اعداد تصادفي استفاده ميکند. در اين رويه اعداد تصادفي براي انتخاب عمليات جهت رمز کردن متن اصلي و جهت انتخاب تعداد شيفت در مرحله گسترش کليد به کار برده ميشوند. به علاوه مرحله درهم ريختگي کليد با توجه به الگوريتم AES صورت ميگيرد. بنابراين با به کار گيري مولد شبه تصادفي و ترکيب الگوريتم AES با اين روش ، الگوريتم PRG-based RC٥ را ارائه ميکنيم . خواهيم ديد که امنيت دراين الگوريتم نسبت به الگوريتم RC٥ افزايش مييابد.
واژه هاي کليدي: مولد شبه تصادفي، الگوريتم RC٥، الگوريتم AES، رمزنگاري، رمزگشايي .
١- مقدمه
رمزنگاري يا علم رمزشناسي مشتق شده از سه کلمه يوناني به معناي مطالعه و تمرين پنهان سازي اطلاعات است . لفظ رمزنگاري ١ به فرايندي اطلاق ميشود که متن اصلي ٢ را به متن رمز شده ٣ تبديل ميکند. در 4 مقابل ، عمل رمزگشايي تبديل متن رمزي به اطلاعات قابل فهم ميباشد. قديميترين ابزار براي توليد رمز توسط يونانيان اختراع شد که Scytale ناميده ميشد که مشابه مدل هاي رمزنگاري مدرن بود[١]. در عصر کنوني رمزنگاري به عنوان شاخه اي از هر دو علم رياضيات و کامپيوتر مطرح ميباشد. اين علم ارتباط نزديکي با تئوري اطلاعات ، امنيت اطلاعات و مهندسي دارد. عمل رمزنگاري و رمزگشايي وابسته به يک اطلاعات کمکي است که "کليد" ناميده ميشود. کليدها عناصر پراهميتي هستند زيرا عمل رمزنگاري و رمزگشايي تنها از طريق اين پارامترها انجام ميگيرند. بدون داشتن کليد، تبديل متن رمز شده به صورت يک متن قابل فهم تقريباً غير ممکن است . بنابراين محرمانه بودن کليد و متغير بودن آن تاثير بسيار زيادي در بالا بردن امنيت دارد.
در گذشته ، رمزنگاري فقط در مورد پيغام هاي محرمانه مطرح ميشد، اما امروزه ، رمزنگاري علاوه برحفظ محرمانگي ٥، دربرگيرنده مهارت چک کردن درستي ٦ پيغام ، سنديت هويت ٧ فرستنده .گيرنده ، امضاي 8 ديجيتالي و ...ميباشد. رمز گذارها به دو گروه رمزگذارهاي جويباري و و رمز گذارهاي بلاکي ٩ تقسيم ميشوند. الگوريتم RC٥ جزء رمز گذارهاي بلاکي متقارن سريع ميباشد که بصورت سخت افزاري و نرم افزاري قابل پياده سازي است . اما اين الگوريتم توسط مهاجمان شکسته شده است . در اين مقاله الگوريتم PRG-based RC٥ ارائه ميشود که با استفاده از مولدهاي شبه تصادفي و ترکيب الگوريتم
AES با RC٥ ميتواند امنيت را نسبت به RC٥ افزايش دهد. در ادامه اين مقاله ، در قسمت ٢ و ٣ به ترتيب با رمزگذارهاي AESو RC٥ آشنا شده ، و با نحوه گسترش کليد، رمزگذاري و رمزگشايي در الگوريتم RC٥ آشنا ميشويم . در قسمت ٤ با مولدهاي شبه تصادفي سخت افزاري و نرم افزاري آشنا ميشويم . در قسمت ٥ روش پيشنهادي ، ارائه شده و در نهايت نتيجه گيري از روش ارائه شده در قسمت ٦ آورده شده است .
٢- الگوريتم AES
در علم رمزشناسي AES10 به نام Rijndel هم شناخته ميشود و يک رمز گذار بلاکي است که مشابه الگوريتم 11DES ميباشد. اين الگوريتم توسط NIST در سال ٢٠٠٢ ارائه شده و از ٢٠٠٦، نيز به عنوان يکي از مشهورترين الگوريتم هاي رمزگذاري مورد استفاده قرار ميگيرد. AES چه بصورت سخت افزاري و چه بصورت نرم افزاري سريع است و به حافظه کمتري نياز دارد[٦]. AES با بلوکهاي داده ثابت ١٢٨ بيتي و کليدهايي با سايز ١٢٨، ١٩٢ يا ٢٥٦ بيتي کار ميکند. به دليل اندازه بلوک ثابت ١٢٨ بيتي، AES روي آرايه ٤×٤ بايتي عمل ميکند.
گسترش کليد با استفاده از برنامه کليد Rijndae1 اولين گام در اين الگوريتم است [٤]. در گام بعدي مقداردهي اوليه با کليد اصلي کاربر است . گام بعدي تکميل کردن الگوريتم ميباشد که از يک مرحله گسترش کليد استفاده ميکند، که هر بايت با يک جدول تعويض ميشود. سپس نوبت پس و پيش کردن رديف هاست که حالت هر رديف با يک عدد خاصي در گام هاي مختلف شيفت داده ميشود. بعدًا يک بهم ريختگي ١٢ روي ستون ها انجام ميشود، که روي هر ستون صورت ميگيرد، که چهار بايت هر ستون را با هم ترکيب ميکند. به اين مرحله Mix Columns گفته ميشود.که در اين مقاله هم اين مرحله براي آشفتگي جدول کليدها بکار گرفته شده است ؛ و هر بايت با يک کليد دوره اي ترکيب ميشود. هر کليد دوره اي که از کليد رمز مشتق شده است استفاده ميکند. سپس در دور نهايي ابتدا هر بايت در دو حالت با ٨ بيت از جدول S داده شده ،جايگزين ميشود.که اين عمل ارتباط غير خطي را در رمز فراهم ميکند. S-Box١٣ از روش غير خطي (٢٨) GF و روش افزايش معکوس براي داشتن بهترين حالت غيرخطي استفاده ميکند. براي جلوگيري از هجوم مشخصه جبري S-Box از ترکيب تابع وارون با يک ماتريس تبديلي وارون پذير ساخته ميشود؛ که S-Box از هر انتخاب به صورت نقطه ثابت جلوگيري ميکند (آشفتگي ايجاد ميکند). سپس در مرحله بعد از دور نهايي، هر بايت در هر رديف به طور دوره اي به چپ شيفت داده ميشود. تعداد مکان هايي که هر بايت در هر رديف شيفت داده ميشود متفاوت است و روي رديف ها عمل ميکند،که به طور دوره اي هر بايت در هر رديف با يک Offset خاصي شيفت مييابد. براي AES اولين رديف تغيير نيافته باقي ميماند. هر بايت رديف دوم يک بار به چپ شيفت داده ميشود و به طور مشابه رديف سوم و چهارم به ترتيب دو و سه بارشيفت به چپ داده ميشود[٥]. براي بلوکهاي ١٢٨ بايتي و ١٩٢ بايتي الگوي شيفت همان است . در اين روش ، هر ستون خروجي در اين مرحله ، از ستون هاي حالت ورودي ساخته شده است ؛ ولي در کليد ٢٥٦ بيتي روش Rijndae١ اولين رديف بدون تغيير، و رديف هاي دو و سه و چهار به ترتيب ١و٣و٤ بايت شيفت داده ميشوند؛ ولي اين روش در AES مورد استفاده قرار نميگيرد[٤]. درمرحله سوم از گام نهايي چهار بايت هر ستون با يک تبديل غيرخطي معکوس ترکيب ميشود و در مرحله چهارم هم هر بايت با يک کليد دوره اي عمل Xor انجام ميدهد. براي هر کليد دوره اي که از کليد اصلي مشتق شده است استفاده ميشود .هر کليد دوره اي در همان سايز n بايتي است که با آن قرار است Xor شود.
بنابراين هر بيت با بيت متناظر Xor ميشوند. اين الگوريتم هم براي رمزنگاري و هم براي رمزگشايي مورد استفاده قرار ميگيرد. در شکل (١) نحوه انجام عمليات Mix Columns نشان داده شده است . شکل (٢) نيز چگونگي انجام عمليات Xor را نشان ميدهد.
شکل ١: عمليات Mix Columns
شکل ٢: عمليات XOR
٣- الگوريتم RC5
الگوريتم رمزنگاري RC5 توسط پروفسور Ronald Rivest از MIT طراحي شد و در دسامبر ١٩٩٤ منتشر شده است [٢]. دستاورد اصلي RC5، استفاده از داده هاي وابسته به چرخش است . در اين الگوريتم اندازه کلمات ، بلوکها، تعداد دورها (تکرارها) و حتي اندازه کليدها نيز متغيراست . الگوريتم RC5، رمزنگاري بلاکي متقارن است ؛ و اندازه متن اصلي و متن رمز شده با هم برابرند. از سوي ديگر اين الگوريتم براي سخت افزار و نرم افزار مناسب است به اين معني که عمليات محاسبات اوليه اي را انجام ميدهد که در اکثر ميکروپروسسورها يافت ميشود.
الگوريتم RC5 سريع است و اين الگوريتم کلمه گرا است به اين معني که همه محاسبات ، W بيت ، ورودي و خروجي دارند و بايد عمليات پايه همزمان روي همه کلمه ها١٤ اعمال ميشود. در اين الگوريتم بايد گسترش طول کلمات امکان پذير باشد. بنابراين تعداد بيت ها در يک کلمه يکي از پارامترهاي RC5 است که با انتخاب پارامترهاي مختلف ، نتيجه الگوريتم RC5 متفاوت خواهد بود. از سوي ديگر ساختار RC5 با تعداد تکرارهاي متفاوت کاراتر است و کاربر بايد بين سرعت زياد و امنيت بالا توازن ١٥ ايجاد کند. بنابراين تعداد تکرارها نيز يکي ديگر از پارامترهاي RC5 است . اين الگوريتم بايد طول کليد متغير داشته باشد تا کاربر بتواند سطح امنيتي مناسبي را براي کاربردش انتخاب کند و طول کليد هم پارامتر سوم RC5 است .
RC٥حافظه کمتري نياز دارد بنابراين به سادگي روي کارت هاي هوشمند يا وسايل ديگر با حافظه محدود قابل استفاده هستند. RC5 بايد امنيت کافي را متناسب با پارامترهاي موجود تامين کند[١٦]. از سوي ديگر RC5 مورد هجوم هاي فراوان قرار گرفته است که از جمله ميتوان به روش ديفرانسيل و تحليل خطي اشاره کرد[٣].
در اين قسمت پارامترهاي RC5 را تشريح ميکنيم :
W: اندازه يک کلمه برحسب بيت است که هر کلمه شامل (8.w)W= بايتي است . مقدار استاندارد براي W،32 بيت واعداد مجاز ٦٤ و ٣٢ و ١٦ است . بلوکهاي RC5 براي متن هاي اصلي و متن هاي رمز شده ، هر کدام دو کلمه اي يا 2W هستند.
r: اين پارامتر نمايانگر تعداد تکرارها است . عدد r بزرگتر امنيت بيشتري را به ارمغان خواهد آورد. b: تعداد بايت ها در کليد اصلي k است .که مقادير مجاز ٢,١,٠,...,٢٥٥ است .
S: جدول گسترش کليد است که از کليد اصلي K مشتق شده که جدول S شامل (١+r)٢=t کلمه است که ميتواند مقادير ١,٠ ,....٢٥٥ را اختيار کند. K: کليد b بايتي است براي مثال RC٥٣٢١٢١٦ به نام Nominal مشهور است .W، ٣٢ بيتي، ١٢ تا تکرار، ١٦ بايت طول کليدش است . r به عنوان تعداد تکرارها پارامتر دوم RC٥ است . و اندازه جدول S هم وابسته به r است ، البته انتخاب r بزرگتر حافظه بيشتري هم نياز خواهد داشت .
الگوريتم RC٥ شامل سه قسمت اصلي
١) الگوريتم گسترش کليد
٢) الگوريتم رمزنگاري
٣) الگوريتم رمزگشايي؛ ميباشد.
٣-١ عملکرد الگوريتم RC٥
ريشه گسترش کليد اين است که کليد سري کاربر k، آرايه S را پر خواهد کرد. بنابراين آرايه S مشابه يک آرايه (١+r)٢=t کلمه تصادفي باينري است که به وسيله k مشخص ميشود. الگوريتم گسترش کليد از دو مقدار ثابت و سه الگوريتم ساده استفاده ميکند. دو عدد ثابت الگوريتم گسترش کليد از دو مقدار Pw و Qw استفاده ميکند که به
صورت زير است :
و (odd)n نزديکترين عدد فرد به n است . براي ٣٢ ,١٦=W در زير به صورت باينري و هگزا دسيمال بيان شده است .
اولين گام الگوريتم گسترش کليد کپي کردن کليد اصلي در [١-b,...,٠]k به يک آرايه [١-c,...,٠]L مي باشد که [b.u]c= و
٨.u=W ميباشد. اين عمليات به طور طبيعي بايت هاي کليد اصلي را به طور متوالي به هر کلمه در L به صورت پشت سر هم بايت کم ارزش را به بايت پر ارزش منتقل ميکند. در نهايت بايت هاي پر نشده با صفر پر ميشوند.
گام دوم در الگوريتم گسترش کليد، مقداردهي به آرايه S با يک مقدار ثابت با يک الگوي بيتي تصادفي است . که با استفاده از يک تصاعد عددي به پيمانه 2w با مقدار ثابت Qw وPw محاسبه ميشود. (به اين صورت که مقدار Pw را در اولين خانه آرايه S قرار ميدهيم و سپس از خانه اول تا خانه 1-t را به ترتيب با Qw وخانه قبلي جمع ميکنيم تا همه خانه ها پر شود.)
سومين گام در گسترش کليد به هم ريختن کليد کاربر در حرکت به سمت S وL است . آرايه هاي بزرگ سه بار پردازش خواهند شد. (يعني مقدار خانه هاي آرايه L (با کليد پر شده ) با عمل شيفت به راست به تعداد A,B تغيير يافته و نهايتاً بوسيله B به داخل آرايه S منتقل ميشود.) تابع گسترش کليد يک تابع يک طرفه است . بنابراين يافتن K و S بدون کليد آسان نيست .
متن اصلي ورودي RC5 شامل دو کلمه W بيتي است که با A و B نشان ميدهيم . همچنين RC٥ از يک جدول گسترش يافته کليد [١-t,...,٠]S استفاده ميکند که شامل (١+r)٢=t تا W بيتي است .
الگوريتم گسترش کليد، S را از روي کليد k داده شده توسط کاربر پر ميکند. فرض ميکنيم که بلوک ورودي ٢ تا W بيتي است که در ثبات هاي A,B ذخيره شده است . همچنين فرض ميکنيم که کليدها گسترش يافته اند بنابراين آرايه [1-t,...,0]S کامل شده است .
خروجي در ثبات هاي A,B است . بايد دقت کرد که هر تکرار RC٥ هر دو ثبات A,B را Update ميکند. که در DES اين تکرارها فقط روي نصف ثباتها انجام ميشود. يک RC5 با نصف تکرار بيشتر قابل قياس با DES است [٥,٦]. ريشه رمزگشايي نيز به آساني از ريشه رمزنگاري مشتق شده است و براي رمزگشايي در واقع عکس عمليات رمزنگاري انجام ميگيرد.
٤- مولد شبه تصادفي ١٦
سيستم اعداد شبه تصادفي، از يک الگوريتم مشخص پيروي ميکنند اما اعدادي که توسط آنها توليد ميشوند به صورت تصادفي به نظر ميرسند.که از اين الگوريتم ها بهترين نوع آن الگوريتمي است که احتمال انتخاب براي هر کدام از اعداد موجود در آن سري يکسان باشد. براي توليد اعداد شبه تصادفي هم ميتوان از مولدهاي سخت افزاري بر پايه LFSR١٧ها يا از مولدهاي نرم افزاري مانند SAS استفاده کرد[٦].
انواع مولدهاي شبه تصادفي يکنواخت وغير يکنواخت وجود دارند که با نرم افزار مذکور قابل توليد هستند. اعداد شبه تصادفي در شبيه سازيها و تخمين مونت کارلو کاربرد دارد[٧]. روشي که ما در اينجا استفاده ميکنيم روش خطي يکنواخت ٣ modulo(٢+Seed)N= است ؛که Seed به عنوان مقدار اوليه الگوريتم ها ميباشد[٨]. در الگوريتم نوشته شده Seed مورد نظر کليد اصلي کاربر است . البته لازم به توضيح است که الگوريتم هاي ديگري نظير MT موجود است که قادرند اعداد با رنج تغييرات بسيار بالايي را توليد کنند که قابليت توليد اعداد متنوع تري نسبت به بقيه مولدها را