دف از این پروژه مقایسه چهارطرح ضرب كننده RNS می باشد. بدین منظور با بهره گیری از پیاده سازی این چهار طرح با نرم افزار VHDL به مقایسه آنها میپردازیم. RNS یک روش نمایش اعداد است كه در آن هر عدد به وسیله باقی ماندههای تقسیم آن بر مجموعه ای از اعداد دو به دو نسبت به هم اول نمایش داده
می شود. با كمك قضیه باقی مانده چینی، اثبات می شود كه در RNS نمایش هر عدد منحصر به فرد می باشد برای ضرب در RNS نیاز به ضرب پیمانه ای خواهد بود. روش های ضرب پیمانه ای برحسب اینكه كاهش به پیمانه، در كدام مرحله ضرب انجام گیرد. به دو دسته «كاهش در حین ضرب (RDM)» و «كاهش بعد از ضرب (RAM)» تقسیم می شوند. دو طرح اول این پروژه با تكنیک RAM و دو طرح دوم با تكنیک RDM كار میكنند.
مقدمه
همانطور كه می دانیم ضرب پیمانه ای در علم رمزنگاری نقش مهمی ایفا می كند. از جمله روش های رمزنگاری كه به ضرب كننده پیمانه ای سریع نیاز دارد، روش رمزنگاری RSA می باشد كه در آن نیاز به توان رساندن اعداد بزرگ در پیمانه های بزرگ می باشد. معمولاً برای نمایش اعداد در این حالات از سیستم باقی مانده (RNS) استفاده می شود و ضرب (به عنوان هسته توان رسانی) در این سیستم به كار می رود.
در اینجا برای آشنایی بیشتر به توضیح سیستم عددی باقی مانده می پردازیم و به كاربردها و فواید آن اشاراتی خواهیم داشت.
– كاربردهای RNS
سیستم عددی باقی مانده در چند دهه اخیر مورد توجه قرار گرفته، زیرا می توان بعضی از اعمال ریاضی را تحت RNS به صورت چند مجموعه زیر عمل ریاضی تقسیم كرد. ولی به دلیل اینكه این اعمال فقط شامل ضرب، جمع و تفریق هستند از RNS در محاسبات “خاص منظوره” استفاده می شود. RNS در پیاده سازی سریع مسائلی كه شامل تصحیح و تشخیص خطا در سیستم های Fault-tolerant و سیستمهای پردازش سیگنال هستند كاربرد دارد. كاربردهایی از قبیل تبدیل فوریه سریع، فیلتر دیجیتال و پردازش تصویر از اعمال ریاضی سریع RNS استفاده می كند. RNS راه خود را در كاربردهایی مثل تبدیلات تئوری اعداد و تبدیل فوریه گسسته پیدا كرده است. همچنین مستقل بودن رقم های باقیمانده باعث می شود كه رخ دادن خطا در
یک رقم به رقم های بعدی منتقل نشوند كه این مسأله، باعث ایجاد یک معماری Fault-tolerant خواهد شد. [35],[20]
سیستم عددی RNS در رمزنگاری و به خصوص در روش RSA كاربرد زیادی دارد[35]. البته در RSA از ضرب پیمانه ای جهت عملیات توان رسانی استفاده میشود.
در این پروژه سعی می شود كه چهار طرح از رویكردهای ضرب RNS را پیادهسازی و با هم مورد مقایسه قرار دهیم. این مقایسه براساس حجم و تاخیر طرح ها میباشد. در پیاده سازی سعی شده است كه از پیشنهادات مقالات جهت عناصر بكار رفته استفاده شود (بخصوص در دو طرح اول) و در مواقعی كه پیشنهاد خاصی انجام نشده (مثل طرح های سوم و چهارم) پیشنهاد مناسب از لحاظ خود من انجام شده است.
در ادامه ابتدا به اصول ضرب RNS و روش های بكار رفته برای اینكار اشاره میكنیم. سپس هر یک از چهار طرح را به تفصیل مورد بررسی قرار می دهیم و در مورد هر طرح، الگوریتم و سخت افزار بیان خواهد شد و سپس تاخیر و مساحت آن را تعیین می كنیم. در نهایت جمع بندی و مقایسه چهار طرح را انجام می دهیم. در ضمایم نیز كدهای VHDL نوشته شده را خواهید یافت.
2- روش های ضرب پیمانه ای
این روشها را می توان به دو دسته كلی تقسیم كرد. در دسته اول ابتدا عمل ضرب به صورت كامل انجام می شود و سپس كاهش به پیمانه روی نتیجه آخر اعمال می شود. این روشها را Reduction After Multiplication (RAM) می نامند. در دسته دوم عمل كاهش به پیمانه در هر مرحله ضرب و با هر حاصلضرب جزئی انجام می شود كه به این روشها Reduction During Multiplication (RDM) می گویند[38]. از میان طرحهای مورد نظر ما دو طرح اول به دسته اول و دو طرح بعدی به دسته دوم تعلق دارند.
– روش مونتگمری
[پنجشنبه 1399-10-04] [ 02:25:00 ب.ظ ]
|