Secure Sockets Layer یا به اختصار SSL ، یکی از پروتکل های رمزنگاری است که به منظور برای حفظ امنیت تبادل اطلاعات از طریق اینترنت ایجاد شده است. پروتکل SSL توسط شرکت Netscape به منظور نقل و انتقال امن و رمزی اطلاعات ایجاد شد. امروزه تقریبا تمام مرورگرهای استاندارد از جمله فایر فاکس، اینترنت اکسپلورر، اپرا، گوگل کروم و سافاری از این قابلیت پشتیبانی میکنند. در ادامه با این پروتکل رمزگذاری بیشتر آشنا خواهیم شد.
SSL چیست؟
اطلاعات و داده ها در اینترنت به صورت پیشفرض در بستر پروتکل HTTP یا Hyper Text Transfer Protocol انتقال مییابند. در این پروتکل دادهها رمزگذاری نمیشوند و برای افراد دیگر قابل خواندن هستند. مثلا اگر پسورد و اطلاعات شخصی خود را در بستر این پروتکل به سروری منتقل کنید، این امکان وجود دارد که از طریق سرویس دهنده اینترنت، این اطلاعات قابل مشاهده باشند. بنابراین بسیاری از سرویسهای مبتنی بر اینترنت از پروتکل دیگری جهت انتقال دادهها بین سرویس دهنده (Server) و سرویس گیرنده (Client) استفاده کردند.
این پروتکل امنیتی همان SSL است که اطلاعات را با استفاده از کلیدهای خصوصی و عمومی رمزنگاری (Encrypt) میکند. اطلاعات رمزگذاری شده توسط این پروتکل در سمت دیگر رمزگشایی (Decrypt) می شوند. امنیت در این پروتکل در مبدا و مقصد اطلاعات حفظ میشود، یعنی در هر دو طرف، فرایند رمزنگاری و رمزگشایی انجام می گیرد. در ابتدا از این پروتکل فقط در سایت هایی که اطلاعات حساس کاربران مانند اطلاعات شخصی، اطلاعات حسابهای بانکی و… را دریافت میکردند، استفاده میشد.
اما امروزه از این پروتکل معمولا در بیشتر سایتها استفاده میشود. زیرا موضوع امنیت اطلاعات کاربران بیش از پیش در دنیای اینترنت اهمیت پیدا کرده است. از طرفی دیگر استفاده از پروتکل امنیتی SSL در سایتها از نظر سئو بسیار مفید خواهد بود. وب سایت هایی که از این پروتکل جهت رمزگذاری دادهها استفاده می کنند، معمولا از طریق پروتکل HTTPS با کلاینتها ارتباط برقرار می کنند. برای داشتن یک ارتباط امن در بستر پروتکل HTTPS برای سایت خود، نیاز به تهیه یک گواهی معتبر ssl دارید.
امنیت در پروتکل SSL
همان طور که اشاره شد، در این پروتکل اطلاعات تبادل شده بین سرور و کلاینت رمزگذاری می شوند؛ بر این اساس این اطلاعات توسط شخص سوم قابل مشاهده نخواهند بود. البته همچنان دسترسی به این دادهها امکان پذیر است، اما با توجه به اینکه آنها رمزگذاری شده اند، برای مشاهده دادههای آن ها، نیازمند رمزگشایی هستند.رمزگشایی این داده بدون کلید مورد استفاده در نشست (session) ارتباطی امن امکان پذیر نیست. بنابراین، این پروتکل عملاً غیرقابل نفوذ است.
این موضوع به این منظور نیست که راهی برای سرقت اطلاعات وجود ندارد. زیرا این دادهها فقط در طول مسیر انتقال میان سرور و کلاینت رمزگذاری شده اند؛ اما دادههای اصلی، در سمت سرور و کلاینت توسط پروتکل امن SSL رمزنگاری نمی شوند. به همین دلیل، ممکن است با استفاده از بدافزاری یا روشهای دیگر، این اطلاعات قبل از رمزگذاری و یا پس از رمزگشایی به سرقت روند. حتی ممکن است کلیدهای رمزگشایی و رمزگذاری اطلاعات، از سمت سرویس دهنده پروتکل امن، به سرقت رفته باشند. البته تاکنون هیچ گزارشی مبنی بر سرقت اطلاعاتی که با استفاده از این پروتکل تبادل شده اند، منتشر نشده است.
رمزگذاری اطلاعات
برقراری ارتباط از طریق SSL، نیازمند پیش نیازهایی از جمله کلیدهای نامتقارن (شامل کلید عمومی و کلید خصوصی) و کلید سیشن (Session key) است. کلید عمومی همانطور که از نامش مشخص است، برای اشخاص سوم شخص قابل خواندن است. اما کلید خصوصی فقط توسط ارسال کننده و دریافت کننده اطلاعات، قابل استفاده میباشد.
همچنین این پروتکل میتواند از ترکیب رمزنگاری متقارن و نامتقارن استفاده کند. در الگوریتم رمزنگاری متقارن کلید رمزگذاری و رمزگشایی یکسان است ولی در الگوریتم رمزگذاری نامتقارن، این کلیدها متفاوت هستند. کلیدهای نامتقارن روی سرور قرار دارند، ولی کلید سیشن توسط سرور و کلاینت برای برقراری ارتباط SSL ساخته می شود. کلید سیشن ساخته شده توسط کلاینت و سرور یکسان و یا به عبارتی بهتر متقارن است. در این روش پس از اینکه اتصال امن برقرار شد، دادهها به وسیله دو کلید عمومی (Public key) و خصوصی (Private key) رمزنگاری میشوند. فرآیند برقراری ارتباط در این روش به صورت زیر است :
- سرور یک کپی از کلید عمومی خود را برای کلاینت (مرورگر کاربر) ارسال می کند.
- کلاینت با استفاده از کلید عمومی که دریافت کرده است، کلید سیشن ساخته شده را کدگذاری میکند و برای سرور میفرستد.
- سرور با استفاده از کلید خصوصی که دارد، اطلاعات دریافتی را رمز گشایی میکند تا به Session key دسترسی پیدا کند.
- در نهایت سرور و کلاینت هر دو با استفاده از کلید سیشن، اطلاعاتی را رمزنگاری و رمزگشایی می کنند. این فرآیند یک مسیر ارتباطی امن میان کلاینت و سرور ایجاد می کند. زیرا تنها این دو از کلید سیشن اطلاع دارند و این کلید فقط با هدف این اتصال ایجاد شده است. در هر زمان که اتصال میان سرور و کلاینت قطع شود، این مراحل باید دوباره انجام شوند.