پروتکل انتقال هایپرتکست امن ( Hypertext Transfer Protocol Secure ) یک گسترش از پروتکل انتقال هایپرتکست (HTTP) است. HTTPS دادهها را با استفاده از امنیت لایه انتقال (TLS) به صورت رمزنگاری شده منتقل میکند. اگر دادهها در آنلاین دزدیده شوند، همه چیزی که دزد دریافت میکند کد دودویی است.
چگونه دادهها رمزنگاری و رمزگشایی میشوند؟
مرحله 1 - کلاینت (مرورگر) و سرور یک اتصال TCP برقرار میکنند.
مرحله 2 - کلاینت یک "سلام کلاینت" به سرور میفرستد. پیام شامل مجموعهای از الگوریتمهای رمزنگاری ضروری (مجموعه های رمز) و آخرین نسخه TLS که میتواند پشتیبانی کند، است.
سرور با یک "سلام سرور" پاسخ میدهد تا مرورگر بداند آیا میتواند الگوریتمها و نسخه TLS را پشتیبانی کند یا خیر.
سپس سرور گواهینامه SSL را به کلاینت ارسال میکند. گواهینامه شامل کلید عمومی، نام میزبان، تاریخهای انقضا و غیره است. کلاینت گواهینامه را تأیید میکند.
مرحله 3 - پس از تأیید گواهینامه SSL، کلاینت یک کلید نشست(session key) را تولید میکند و آن را با استفاده از کلید عمومی رمزنگاری میکند. سرور کلید نشست رمزنگاری شده را دریافت کرده و با کلید خصوصی آن را رمزگشایی میکند.
مرحله 4 - حالا که هر دوی کلاینت و سرور همان کلید نشست را (رمزنگاری متقارن) در اختیار دارند، دادههای رمزنگاری شده در یک کانال دو طرفه امن منتقل میشوند.
چرا HTTPS در طول انتقال دادهها به رمزنگاری متقارن تغییر میکند؟ دو دلیل اصلی وجود دارد:
امنیت: رمزنگاری نامتقارن تنها در یک جهت عمل میکند. این بدان معناست که اگر سرور بخواهد دادههای رمزنگاری شده را به کلاینت برگرداند، هر کسی میتواند دادهها را با استفاده از کلید عمومی رمزگشایی کند.
منابع سرور: رمزنگاری نامتقارن مقدار زیادی بار محاسباتی اضافه میکند. این روش برای انتقال دادهها در نشست های طولانی(long sessions) مناسب نیست.
بار عملکردی که HTTPS نسبت به HTTP اضافه میکند چقدر است؟
بار عملکردی که HTTPS نسبت به HTTP اضافه میکند، به چند فاکتور بستگی دارد، اما معمولاً تفاوت قابل توجهی در عملکرد وجود دارد. رمزنگاری و رمزگشایی دادهها در HTTPS به منابع CPU بیشتری نیاز دارد و ممکن است تاخیر کمی در زمان بارگذاری صفحه ایجاد کند. با این حال، با پیشرفتهای اخیر در الگوریتمهای رمزنگاری و بهبود در سختافزار، این تفاوتها کمتر محسوس هستند.
به طور معمول، میتوان انتظار داشت که HTTPS حدود 10 الی 20% بیشتر بار عملکردی نسبت به HTTP اضافه کند، اما این افزایش بار معمولاً به خاطر مزایای امنیتی که HTTPS فراهم میکند، قابل قبول است. افزایش امنیت، حفاظت از دادههای حساس و جلوگیری از حملات مرد میانی (Man-in-the-Middle) ارزش این بار اضافی را دارد.