نقش پروتکل SSL یا Secure Socket Layer در امنیت ارتباطات شبکه
SSL یا Secure Socket Layer راه حلی جهت برقراری ارتباطات ایمن میان یک سرویسدهنده و یک سرویسگیرنده است که توسط شرکت Netscape ارائه شده است. درواقع SSL پروتکلی است که پایینتر از لایه کاربرد (لایه ۴ از مدل TCP/IP) و بالاتر از لایه انتقال (لایه سوم از مدل TCP/IP) قرار میگیرد.
پروتکل SSL بهرهگیری از موارد امنیتی تعبیه شده آن برای امن کردن پروتکلهای غیر امن لایه کاربردی نظیر HTTP، LDAP، IMAP و غیره است. الگوریتمهای رمزنگاری بر اساس پروتکل SSL بر روی دادههای خام (plain text) که قرار است از یک کانال ارتباطی غیر امن مثل اینترنت عبور کنند، اعمال میشود و محرمانه ماندن دادهها را در طول کانال انتقال تضمین میکند. بهبیاندیگر شرکتی که صلاحیت صدور و اعطای گواهیهای دیجیتال SSL را دارد برای هرکدام از دو طرفی که قرار است ارتباطات میان شبکهای امن داشته باشند، گواهیهای مخصوص سرویسدهنده و سرویسگیرنده را صادر میکند و با مکانیسمهای احراز هویت خاص خود، هویت هرکدام از طرفین را برای طرف مقابل تأیید میکند. البته غیر از این کار میبایست تضمین کند که اگر اطلاعات حین انتقال مورد سرقت قرار گرفت، برای رباینده قابلدرک و استفاده نباشد که این کار را با کمک الگوریتمهای رمزنگاری و کلیدهای رمزنگاری نامتقارن و متقارن انجام میدهد.
ملزومات یک ارتباط مبتنی بر پروتکل امنیتی SSL
برای داشتن ارتباطات امن مبتنی بر SSL عموماً به دو نوع گواهی دیجیتال SSL نیاز است. گواهی اول برای سرویسدهنده و گواهی دیگر برای سرویسگیرنده است. همچنین به یک مرکز صدور و اعطای گواهینامه دیجیتال یا CA نیاز است. وظیفه CA این است که هویت طرفین ارتباط، نشانیها، حسابهای بانکی و تاریخ انقضای گواهینامه را بداند و بر اساس آنها هویتها را تعیین نماید.
مکانیسمهای تشکیلدهنده SSL
۱– تأیید هویت سرویسدهنده
با استفاده از این ویژگی در SSL، یک کاربر از صحت هویت یک سرویسدهنده مطمئن میشود. نرمافزارهای مبتنی بر SSL سمت سرویسگیرنده، مثلاً یک مرورگر وب نظیر Internet Explorer میتواند از تکنیکهای استاندارد رمزنگاری مبتنی بر کلید عمومی و مقایسه با کلیدهای عمومی یک سرویسدهنده، (مثلاً یک برنامه سرویسدهنده وب نظیر IIS) و از هویت آنها مطلع شود و پس از اطمینان کامل، کاربر میتواند نسبت به وارد نمودن اطلاعات خود مانند شماره کارتهای اعتباری و یا گذرواژهها اقدام نماید.
۲- تأیید هویت سرویسگیرنده
برعکس حالت قبلی در اینجا سرویسدهنده است که میبایست از صحت هویت سرویسگیرنده اطمینان یابد. طی این مکانیسم، نرمافزار مبتنی بر SSL سمت سرویسدهنده پس از مقایسه نام سرویسگیرنده با نامهای مجاز موجود در لیست سرویسگیرندههای مجاز که در داخل سرویسدهنده تعریف میشود، اجازه استفاده از سرویسهای مجاز را به او میدهد.
۳- ارتباطات رمز شده
کلیه اطلاعات مبادله شده میان سرویسدهنده و گیرنده میبایست توسط نرمافزارهای موجود در سمت سرویسدهنده و سرویسگیرنده رمزنگاری (Encrypt) شده و در طرف مقابل رمزگشایی (Decrypt) شوند تا حداکثر محرمانگی (Confidentiality) در اینگونه سیستمها لحاظ شود.
اجزای پروتکل SSL
پروتکل SSL دارای دو زیرپروتکل تحت عناوین زیر است:
۱- SSL Rocord Protocol که نوع قالببندی دادههای ارسالی را تعیین میکند.
۲- SSL Handshake Protocol که بر اساس قالب تعیینشده در پروتکل قبلی، مقدمات ارسال دادهها میان سرویسدهندهها و سرویسگیرندههای مبتنی بر SSL را تهیه میکند.
بخشبندی پروتکل SSL به دو زیرپروتکل دارای مزایایی است ازجمله:
اول: در ابتدای کار و طی مراحل اولیه ارتباط (Handshake) هویت سرویسدهنده برای سرویسگیرنده مشخص میگردد.
دوم: در همان ابتدای شروع مبادلات، سرویسدهنده و گیرنده بر سر نوع الگوریتم رمزنگاری تبادلی توافق میکنند.
سوم: در صورت لزوم، هویت سرویسگیرنده نیز برای سرویسدهنده احراز میگردد.
چهارم: در صورت استفاده از تکنیکهای رمزنگاری مبتنی بر کلید عمومی، میتوانند کلیدهای اشتراکی مخفی را ایجاد نمایند.
پنجم: ارتباطات بر مبنای SSL رمزنگاری میشود.
الگوریتمهای رمزنگاری پشتیبانی شده در SSL
در استاندارد SSL، از اغلب الگوریتمهای عمومی رمزنگاری و مبادلات کلید (Key Exchcenge Algorithm) نظیر RSA، RC4، RC2،MD5، KEA، DSA، DES و RSA Key Exchauge، SHA1، Skipjack و DES3 پشتیبانی میشود. بسته به این که نرمافزارهای سمت سرویسدهنده و سرویسگیرنده نیز از موارد مذکور پشتیبانی نمایند، ارتباطات SSL میتواند بر اساس هرکدام از این الگوریتمها صورت پذیرد. البته بسته به طول کلید مورد استفاده در الگوریتم و قدرت ذاتی الگوریتم، میتوان آنها را در ردههای مختلفی قرار داد که توصیه میشود با توجه به سناریوهای موردنظر، از الگوریتمهای قویتر نظیر DES۳ با طول کلید ۱۶۸ بیت برای رمزنگاری دادهها و همچنین الگوریتم SHA-1 برای مکانیسمهای تأیید پیغام MD5 استفاده شود و یا این که اگر امنیت در این حد مورد نیاز نبود، میتوان در مواردی خاص از الگوریتم رمزنگاری RC4 با طول کلید ۴۰ بیت و الگوریتم تأیید پیغام MD5 استفاده نمود.
نحوه عملکرد داخلی پروتکل SSL
همانطور که میدانید SSL میتواند از ترکیب رمزنگاری متقارن و نامتقارن استفاده کند. رمزنگاری کلید متقارن سریعتر از رمزنگاری کلید عمومی است و از طرف دیگر رمزنگاری کلید عمومی تکنیکهای احراز هویت قویتری را ارائه میکند. یک جلسه (SSL (Session با یک تبادل پیغام ساده تحت عنوان SSL Handshake شروع میشود. این پیغام اولیه به سرویسدهنده این امکان را میدهد تا خودش را به سرویسدهنده دارای کلید عمومی معرفی نماید و سپس به سرویسگیرنده و سرویسدهنده این اجازه را میدهد که یک کلید متقارن را ایجاد نمایند که برای رمزنگاریها و رمزگشایی سریعتر در جریان ادامه مبادلات مورد استفاده قرار میگیرد. گامهایی که قبل از برگزاری این جلسه انجام میشوند بر اساس الگوریتم RSA Key Exchangeعبارتاند از:
۱- سرویسگیرنده، نسخه SSL مورد استفاده خود، تنظیمات اولیه درباره نحوه رمزگذاری و یک داده تصادفی را برای شروع درخواست یک ارتباط امن مبتنی بر SSL به سمت سرویسدهنده ارسال میکند.
۲- سرویسدهنده نیز در پاسخ نسخه SSL مورد استفاده خود، تنظیمات رمزگذاری و داده تصادفی تولیدشده توسط خود را به سرویسگیرنده میفرستد و همچنین سرویسدهنده گواهینامه خود را نیز برای سرویسگیرنده ارسال میکند و اگر سرویسگیرنده از سرویسدهنده، درخواستی داشت که نیازمند احراز هویت سرویسگیرنده بود، آن را نیز از سرویسگیرنده درخواست میکند.
۳- سپس سرویسگیرنده با استفاده از اطلاعاتی که از سرویسدهنده مجاز در خود دارد، دادهها را بررسی میکند و اگر سرویسدهنده مذکور تأیید هویت شد، وارد مرحله بعدی میشود و در غیر این صورت با پیغام هشداری به کاربر، ادامه عملیات قطع میگردد.
شکل 1 : SSL
۴- سرویسگیرنده یک مقدار به نام Secret Premaster را برای شروع جلسه ایجاد میکند و آن را با استفاده از کلید عمومی (که اطلاعات آن معمولاً در سرویسدهنده موجود است) رمزنگاری میکند و این مقدار رمز شده را به سرویسدهنده ارسال میکند.
۵- اگر سرویسدهنده به گواهینامه سرویسگیرنده نیاز داشت میبایست در این گام برای سرویسدهنده ارسال شود و اگر سرویسگیرنده نتواند هویت خود را به سرویسدهنده اثبات کند، ارتباط در همینجا قطع میشود.
۶- بهمحض این که هویت سرویسگیرنده برای سرویسدهنده احراز شد، سرویسدهنده با استفاده از کلید اختصاصی خودش مقدار Premaster Secret را رمزگشایی میکند و سپس اقدام به تهیه مقداری به نام Master Secret مینماید.
۷- هم سرویسدهنده و هم سرویسگیرنده با استفاده از مقدار Master Secret کلید جلسه (Session Key) را تولید میکنند که درواقع کلید متقارن مورد استفاده در عمل رمزنگاری و رمزگشایی دادهها حین انتقال اطلاعات است و در این مرحله بهنوعی جامعیت دادهها بررسی میشود.
۸- سرویسگیرنده پیغامی را به سرویسدهنده میفرستد تا به او اطلاع دهد، داده بعدی که توسط سرویسگیرنده ارسال میشود بهوسیله کلید جلسه رمزنگاری خواهد شد و در ادامه، پیغام رمز شده نیز ارسال میشود تا سرویسدهنده از پایان یافتن Handshake سمت سرویسگیرنده مطلع شود.
۹- سرویسدهنده پیغامی را به سرویسگیرنده ارسال میکند تا او را از پایان Handshake سمت سرویسدهنده آگاه نماید و همچنین این که داده بعدی که ارسال خواهد شد توسط کلید جلسه رمز میشود.
۱۰- در این مرحلهSSL Handshake تمام میشود و از این به بعد جلسه SSL شروع میشود و هر دو عضو سرویسدهنده و گیرنده شروع به رمزنگاری و رمزگشایی و ارسال دادهها میکنند.