بخشی از مقاله
رمزنگاري كليد عمومي و rsa
مروري كوتاه:
رمزنگاري كليد مخفي: رمزنگاري سنتي كليد مخفي؛ از يك كليد تنها كه بين هر دو طرف گيرنده و فرستنده به اشتراك گذاشته شده است استفاده مي كند.اگر اين كليد فاش شود ارتباط به خطر مي افتد.همچنين اين روش از گيرنده در برابر پيام هاي جعلي ارسال شده كه ادامي كنند از طرف فرستنده ي خاصي مي ايند محافظت نمي كند.
رمزنگاري كليد عمومي: اين روش كه رمزنگاري دوكليده نيز خوانده مي شود از دو كليد براي عمل رمز نگاري استفاده مي كند:
يكي كليد عمومي كه توسط همه شناخته شده است.و براي به رمز درآوردن پيغام ها و تشخيص امضا ها مورد استفاده قرار مي گيرد.
ديگري كليد خصوصي كه فقط گيرنده از آن اطلاع دارد و براي رمز گشايي پيغام و همچنين ايجاد امضا مورد استفاده قرار مي گيرد.
اشكال سيستمهاي كليد مخفي:
يك از اشكال هاي الگوريتم هاي بر پايه كليد متقارن اين است كه شما نياز به يك روش مطمئن براي انتقال كليد هاي طرفين داريد.به اين مفهوم كه يا از يك كانال امن اين كار را انجام دهند يا به منظور انتقال كليد همديگر را ملاقات كنند.اين ميتواند يك مشكل بزرگ باشد
و قطعا كارآساني نيست.اشكال ديگر اين روش اين است كه شما براي ارتباط با هر شخصي كليدي جداگانه نياز داريد.
سناريوي ارتباط:
آليس وباب مي خواهند با هم مكالمه مطمئني داشته باشند طوري كه كس ديگري از اطلاعات مبادله شده در اين مكالمه با خبر نشود.درهمين زمان Eve در حال استراق سمع است.
آليس و باب ميتوانند خلبان دو جت نظامي يا دو تاجر اينترتي يا فقط دو دوست باشند كه مي خواهند با هم يك مكالمه ي خصوصي داشته باشند.آنها نمي توانند Eve را از گوش دادن به سيگنال راديوي يا اطلاعات مبادله شده از طريق تلفن و .. باز دارند.پس چه كاري مي توانند انجام دهند تا اين ارتباط مخفي بماند؟
رمزنگاري كليد خصوصي:
يك راه حل اين است كه آليس و باب يك كليد دجيتالي را مبادله كنند.بعد وقتي هر دو از آن كليد آگاه شدند(ولي ديگران از آن بيخبرند).آليس از اين كليد استفاده مي كند تا پيغام ها را به رمز كرده و به باب بفرستد.باب نيز پيغام اوليه را با استفاده از اين كليد و رمزگشايي پيغام بازسازي مي كند.پيغام رمز شده براي Eve قابل استفاده نيست .او كليد را نميداند پس نمي تواند پيغام اصلي را باز يابي كند.با يك الگوريتم رمزنگاري خوب اين طرح قابل اجراست. ولي مبادله كليد به طوري كه اين كليد از Eve مخفي بماند يك معضل است.اين كار واقعا نياز به يك ارتباط رودرو دارد كه هميشه امكان پذير نيست.
رمز نگاري كليد عمومي: اين رمزنگاري به صورت متفاوتي عمل مي كند.زيرا كليد را به دو قسمت كليد عمومي براي به رمز در آوردن و كليد خصوصي براي رمزگشايي تقسيم مي كند.اين ممكن نيست كه كليد خصوصي از كليد عمومي قابل تعيين باشد.همان طور كه در شكل مي بينيد؛باب يك جفت كليد توليد مي كند.يكي از كليدها كليد عمومي است كه بايد به اطلاع عموم (از جمله Eve) برسد. و ديگري كليد خصوصي كه فقط خود باب از آن اطلاع دارد.هر كسي مي تواند از كليد عمومي باب براي ارسال پيغام به او استفاده كنند.ولي فقط باب مي تواند.از كليد خصوصي خودش براي رمز گشايي پيغام ها استقاده كند.اين طرح به آليس و باب اجازه مي دهد تا يك ارتباط امن را بدون ملاقات كردن هم داشته باشند.
هر چند اگر Eve بتواند به همان راحتي كه مي تواند به پيغام هاي مبادله شده بين باب و آليس گوش مي دهد آنها را دست كاري نيز كند؛ مي تواند كليد عمومي خود را جانشين كليد عمومي باب كند و سپس آليس از كليد عمومي او براي رمز كردن پيغام ها و فرستادن آنها استفاده مي كند.
Man in middle attack : (حمله ي پل زدن به سطل)
اين حمله براي ارتباطات رمز شده و پرتوكل هاي مبادله ي كليد مناسب است.ايده ي اين حمله اين است كه وقتي دو طرف در حال مبادله ي كليد هاي عمومي شان هستند مهاجم خودش را در بين دو طرف در خط ارتباط قرار مي دهد.سپس به مبادله كليد به صورت جداگانه با هر كدام از طرفين مي پردازد.سپس هر كدام از طرفين كليد عمومي خودش را به طرف ديگر مي دهد(كه البته هيچ گاه به دست طرف مقابل نمي رسد و در واقع هر كدام از اين دو در حال مبادله ي كليد با مهاجم هستند)مهاجم براي هر كدام از طرفين طرف دوم ارتباط امن را تشكيل مي دهد.سپس مهاجم براي هر كدام از اين دو ارتباط امن از كليد مناسبش استفاده مي كند.طرفين تصور مي كنند كه مكالمه امن ي انجام مي دهند ولي در حقيقت مهاجم همه چيز را شنيده است.
پرهيز ازحمله ي پل زدن به سطل:
روش معمول براي جلوگيري از حمله ي پل زدن به سطل اين است كه؛ از يك الگوريتم رمز گذاري كليد عمومي استفاده كنيم كه قابليت امضاي ديجيتالي را داشته باشد.براي برپايي چنين سيستمي طرفين بايد كليد عمومي ديگري را از قبل بداند(كه اين از مزيت اصلي رمز گذاري كليد عمومي مي كاهد. ) پس از توليد كليد خصوصي توليد شده طرفين امضاي ديجيتالي خود را براي هم مي فرستند.مهاجم كه خود را در وسط قرار داده ممكن است بتواند تا اين جاي ارتباط را گوش دهد ولي ديگر قادر نخواهد بود كه امضاي ديجيتالي را جعل كند. زيرا امضا ي ديجيتالي قابل جعل نيست.
منتشر كردن كليد عمومي:
فهرست كليد هاي عمومي براي اين ايجاد شد تا مشكل اين كه هر كاربر مي بايست يك كپي از كليد عمومي تمام اشخاص را داشته باشد تا با آنها ارتباط امن بر قرار كند را بر طرف كند.هر كاربري كليد عمومي خود را در فهرست ثبت ميكند و وقتي مثلا A خواست تا به B يك پيغام رمز شده بفرستد او كليد عمومي B را از طريق فرستادن درخواست KUB به فهرست انجام مي دهد.
مشكلات كليد ها:
• ما ممكن است كليد خود را گم كنيم.
• ما ممكن است فراموش كنيم كدام كليد براي چه كاري بود،
• ما ممكن است يك كليد را به شخص اشتباهي بدهيم.
• يك كسي ممكن است كليد ما را بدزدد.
• يك كسي ممكن است از طريق پنجره وارد شود.
• كسي ممكن است در را بشكند.
• كسي ممكن است درخواست ورود به خانه را بكند و يك احمق هم به او اين اجازه را بدهد.
• كسي ممكن است بتواند موفق به دريافت گواهيي شود كه به او اجازه انجام كار هايي فرا تر از آنجه لازم است را بدهد.
• كسي ممكن است خانه را به آتش بكشاند و اغتشاش ايجاد كند.
الگوريتم هاي كليد عمومي:
الگوريتم هاي كليد عمومي از يك جفت كليد عمومي و خصوصي بر روي يك پيغام استفاده مي كنند.
• فقط كليد خصوصي مي تواند پيغام رمز شده با كليد كليد عمومي را رمزگشايي كند.
• همچنين فقط كليد عمومي قادر خواهد بود پيغام رمز شده با كليد خصوصي را رمز گشايي كند.
• اگر شما باكليد عمومي من پيغامي را رمز كنيد. فقط من قادر به خواندن آن پيغام خواهم بود.
• اگر شما بتوانيد پيغامي را با كليد عمومي من باز كنيد آن پيغام الزاما از طرف من آمده است.
• اين طرح اولين بار توسط وايتفيلد ديفه و مارتين هلمن و به صورت مستقلانه اي در همين زمان يعني دهه ي 70 توسط رالف مركل پيشنهاد گرديد.
• سازمان NSA (سازماني سري در امريكا كه روي مباحث رمزنگاري فعاليت مي كند.)قبل از پيشنهاد هاي اين افراد به اين نتايج رسيده بود.
• معمولا الگوريتم هاي كليد عمومي بسيار كند تر از الگوريتم هاي كليد متقارن هستند.
• يك خصيصه ي قطعي كليد عمومي اين است كه كليد خصوصي از كليد عمومي قابل تعيين نباشد.و در مقابل حملات ”متن سادهِ انتخاب شده” مقاوم باشد.
• در واقع تركيبي از سيستمهاي رمزگذاري كليد عمومي و متقارن كاربرد دارند.
• RSA نوعي از الگوريتم رمز گذار بر پايه ي كليد عمومي است كه در گستره وسيعي از كاربردها به كار مي رود.پس اجازه دهيد در درباره RSA بحث كنيم و بعد دوباره به بحث كلي درباره كليد عمومي برگرديم.
ملزومات: تعيين كليد رمزگشايي از كليد رمزگذاري بايد غير ممكن باشد.
انتخابي: هر كدام از دو كليد عمومي و خصوصي را بايد بتوان براي رمز گذاري و رمز گشايي به كار برد.
توابع درب تله اي يا يك طرفه:
• سيستم هاي رمز گذاري كليد عمومي بر پايه ي يك سري حيله هاي زيركانه ي رياضي كه با قدرت كامپيوتر در ارتباطند گسترش يافته اند.
• رمزگذاري كليد عمومي بر پايه ي مسئله كه در رياضي با نام ”درب تله اي” شناخته مي شود كار مي كند.
• يك درب تله اي يك فرمول رياضي است كه به آساني جلو مي رود ولي برگشت آن تقريبا غير ممكن است.
• به عنوان مثال عمل ضرب كردن دو عدد بزرگ كار راحتي است ولي بدست آوردن فاكتور هاي اوليه ي آن عدد بزرگ بسيار مشكل است.
• الگوريتم كليد عمومي بر اين اساس كار مي كند كه شخصي يك كليد عمومي بزرگ را انتشار مي دهد و ديگران قادر نيستند كه فاكتور هاي اوليه ي اين كليد را بدست آورند.
• سازنده ي كليد فاكتور هاي اوليه ي كليد خود را ميداند و با استفاده از اين فاكتور ها پيغام هاي ديگران را كه با استفاده از كليد عمومي خودش رمز شده اند رمز گشايي مي نمايد.
• ديگران كه فقط از كليد عمومي آگاهي دارند قادر به شناسايي كليد خصوصي نيستند.و دليل آن هم سختي تجزيه كردن عداد بزرگ مي باشد.
RSA
• تا كنون بهترين سيستم كليد عمومي شناخته شده RSA نام دارد.اسم اين سيستم رمز گذاري بر گرفته شده از نام مولف هايش است.رونالد ال رايوست و ايديا شامير و لِونارد ام ادِلمًن
• RSA توسط سه بنيان گذارش يعني رايوست و شايرمن و لونارد ام ادلمن به عنوان يك الگوريتم رمز گذاري كليد عمومي تجاري معرفي شد.امروزه اين الگوريتم توسط مرورگر هاي وب و برنامه هاي كلاينت E-Mail ،تلفن هاي همراه و شبكه هاي محلي مجازي(vpn)، برنامه هاي دسترسي ايمن (secure shell) و در خيلي از جاهاي ديگر كاربرد دارد.اين درست است كه امنيت ي كه اين الگوريتم ايجاد مي كند جاي بحث دارد ولي با انتخاب كليد به اندازه ي كافي بزرگ مي توان جلوي اغلب حمله ها را گرفت.تا همين چند وقت پيش RSA با قوانين صادرات و حق امتياز ها محدود شده بود ولي اكنون حق امتيازات منقضي شدند و قوانين صادرات ايالات متحده نيز شل شده اند.
• اين الگوريتم بر پايه يك قانون درب تله اي كه از سختي فاكتور گرفتن از اعداد بزرگ استفاده مي كند؛ قرار گرفته است.
تقابل PK وSK :
• در رمزنگاري هاي كليد مخفي كليد رمز گذاري و كليد رمز گشايي يك كليد است.بطور كلي دو تابع وجود دارد يكي تابع رمزگذاري و ديگري معكوس آن تابع رمز گشايي.
• در مقابل كليد مخفي ؛الگوريتم كليد عمومي قرار دارد.در چنين سيستمي دو كليد وجود دارد يكي كليد عمومي و ديگري كليد خصوصي.
اعداد اول چه هستند؟
• يك عدد اول؛ عددي است كه تنها بر خودش و يك قابل تقسيم باشد.
• به عنوان مثال 10 عدد اول نيست زيرا بر اعداد 1و2و5 و10 بخش پذير است.ولي 11 يك عدد اول است زيرا تنها به خودش و 1 بخش پذير است.
• اعدادي كه يك عدد بر آنها بخش پذير است فاكتور هاي آن عدد خوانده مي شود.فرايند پيدا كردن فاكتورها فاكتور گرفتن يا تجزيه نام دارد.
• براي مثال تجزيه ي عدد 15 مي گوييم اين عدد از 3*5 بدست مي آيد ولي در مورد 6320491217 چطور؟
• حال در مورد يك عدد 155 رقمي چطور؟يا 200 رقمي يا بيشتر؟به طور خلاصه تجزيه كردن اعداد قطعا از تعدادي مرحله تشكيل شده كه تعداد اين مراحل بابزرگ شدن عدد به صورت نمايي بالا مي رود.اگر يك عدد به مقدار كافي بزرگ باشد؛ زمان مورد نياز براي اجراي تمام مراحل تجزيه كردن ممكن است به قدري زياد باشد كه سالها به طول بيانجامد.
حساب پيمانه اي:
در رياضيات پيمانه اي تنها اعداد صحيح غير منفي كوچكتر از پيمانه مورد بررسي قرار مي گيرد.پس براي پيمانه ي n (mod N) تنها اعداد صحيح كه از 0 تا (N-1) قابل حساب هستند و نتايج محاسبات تنها از 0 تا (N-1) قابل قبول است.فكر كنيد زمان نظامي بر عددي بر پيمانه ي 2400 است.براي مثال 2200 بعلاوه 400 (10:00 PM plus 4 hours)جواب 2600 نمي شود.شما از صفر شروع مي كنيد.بنابراين 2200+400 mod 2400 را بايد محاسبه كنيم كه مي شود:2600-2400=0200 و يا 2:00 صبح. همچنين اگر از 0 يا نصف شب شروع كنيم.شش برابر 500 (بخوانيد شش بار 5 ساعت به جلو)3000 نميشود.جواب 0600 يا 6:00 بعد از ظهر مي شود.اين حساب دقيقا مثل ساعت عمل ميكند.
A mod b=r به اين معني كه a بر b تقسيم شده است و باقي مانده r است.
براي مثال :
”mod همان باقيمانده تقسيم است.“
22 mod 3 = 1
34 mod 2 = 0
18 mod 5 = 3
-4 mod 3 = 2 because (3)(-2) + 2 = -4
-16 mod 7 = 5 because (7)(-3) + 5 = -16
• اعداد اول وقتي در رياضيات پيمانه اي بكار گرفته مي شوند ؛ داراي خواص سودمندي مختلفي هستند.
• الگوريتم RSA از اين خواص استفاده مي كند.
اعداد نسبت به هم اول:
• دو عدد نسبت به هم اولند اگر تنها فاكتور مشترك آنها يك باشد.
• مثلا 10 و 21 نسبت به هم اولند.در حالي كه هيچكدام عدد اول نيستند.ولي نسبت به هم اولند زيرا عامل مشتركي ندارند عوامل 10: 1, 2, 5 and 10 و عوال مشترك 21 : 1, 3, 7 and 21.
• تنها عاملي كه در هر دو ليست ديده مي شود 1 است.