SSL چیست؟
(SSL یا Secure Socket Layer) راه حلی جهت برقراری ارتباطات ایمن میان یک سرویس دهنده و یک سرویس گیرنده است که توسط شرکت Netscape ارایه شده است. در واقع SSL پروتکلی است که پایین تر از لایه کاربرد (لایه 4 از مدل TCP/IP) و بالاتر از لایه انتقال (لایه سوم از مدل TCP/IP) قرار می گیرد.
مزیت استفاده از این پروتکل بهره گیری از موارد امنیتی تعبیه شده آن برای امن کردن پروتکل های غیرامن لایه کاربردی نظیر HTTP ،LDAP ،IMAP و... می باشد که براساس آن الگوریتم های رمزنگاری بر روی داده های خام (plain text) که قرار است از یک کانال ارتباطی غیر امن مثل اینترنت عبور کنند، اعمال می شود و محرمانه ماندن داده ها را در طول کانال انتقال تضمین می کند.به بیان دیگر شرکتی که صلاحیت صدور و اعطاء گواهی های دیجیتال SSL را دارد برای هر کدام از دو طرفی که قرار است ارتباطات میان شبکه ای امن داشته باشند، گواهی های مخصوص سرویس دهنده و سرویس گیرنده را صادر می کند و با مکانیزم های احراز هویت خاص خود، هویت هر کدام از طرفین را برای طرف مقابل تأیید می کند، البته غیر از این کار می بایست تضمین کند که اگر اطلاعات حین انتقال مورد سرقت قرار گرفت، برای رباینده قابل درک و استفاده نباشد که این کار را با کمک الگوریتم های رمزنگاری و کلیدهای رمزنگاری نامتقارن و متقارن انجام می دهد.
ادامه مقاله در ادامه مطلب
ملزومات یک ارتباط مبتنی بر پروتکل امنیتی SSL
برای داشتن ارتباطات امن مبتنی بر SSL عموماً به دو نوع گواهی دیجیتال SSL یکی برای سرویس دهنده و دیگری برای سرویس گیرنده و یک مرکز صدور و اعطای گواهینامه دیجیتال یا CA نیاز می باشد. وظیفه CA این است که هویت طرفین ارتباط، نشانی ها، حساب های بانکی و تاریخ انقضای گواهینامه را بداند و براساس آن ها هویت ها را تعیین نماید.
مکانیزم های تشکیل دهنده SSL
1- تأیید هویت سرویس دهنده
با استفاده از این ویژگی در SSL، یک کاربر از صحت هویت یک سرویس دهنده مطمئن می شود. نرم افزارهای مبتنی بر SSL سمت سرویس گیرنده (مثلاً یک مرورگر وب نظیرInternet Explerer از تکنیک های استاندارد رمزنگاری مبتنی بر کلید عمومی و مقایسه با کلیدهای عمومی یک سرویس دهنده (مثلاً یک برنامه سرویس دهنده وب نظیر (IIS می تواند از هویت او مطلع شود و پس از اطمینان کامل، کاربر می تواند نسبت به وارد نمودن اطلا عات خود مانند شماره کارت های اعتباری و یا گذرواژه ها اقدام نماید.
2- تأیید هویت سرویس گیرنده
برعکس حالت قبلی در اینجا سرویس دهنده است که می بایست از صحت هویت سرویس گیرنده اطمینان یابد. طی این مکانیزم، نرم افزار مبتنی بر SSL سمت سرویس دهنده پس از مقایسه نام سرویس گیرنده با نام های مجاز موجود در لیست سرویس گیرنده های مجاز که در داخل سرویس دهنده تعریف می شود و در صورت وجود، اجازه استفاده از سرویس های مجاز را به او می دهد.
3- ارتباطات رمز شده
کلیه اطلاعات مبادله شده میان سرویس دهنده و گیرنده می بایست توسط نرم افزارهای موجود در سمت سرویس دهنده و سرویس گیرنده رمزنگاری (Encrypt) شده و در طرف مقابل رمزگشایی (Decrypt) شوند تا حداکثر محرمانگی (Confidentiality) در این گونه سیستم ها لحاظ شود.
اجزای پروتکل SSL
پروتکل SSL دارای دو زیر پروتکل تحت عناوین زیر می باشد.
1- SSL Rocord Protocol که نوع قالب بندی داده های ارسالی را تعیین می کند.
2- SSL Handshake Protocol که براساس قالب تعیین شده در پروتکل قبلی، مقدمات ارسال داده ها میان سرویس دهنده ها و سرویس گیرنده های مبتنی بر SSL را تهیه می کند.
بخش بندی پروتکل SSL به دو زیر پروتکل دارای مزایای چندی است. از جمله:
اول: در ابتدای کار و طی مراحل اولیه ارتباط (Handshake) هویت سرویس دهنده برای سرویس گیرنده مشخص می گردد.
دوم: در همان ابتدای شروع مبادلات، سرویس دهنده و گیرنده بر سر نوع الگوریتم رمزنگاری تبادلی توافق می کنند.
سوم: در صورت لزوم، هویت سرویس گیرنده نیز برای سرویس دهنده احراز می گردد.
چهارم: در صورت استفاده از تکنیک های رمزنگاری مبتنی بر کلید عمومی، می توانند کلیدهای اشتراکی مخفی را ایجاد نمایند.
پنجم: ارتباطات بر مبنای SSL رمزنگاری می شوند.
الگوریتم های رمزنگاری پشتیبانی شده در SSL
در استاندارد SSL ، از اغلب الگورتیم های عمومی رمزنگاری و مبادلات کلید (Key Exchcenge Algorithm) نظیر DES ،DSA ،KEA ، MD5، RC2،RC4، RSA و RSA Key Exchauge ،SHA-1 ،Skipjack و 3DES پشتیبانی می شود و بسته به این که نرم افزارهای سمت سرویس دهنده و سرویس دهنده نیز از موارد مذکور پشتیبانی نمایید، ارتباطاتSSL می تواند براساس هر کدام این از الگوریتم ها صورت پذیرد. البته بسته به طول کلید مورد استفاده در الگوریتم و قدرت ذاتی الگوریتم می توان آن ها را در رده های مختلفی قرار دارد که توصیه می شود با توجه به سناریوهای موردنظر، از الگوریتم های قوی تر نظیر 3DES با طول کلید 168 بیت برای رمزنگاری داده ها و همچنین الگوریتم 1-SHA برای مکانیزم های تأیید پیغام 5 MD استفاده شود و یا این که اگر امنیت در این حد موردنیاز نبود، می توان در مواردی خاص از الگوریتم رمزنگاری 4 RC با طول کلید 40 بیت و الگوریتم تأیید پیغام 5 MD استفاده نمود. (شکل 2 )
نحوه عملکرد داخلی پروتکل SSL
همانطور که میدانید SSL میتواند از ترکیب رمزنگاری متقارن و نامتقارن استفاده کند. رمزنگاری کلید متقارن سریعتر از رمزنگاری کلید عمومی است و از طرف دیگر رمزنگاری کلید عمومی تکنیکهای احراز هویت قویتری را ارایه میکند. یک جلسه SSL Session) SSL) با یک تبادل پیغام ساده تحت عنوان SSL Handshake شروع میشود. این پیغام اولیه به سرویس دهنده این امکان را میدهد تا خودش را به سرویس دهنده دارای کلید عمومی معرفی نماید و سپس به سرویس گیرنده و سرویس دهنده این اجازه را میدهد که یک کلید متقارن را ایجاد نمایند که برای رمزنگاریها و رمزگشایی سریعتر در جریان ادامه مبادلات مورد استفاده قرار میگیرد. گامهایی که قبل از برگزاری این جلسه انجام میشوند براساس الگوریتم RSA Key Exchange عبارتند از:
1- سرویس گیرنده، نسخه SSL مورد استفاده خود، تنظیمات اولیه درباره نحوه رمزگذاری و یک داده تصادفی را برای شروع درخواست یک ارتباط امن مبتنی بر SSL به سمت سرویس دهنده ارسال میکند.
2- سرویس دهنده نیز در پاسخ نسخه SSL مورد استفاده خود، تنظیمات رمزگذاری و داده تصادفی تولید شده توسط خود را به سرویس گیرنده میفرستد و همچنین سرویس دهنده گواهینامه خود را نیز برای سرویس گیرنده ارسال میکند و اگر سرویس گیرنده از سرویس دهنده، درخواستی داشت که نیازمند احراز هویت سرویس گیرنده بود، آن را نیز از سرویس گیرنده درخواست میکند.
3- سپس سرویس گیرنده با استفاده از اطلاعاتی که از سرویس دهنده مجاز در خود دارد، داده ها را بررسی میکند و اگر سرویس دهنده مذکور تأیید هویت شد، وارد مرحله بعدی میشود و در غیر اینصورت با پیغام هشداری به کاربر، ادامه عملیات قطع میگردد.
4- سرویس گیرنده یک مقدار به نام Premaster Secret را برای شروع جلسه ایجاد میکند و آن را با استفاده از کلید عمومی (که اطلاعات آن معمولاً در سرویس دهنده موجود است) رمزنگاری میکند و این مقدار رمز شده را به سرویس دهنده ارسال میکند.
5- اگر سرویس دهنده به گواهینامه سرویس گیرنده نیاز داشت میبایست در این گام برای سرویس دهنده ارسال شود و اگر سرویس گیرنده نتواند هویت خود را به سرویس دهنده اثبات کند، ارتباط در همینجا قطع میشود.
6- به محض اینکه هویت سرویس گیرنده برای سرویس دهنده احراز شد، سرویس دهنده با استفاده از کلید اختصاصی خودش مقدار Premaster Secret را رمزگشایی میکند و سپس اقدام به تهیه مقداری به نام Master Secret مینماید.
7- هم سرویس دهنده و هم سرویس گیرنده با استفاده از مقدار master Secret کلید جلسه (Session Key) را تولید میکنند که در واقع کلید متقارن مورد استفاده در عمل رمزنگاری و رمزگشایی داده ها حین انتقال اطلاعات است و در این مرحله به نوعی جامعیت داده بررسی میشود.
8- سرویس گیرنده پیغامی را به سرویس دهنده میفرستد تا به او اطلاع دهد، داده بعدی که توسط سرویس گیرنده ارسال میشود به وسیله کلید جلسه رمزنگاری خواهد شد و در ادامه، پیغام رمز شده نیز ارسال میشود تا سرویس دهنده از پایان یافتن Handshake سمت سرویس گیرنده مطلع شود.
9- سرویس دهنده پیغامی را به سرویس گیرنده ارسال میکند تا او را از پایان Handshake سمت سرویس دهنده آگاه نماید و همچنین اینکه داده بعدی که ارسال خواهد شد توسط کلید جلسه رمز میشود.
10- در این مرحله SSL Handshake تمام میشود و از این به بعد جلسه SSL شروع میشود و هر دو عضو سرویس دهنده و گیرنده شروع به رمزنگاری و رمزگشایی و ارسال داده ها میکنند. حملات تأثیرگذار برSSL SSL نیز از حملات و نفوذهای مختلف در امان نیست. بعضی از حملات متداولی که براین پروتکل واقع میشود عبارتند ازTraffic Analysis : یا تحلیل ترافیک، حملاتCut ِ Paste بلووین، حملات Certification Injection و حملات از نوع Man in the middle.