بخشی از مقاله
چکیده
با توجه پیشرفت روزافزون FPGAها امروزه برای پیادهسازی بیشتر ماژولهای رمز از این ابزار پرکاربرد استفاده میشود. بنابراین FPGA یک سختافزار برنامهپذیر است که از آن برای پیاده-سازی سختافزاری یک سری از محاسبات مانند رمز کردن با سرعت بالا استفاده میشود دلایل بسیاری برای این استفاده روزافزون وجود دارد. در رمزنگاری کاربردهایی وجود دارد که نیازمند تغییراتی در الگوریتمهای استاندارد رمزنگاری است.
چنین تغییراتی به آسانی در سختافزارهای قابل بازپیکربندی مجدد قابل اجراست هم چنین در موارد بسیاری اصول رمزنگاری و یا حالتهای کاربرد آن بر اساس کاربرد خاص ممکن است تغییر کند هم چنین پردازندههای همه منظوره برای اجرای سریع الگوریتمهای رمزنگاری به خصوص الگوریتم کلید عمومی بهینهسازی نشدهاند در اصل این مسئله به این خاطر است که این پردازندهها توانایی عملیات ریاضی بر روی عملوندهای طولانی را ندارند اگر چه پیادهسازی بر روی FPGA نسبت به ASIC معمولا کندتر است ولی نسبت به پیادهسازی نرمافزاری از سرعت ذاتی بیشتری برخوردار است.
در سالهای اخیر امنیت الگوریتم استاندارد پیشرفته رمزنگاری - AES - در مقابل حملات مورد توجه ویژهای قرار گرفته است. زیرا این الگوریتم از جمله مهمترین و پرکاربردترین الگوریتمهای معاصر است که در کاربردهای متنوعی از جمله کارتهای هوشمند، وب سرورها، تلفن های سلولی شبکهی ATM و... مورد استفاده قرار میگیرد. در این مقاله ضمن پیاده سازی الگوریتم AES روی FPGA حملهی توانی روی آن اعمال و نتایج در محیط نرمافزاری Qsim QuartusII، EPE و MATLAB شبیهسازی گردیده است.
مقدمه
در واقع FPGAها نوعی از تراشههای برنامه پذیر هستند که از لحاظ زمانی بعد از انواع سادهتری از تراشههای برنامه-پذیر همچون PALها و PLAها عرضه شدند و انقلابی در صنعت طراحی دیجیتال ایجاد کردند. آنچه که به شکل عمدهای این تراشهها را از انواع اولیه تراشههای برنامهپذیر متفاوت میکند، اندازه مدارهایی است که میتوان روی این تراشهها پیادهسازی کرد. تراشه های برنامه پذیر اولیه میتوانستند کاربردهایی با اندازه چند مدار SSI یا MSI را پیاده سازی کنند در حالیکه یک FPGA میتواند مدارهایی با اندازه VLSI را پیاده سازی کند. علاوه بر این میتوان به بهرهوری استفاده از FPGA در کاربردهای رمزنگاری اشاره کرد.
در طراحی باید دو عامل برای بررسی بهرهوری هزینه باید مد نظر قرارگیرد. هزینهی طراحی و هزینهی هر واحد، هزینهی طراحی برای پیادهسازی FPGA بسیار کمتر از هزینه ی طراحی ASIC است زیرا فرد طراح به راحتی می تواند طرح مورد نظر را روی FPGA پیادهسازی کرده و آن را تست نماید که همین امر زمان رسیدن به بازار را کاهش میدهد همین مساله یکی از عوامل مهم در طراحیهای امروزی است هزینهی واحد نیز در مقایسه با هزینهی طراحی بسیار ناچیز است البته لازم به ذکر است که تمام کاربردهای رمزنگاری مذکور فقط در حالتی قابل اعمال است که حملهی کانال جانبی به FPGA غیرممکن باشد.
زمانی که الگوریتم رمز روی FPGA پیاده میشود طراحی متداول سختافزار رمزنگار به گونهای است که با محیط بیرون در ارتباط بوده و اطلاعات محرمانهای بدین واسطه از تراشه خارج میشود. لذا باید بدانیم که چطور میتوان با تجزیه و تحلیل اطلاعات نشتی از طریق مصرف توان و سایر کانالهای جانبی کلید صحیح رمز را استخراج نمود. مقاومت در برابر رمز نوشتهها آنقدر زیاد نیست که بتوانند سیستم رمزنگاری شدهی امنی در عمل ارائه دهد.
حتی با شبیهسازی دقیق و الگوریتمها و پروتکلهای قوی نیز نمیتوان امنیت لازم را ایجاد کرد چرا که آسیبپذیری در لایههای بعدی امکانپذیر است. حملات رمزشکنی به دو دسته ی عمده تقسیم می شود: دستهی اول استراق سمع از کانال غیر امن و استفاده از تکنیک های خاص شکستن رمز که عمدتا روشهای نرمافزاری ریاضی و آماری هستند و دستهی دوم حملات کانال جانبی، استفاده از اطلاعاتی نظیر توان مصرفی، تاخیرهای زمانی موجود در آن، امواج الکترومغناطیس ساطع شده از آن جهت شکستن رمز میباشد.
دسته دوم موسوم به حملات کانال جانبی1 در اواسط دههی نود معرفی شد که برای شکستن رمز و استخراج کلید استفاده میشده است. به دلیل استفاده ی فراوان از سخت افزارهای امن و کاربردهای فراوان آن حملات سخت افزاری به سرعت گسترش پیدا کردند تا آنجا که مهمترین خطر بر سیستمهای رمزنگاری معاصر از ناحیهی هدف قرار دادن نقاط ضعف پیادهسازی و استفاده از اطلاعات جانبی نشتی است و حملات آماری و الگوریتمی در درجه ی بعدی اهمیت قرار می-گیرند. در نتیجه پیادهسازی صحیح الگوریتم رمز الزاما به معنای امن بودن نیست.
[1] این در حالی است که امروزه با استفاده از حملهی توانی در کمتر از سه دقیقه میتوان کلید 128 بیتی موجود در یکFPGA2 مبتنی بر یک سلول استاندارد را که در آن الگوریتمAES3 پیاده سازی شده است، بدست آورد.[2] در نتیجهی تحقیقات و مطالعات انجام شده انواع مختلفی از این حملات و روشهای مقابله با آنها پیشنهاد شده است. از جمله مهمترین روشهای مقابله میتوان به روشهای پیادهسازی مانند پالسساعت تصادفی شده[3]، رمز کردن حافظه، تصافی کردن توان مصرفی و از بین بردن همبستگی بین توان مصرفی تراشه و منبع تغذیه خارجی اشاره کرد علاوه بر آن روشهای دیگری از قبیل پیادهسازی با منطقمکمل4، منطق SABL5 و منطق غیر همزمان6 را می توان نام برد.
برخی از آنها مبتنی بر طراحی یک سری گیت خاص است که مصرف توان آنها مستقل از ورودی هایشان است که در این زمینه نیز طرح های متعددی ارائه شده است که می توان بهBSDT [4] ،SABL [6][5] وWDDL [9][8][7] اشاره کرد. در این مقاله ضمن پیاده سازی الگوریتم AES روی FPGA حملهی توانی روی آن اعمال و نتایج در محیط نرمافزاری Qsim QuartusII، EPE و MATLAB شبیهسازی گردیده است و الگوریتم از حیث مقاوم بودن بررسی گردیده است. . در ادامه مقاله به بحث دربارهی جدولهای جستجو، چگونگی تولید ماسک، متد پیشنهادی، نتایج حاصل از پیادهسازی، اعمال حمله و در نهایت به نتیجهگیری خواهیم پرداخت.
همانگونه که اشاره شد در واقع FPGAها نوعی از تراشههای برنامه پذیر هستند که از لحاظ زمانی بعد از انواع سادهتری از تراشههای برنامهپذیر همچون PALها و PLAها عرضه شدند و انقلابی در صنعت طراحی دیجیتال ایجاد کردند. آنچه که به شکل عمدهای این تراشهها را از انواع اولیه تراشههای برنامهپذیر متفاوت میکند، اندازه مدارهایی است که میتوان روی این تراشهها پیادهسازی کرد .تراشه های برنامه پذیر اولیه میتوانستند کاربردهایی با اندازه چند مدار SSI یا MSI را پیادهسازی کنند در حالیکه یک FPGA میتواند مدارهایی با اندازه VLSI را پیاده سازی کند. این تعداد ترانزیستور تفاوتهایی را در معماری تراشههای اولیه برنامهپذیر وFPGAها ایجاد کرده است .
تراشه های برنامهپذیر اولیه مانند PLAها، کاربردها را به شکل مدارهای منطقی دو سطحی مجموع حاصلضرب پیادهسازی میکردند. از لحاظ ساختاری این تراشهها از دو صفحه منطقی تشکیل میشدند. یک صفحه AND که حاصلضربها را تشکیل میداد و یک صفحهی OR که مجموع این حاصلضربها را ایجاد میکرد. با افزایش اندازهی کاربردها این نوع پیادهسازی کارکرد خود را از دست داد چراکه اندازهی این صفحهها با نرخ بسیار بیشتری نسبت به خود کاربرد افزایش مییافت. راه حل، استفاده از منطق چند سطحی بود .برای پیادهسازی مدارهای چندسطحی معماری FPGAها بر روی MPGAها ارائه شد. همچنین CPLDها از به هم چسباندن چند بلوک PLD اولیه ارائه شد.