TLS یک پروتکل رمزنگاری جهت ایمن سازی ارتباطات اینترنتی است. TLS handshake فرآیندی است که سشن ارتباطی که از رمزنگاری TLS استفاده میکند را آغاز مینماید. در یک TLS handshake، طرفین ارتباط، پیامهایی را جهت تایید اعتبار یکدیگر و تعیین الگوریتمهای و کلیدهای رمزنگاری مورد استفاده رد و بدل میکنند. این پروسه یکی از اصول پایه در نحوه کار کردن HTTPS است.
تفاوت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
- ایجاد کلید سشن برای استفاده در رمزنگاری بعد از handshake
گامهای TLS handshake
TLS handshake مجموعهای از پیامهایی است که بین سرور میزبان و کاربر مبادله میشود. گامهای طی شده در این فرآیند وابسته به عواملی همچون کلید مبادله الگوریتم و cipher suitهای مورد پشتیبانی توسط طرفین است. در این مورد به صورت معمول کلید مبادله الگوریتم RSA مورد استفاده قرار میگیرد:
- کاربر با ارسال اولین پیام به سرور TLS handshake را آغاز میکند. این پیام شامل نسخه TLS و cipher suit پشتیبانی شده توسط کاربر نیز میباشد.
- در پاسخ کاربر، سرور پیامی محتوی گواهی SSL و cipher suit ارسال مینماید.
- در گام بعد کاربر SSL کاربر را تایید مینماید. این مورد تایید میکند که کاربر آن هویتی که ادعا میکند را واقعا دارا است.
- در مرحله بعد، کاربر یک رشته اطلاعات تصادفی رمزنگاری شده با کلید عمومی، که تنها با کلید خصوصی توسط سرور قابل رمزگشایی است را ارسال میکند. کلید عمومی از SSL سایت گرفته میشود.
- سرور این پیام رمزنگاری شده را باز میکند.
- کاربر و سرور کلیدهای سشن را توسط رشتههای اطلاعات تصادفی مبادله شده بین یکدیگر تولید میکنند. در این مورد نتیجه نهایی یکسان است.
- کاربر و سرور پیامهای پایانی خود را که با کلید رمزنگاری شده به یکدیگر ارسال میکنند.
- TLS handshake کامل شده است و ادامه ارتباط کاربر و سرور با استفاده از کلید سشن جلو میرود.