تفاوت بین HTTP و HTTPS

HTTPS در واقع همون HTTP هست ولی رمزگذاری و بازبینی شده، یعنی تنها تفاوت بین این دو پروتکل این هست که HTTPS ازTLS یا SSL برای رمزگذاری درخواست های HTTP (HTTP Requests)، پاسخ های HTTP (HTTP Responses) و امضای دیجیتالی (Digital Signature) اون درخواست ها و پاسخ ها استفاده می کنه. در نتیجه، HTTPS بسیار امن تر از HTTP هست.

سلام، وقتتون بخیر. علی هستم برنامه نویس تیما. امروز می خواهیم با هم در مورد HTTP و HTTPS و تفاوت بین اون ها صحبت کنیم. HTTPS در واقع همون HTTP هست ولی رمزگذاری و بازبینی شده، یعنی تنها تفاوت بین این دو پروتکل این هست که HTTPS ازTLS  یا SSL برای رمزگذاری درخواست های HTTP (HTTP Requests)، پاسخ های HTTP (HTTP Responses) و امضای دیجیتالی (Digital Signature) اون درخواست ها و پاسخ ها استفاده می کنه. در نتیجه، HTTPS بسیار امن تر از HTTP هست. وب سایت هایی که از HTTP استفاده می کنند، دارای http در URL خود هستند و وب سایت هایی که از HTTPS استفاده می کنند، دارای https هستند.

 


 

HTTP چیست؟

HTTP مخفف Hypertext Transfer Protocol است و یک پروتکل یا دستورالعمل از پیش تعیین شده است برای ارائه اطلاعات و انتقال داده ها از طریق شبکه. بیشتر اطلاعاتی که از طریق اینترنت ارسال می شوند، از جمله محتوای وب سایت ها، اطلاعات API ها و ... از پروتکل HTTP استفاده می کنند. در مدل OSI، HTTP یک پروتکل لایه 7 است که در پست های بعدی به بررسی کامل لایه های OSI می پردازیم. همانطور که گفتیم، پیام های HTTP به دو دسته کلی درخواست یا Request و پاسخ یا Response تقسیم می شوند.

 

درخواست و پاسخ HTTP به چه معناست؟

درخواست‌های HTTP توسط مرورگر (Client) هنگام تعامل کاربر با وب ایجاد می‌شوند. به عنوان مثال، اگر کاربری روی لینکی کلیک کند، مرورگر یک سری درخواست "HTTP GET" را برای دریافت محتوایی که در آن صفحه ظاهر می شود، ارسال می کند. یا اگر شخصی «تفاوت بین HTTP و HTTPS» را در گوگل جستجو کند و این مقاله در نتایج جستجو نشان داده شود، هنگامی که کاربر روی آن کلیک می کند، مرورگر یک سری درخواست HTTP را ایجاد و ارسال می کند تا اطلاعات لازم برای ارائه صفحه به کاربر را به دست آورد. این درخواست های HTTP به سرور می روند و آن سرور، یک پاسخ HTTP ایجاد می کند. پاسخ‌های HTTP، در واقع پاسخ‌هایی به درخواست‌های HTTP هستند.

 

درخواست HTTP فقط یک سری از خطوط متنی است که از پروتکل HTTP پیروی می کند. یک درخواست GET ممکن است به شکل زیر باشد:


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

 

اهمیت این مسئله زمانی که کاربران داده های حساسی را از طریق یک وب سایت یا یک برنامه ارسال می کنند بیشتر می شود. این اطلاعات می تواند رمز عبور، شماره کارت اعتباری یا هر داده دیگری باشد که در یک فرم وارد شده است و در HTTP، همه این داده ها به صورت متن ساده ارسال می شوند. هنگامی که سرور، یک درخواست HTTP دریافت می کند، یک پاسخ HTTP متناسب ارسال می کند که مشابه عکس زیر است:


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

 

