اینترنت یک زیر ساخت باز و نامتمرکز است که تبادل اطلاعات در آن بصورت نا امن صورت می گیرد و این بدین معناست که ارتباطات بستر مناسبی برای سرقت اطلاعات کاربران توسط هکرها است. امروزه تجارت الکترونیک در اینترنت در حال رشد بوده و از آنجا که این معاملات تجاری شامل اطلاعات حساسی همچون اطلاعات شخصی و کارت های پرداخت و غیره می باشد پس وجود یک حریم خصوصی، یکپارچگی داده ها و محرمانه بودن آن به شدت احساس می شود.

thief-min

زمانی که ما داده ها و اطلاعات شخصی خود را در وبسایت ها به اشتراک می گذاریم، نیازمند این هستیم که این اطلاعات از طریق یک اتصال ایمن جهت جلوگیری از سرقت این اطلاعات به دست اشخاص ثالث (هکرها) صورت بپذیرد و اگر این اطلاعات به سرقت برود، خسارات جبران ناپذیری برای کاربران اینترنتی ایجاد می کند. برای جلوگیری از این چنین مشکلاتی امروزه وبسایت های اینترنتی که اطلاعات کاربران خود را دریافت می کنند از یک پروتکل امنیتی به نام SSL استفاده می کنند.

SSL

SSL مخفف Secure Sockets Layer و در اصطلاح به استاندارد رمزنگاری در انتقال داده ها در وب گفته می شود. در واقع SSL انواع پروتکل‌های کدگذاری است که وظیفه آن‌ ایمن­ سازی ارتباط میان سرور،‌ کاربر و برنامه‌ ها در بستر شبکه می باشد؛ یعنی یک ارتباط امن،‌ دو طرفه و تونل مانند میان دو نقطه که در حال انتقال اطلاعات هستند برقرار می‌ کند که سبب می شود دسترسی هکرها به این ارتباط اطلاعات محدود شود. معمولا برای انتقال اطلاعات از بستر HTTP استفاده می­‌شود ولی وقتی این ارتباط توسط SSL امن می شود، پروتکل انتقال اطلاعات HTTPS خواهد شد.

ssl-no-ssl

تاریخچه

SSL ابتدا در سال ۱۹۹۵ توسط شرکت Netscape به منظور نقل و انتقال امن و رمزی اطلاعات در سرورهای خود ایجاد نمود و اکنون تقریبا تمام مرورگرهای استاندارد از جمله فایرفاکس، اینترنت اکسپلورر، اپرا، گوگل کروم و سافاری از آن پشتیبانی می کنند. ارتباط https به صورت رمزنگاری شده بوده و امکان مداخله و سوء استفاده بر روی داده های در حال انتقال را محدود می نماید.

شایان ذکر است که SSL در اینجا فقط به روش برقراری ارتباط (handshake)‌ میان سرور و کاربر اشاره دارد. این برقراری ارتباط به خودی خود باعث رمزنگاری اطلاعات نمی‌شود،‌ بلکه کاربر و سرور از این طریق بر روی متد رمزنگاری توافق می­‌کنند.

پروتکل امنیتی ssl چگونه کار می کند؟

ssl flowcharts

زمانی که یک مرورگر می خواهد به یک وب سایت از طریق SSL متصل می‌ شود، مرورگر و سرویس دهنده یک نشست امن با تبادل پیغام ساده تحت عنوان SSL Handshake شروع می‌ کنند. این روند توسط کاربر قابل رویت نیست.

ارتباط SSL به کمک سه کلید یک ارتباط امن را ایجاد می‌کند:

۱- کلید عمومی

۲- کلید خصوصی

۳- کلید نشست

هر چیزی که با کلید عمومی رمزگذاری شود توسط کلید خصوصی رمزگشایی خواهد شد و برعکس.

روند کار به شکل زیر است:

۱- مرورگر به یک وبسایت امن متصل می‌شود (وبسایت هایی که دارای SSL هستند با https شروع می‌شوند). مرورگر درخواست می‌کند تا سرویس دهنده خودش را معرفی کند.
۲- سرویس دهنده یک کپی از مدرک SSL خود را برای مرورگر ارسال می کند که شامل کلید عمومی می‌ شود.
۳- مرورگر مدرک دریافتی را با لیستی از مدارک SSL ای که توسط CA معتبر هستند و هنوز منقضی نشده‌ اند مطابقت می‌ دهند (وظیفه CA این است که هویت طرفین ارتباط، نشانی ها، تاریخ انقضاء گواهینامه را بداند و بر اساس آنها هویت ها را تعیین نماید). اگر مرورگر مدرک دریافتی را معتبر تشخیص دهد، یک مقدار را برای شروع جلسه ایجاد می‌کند و آن را با استفاده از کلید عمومی دریافتی از سرویس دهنده رمزنگاری می‌کند و این مقدار رمز شده را برای سرویس دهنده ارسال می‌کند.

۴- اگر سرویس دهنده نیز سرویس گیرنده را مجاز دانست، با استفاده از کلید خصوصی خود مقدار را رمزگشایی می کند و یک مقدار شامل کلید نشست (session key) ایجاد می‌کند و به مرورگر می‌ فرستد تا ارتباط امن آغاز شود.
۵- سرور و مرورگر حالا تمام داده ها را با کلید نشست (session key) رمزگذاری می‌کنند و داده‌ها را از طریق این ارتباط امن رد و بدل می‌ کنند.

یک سایت که گواهینامه معتبر SSL دارد در مرورگر Chrome یک قفل بسته در کنار دامنه آن سایت قرار دارد و با کلیک بر روی آن پیغام connection is secure نمایش داده می شود.

secure-connection-min