مرور گذشته و برنامهی این قسمت
در
قسمت اول
این مجموعه اصول اولیهی برقراری ارتباط برروی اینترنت شرح داده شد. در پایان قسمت قبل به این موضوع اشاره شد که اگر کسی به مسیریابهای بینی یا بهطور خاص رایانههای شرکت اصلیای که خدمات اینترنت را از آن دریافت میکنید، دسترسی داشته باشد، به محتوای همهی ارتباطات شما هم دسترسی دارد. باز اشاره شد که روشی که برای رفع اینگونه مشکلات و بهبود امنیت شبکهها استفاده میشود، رمزکردن متن ارتباطات است و این، موضوع بحث نوشتهی فعلی است. ابتدا به شکل کلی به روشهای رمزنگاری کلید عمومی اشاره میشود و یک روش خاص با جزییات بیشتر (به عنوان مثال) بررسی میشود. اگر علاقهمند به جزییات ریاضی این روشها نیستید میتوانید از بخش «بررسی روش آراسای» بگذرید. اگر حتی فرصت خواندن بقیهی بخشها را هم ندارید، قطعه فیلمی که در بخش «استفاده از رمزنگاری بر روی اینترنت» استفاده شده (و ترجمهی فارسی آن) را ببینید و توضیحات مرتبط با آن را مرور کنید.
مبنای روشهای رمزنگاری «کلید عمومی»
همهی اطلاعات برروی شبکههای رایانهای به شکل اعداد منتقل میشود. جزییات تبدیل حروف به اعداد و برعکس خارج از بحث ماست. به مثال شبکههای رایانهای بازخواهیم گشت ولی فعلا فرض کنید جمعی از آدمها دور میزی نشستهاند و هرکس صدای بقیه را میتواند بشنود. احمد میخواهد عددی، مثلا ۱۲۱ را به شکل رمزی برای بهروز بفرستد بهطوری که فقط بهروز بتواند آن را رمزگشایی کند. اگر بهروز و احمد میتوانستند برروی کلید رمز مشترکی توافق کنند، در آن صورت حل مسئله ساده بود. ولی فرض کنید که هیچ دو نفری مجاز به صحبت خصوصی نیستند، در اینصورت بهنظر شما آیا احمد قادر به ارسال پیام به شکل رمز شده است؟ پاسخ مثبت است و روشهای مختلفی برای اینکار وجود دارد که به روشهای رمزنگاری با «کلید عمومی» معروفند. در این روشها هر نفر، مثلا بهروز، یک کلید عمومی و یک کلید خصوصی دارد. کلید عمومی را همه میدانند، بنابراین بهروز میتواند آن را بهشکل عمومی دور میز اعلام کند. الگوریتم رمز کردن یک پیام با داشتن کلید عمومی هم برای همه مشخص است ولی باز کردن رمز بدون داشتن کلید خصوصی تقریبا غیرممکن است.
ممکن است در ابتدا ادعای بالا غیر معقول بهنظر برسد و برای همین جزییات یکی از رایجترین این روشها را در بخش بعدی (پایین) بررسی کردهایم. اگر علاقهای به بررسی جزییات ریاضی این روشها ندارید، کافیست همینقدر بدانید که بنیان غیر ممکن بودن شکستن رمز بدون کلید خصوصی، بر مسائلی استوار است که برای حل آنها، حتی با سریعترین رایانهها هم به هزاران سال زمان نیاز است! مثلا یکی از مسائل رایجی که در رمزنگاری کلید عمومی استفاده میشود، مسئلهی تجزیهی حاصلضرب دو عدد اول، به عاملهای اول آن است. کلید عمومی در اینجا، حاصلضرب دو عدد اول است و کلید خصوصی همان دو عدد یا عامل اول. برای رمزکردن یک پیام، داشتن حاصلضرب کافیست ولی بدون دانستن عوامل اول (کلید خصوصی) باز کردن پیام رمز شده عملا غیرممکن است.
تصویر زیر یک شهود ساده نسبت به این روشها بهدست میدهد، بدون اینکه وارد بحث ریاضی آن شود:
شهودی ساده از رمزنگاری با کلید عمومی. در این تصویر قفلهای باز با نام بهروز «کلید عمومی» اویند و به تعداد زیاد در دسترس همه قرار دارند. کلید همهی این قفلها یکیست و تنها یک نمونه از آن وجود دارد که پیش بهروز است، این همان «کلید خصوصی» اوست. (برای ساخت این تصویر از تصویرهای وبگاه www.clker.com استفاده شده است.)
در اینجا کلید عمومی هر شخص به شکل قفلهای باز نشان داده شده که نام آن شخص روی آن نوشته و از این نوع قفل به وفور در دسترس همه است، البته در تصویر برای سادگی فقط قفلهای بهروز نشان داده شده. همهی قفلهای بهروز با یک کلید باز میشود که تنها یک نمونه از آن وجود دارد و آن هم نزد بهروز است. این کلید، همان کلید خصوصی بهروز است. وقتی احمد (یا هر کس دیگری) بخواهد پیامی خصوصی (رمز شده) برای بهروز بفرستد، متن پیامش را داخل جعبهای میگذارد و با استفاده از یکی از قفلهای روی میز که نام بهروز را دارد، آن را قفل میکند. هیچکسی جز بهروز نمیتواند جعبه را باز کند، بنابراین با این روش، بدون نیاز به صحبت خصوصی بین بهروز و احمد، احمد میتواند پیامی خصوصی برای بهروز بفرستد.
ممکن است در ابتدا ادعای بالا غیر معقول بهنظر برسد و برای همین جزییات یکی از رایجترین این روشها را در بخش بعدی (پایین) بررسی کردهایم. اگر علاقهای به بررسی جزییات ریاضی این روشها ندارید، کافیست همینقدر بدانید که بنیان غیر ممکن بودن شکستن رمز بدون کلید خصوصی، بر مسائلی استوار است که برای حل آنها، حتی با سریعترین رایانهها هم به هزاران سال زمان نیاز است! مثلا یکی از مسائل رایجی که در رمزنگاری کلید عمومی استفاده میشود، مسئلهی تجزیهی حاصلضرب دو عدد اول، به عاملهای اول آن است. کلید عمومی در اینجا، حاصلضرب دو عدد اول است و کلید خصوصی همان دو عدد یا عامل اول. برای رمزکردن یک پیام، داشتن حاصلضرب کافیست ولی بدون دانستن عوامل اول (کلید خصوصی) باز کردن پیام رمز شده عملا غیرممکن است.
تصویر زیر یک شهود ساده نسبت به این روشها بهدست میدهد، بدون اینکه وارد بحث ریاضی آن شود:
شهودی ساده از رمزنگاری با کلید عمومی. در این تصویر قفلهای باز با نام بهروز «کلید عمومی» اویند و به تعداد زیاد در دسترس همه قرار دارند. کلید همهی این قفلها یکیست و تنها یک نمونه از آن وجود دارد که پیش بهروز است، این همان «کلید خصوصی» اوست. (برای ساخت این تصویر از تصویرهای وبگاه www.clker.com استفاده شده است.)
بررسی روش آراس ای
یکی از روشهای معمول برای رمزنگاری با کلید عمومی، روش یا الگوریتم آراسای
(RSA)
است.
نام این الگوریتم از حرف اول سه مبدع آن گرفته شده، نگاه کنید به
RSA
در ویکیپدیا.
در ادامه بهشکل خیلی خلاصه این روش را بررسی میکنیم ولی اگر حوصلهی کمی ریاضیات را ندارید میتوانید از خواندن این بخش صرفنظر کنید و مستقیما به ادامهی نوشته در بخش بعدی بروید!
برای توضیح روش آراسای با استفاده از مثال بالا (ارسال عدد ۱۲۱ توسط احمد برای بهروز):
برای توضیح روش آراسای با استفاده از مثال بالا (ارسال عدد ۱۲۱ توسط احمد برای بهروز):
- بهروز دو عدد اول بزرگ انتخاب میکند به نامهای p و q سپس حاصلضرب n=pq را بهطور عمومی به همه اعلام میکند.
- بهروز همچنین حاصلضرب f=(p-1)(q-1) را هم حساب میکند ولی آن را برای خودش نگهمیدارد.
- مرحلهی بعدی، انتخاب عدد اول دیگری به اسم e است به شکلی که بزرگترین مقسومعلیه مشترک f و e مساوی یک باشد (لازم نیست e خیلی بزرگ باشد). بهروز این عدد را نیز بهشکل عمومی به همه اعلام میکند. ولی در عینحال عدد دیگری به اسم d انتخاب میکند بهشکلی که حاصلضرب de در تقسیم بر f باقیماندهاش برابر یک باشد. دقت کنید که اعداد p, q, f, d را تنها بهروز میداند ولی n, e را همه میدانند.
- حالا برای اینکه احمد عدد خودش (یا همان ۱۲۱) را به شکل رمزشده برای بهروز بفرستد آن را بهتوان e میرساند و باقیماندهی این عدد بر n را به شکل عمومی اعلام میکند يعنی باقیماندهی ۱۲۱e در تقسیم بر n .
- در بین کل جمع، تنها بهروز میتواند بهسرعت به عدد رمز شده، یعنی ۱۲۱ پی ببرد! برای اینکار بهروز باقیماندهی فرستاده شده توسط احمد را به توان d میرساند و مجددا باقیمانده تقسیم این عدد بر n را حساب میکند. این باقیمانده برابر ۱۲۱ خواهد بود!
- p=۱۷، q=۳۱، n=۱۷×۳۱=۵۲۷
- f=(p-1)(q-1)=۱۶×۳۰=۴۸۰
- e=۱۳ و d=۳۷ توجه کنید که باقیماندهی ۱۳×۳۷ بر ۴۸۰ برابر یک است. بهروز n=۵۲۷ و e=۱۳ را به شکل «عمومی» به همه اعلام میکند ولی d=۳۷ را بهشکل «خصوصی» نگه میدارد.
- احمد باقیماندهی ۱۲۱۱۳ را بر ۵۲۷ حساب میکند و حاصل، یعنی ۱۰۰ را اعلام میکند.
- بهروز باقیماندهی ۱۰۰۳۷ بر ۵۲۷ را حساب میکند. اگر این محاسبه را انجام دهید خواهید دید که حاصل ۱۲۱ است.
استفاده از رمزنگاری بر روی اینترنت
احتمالا تا الان متوجه شدهاید که روشهای رمزنگاری با کلید عمومی، چرا برای امنیت برروی اینترنت مهم است. محتوای ارتباطات شما ممکن است برای خیلی از افرادی که به رایانههای بین مسیر دسترسی دارند مشخص باشد. بنابراین برای تماس امن با رایانههای مقصد، مثلا رایانهی بانک یا گوگل باید از روشی استفاده کرد که رمز کردن پیام برای هر کس ساده باشد، ولی تنها مقصد پیام بتواند آن را رمزگشایی کند، یعنی همان چیزی که روشهای رمزنگاری با کلید عمومی برای ما فراهم میکنند.
توضیح سادهی امنیت بر روی اینترنت، با اشارهی غیر مستقیم به رمزنگاری با کلید عمومی. برای مشاهدهی فیلم با زیرنویس فارسی اینجا را ببینید و از فهرست ترجمههای زیر فیلم (Select Language)، فارسی (Persian) را انتخاب کنید، توجه کنید که عبارتهای داخل پرانتز در متن اصلی نیست. ترجمهی فارسی فیلم در پانوشتهای همین نوشته هم موجود است.
نیمهی دوم این فیلم، یعنی ارسال کلید با استفاده از جعبه و قفل فروشگاه، مثالی از استفاده از رمزنگاری با کلید عمومی است. در اینجا قفل ارسالی، کلید عمومی فروشگاه است و کلید این قفل، همان کلید خصوصی فروشگاه است.
قطعه فیلم کوتاه روبهرو شهود خوبی از رمزنگاری بر روی اینترنت میدهد. اگر مایلید ترجمهی فارسی این قطعه فیلم را به شکل زیرنویس بر روی فیلم تماشا کنید به
این برگه
مراجعه کنید. متن ترجمه در پانوشت هم موجود است.
اگر مایلید ترجمهی فارسی این قطعه فیلم را به شکل زیرنویس بر روی فیلم تماشا کنید به
این برگه
مراجعه کنید. متن زیر همان زیرنویسها با ذکر زمان شروع هر قسمت است (توجه کنید که عبارتهای داخل پرانتز در متن اصلی نیست و برای توضیح بیشتر در زمان ترجمه اضافه شده است).
توضیح سادهی امنیت بر روی اینترنت، با اشارهی غیر مستقیم به رمزنگاری با کلید عمومی. برای مشاهدهی فیلم با زیرنویس فارسی اینجا را ببینید و از فهرست ترجمههای زیر فیلم (Select Language)، فارسی (Persian) را انتخاب کنید، توجه کنید که عبارتهای داخل پرانتز در متن اصلی نیست. ترجمهی فارسی فیلم در پانوشتهای همین نوشته هم موجود است.
نیمهی دوم این فیلم، یعنی ارسال کلید با استفاده از جعبه و قفل فروشگاه، مثالی از استفاده از رمزنگاری با کلید عمومی است. در اینجا قفل ارسالی، کلید عمومی فروشگاه است و کلید این قفل، همان کلید خصوصی فروشگاه است.
-
0:00 – 0:03امنیت اینترنتی چگونه کار میکند.
-
0:04 – 0:12ما امروزه بیشتر و بیشتر خرید اینترنتی انجام میدهیم و این به این معنی است که باید اطلاعات حساس کارت اعتباریمان را بر روی وب بفرستیم.
-
0:12 – 0:19ولی نمیتوانیم این جزییات را بدون تغییر بفرستیم زیرا هیچ وقت نمیدانید چه کسی ممکن است به اطلاعات ارسالی شما گوش دهد.
-
0:20 – 0:24بنابراین کاری که انجام میدهیم، ارسال اطلاعات به شکل رمز شده است.
-
0:24 – 0:30میتوانید به این شکل به آن فکر کنید: این قفل، یک قطعه برنامهی کامپیوتریست که اطلاعات را رمز میکند
-
0:30 – 0:35این کلید یک برنامهی دیگر است که آن را در سوی دیگر رمزگشایی میکند.
-
0:36 – 0:46کاری که ما باید بکنیم، اگر بخواهم اطلاعات کارت اعتباریام را بر روی شبکه بفرستم، این است که آن را درون جعبهای قرار دهم، قفلش کنم، و کلید را پیش خودم نگه دارم.
-
0:46 – 0:50بعد از آن میتوانم آن را برای هرکس بخواهم بفرستم.
-
0:50 – 0:57اهمیتی ندارد اگر در طول مسیر کس دیگری آن را دریافت کند، بهخاطر اینکه رمز شده است و هیچکس دیگری بدون داشتن کلید من نمیتواند آن را باز کند.
-
0:58 – 1:03نهایتا، اطلاعات کارت اعتباری من با امنیت کامل به فروشگاه اینترنتی خواهد رسید.
-
1:04 – 1:12حالا یک کار دیگر باقی میماند: من باید کلیدم رابه فروشگاه اینترنتی بفرستم بدون اینکه کسی در بین راه بتواند صاحب آن شود. اینکار به این شکل انجام میشود:
-
1:12 – 1:21فروشگاه اینترنتی برای من یک جعبه میفرستد، بههمراه یک قفل باز بدون کلید (این قفل همان «کلید عمومی» فروشگاه است).
-
1:21 – 1:29حالا من کلیدم را داخل جعبهی آنها قرار میدهم و با قفل فروشگاه آن را قفل میکنم.
-
1:31 – 1:35نه من و نه هیچ کس دیگری قادر به باز کردن آن نخواهد بود، فقط فروشگاه اینترنتی کلید قفل را دارد (این کلید، همان «کلید خصوصی» فروشگاه است).
-
1:35 – 1:39حالا من میتوانم کلیدم را با امنیت کامل برای فروشگاه بفرستم.
-
1:39 – 1:45در اینجا هم اهمیتی ندارد که چه کسی در بین راه جعبه را دریافت کند، چون قفل است و فقط فروشگاه اینترنتی میتواند آن را باز کند.
-
1:45 – 1:55نهایتا جعبه به فروشگاه اینترنتی میرسد. در آنجا با استفاده از کلید فروشگاه، جعبه را باز میکنند و کلید من را از آن خارج کرده، جعبه اول را با استفاده از این کلید باز میکنند.
-
1:55 – 2:00به این شکل، اطلاعات کارت اعتباری من، با امنیت کامل به دست فروشگاه اینترنتی میرسد.
مشکل «جاسوس بین راه» کماکان باقیست!
رمزنگاری با کلید عمومی، ابزار قدرتمند و لازمی برای ارتباط امن برروی اینترنت است اما کافی نیست! کمی به مشکل «جاسوس بین راه» که در انتهای قسمت اول (و ابتدای همین قسمت) به آن اشاره شد، فکر کنید. بهطور مشخص به تصویر بالا برای ارتباط احمد و بهروز، یا به قطعه فیلمی که مشاهده کردید فکر کنید و ببینید آیا راهی برای «جاسوس بین راه» وجود دارد تا به محتوای ارتباطات رمز شده دسترسی پیدا کند؟ پاسخ مثبت است و این موضوع بحث قسمت سوم این مجموعه خواهد بود. بهعنوان راهنمایی و مقدمهی قسمت بعد، به این فکر کنید که اگر جاسوس بین راه قفلی «جعلی» به اسم فروشگاه اینترنتی (در فیلم بالا) برای خریدار بفرستد چه اتفاقی میافتد؟ یا مثلا اگر در مثال بهروز و احمد، یکی از افراد دور میز، قفل خودش را روی میز بگذارد ولی نام بهروز را روی آن بنویسد نتیجه چیست؟