SSL Handshake را رمزگذاری کلید عمومی مینامند. در این تکنیک از 2 کلید عمومی و خصوصی استفاده میشود: کلید عمومی که توسط سرور به همه داده میشود و کلید خصوصی یا Private Key که تنها نزد سرور باقی میماند. دیتای رمزنگاری شده با کلید عمومی فقط با کلید خصوصی رمزگشایی و رمزگذاری میشود.
برای فهم بهتر این موضوع این مقاله را تا انتها مطالعه کنید.
گواهینامه SSL چیست و چه میکند؟
SSL مخفف Secure Sockets Layer است و به طور خلاصه، این فناوری استاندارد برای ایمن نگه داشتن اتصال به اینترنت و محافظت از هرگونه اطلاعات حساس است که بین دو سیستم تبادل می شود، و از خواندن اطلاعات توسط مجرمان و تغییر هرگونه اطلاعات منتقل شده، از جمله جزئیات شخصی احتمالی جلوگیری می کند. این دو سیستم می توانند یک سرور و یک سرویس گیرنده (به عنوان مثال یک وب سایت و مرورگر کاربر) یا یک سرور به سرور (به عنوان مثال برنامه ای با اطلاعات قابل شناسایی شخصی یا دارای اطلاعات حقوق و دستمزد) باشند.
رمزنگاری داده های تبادل شده توسط SSL/TLS این اطمینان را به ما می دهد که خواندن داده های منتقل شده بین کاربران و سایت ها یا بین دو سیستم امکان پذیر نیست. این شیوه تبادل از الگوریتمهای رمزگذاری برای مخلوط کردن داده ها در حین انتقال استفاده می کند و از خواندن آن توسط هکرها هنگام ارسال از طریق اتصال جلوگیری میکند. این اطلاعات می تواند هر چیز حساس یا شخصی باشد که می تواند شامل شماره کارت اعتباری و سایر اطلاعات مالی، نام و آدرس باشد.
تفاوت TLS و SSL
اگر به تازگی به دنیای امنیت وب و SSL وارد شده و با آن آشنایی چندانی ندارید، آگاهی از جزئیات هر دوی این موارد می تواند بسیار زمان بر و دشوار باشد.
TLS (Transport Layer Security) فقط یک نسخه به روز شده و امن تر از SSL است. به بیان کلی، این پروتکل همان کاری که گواهی ssl انجام می دهد را به صورت بهتری انجام می دهد. ما هنوز به گواهینامههای امنیتی خود به عنوان SSL اشاره میکنیم زیرا اصطلاحی است که بیشتر مورد استفاده قرار میگیرد. SSL و TLS در پشت صحنه به نحوه های مختلفی اتصال های امن خود را ایجاد میکنند. این روشهای مختلف میتوانند به مسائل مختلفی مربوط باشند؛ از نوع پیام های احراز گرفته تا چگونگی ایجاد پروتکلهای ثبت. این گامهای ضروری برای ایجاد کردن یک اتصال امن همان چیزی است که به عنوان SSL / TLS handshake شناخته میشود.
تفاوتhandshake ها در SSL و TLS
SSL یا Secure Sockets Layer، قبل از TLS پروتکل رمزنگاری اصلی بود که برای HTTP استفاده میشد. این پروتکل اگرچه به لحاظ اسمی همچنان به صورت گسترده استفاده میشود اما در عمل در حال حاضر جای خود را به TLS یا Transport Layer Security داده است. در نتیجه SSL hanadshake نیز با TLS handshake جایگزین شده است.
TLS handshake چه زمانی اتفاق میافتد؟
TLS handshake زمانی اتفاق میافتد که یک کاربر از طریق HTTPS به یک وبسایت هدایت شود و مرورگر شروع به ارسال درخواست به سرور میزبان وبسایت نماید. همچنین زمانیکه هر ارتباط دیگری همچون فراخوانی API و DNS توسط کوئریهای HTTPS صورت بگیرد، TLS handshake رخ میدهد.
در یک TLS handshake چه اتفاقاتی رخ میدهد؟
طی این فرآیند کاربر و سرور اقدامات زیر را انجام میدهند:
- تعیین نسخه TLS در حال استفاده(TLS 1.0, 1.2, 1.3, …)
- تعیین cipher suitهای مورد استفاده
- اعتبارسنجی هویت سرور از طریق کلید عمومی سرور و گواهینامه SSL
- ایجاد کلید session برای استفاده در رمزنگاری بعد از handshake
گامهای TLS handshake
TLS handshake مجموعهای از پیامهایی است که بین سرور میزبان و کاربر مبادله میشود. گامهای طی شده در این فرآیند وابسته به عواملی همچون کلید مبادله الگوریتم و cipher suitهای مورد پشتیبانی توسط طرفین است. در این مورد به صورت معمول کلید مبادله الگوریتم RSA مورد استفاده قرار میگیرد:
- کاربر با ارسال اولین پیام به سرور TLS handshake را آغاز میکند. این پیام شامل نسخه TLS و cipher suit پشتیبانی شده توسط کاربر نیز میباشد.
- در پاسخ کاربر، سرور پیامی محتوی گواهی SSL و cipher suit ارسال مینماید.
- در گام بعد کاربر SSL سرور را تایید مینماید. این مورد تایید میکند که کاربر آن هویتی که ادعا میکند را واقعا دارا است.
- در مرحله بعد، کاربر یک رشته اطلاعات تصادفی رمزنگاری شده با کلید عمومی، که تنها با کلید خصوصی توسط سرور قابل رمزگشایی است را ارسال میکند. کلید عمومی از SSL سایت گرفته میشود.
- سرور این پیام رمزنگاری شده را باز میکند.
- کاربر و سرور کلیدهای session را توسط رشتههای اطلاعات تصادفی مبادله شده بین یکدیگر تولید میکنند. در این مورد نتیجه نهایی یکسان است.
- کاربر و سرور پیامهای پایانی خود را که با کلید رمزنگاری شده به یکدیگر ارسال میکنند.
- TLS handshake کامل شده است و ادامه ارتباط کاربر و سرور با استفاده از کلید session جلو میرود.
مراحل SSL handshake
کاربر که به عنوان مثال میتواند مرورگر شما باشد، یک پیام به سرور میفرستد که اصطلاحاً Client Hello نامیده میشود و شامل یه نوع Handshake است.
سرور در پاسخ، بستهی Server-Hello ارسال میکند که حاوی فهرست امکانات امنیتی کاربر است که آنها را تایید کرده است.
در مرحله بعد اگر نیاز به احراز هویت باشد، سرور گواهی خود را بلافاصله بعد از پیغام Server-Hello ارسال مینماید. نوع گواهی بایستی متناسب با نوع کاربرد مورد نظر باشد. گواهی سرور در پروتکل SSL در بیشتر مواقع X.509.V3 میباشد.
در گام بعدی کاربر باید بررسی کند و ببیند که آیا گواهی ارسال شده از سمت سرور معتبر است یا خیر. در صورتی اعتبار مدارک، اگر سرور هم درخواست احراز هویت کاربر را داشته باشد باید مراحل مخصوص آن طی شود. . اگر کاربر گواهی مناسبی نداشته باشد هشدار no_certificate را ارسال مینماید. این هشدار تنها در سطح اخطار است. در حالی که اگر احراز هویت کاربر ضروری باشد، سرور ممکن است در پاسخ پیام شکست دستدهی را ارسال نماید. همچنین اگر کاربر از گواهی دیفی-هلمن استفاده نماید پارامترهای آن بایستی با پارامترهای دیفی-هلمن سرور همخوانی داشته باشد.
تبادل cipher Spec
این پیام توسط کاربر ارسال میشود و به منزله پایان موفقیت آمیز تبادل است. در ضمن این پیام نیاز به تایید ندارد و به محض دریافت هر 2 طرف میتوانند اطلاعات رمزگذاری شده را ارسال کنند.
در پایان…
ممنونیم که تا پایان این آموزش همراه ما بودید. لطفا سوالات خود را در قسمت نظرات مطرح کنید.