سه شنبه, ۱ خرداد, ۱۴۰۳ / 21 May, 2024
مجله ویستا

نگاهی به پروتکل Secure Sockets Layer


نگاهی به پروتکل Secure Sockets Layer

شیوه های حفاظت از اطلاعات به واسطه دستکاری آن به نحوی که منجر به تبدیل متن ساده به یک متن رمزشده گردد, با عنوان رمزنگاری یا Cryptography شناخته می شوند

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

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

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

● رمزنگاری به ‌شیوه کلید متقارن‌

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

بهترین تکنیک رمزنگاری به شیوه کلید متقارن، DES یا‌ Data Encryption Standard نام دارد و از سال ۱۹۷۶مورد استفاده قرار گرفته است. تکنیک DES در واقع یک متن کدشدهِ تکراری است که به قطعات ۶۴ بیتی متن ساده متصل می‌شود.

تابع رمزگذاری به‌ واسطه جابه‌جایی، توسعه، انتقال، فشرده‌سازی، تعویض و ترکیب قطعات ۶۴ بیتی متن پیغام با یک کلید ۵۶ بیتی، هر قطعه از متن ورودی را به یک قطعه متن ۶۴ بیتی کدشده تبدیل می‌کند. گیرنده پیغام، با اجرای معکوس مراحل رمزگذاری و با استفاده از همان کلید ۵۶ بیتیk ، قادر است پیغام را به حالت اولیه بازگرداند.

تکنیک DES از همان ابتدای کار، به عنوان یک روش ایمن برای انجام تراکنش‌های مالی مورد استفاده قرار گرفت، اما امروزه کارایی گذشته را ندارد. فضای ۵۶ بیتی کلید مورد استفاده در این تکنیک، ۲ به توان ۵۶ کلید منحصر به‌فرد تولید می‌کند. بنابراین، جست‌وجوی دقیق فضای کلید، متضمن دستیابی به مقدار کلیدk و تبدیل متن کدشدهC به پیغام اولیه P خواهد بود.

با این‌که فضای ۲۵۶ بیتی برای انسان‌ها بسیار بزرگ به ‌نظر می‌رسد، جست‌وجوی آن برای ماشین‌های ویژهِ کشف‌رمز یا سوپرکامپیوترهای امروزی، چندان مشکل نیست. در نتیجه، محققان روش‌های جدیدی را برای پیاده‌سازی الگوریتم‌های رمزنگاری به‌شیوه کلید متقارن ابداع کرده‌اند.

از میان این روش‌ها می‌توان از DES سه‌گانه (در این روش، تکنیک DES سه بار پیاپی و با استفاده از سه کلید ۵۶ بیتی متفاوت اجرا می‌شود. در این نوع رمزنگاری، فضای کلید مود استفاده، معادل یک کلید ۱۶۸ بیتی خواهد بود.)، تکنیک IDEA یا International Data Encryption Algorithm با کلیدهای ۱۲۸ بیتی، تکنیک RC۴ (کلیدهایی با فضای بالای دو کیلوبیت یا ۲۰۴۸ بیت) و تکنیک RC۵ (کلیدهایی با فضای بالای ۲۵۶ بیت) نام برد.

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

تکنیک AES مانند DES نوعی رمزنگاری با استفاده از قطعات تکراری متن کدشده است، اما در آن از متن‌های ۱۲۸ بیتی همراه کلیدهای ۱۲۸، ۱۹۲ یا ۲۵۶بیتی استفاده می‌شود. بهره‌گیری از کلید ۲۵۶ بیتی، تعداد ۲ به توان ۲۵۶ انتخاب را برای کلید فراهم می‌کند. جست‌وجوی این فضا حتی برای کامپیوترهای پیشرفتهِ امروزی نیز غیرممکن است.

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

● رمزنگاری به شیوه کلید عمومی‌

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

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

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

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

از آنجا که معمولاً کلیدهای عمومی و خصوصی از هزاران بیت اطلاعات تشکیل شده‌اند و فرمول‌های مورد استفاده برای رمزگذاری (یا رمزگشایی)، متن ساده (یا رمزشده) را به ‌عنوان یک عدد صحیح بزرگ مورد پردازش قرار می‌دهند و آن را به‌ توان عددی می‌رسانند که توسط کلید عمومی (خصوصی) دریافت‌کننده به دست آمده است، سرعت اجرای این تکنیک بسیار کُند خواهد بود. بنابراین، رمزنگاری به شیوه کلید عمومی در مواردی که متن پیغام کوتاه باشد، برای مثال هنگامی که محتوای پیغام، یک کلید متقارن با طول ۵۶ تا ۲۵۶ بیت است، کاربرد دارد.

● امضای دیجیتالی‌

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

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

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

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

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

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

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

● پروتکل Secure Sockets Layer

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

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

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

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

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

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

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

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

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

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

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

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