HTTPS چیست؟

S در HTTPS مخفف کلمه "Secure" یا همان "امن" است. HTTPS از TLS یا SSL برای رمزگذاری درخواست‌ها و پاسخ‌های HTTP استفاده می‌کند. بنابراین در عکس های بالا، به‌جای همان متن که به صورت ساده و صاف نمایش داده می شد، مهاجم یا هکر دسته‌ای از کاراکترهای به ظاهر تصادفی را می بیند. به طور مثال اگر درخواست به شکل زیر باشد:


حمله کننده یا هکر (Attacker)، چیزی به صورت زیر می بیند:

t8Fw6T8UV81pQfyhDkhebbz7+oiwldr1j2gHBB3L3RFTRsQCpaSnSBZ78Vme+DpDVJPvZdZUZHpzbbcqmSW1+3xXGsERHg9YDmpYk0VVDiRvw1H5miNieJeJ/FNUjgH0BmVRWII6+T4MnDwmCMZUI/orxP3HGwYCSIvyzS3MpmmSe4iaWKCOHQ==

 

در HTTPS، TLS یا SSL چگونه درخواست ها و پاسخ های HTTP را رمزگذاری می کند؟

TLS از فناوری به نام رمزنگاری کلید عمومی (public key cryptography) استفاده می کند. در این فناوری دو کلید وجود دارد، یک کلید عمومی (public key) و یک کلید خصوصی (private key). کلید عمومی از طریق گواهی SSL سرور، با دستگاه های مشتری به اشتراک گذاشته می شود. هنگامی که یک مشتری یا Client ارتباطی را با یک سرور باز می کند، دو دستگاه از کلید عمومی و خصوصی برای توافق بر سر کلیدهای جدید، به نام کلیدهای جلسه یا نشست (Session Keys)، برای رمزگذاری بیشتر استفاده می کنند. سپس تمام درخواست‌ها و پاسخ‌های HTTP با این کلیدهای جلسه یا نشست رمزگذاری می‌شوند، به طوری که هر کسی که ارتباطات را رهگیری می‌کند فقط می‌تواند یک رشته تصادفی از کاراکترها را ببیند، نه همان متن را.

 


 

چگونه HTTPS به اعتبارسنجی سرورهای وب کمک می کند؟

احراز هویت (Authentication) به معنای تأیید این است که یک شخص یا ماشین همان چیزی است که ادعا می کند. در HTTP، هیچ تایید هویتی وجود ندارد و بر اساس اعتماد است. تصمیم معماران HTTP این نبوده است که به همه سرورهای وب اعتماد کنند ولی آنها اولویت هایی غیر از امنیت در آن زمان داشتند. اما در دنیای امروز و اینترنت مدرن، احراز هویت امری ضروری است.

درست همانطور که کارت شناسایی هویت یک فرد را تایید می کند، کلید خصوصی نیز هویت سرور را تایید می کند. هنگامی که یک Client ارتباطی را با یک سرور آغاز می کند، مثلاً وقتی که کاربری، یک وب سایت را باز می کند، داشتن کلید خصوصی (private key) مطابق با کلید عمومی (public key) در گواهی SSL، ثابت می کند که سرور در واقع میزبانی قانونی و مطمئن است. این امر، از حملاتی که در صورت عدم احراز هویت امکان پذیر است، جلوگیری می کند و به مسدود کردن آنها کمک می کند. علاوه بر این، گواهی SSL به صورت دیجیتالی توسط مرجع صدور گواهی، امضا شده است و این تأیید می کند که سرور همان چیزی است که ادعا می کند.

 

امیدوارم که از این آموزش لذت برده باشید و براتون مفید واقع شده باشه. با ما همراه باشید تا با هم یک درصد بیشتر بدونیم.

نظرات ارزشمند خود را با ما به اشتراک بگذارید

نظرات :
هنوز نظری ثبت نشده است.