هنگامي كه وب‌سايت amazon.com از شما مي‌خواهد «با استفاده از سرور ايمن ما وارد سيستم شويد» و سپس اطلاعات مالي مهم مانند شماره كارت اعتباري خود را وارد كنيد، براي ايمن‌سازي تبادل اطلاعات بين مرورگر و سرور، چه اتفاقاتي رخ مي‌دهد؟ براي پاسخ به اين پرسش بايد پروتكل SSL يا Secure Sockets Layer را مورد بررسي قرار دهيم. اين پروتكلِ وب‌محور، به ‌منظور ايمن‌سا‌زي تبادل داده‌ها در اينترنت ايجاد شده است و براي درك نحوه عملكرد آن بايد با دو تكنيك رمزنگاري كليد متقارن (symetric-key) و كليد عمومي (public-key: PK) كه در اين پروتكل مورد استفاده قرار مي‌گيرند، آشنا شويد.


 
منبع: IEEE Computer

تكنيك‌هاي رمزنگاري‌
شيوه‌هاي حفاظت از اطلاعات به واسطه دستكاري آن به ‌نحوي كه منجر به تبديل متن ساده به يك متن رمزشده گردد، با عنوان رمزنگاري يا Cryptography شناخته مي‌شوند. هدف اصلي تمام روش‌هاي رمزنگاري، به ‌دست‌آوردن متني است كه براي تمام افراد، ‌غير از دريافت‌كننده مجاز آن، نامفهوم باشد.

در بخش «دستگاه رمزنگاري توماس جفرسون» در همين مقاله، يك نمونه از ابزاري كه در قرن هيجدهم براي رمزگذاري و رمزگشايي پيغام‌ها به‌ كار مي‌رفت، مورد بررسي قرار گرفته است. براي رمزگشايي پيغام، فرستنده و دريافت‌كننده آن بايد تكنيك يكساني را به‌ كار بگيرند و يك كلمه رمز مشخص كنند.

در رمزگذاري به شيوه كليد متقارن، به اين كلمه رمز كه يك عدد تصادفي است، اصطلاحاً كليد (key) گفته مي‌شود. در رمزنگاري به شيوه كليد عمومي كه داراي يك جفت كليد عمومي (public) و خصوصي (private) است، اين كلمه رمز درواقع همان كليد خصوصي است. پس از بررسي روش‌هاي رمزنگاري، علت استفاده همزمان از دو شيوه مذكور مشخص خواهد شد.

رمزنگاري به ‌شيوه كليد متقارن‌

همان‌طور كه در شكل 1 مي‌بينيد، در رمزنگاري به شيوه كليد متقارن، تابع رمزگذاري (‌)E با استفاده از يك كليد محرمانه k، پيغام متني P را به متن رمزشده C تبديل مي‌كند. دريافت‌كننده اين پيغام رمزشده، با اعمال تابع رمزگشايي (‌)D و همان كليد محرمانه k، اين پيغام را به حالت اوليه P بازمي‌گرداند.

بهترين تكنيك رمزنگاري به شيوه كليد متقارن، DES يا‌ Data Encryption Standard نام دارد و از سال 1976 مورد استفاده قرار گرفته است. تكنيك DES در واقع يك متن كدشدهِ تكراري است كه به قطعات 64 بيتي متن ساده متصل مي‌شود.

تابع رمزگذاري به‌ واسطه جابه‌جايي، توسعه، انتقال، فشرده‌سازي، تعويض و تركيب قطعات 64 بيتي متن پيغام با يك كليد 56 بيتي، هر قطعه از متن ورودي را به يك قطعه متن 64 بيتي كدشده تبديل مي‌كند. گيرنده پيغام، با اجراي معكوس مراحل رمزگذاري و با استفاده از همان كليد 56 بيتيk ، قادر است پيغام را به حالت اوليه بازگرداند.

