08-06-2012, 01:44 AM
رمزنگاري كليد عمومي و 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 همان باقيمانده تقسيم است"· اين الگوريتم بر پايه يك قانون درب تله اي كه از سختي فاكتور گرفتن از اعداد بزرگ استفاده مي كند؛ قرار گرفته است.
تقابل 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 است.
براي مثال:
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
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 از اين خواص استفاده مي كند.
· الگوريتم RSA از اين خواص استفاده مي كند.
تحليل امنيت RSA:
· امتحان كردن تك تك كليد ها اگر طول كليد بين 1024 تا 2048 باشد غير ممكن است.
· بهترين انتخاب اين است كه سعي كنيم تا n را به عواملش كه p و q باشند تجزيه كنيم و سپس d را بدست بياوريم.
· اين عمل تجزيه چقدر مشكل مي باشد؟ كسي ميداند؟ براي يك كليد 200 رقمي زمان اين تجزيه هزاران سال تخمين زده شده است.
· اما هيچ كس اثبات نكرده است كه نمي شود در زمان معقولي اين عمل را انجام داد.
· هر كسي كه بخواهد d را بدست بياورد بايد ابتدا j(n) را بدست آورد اما براي دانستن آن نيز نياز به دانستن p و q مي باشد كه براي بدست آوردنشان بايد n را تجزيه كرد، كه اين كار يك تابع يك طرفه است آيا به خاطر داريد؟ ما ميدانيم ضرب اعداد اول بزرگ مي تواند يك تابع يك طرفه باشد. ما نياز به چيز ساده اي براي تفهيم اين واقعيت داريم.
عيب هاي RSA:
· امروزه كليد هاي 512 بيتي ضعيف فرض مي شوند. كليد هاي 1024 بيتي تقريبا براي اكثر اهداف به اندازه ي كافي ايمن است و كليد 2048 بيتي ميتواند تا براي دهه هاي آينده ايمن فرض شود.
· چيزي كه بايد گفته شود اين است كه RSA نسبت به حملات متن ساده ي انتخابي بسيار ضعيف عمل مي كند. اين روش نيز يكي از روش هاي جديد و وقت گير حمله است كه مي تواند براي موارد مختلف RSA استفاده شود. الگوريتم RSA الگوريتمي مورد قبول و ايمن است اگر از آن به درستي استفاده شود. بايد به دقت از اين الگوريتم استفاده شود.
اعداد اول بزرگ:
پيدا كردن كليد بر اين اساس است كه ما بتوانيم دو عدد اول بزرگ را انتخاب كنيم. ما عدد اول خود را از مجموعه بي كراني از اعداد اول انتخاب مي كنيم. براي اثبات اين كه ما بي نهايت عدد اول داريم فرض ميكنيم كه تعداد محدودي عدد اول داريم. سپس تمام اين اعداد را در يك ليست مي نويسيم و در هم ضرب مي كنيم و يكي به آن اضافه مي كنيم. اين عدد بر هيچ كدام از اعداد واقع در ليست قابل قسمت نيست پس يا اول است يا بر عدد اولي بزرگ تر از اعداد درون ليست بخش پذير است و اين مهم نيست كه ليست ما چه اندازه باشد، هميشه عدد ديگري يافت مي شود كه اين خود ثابت مي كند بي نهايت عدد اول وجود دارد پس ما عدد اول مان را از يك مجموعه بي كران انتخاب مي كنيم.
اعداد اول در چه حد بزرگ باشند؟
دو عدد اول p و q كه پيمانه را مي سازند بايد به طرز فجيعي بلند باشند. اين سبب مي شود كه پيمانه بسيار سخت تر از حالتي كه يكي از اعداد اول كوچك باشد، تجزيه شود. به همين دليل اگر كسي از پيمانه 768 بيتي استفاده كرد اعداد اول هر كدام بايد طولي به طور تقريبي برابر 384 داشته باشند. اگر دو عدد اول خيلي نزديك هم باشند (در حد 100 تا 200 بيت اشكالي ايجاد نمي كند) يك ريسك امنيتي بالقوه ايجاد شده است ولي احتمال اين كه اين دو عدد بسيار نزديك به هم باشند ناچيز است.
امضاي دجيتالي با RSA:
· امتحان كردن تك تك كليد ها اگر طول كليد بين 1024 تا 2048 باشد غير ممكن است.
· بهترين انتخاب اين است كه سعي كنيم تا n را به عواملش كه p و q باشند تجزيه كنيم و سپس d را بدست بياوريم.
· اين عمل تجزيه چقدر مشكل مي باشد؟ كسي ميداند؟ براي يك كليد 200 رقمي زمان اين تجزيه هزاران سال تخمين زده شده است.
· اما هيچ كس اثبات نكرده است كه نمي شود در زمان معقولي اين عمل را انجام داد.
· هر كسي كه بخواهد d را بدست بياورد بايد ابتدا j(n) را بدست آورد اما براي دانستن آن نيز نياز به دانستن p و q مي باشد كه براي بدست آوردنشان بايد n را تجزيه كرد، كه اين كار يك تابع يك طرفه است آيا به خاطر داريد؟ ما ميدانيم ضرب اعداد اول بزرگ مي تواند يك تابع يك طرفه باشد. ما نياز به چيز ساده اي براي تفهيم اين واقعيت داريم.
عيب هاي RSA:
· امروزه كليد هاي 512 بيتي ضعيف فرض مي شوند. كليد هاي 1024 بيتي تقريبا براي اكثر اهداف به اندازه ي كافي ايمن است و كليد 2048 بيتي ميتواند تا براي دهه هاي آينده ايمن فرض شود.
· چيزي كه بايد گفته شود اين است كه RSA نسبت به حملات متن ساده ي انتخابي بسيار ضعيف عمل مي كند. اين روش نيز يكي از روش هاي جديد و وقت گير حمله است كه مي تواند براي موارد مختلف RSA استفاده شود. الگوريتم RSA الگوريتمي مورد قبول و ايمن است اگر از آن به درستي استفاده شود. بايد به دقت از اين الگوريتم استفاده شود.
اعداد اول بزرگ:
پيدا كردن كليد بر اين اساس است كه ما بتوانيم دو عدد اول بزرگ را انتخاب كنيم. ما عدد اول خود را از مجموعه بي كراني از اعداد اول انتخاب مي كنيم. براي اثبات اين كه ما بي نهايت عدد اول داريم فرض ميكنيم كه تعداد محدودي عدد اول داريم. سپس تمام اين اعداد را در يك ليست مي نويسيم و در هم ضرب مي كنيم و يكي به آن اضافه مي كنيم. اين عدد بر هيچ كدام از اعداد واقع در ليست قابل قسمت نيست پس يا اول است يا بر عدد اولي بزرگ تر از اعداد درون ليست بخش پذير است و اين مهم نيست كه ليست ما چه اندازه باشد، هميشه عدد ديگري يافت مي شود كه اين خود ثابت مي كند بي نهايت عدد اول وجود دارد پس ما عدد اول مان را از يك مجموعه بي كران انتخاب مي كنيم.
اعداد اول در چه حد بزرگ باشند؟
دو عدد اول p و q كه پيمانه را مي سازند بايد به طرز فجيعي بلند باشند. اين سبب مي شود كه پيمانه بسيار سخت تر از حالتي كه يكي از اعداد اول كوچك باشد، تجزيه شود. به همين دليل اگر كسي از پيمانه 768 بيتي استفاده كرد اعداد اول هر كدام بايد طولي به طور تقريبي برابر 384 داشته باشند. اگر دو عدد اول خيلي نزديك هم باشند (در حد 100 تا 200 بيت اشكالي ايجاد نمي كند) يك ريسك امنيتي بالقوه ايجاد شده است ولي احتمال اين كه اين دو عدد بسيار نزديك به هم باشند ناچيز است.
امضاي دجيتالي با RSA:
· براي اين كه الگوريتم كار كند داريم:
موارد استفاده فعلي RSA:
RSA در حال حاضر در گستره ي گوناگوني از محصولات، پلت فرم ها و صنايع در سراسر جهان مورد استفاده قرار مي گيريد. اين الگوريتم در نرم افزار هاي مختلف قالب ريزي شده و براي برنامه هاي زيادي نيز در دست ايجاد است. RSA توسط سيستم هاي عامل رايجِ ساخته شده توسط ميكروسافت، اپل و سان.ناول مورد استفاده قرار گرفته شده است. در سخت افزار نيز RSA در سيستم هاي ايمن تلفن، بر روي كارت هاي اترنت شبكه و بر روي كارت هاي هوشمند بكار گرفته شده است.
همچنين RSA با تمام پروتكل هاي اصلي شبكه براي ايجاد ارتباط هاي اينترنتي ايمن تركيب شده است. به عنوان مثال S/MIME, SSL and S/WAN همچنين از آن در داخل بسياري از سازمان هاي حقوقي نيز استفاده شده است مثلا در دولت ايالات متحده، شركت هاي بزرگ، آزمايشگاه هاي ملي و دانشگاه ها. حق امتياز RSA را بيش از 350 شركت گرفته اند. همچنين تخمين زده مي شود كه ماشين هاي ايجاد شده بر مبناي RSA در حدود 350 ميليون است و اين نشان مي دهد كه RSA به سرعت و متناسب با سرعت رشد اينترنت و وب گسترش ميابد.
RSA چقدر سريع است؟
در مقام مقايسه، DES و ديگر الگوريتم هاي متقارن بسيار سريع تر از RSA عمل مي كند. در نرم افزار DES معمولا 100 برابر سريع تر از RSA است. در سخت افزار نيز DES حدود 1000 تا 10000 برابر سريع تر است. البته بستگي به نحوي اجرا دارد. در عمل RSA ممكن است تبديل به يك گلوگاه شود ولي DES به خوبي و با سرعت عمل مي نمايد.
DKPvt(EKPub(P))=P
· RSA اين قابليت را نيز دارد:DKPub (EKPvt (P))=P
وقتي كه متن را بتوان با KPvt رمز كرده و سپس با Kpub رمز گشايي كرد. اين به RSA اين امكان را مي دهد كه از امضا ها براي تائيد استفاده كند. وقتي كه يك بلاك از داده با كليد خصوصي رمز شده باشد، هر كسي مي تواند با كليد عمومي آن را باز كند و گيرنده مي تواند اعتبار فرستنده را از طريق امضاي او شناسايي كند.موارد استفاده فعلي RSA:
RSA در حال حاضر در گستره ي گوناگوني از محصولات، پلت فرم ها و صنايع در سراسر جهان مورد استفاده قرار مي گيريد. اين الگوريتم در نرم افزار هاي مختلف قالب ريزي شده و براي برنامه هاي زيادي نيز در دست ايجاد است. RSA توسط سيستم هاي عامل رايجِ ساخته شده توسط ميكروسافت، اپل و سان.ناول مورد استفاده قرار گرفته شده است. در سخت افزار نيز RSA در سيستم هاي ايمن تلفن، بر روي كارت هاي اترنت شبكه و بر روي كارت هاي هوشمند بكار گرفته شده است.
همچنين RSA با تمام پروتكل هاي اصلي شبكه براي ايجاد ارتباط هاي اينترنتي ايمن تركيب شده است. به عنوان مثال S/MIME, SSL and S/WAN همچنين از آن در داخل بسياري از سازمان هاي حقوقي نيز استفاده شده است مثلا در دولت ايالات متحده، شركت هاي بزرگ، آزمايشگاه هاي ملي و دانشگاه ها. حق امتياز RSA را بيش از 350 شركت گرفته اند. همچنين تخمين زده مي شود كه ماشين هاي ايجاد شده بر مبناي RSA در حدود 350 ميليون است و اين نشان مي دهد كه RSA به سرعت و متناسب با سرعت رشد اينترنت و وب گسترش ميابد.
RSA چقدر سريع است؟
در مقام مقايسه، DES و ديگر الگوريتم هاي متقارن بسيار سريع تر از RSA عمل مي كند. در نرم افزار DES معمولا 100 برابر سريع تر از RSA است. در سخت افزار نيز DES حدود 1000 تا 10000 برابر سريع تر است. البته بستگي به نحوي اجرا دارد. در عمل RSA ممكن است تبديل به يك گلوگاه شود ولي DES به خوبي و با سرعت عمل مي نمايد.
The golden opportunity you're seeking is in Yourself. It's not in your environment, in luck, in chance, or the help of other; it is in yourself Alone
راه های دریافت رایگان مقالات و کتاب ها
اهــدای سلول بنیادی - اهـــدای عضو - محک
لطفا سوالاتتون رو در فروم بپرسید و از پیام خصوصی برای این منظور استفاده نکنید. در صورتی که مایلید من به سوال شما پاسخ بدم @Mami رو در متن سوال قرار بدید.
راه های دریافت رایگان مقالات و کتاب ها
اهــدای سلول بنیادی - اهـــدای عضو - محک
لطفا سوالاتتون رو در فروم بپرسید و از پیام خصوصی برای این منظور استفاده نکنید. در صورتی که مایلید من به سوال شما پاسخ بدم @Mami رو در متن سوال قرار بدید.