به عنوان یک تعریف بسیار ساده میتوان SSH را این گونه بیان کرد : SSH یک روش قدرتمند و پر استفاده و البته نرمافزاری است که برای دستیابی به امنیت شبکه طراحی شدهاست. هربار که دادهای از طرف کامپیوتر به شبکه فرستاده میشود، به صورت خودکار توسط SSH کدگذاری میشود. هنگامی که داده به مقصد خود میرسد به صورت خودکار کدگشایی میشود. نتیجهای که خواهد داشت کدگذاری نامرئی خواهد بود. بدین صورت کاربران نهایی درگیر پروسه کدگذاری و کدگشایی نخواهند شد و از ارتباط امن خود میتوانند به خوبی استفاده کنند. امنیت سیستم کدگذاری SSH با استفاده از الگوریتمهای پیچیده و مدرن تضمین میشود. تا آنجا که امروزه در سیستمهای حیاتی و بسیار حساس از این سیستم استفاده میشود. به صورت معمول محصولاتی که از SSH استفاده میکنند از دو بخش خادم و مخدوم ( Client/Server ) تشکیل میشوند. Clientها با استفاده از تنظیمات سرور مربوطه به آن وصل میشوند و سرور وظیفه تایید هویت و قبول و یا رد ارتباط را به عهده دارد. نکته : باید توجه داشته باشید تشابه نام Secure Shell با محیطهایی مانند Bourne shell و یا C Shell نشان دهنده این نیست که SSH نیز محیطی است که وظیفه تفسیر فرامین برای سیستمعامل را بر عهده دارد. با اینکه SSH تمامی مشکلات را حل نخواهد کرد، اما در مورد بسیاری از موارد میتواند راه حل مناسبی باشد. برخی از این موارد عبارتند از :
همانطور که میدانید SSL میتواند از ترکیب رمزنگاری متقارن و نامتقارن استفاده کند. رمزنگاری کلید متقارن سریعتر از رمزنگاری کلیدعمومی است و از طرف دیگر رمزنگاری کلید عمومی تکنیکهای احراز هویت قویتری را ارایه میکند. یک جلسه SSL Session) SSL) با یک تبادل پیغام ساده تحت عنوان SSL Handshake شروع میشود. این پیغام اولیه به سرویسدهنده این امکان را میدهد تا خودش را به سرویسدهنده دارای کلید عمومی معرفی نماید و سپس به سرویسگیرنده و سرویسدهنده این اجازه را میدهد که یک کلید متقارن را ایجاد نمایند که برای رمزنگاریها و رمزگشایی سریعتر در جریان ادامه مبادلات مورد استفاده قرار میگیرد. گامهایی که قبل از برگزاری این جلسه انجام میشوند براساس الگوریتم RSA Key Exchange عبارتند از:
- سرویس گیرنده، نسخه SSL مورد استفاده خود، تنظیمات اولیه درباره نحوه رمزگذاری و یک داده تصادفی را برای شروع درخواست یک ارتباط امن مبتنی بر SSL به سمت سرویسدهنده ارسال میکند.
- سرویسدهنده نیز در پاسخ نسخه SSL مورد استفاده خود، تنظیمات رمزگذاری و داده تصادفی تولید شده توسط خود را به سرویسگیرنده میفرستد و همچنین سرویسدهنده گواهینامه خود را نیز برای سرویسگیرنده ارسال میکند و اگر سرویسگیرنده از سرویسدهنده، درخواستی داشت که نیازمند احراز هویت سرویسگیرنده بود، آن را نیز از سرویسگیرنده درخواست میکند.
- سپس سرویسگیرنده با استفاده از اطلاعاتی که از سرویسدهنده مجاز در خود دارد، دادهها را بررسی میکند و اگر سرویسدهنده مذکور تأیید هویت شد، وارد مرحله بعدی میشود و در غیراینصورت با پیغام هشداری به کاربر، ادامه عملیات قطع میگردد.
- سرویسگیرنده یک مقدار به نام Secret Premaster را برای شروع جلسه ایجاد میکند و آن را با استفاده از کلید عمومی (که اطلاعات آن معمولاً در سرویسدهنده موجود است) رمزنگاری میکند و این مقدار رمز شده را به سرویسدهنده ارسال میکند.
- اگر سرویسدهنده به گواهینامه سرویسگیرنده نیاز داشت میبایست در این گام برای سرویسدهنده ارسال شود و اگر سرویسگیرنده نتواند هویت خود را به سرویسدهنده اثبات کند، ارتباط در همینجا قطع میشود.
- به محض اینکه هویت سرویسگیرنده برای سرویسدهنده احراز شد، سرویسدهنده با استفاده از کلید اختصاصی خودش مقدار Premaster Secret را رمزگشایی میکند و سپس اقدام به تهیه مقداری به نام Master Secret مینماید.
- هم سرویسدهنده و هم سرویسگیرنده با استفاده از مقدار master Secret کلید جلسه (Session Key) را تولید میکنند که در واقع کلید متقارن مورد استفاده در عمل رمزنگاری و رمزگشایی دادهها حین انتقال اطلاعات است و در این مرحله به نوعی جامعیت دادها بررسی میشود.
- سرویسگیرنده پیغامی را به سرویسدهنده میفرستد تا به او اطلاع دهد، داده بعدی که توسط سرویسگیرنده ارسال میشود به وسیله کلید جلسه رمزنگاری خواهد شد و در ادامه، پیغام رمز شده نیز ارسال میشود تا سرویسدهنده از پایان یافتن Handshake سمت سرویسگیرنده مطلع شود.
- سرویسدهنده پیغامی را به سرویسگیرنده ارسال میکند تا او را از پایان Handshake سمت سرویسدهنده آگاه نماید و همچنین این که داده بعدی که ارسال خواهد شد توسط کلید جلسه رمز میشود.
- در این مرحله SSL Handshake تمام میشود و از این به بعد جلسه SSL شروع میشود و هر دو عضو سرویسدهنده و گیرنده شروع به رمزنگاری و رمزگشایی و ارسال دادهها میکنند
پروتکل 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 با طول کلید ۱۶۸ بیت برای رمزنگاری دادهها و همچنین الگوریتم 1-SHA برای مکانیزمهای تأیید پیغام 5 MD استفاده شود و یا اینکه اگر امنیت در این حد موردنیاز نبود، میتوان در مواردی خاص از الگوریتم رمزنگاری 4 RC با طول کلید ۴۰ بیت و الگوریتم تأیید پیغام 5 MD استفاده نمود
برای داشتن ارتباطات امن مبتنی بر SSL عموماً به دو نوع گواهی دیجیتال SSL یکی برای سرویسدهنده و دیگری برای سرویسگیرنده و یک مرکز صدور و اعطای گواهینامه دیجیتال یا CA نیاز میباشد. وظیفه CA این است که هویت طرفین ارتباط، نشانیها، حسابهای بانکی و تاریخ انقضای گواهینامه را بداند و براساس آنها هویتها را تعیین نماید.
(SSL یا Secure Socket Layer) راهحلی جهت برقراری ارتباطات ایمن میان یک سرویسدهنده و یک سرویسگیرندهاست که توسط شرکت Netscape ارائه شدهاست. در واقع SSL پروتکلی است که پایینتر از لایه کاربرد (لایه ۴ از مدل TCP/IP) و بالاتر از لایه انتقال (لایه سوم از مدل TCP/IP) قرار میگیرد. مزیت استفاده از این پروتکل بهرهگیری از موارد امنیتی تعبیه شده آن برای امن کردن پروتکلهای غیرامن لایه کاربردی نظیرHTTP ،LDAP ،IMAP و... میباشد که براساس آن الگوریتمهای رمزنگاری بر روی دادههای خام (plain text) که قرار است از یک کانال ارتباطی غیرامن مثل اینترنت عبور کنند، اعمال میشود و محرمانه ماندن دادهها را در طول کانال انتقال تضمین میکند. به بیان دیگر شرکتی که صلاحیت صدور و اعطاء گواهیهای دیجیتال SSL را دارد برای هر کدام از دو طرفی که قرار است ارتباطات میان شبکهای امن داشته باشند، گواهیهای مخصوص سرویسدهنده و سرویسگیرنده را صادر میکند و با مکانیزمهای احراز هویت خاص خود، هویت هر کدام از طرفین را برای طرف مقابل تأیید میکند، البته غیر از اینکار میبایست تضمین کند که اگر اطلاعات حین انتقال مورد سرقت قرار گرفت، برای رباینده قابل درک و استفاده نباشد که اینکار را با کمک الگوریتمهای رمزنگاری و کلیدهای رمزنگاری نامتقارن و متقارن انجام میدهد.