مطمئنا تا به حال به سایتهایی که آدرسشان با HTTPS آغاز میشود برخورد داشتهاید، اگر تا به حال به این مورد توجه نکردهاید همین الان سری به گوگل بزنید و آدرسبار مرورگر خود را مشاهده کنید، آدرس اینترنتی وبسایت گوگل با HTTPS شروع میشود، شما میتوانید این پروتکل را در وبسایتهای زیادی مشاهده کنید.
حال که با کلمهی پروتکل روبهرو شدیم بهتر است بیشتر با آن آشنا شده و به خوبی آنرا بشناسیم.
پروتکل (Protocol) چیست؟
به نقل از ویکیپدیا:
یک پروتکل به تعریف قالب و ترتیب مبادله پیامها بین دو یا بیش از دو موجودیت ارتباطی میپردازد. به زبان ساده پروتکل یک قرارداد در نحوه مبادله اطلاعات در جامعه شبکههای کامپیوتری میباشد و نوع عملیات لازم برای انتقال یا دریافت یک پیام را نیز مشخص میکند.
حا که با مفهوم پروتکل آشنا شدیم، قبل از اینکه به سراغ HTTPS برویم بد نیست در ابتدا با پروتکل HTTP آشنا شویم.
پروتکل HTTP چیست؟
اطلاعاتی که به صورت عادی در وب منتقل میشوند در بستر پروتکل HTTP قرار دارند، این واژه مختصر شدهی عبارت Hyper Text Transfer Protocol و به معنای پروتکل انتقال فرامتن میباشد.
استانداردهای این پروتکل به گونهای تعریف شدهاند که درخواستهای تحت وب را به صورت متن ساده (Plain Text) بین کلاینت (مرورگر کاربر) و سرور منتقل میکند، از لحاظ فنی نیز در این نوع پروتکل انتقال اطلاعات به صورت پیشفرض از طریق پورت ۸۰ صورت میگیرد.
از آنجایی که هیچگونه رمزنگاری روی این پروتکل انجام نمیشود، بنابراین به راحتی توسط سایر افراد و Snifferها (شنود کنندگان) قابل دریافت، ردیابی و مشاهده است!
به عنوان مثال اگر اطلاعات کارت بانکی خود را در چنین وبسایتی وارد کنید، به راحتی احتمال مشاهده و دریافت این اطلاعات توسط سایرین فراهم خواهد بود.
به همین دلیل استفاده از پروتکل HTTP یه هیچوجه برای سایتهایی که با اطلاعات حساس کاربران سروکار دارند (مانند بانکها، فروشگاههای اینترنتی و…) مناسب نبوده و میتواند امنیت کاربران را به خطر بیندازد، در این شرایط راه چاره استفاده از پروتکل HTTPS میباشد.
پروتکل HTTPS چیست؟
پروتکل HTTPS یا Hyper Text Transfer Protocol Secure که به معنای پروتکل امن انتقال فرامتن میباشد، در این نوع از پروتکل اطلاعات ارسالی رمزنگاری (Encrypt) شده و حتی در صورت شنود و دریافت نیز توسط افراد غیرمجاز قابل خواندن نخواهند بود.
در رمزنگاری این نوع پروتکل از شیوهی Secure Sockets Layer یا SSL استفاده میشود و در ضمن انتقال اطلاعات نیز از طریق پورت ۴۴۳ انجام میشود.
گواهی SSL چیست؟
همانطور که در بالا اشاره کردیم SSL مخفف شدهی عبارت Secure Sockets Layer میباشد که به نوعی استاندارد رمزنگاری و انتقال داده در بستر وب اطلاق میشود (گواهی SSL را با پروتکل SSH اشتباه نگیرید، SSH چیست؟)
این نوع رمزنگاری را در ابتدا شرکت Netscape در سال ۱۹۹۶ ایجاد کرد و تنها در همین مرورگر استفاده میشد، اما هماکنون تمام مرورگرهای معروف از این استاندارد پشتیبانی میکنند.
شیوهی کار SSL به چه صورت است؟
در شیوهی رمزگذاری SSL از دو کلید عمومی و خصوصی استفاده میشود، به این صورت که هنگام درخواست مرورگر برای ایجاد یک ارتباط امن، سرور اطلاعات مربوط به اعتبارسنجی SSL را به همراه کلید عمومی برای مرورگر ارسال میکند، همانگونه که از نام این کلید پیداست به صورت عمومی بوده و افراد سوم شخص نیز قادر به مشاهدهی آن هستند.
در مرحلهی بعد مرورگر صحت اطلاعات ارسالی از سرور را با دیتابیس خود مقایسه کرده و آن را اعتبارسنجی میکند و در صورت صحت کد پاسخی را برای سرور ارسال میکند و در هنگام سرور نشست کدگذاری (SSL Encrypt Session) را آغاز میکند.
در ادامه مرورگر اطلاعات ارسالی کاربر را با استانداردهای خاص و به کمک کلید عمومی که در اختیار دارد کدگذاری کرده و آنها را برای سرور ارسال میکند، در اینجا کلید خصوصی وارد عمل میشود و سرور با استفاده از این دو کلید اطلاعات را رمزگشایی میکند، میدانیم برای کدگشایی اطلاعات به هر در کلید کلید عمومی و خصوصی احتیاج است و از آنجایی که کلید خصوصی تنها در اختیار سرور است، شخص دیگری حتی در صورت درسترسی به اطلاعات امکان خواندن آنها را نخواهد داشت، چرا که اطلاعات با الگوریتمهای خاصی کدگذاری شده و به رشتههای کارکتری (متنهایی) غیرقابل خواندن تبدیل شدهاند که تنها سرور قابلیت خواندن آنها را دارد.
چگونه مطمئن شویم که سایت مورد نظرمان از SSL استفاده میکند؟
همانطور که در ابتدای مقاله گفتیم استفاده از پروتکل HTTPS و گواهی SSL برای سایتهایی که با اطلاعات مهم کاربران سروکار دارند امری مهم و حیاتی محسوب میشود، بررسی وجود SSL یکی از سادهترین و در عین حال مهمترین راهکارهایی است که میتوان برای حفظ امنیت اطلاعات در محیط وب به کار برد، برای این منظور کافیست پس از بارگذاری کامل سایت آدرسبار مرورگر خود را نگاه کنید اگر سایت مورد نظرتان با https آغاز شده باشد، میتوانید با خیال راحت نسبت به وارد کردن اطلاعات خود در آن سایت اقدام کنید.
چرا رنگ HTTPS در سایتهای مختلف متفاوت است؟
در حالت استاندارد علامت HTTPS باید دارای رنگ سبز باشد، مشاهدهی این رنگ به معنای برقراری ارتباط کاملا امن میباشد، اما در شرایطی امکان دارد شما این علامت را با رنگ زرد یا رنگ آبی مشاهده کنید، این رنگ به معنای وجود نقصی جزئی در برقراری ارتباط با سرور میباشد، هر چند این نقص زیاد جدی و خطرآفرین نخواهد بود و در نهایت مشاهدهی رنگ قرمز در این علامت به معنای انقضای اعتبار گواهی SSL یا عدم تایید آن میباشد!