شکل1- فرآيند رمزگذاري از فرمول (C=E(P تبعيت مي‌کند. براي رمزگشايي پيغام از فرمول (P=D(C استفاده مي‌شود. در رمزگذاري به شيوه کليد متقارن، رابطه K1=K2 برقرار است. در رمزگذاري به شيوه کليد عمومي، کليد رمزگذاري با کليد عمومي دريافت‌کننده پيغام يکسان است و کليد رمزگشايي همان کليد خصوصي دريافت‌کننده است.
تكنيك DES از همان ابتداي كار، به عنوان يك روش ايمن براي انجام تراكنش‌هاي مالي مورد استفاده قرار گرفت، اما امروزه كارايي گذشته را ندارد. فضاي 56 بيتي كليد مورد استفاده در اين تكنيك، 2 به توان 56 كليد منحصر به‌فرد توليد مي‌كند. بنابراين، جست‌وجوي دقيق فضاي كليد، متضمن دستيابي به مقدار كليدk و تبديل متن كدشدهC به پيغام اوليه P خواهد بود.

با اين‌كه فضاي 256 بيتي براي انسان‌ها بسيار بزرگ به ‌نظر مي‌رسد، جست‌وجوي آن براي ماشين‌هاي ويژهِ كشف‌رمز يا سوپركامپيوترهاي امروزي، چندان مشكل نيست. در نتيجه، محققان روش‌هاي جديدي را براي پياده‌سازي الگوريتم‌هاي رمزنگاري به‌شيوه كليد متقارن ابداع كرده‌اند.

از ميان اين روش‌ها مي‌توان از DES سه‌گانه (در اين روش، تكنيك DES سه بار پياپي و با استفاده از سه كليد 56 بيتي متفاوت اجرا مي‌شود. در اين نوع رمزنگاري، فضاي كليد مود استفاده، معادل يك كليد 168 بيتي خواهد بود.)، تكنيك IDEA يا International Data Encryption Algorithm با كليدهاي 128 بيتي، تكنيك RC4 (كليدهايي با فضاي بالاي دو كيلوبيت يا 2048 بيت) و تكنيك RC5 (كليدهايي با فضاي بالاي 256 بيت) نام برد.

هنگام استانداردسازي روش‌هاي رمزنگاري در سال 1997 مؤسسه ملي استاندارد و فناوري با برگزاري يك مسابقه عمومي، تكنيك DES را با تكنيك AES يا Advanced Encription Standard جايگزين كرد. برنده اين مسابقه روشي موسوم به Rijndael يا Rhine-doll بود كه دو رمزنگار بلژيكي معرفي كردند.

تكنيك AES مانند DES نوعي رمزنگاري با استفاده از قطعات تكراري متن كدشده است، اما در آن از متن‌هاي 128 بيتي همراه كليدهاي 128، 192 يا 256بيتي استفاده مي‌شود. بهره‌گيري از كليد 256 بيتي، تعداد 2 به توان 256 انتخاب را براي كليد فراهم مي‌كند. جست‌وجوي اين فضا حتي براي كامپيوترهاي پيشرفتهِ امروزي نيز غيرممكن است.

از آنجايي كه براي اجراي رمزنگاري به شيوه كليد متقارن از فرمول‌هاي رياضي ساده استفاده مي‌شود، اين شيوه با سرعت نسبتاً زيادي به اجرا در مي‌آيد. صرف‌نظر از فضاي كليد، تمام رويكردهاي رمزنگاري به شيوه كليد متقارن يك ضعف مشابه دارند. براي بازگرداندن پيغام به حالت اوليه، كليد مورد استفاده در رمزگذاري بايد در اختيار دريافت‌كننده پيغام قرار بگيرد. در اين بين اگر كسي به كليد دسترسي يابد، رمزنگاري پيغام بي‌فايده خواهد بود. براي رفع مشكل انتقال كليد، مي‌توان از رمزنگاري به شيوه كليد عمومي بهره گرفت.

رمزنگاري به شيوه كليد عمومي‌

تكنيك‌هاي رمزنگاري به شيوه كليد عمومي، تابع قواعد كاملاً متفاوتي هستند. در اين شيوه، ارسال‌كننده و دريافت‌كننده پيغام‌هاي رمز‌شده از يك جفت كليد عمومي و خصوصي استفاده مي‌كنند. اين جفت كليد در واقع دو عدد هستند كه بين آن‌ها نوعي رابطه رياضي وجود دارد.

به‌ علاوه، اين اعداد داراي خصوصيتي هستند كه در صورت دسترسي به يكي از آن‌ها، هيچ اطلاعاتي در مورد عدد ديگر حاصل نمي‌شود. چنان‌كه از نام اين شيوه رمزنگاري پيداست، كليد عمومي به‌ طور كاملاً آزادانه (از طريق يك صفحه وب يا يك فهرست عمومي) منتشر مي‌شود و در اختيار همه قرار مي‌گيرد.

در نتيجه به آساني مي‌توان به مقدار كليد عمومي دسترسي يافت. اين كليد عمومي (توسط يك مرجع تأييد صلاحيت مانند Verisign) به‌سادگي مورد ارزيابي و تأييد قرار مي‌گيرد. در مقابل، يك كليد خصوصي پس از ايجاد و نگهداري توسط يكي از طرفين (دريافت‌كننده يا فرستنده پيغام)، براي هميشه محفوظ ‌مي‌ماند.

براي ارسال يك پيغام ايمن، فرستنده پيغام، آن را با استفاده از كليد عمومي دريافت‌كننده، رمزگذاري مي‌كند. سپس دريافت‌كننده پيغام به ‌منظور رمزگشايي آن، تابعي را اجرا مي‌كند كه در آن از كليد خصوصي ارسال‌كننده بهره‌گيري شده است.

از آنجا كه معمولاً كليدهاي عمومي و خصوصي از هزاران بيت اطلاعات تشكيل شده‌اند و فرمول‌هاي مورد استفاده براي رمزگذاري (يا رمزگشايي)، متن ساده (يا رمزشده) را به ‌عنوان يك عدد صحيح بزرگ مورد پردازش قرار مي‌دهند و آن را به‌ توان عددي مي‌رسانند كه توسط كليد عمومي (خصوصي) دريافت‌كننده به دست آمده است، سرعت اجراي اين تكنيك بسيار كُند خواهد بود. بنابراين، رمزنگاري به شيوه كليد عمومي در مواردي كه متن پيغام كوتاه باشد، براي مثال هنگامي كه محتواي پيغام، يك كليد متقارن با طول 56 تا 256 بيت است، كاربرد دارد.

امضاي ديجيتالي‌

يكي از مزاياي الگوريتم كليد عمومي اين است كه مي‌توان نقش كليدهاي عمومي و خصوصي را جايگزين كرد و در نتيجه عملكرد جديدي به‌ دست آورد كه براي تأييد هويت فرستنده پيغام كاربرد دارد. به اين عملكرد اصطلاحاً امضاي ديجيتالي گفته مي‌شود.

فرض كنيد عنصر Xقصد ارسال داده‌هاي ايمن را براي عنصر Yدارد و عنصر Y بخواهد از ارسال اين اطلاعات توسط عنصر Xاطمينان حاصل كند.

براي انجام اين كار ابتدا عنصر X با استفاده از كليد خصوصي مربوط به خود، تابع رمزگشايي را روي متن پيغام اجرا مي‌كند.

سپس تابع رمزگذاري را با استفاده از كليد عمومي عنصر Y روي متن پيغام اجرا مي‌كند. بدين ترتيب متن رمزشده به ‌دست مي‌آيد.

عنصر Y پس از دريافت پيغام رمز، ابتدا آن را با استفاده از كليد خصوصي مربوط به خود، رمزگشايي مي‌نمايد و سپس نتيجه حاصل را با استفاده از كليد عمومي عنصر Xرمزگذاري مي‌كند.

اگر پس از اجراي اين مراحل متن اصلي پيغام به‌ دست آيد، علاوه بر حصول اطمينان از حفاظت پيغام در هنگام انتقال، هويت منبع ارسال‌كننده آن نيز تأييد مي‌شود؛ چراكه در اولين مرحله از كار، تنها عنصر X امكان دسترسي به كليد خصوصي X را دارد.

لازم به ذكر است كه كليدهاي خصوصي بايد براي هميشه مورد محافظت قرار گيرند. در صورت افشاي يكي از كليدهاي خصوصي، بايد جفت كليدهاي خصوصي و عمومي جاري لغو شود و يك جفت كليد جديد مورد استفاده قرار گيرد.


دستگاه رمزنگاري توماس جفرسون
شکل2- دستگاه رمزنگاري جفرسون. روي هر يک از صفحات دوار اين دستگاه، 26 کاراکتر از حروف الفباي انگليسي به‌طور تصاوفي نوشته شده است.
توماس جفرسون در دوران وزارت خود بين سال‌هاي 1790 تا 1793، به منظور حفظ محتواي پيغام‌ها دستگاهي را ابداع کرد که در واقع نوعي دستگاه رمزنگاري محسوب مي‌شود.

اين دستگاه از 26 صفحه دوار تشکيل شده که روي هر صفحه 26 کاراکتر از حروف الفباي انگليسي به‌طور تصادفي حک شده است (شکل2) هنگام استفاده از اين دستگاه، صفحات دوار به گونه خاصي مستقر مي‌شدند و ترتيب قرارگيري آن‌ها به‌عنوان کليد رمز در اختيار دريافت‌‌کننده پيغام قرار مي‌گرفت.
بدين ترتيب، وقتي پيغامي با 26 کاراکتر در يک سطر نوشته مي‌شد، 25 سطر باقي‌مانده متن‌هاي کدشده‌اي را در اختيار کاربر مي‌گذاشتند که وي مي‌توانست هر يک از آن‌ها را به‌عنوان پيغام رمز براي مخاطب خود ارسال کند.
شخص مخاطب پس از دريافت پيغام رمز، صفحات دوار را براساس کليد رمز مرتب مي‌کرد و سپس پيغام رمزشده را در يکي از سطرهاي دستگاه مي‌نوشت. با انجام اين کار، پيغام اصلي در يکي از 25 سطر باقي‌مانده به نمايش درمي‌آمد.

پروتكل Secure Sockets Layer

حال مي‌توانيم به بررسي پروتكل SSL بپردازيم. اين پروتكل روي پروتكل TCP/IP و زيرپروتكل‌هاي برنامه‌هاي سطح بالا (پروتكل HTTP براي وب، پروتكل IMAP براي ايميل، پروتكل FTP براي انتقال فايل) مورد استفاده قرار مي‌گيرد. اين پروتكل همواره هويت سرور را مورد بررسي و تأييد قرار مي‌دهد و در صورت لزوم قادر است هويت كلاينت را نيز مورد تأييد قرار دهد.

كلاينت و سرور در مورد نوع الگوريتم مورد استفاده براي رمزگذاري به ‌شيوه كليد متقارن با يكديگر مذاكره مي‌كنند و سپس براي به اشتراك گذاشتن اطلاعات محرمانه از شيوه كليد عمومي بهره مي‌گيرند. در نهايت، يك اتصال رمز شده برقرار مي‌نمايند و تا پايان انتقال داده‌ها از آن استفاده مي‌كنند.

براي انجام اين كار، پروتكل SSL (نگارش سوم) دو مرحله شامل برقراري اتصال و انتقال داده‌ها را به انجام مي‌رساند. كلاينت (مرورگر) با ارسال پيغامي كه حاوي نگارش پروتكل SSL، تنظيمات مربوط به فشرده‌سازي و رمزنگاري و نوعي اطلاعات تصادفي (موسوم به nonce) است، برقراري يك اتصال ايمن را از سرور مشخصي (براي مثال Amazon) درخواست مي‌كند.

سرور، اطلاعاتي را از بين تنظيمات كاربر انتخاب مي‌نمايد و اين تنظيمات را به همراه اطلاعات nonce مربوط به خود، براي كلاينت ارسال مي‌كند. سپس تأييديه كليد عمومي سرور ايجاد مي‌شود. (بدين معني كه امضاي ديجيتالي يك مرجع تأييد صلاحيت مورد اعتماد، كليد عمومي سرور را تأييد مي‌كند.)

در ابتدا تعدادي كليد عموميِ شناخته شده كه براي تأييد صحت كليد عمومي سرور مورد استفاده قرار گرفته‌اند، در مرورگر كلاينت بارگذاري مي‌شود. ممكن است اين كليدهاي عمومي شامل زنجيره‌اي از تأييديه‌هاي امضا شده توسط يك مرجع صالح باشند.

با اين‌كه تأييد صلاحيت كلاينت امري اختياري است، در صورت فعال كردن اين ويژگي، سرور درخواستي را براي دريافت كليد عمومي كلاينت ارسال مي‌كند و با استفاده از فرايندي مشابه، آن را مورد تأييد قرار مي‌دهد.

در اين مرحله، كلاينت يك عدد تصادفي را (به عنوان رمز مقدماتي) انتخاب مي‌كند. سپس آن را با استفاده از كليد عمومي سرور، رمزگذاري مي‌نمايد و براي سرور ارسال مي‌كند.

حال كلاينت و سرور، با تركيب رمز مقدماتي و داده‌هاي nonce به شيوه‌اي معين، كليد مربوط به جلسه انتقال اطلاعات را (كه در تكنيك رمزنگاري مورد توافق به كار مي‌رود) محاسبه مي‌كنند.

توجه كنيد كه هر دو طرف (كلاينت و سرور)، كليد حقيقي جلسه را به‌ طور مستقل محاسبه مي‌كنند و اين كليد هرگز بين آن‌ها مخابره نمي‌شود. اين امر موجب افزايش امنيت مي‌شود. در انتهاي برقراري اتصال، هريك از طرفين اتصال با ارسال يك پيغام، طرف ديگر را از رمزشدن تبادلات بعدي آگاه مي‌كند.

به‌ منظور انتقال داده‌ها، پيغام‌هاي طولاني به چندين پيغام كوچك با حداكثر حجم شانزده كيلوبايت تقسيم مي‌شوند. هر يك از پيغام‌ها به‌ طور اختياري فشرده مي‌گردد و سپس كدي موسوم به Message Authentication Code (متني حاوي قطعه‌اي از محتواي پيغام، داده‌هاي nonce، و رمز مقدماتي) به آن‌ ضميمه مي‌شود.

قطعه متن پيغام و كد MAC ضميمه شده، با استفاده از تكنيك رمزنگاري مورد توافق (كه يكي از تكنيك‌هاي شيوه كليد متقارن است) و كليد مربوط به جلسه تبادل اطلاعات، رمزگذاري مي‌شود.

به اين ترتيب از اين پس به‌خوبي مي‌دانيد كه هنگام تغيير پروتكل برنامه‌هاي كاربردي مرورگر از HTTP به HTTPS، تمام عمليات رمزنگاري فوق كه دربرگيرنده پروتكل SSL هستند، به دليل افزايش امنيت در زمان انتقال اطلاعات مهم اجرا مي‌شوند.