در بسترهای ارتباط با دستگاه ها SSH ابزار امن مدیریت ترمینال است.
چرا به ابزارهای امن برای ارتباط نیاز داریم؟
در بسترهای ارتباط ناامن (مانند telnet)، به دلیل اینکه احرازهویت بروی خط اتفاق نمیافتد، دو طرف ارتباط نمیتوانند از اصالت همدیگر در دو طرف ارتباط مطمئن باشند. زمانی که در مدت برقرار بودن یک ارتباط حتی نمیتوان مطمئن شد سیستم طرف مقابل همان سیستمی است که به آن متصل شدهایم، پس در هر لحظه امکان دارد تمام اطلاعات مهمی که در این ارتباط در حال رد و بدل شدن است (مانند کلمههای عبور) در اختیار سیستم های مهاجم باشد.
جعل شدن ارتباط ناامن
جعل شدن یک ارتباط ناامن امروزه کار چندان سختی نیست و حتی کاربرانی که به تازگی به دنیای فنآوری اطلاعات وارد شده اند با کمی جستجو می توانند به روشهای پیاده سازی آن اشراف پیدا کنند.
زمانیکه کاربری بخواهد به دستگاهی telnet بزند، سیستم مهاجم پکت را گرفته، source IP را در header با IP خود عوض میکند و پکت را مجددا به مقصد ارسال میکند. مقصد نیز پاسخ را به آدرس مهاجم برمیگرداند. در نهایت، مهاجم با تغییرات لازم در پکت بدون آنکه مبدا متوجه چیزی شده باشد پکتهای پاسخ را به مبدا برمیگرداند.
شناسایی پیش از شروع به صحبت
در ارتباط SSH ابتدا مبدا و مقصد همدیگر را شناسایی می کنند تا بتوانند تا جای ممکن از جعل شدن ارتباط جلوگیری کنند. به این روال Authentication میگویند. احراز هویت از این جهت است که مطمئن شویم مبدا و مقصد مطمئنن همان دو نقطه ایی هستند که بایستی اطلاعات را ارسال و دریافت نمایند.
توجه داشته باشید که امنیت هیچگاه به صورت کامل اتفاق نمیافتد. در ارتباط SSH هم نمیتوان به صورت کامل از امن بودن خط ارتباطی اطمینان حاصل کرد.
جهت برقراری احراز هویت روی خط هر دو نقطه برای همدیگر اطلاعاتی را ارسال میکنند. به این اطلاعات message authenticator گفته میشود. این پیغام یک simple string است که مبدا و مقصد آنرا دارند و با پیغام دریافتی مطابقت میدهند. حال برای از بین بردن احراز هویت clear text میخواهیم از روشهایی به نام symmetric authentication استفاده کنیم.
نکته: به هر اطلاعاتی که با باز کردن پکت بتوان متن داخلش را خواند و رمزنگاری نشده است ارسال به صورت clear text گفته میشود.
روشهای رمزنگاری
Pre Shared Key
دریکی از روشهای از بین بردن clear بودن پکت یا برهم زدگی (که به آن hash میگویم) از کلید استفاده میکنیم. نام دیگر این کلید pre shared key میباشد. کلید یا pre shared key رمزی مشترک بین مبدا و مقصد که وظیفه درست کردن کلید به عهده مقصد است و مقصد کلید را در قالب یک رمز در اختیار مبدا قرار میدهد. از این کلید مشترک برای رمزگذاری پکتها در مبدا و رمزگشایی آنها در مقصد استفاده میشود.
روشهای authentication با یک hash algorithm داده را به یک encrypted data تبدیل میکنند. الگوریتم های رمزنگاری یا Hash algorithmها از پروتکل های MD5 (128bit) و یا SHA (160bit) استفاده میکنند. این پروتکل ها، hash table های یکطرفه و غیرقابل بازگشت (one-way non-reversible) درست میکنند.
توابع غیرقابل بازگشت مانند تقسیم عمل می کنند. به عنوان مثال باقیمانده تقسیم عدد 10 بر 3، 1 است. حال با داشتن عدد 1 و عدد نمی توان عدد 10 را بدست آورد زیرا اعداد بسیار دیگری در این فرآیند می توانند پاسخ باشند.
این روال هم ضعف های خود را دارد که میتواند باعث لو رفتن کلید شود. کلمههای عبور ساده با تعداد استفاده زیاد، یا کلمههای عبوری که ساده نیستند، اما کلمههای عبور معروفی هستند، توسط هکرها و با استفاده از hash algorithm ها رمز میشوند و در جدولی که به dictionary word معروفند کلمه عبور و رمز شده آن جهت تطابق نگهداری میشود. این جداول به قدری مرسوم هستند که در اینترنت وب سایت هایشان راه اندازی شده است. هر چقدر کلمه عبورمان تکراری تر باشد امکان لو رفتنش بیشتر است.
PKI
روش دیگر استفاده از ساختار نامتقارن(Asymmetric) با زیر ساخت (PKI) است که در آن دو کلید به نامهای public key و private key وجود دارد. هر دو کلید را provider ساخته که Private key فقط در اختیار سرویس دهنده ی اصلی و یا همان provider میباشد و کلید public در اختیار مبدا قرار داده میشود. روش های مختلفی برای راه اندازی زیرساخت نامتقارن یا Asymmetric وجود دارد. در روش های ابتدایی وظیفه ساخت کلید برعهده دستگاه مقصد است و در روش های پیشرفته سروری وظیفه ساخت و نظارت بر ارتباط را دارد و دائم در حال تغییر کلید هاست تا کار جعل پیچیده تر و زمان بر تر باشد.
این روش را در استانداردهای دنیا CA می نامند. شرط این روش این است که سوئیچ یا سرور بایستی روشهای CA(Certificate Authority) را پشتیبانی کند.