RSA شیوهای برای تهیه کلید ها ، کد کردن اطلاعات، آشکار سازی اطلاعات، تهیه امضاهای الکترونیکی و .... می باشد. این روش نخستین روش مورد اعتماد در بین روشهای رمزنگاری دیگر است و یکی از بزرگترین پیشرفتها در زمینهٔ رمزنگاری به حساب میآیدRSA. همچنان به صورت وسیعی در تبادلات الکترونیکی استفاده میشود و در صورت استفاده درست با کلیدهای طولانی کاملاً امن به نظر میرسد.
کلیات :
RSA به طور کلی از دو کلید تشکیل میشود. کلید عمومی
و کلید خصوصی. کلید عددی ثابت است که در محاسبات رمزنگاری استفاده میشود.
کلید عمومی برای همه معلوم بوده و برای رمز کردن
پیام استفاده میشود. این پیام فقط توسط کلید خصوصی باز میشود. به عبارتی دیگر
همه میتوانند یک پیام را رمز کنند اما فقط صاحب کلید خصوصی میتواند پیام را باز
کند و بخواند.
تولید کلید :
دو عدد اول بزرگ p و
q را به صورت تصادفی بیابید به طوری که p≠q
عدد n را محاسبه کنید به طوری که n = pq
مقدارm را محاسبه کنید به طوری که m = (p-1) x (q-1)
عدد e را انتخاب کنید به طوری که m˂e˂1 و نسبت به m اول باشد.
عدد e به عنوان توان کلید عمومی منتشر میشود.
عدد d را طوری بیابید که باقیمانده ضرب
دو عدد d و e نسبت به m برابر 1 باشد.یعنی d*e=1+k* m به ازای k های طبیعی.
عدد d به عنوان توان کلید خصوصی محافظت میشود.
دو عدد اول میتوانند توسط روش پیدا کردن
اعداد اول احتمالی پیدا شوند.
معمولاً عدد عمومی (e) را در حدود ۲۱۶ انتخاب میکنند. البته بعضی برنامه اعداد کوچکی را انتخاب میکنند که باعث سریعتر شدن
و البته خطرات امنیتی در رمزنگاری میشود.
کلید عمومی تشکیل میشود از :
عدد n(عدد مشترک)
عدد e (عدد عمومی)
کلید خصوصی تشکیل میشود از :
عدد n (عدد مشترک)
عدد d (عدد خصوصی)
کلید خصوصی به صورتهای دیگری غیر از d ممکن است نگهداری شود.
p و q : اعداد اول برای ساختن کلید.
d mod(p-1)
q-1 mod(p)
(mod یعنی باقیمانده تقسیم)
در تمام مراحل باید اجزای کلید خصوصی سری نگه داشته شود، دو عدد p و q اگر به عنوان صورتی از کلید خصوصی نگهداری نشود بهتر است به شیوهای امن نابود شوند. زیرا با این دو عدد تمام اعداد n و e، d قابل محاسبه خواهند بود.
رمز کردن پیام :
فرض کنید می خواهید پیامی را رمزنگاری کرده و به فردی دیگر بفرستید. شما می بایست کلید عمومی آن فرد را از او دریافت کرده و پیام خود را در قالب یک عدد (m) در بیاورید به طوری که این فرآیند برگشت پذیر بوده و عدد شما از n کوچکتر باشد. بدیهی است اگر پیام بزرگتر حد معمول باشد آن را در بستههای جداگانه می فرستیم. شما اکنون عدد C را محاسبه می کنید به طوری که c=me mod n حال اگر پیام رمزنگاری شده ی c را برای فرد مذکور بفرستید او میتواند توسط کلید خصوصی اش آنرا باز کندو بفهمد.
باز کردن پیام :
فرض کنید شما پیام رمز نگاری شدهٔ C را دریافت کرده اید و کلید خصوصی خود را در دسترس دارید. حال شما میتوانید عدد m را که معادل پیام اصلی است از C,n,d بازیابی کنید.
m = cd mod n
مثال:
1- ابتدا باید دو عدد اول انتخاب کنیم که در اینجا از اعداد ساده و هم
اندازه ای مانند 11 و 3 استفاده می کنیم. پس p=11 ,
q=3
2 - حاصلضرب p در q که همان n است را به
اینصورت خواهیم داشت: n = 11 x 3 = 33
3 - حاصلضرب p-1 در q-1 که همان m است را
به اینصورت خواهیم داشت: m = 10 x 2 = 20
4- برای انتخاب عدد e که نسبت
به m=20 اول باشد و کمتر از آن هم باشد ساده ترین گزینه یعنی عدد 3 را انتخاب
می کنیم.
5 - برای یافتن عدد d که در
رابطه d x e) mod m = 1 ) صادق باشد اعداد 1,2,3,4,5 و ... را امتحان می کنیم، بنظر می رسد که عدد 7 برای اینکار مناسب
باشد چرا که 7x3=21 باقیمانده ای معادل 1 بر m=20 دارد.
c |
m |
0 |
0 |
1 |
1 |
8 |
2 |
27 |
3 |
31 |
4 |
26 |
5 |
18 |
6 |
13 |
7 |
17 |
8 |
3 |
9 |
10 |
10 |
11 |
11 |
12 |
12 |
19 |
13 |
5 |
14 |
9 |
15 |
4 |
16 |
29 |
17 |
24 |
18 |
28 |
19 |
14 |
20 |
21 |
21 |
22 |
22 |
23 |
23 |
30 |
24 |
16 |
25 |
20 |
26 |
15 |
27 |
7 |
28 |
2 |
29 |
6 |
30 |
25 |
31 |
32 |
32 |
بنابراین هم اکنون شما یک جدول تبدیل کد دارید که با کمک کلید عمومی اعداد صفر تا 32 را به اعدادی کد شده و در همین رنج تبدیل کرده اید. اما اگر دقت کنید تعدادی از اعداد دقیقا" به همان عدد خود تبدیل شده اند که به اینها Unconcealed یا مخفی نشده گفته می شود. اولآ باید بدانیم که 0 و 1 همواره به همین اعداد تبدیل می شوند و مطلب دیگر اینکه اگر رنج دو عدد اول ابتدایی را بزرگ در نظر بگیریم دیگر مشکلی پیش نخواهد آمد.
منابع:http://www.fars-gsm.com
عالی بود !