احسان امجدی
کارشناس امنیت اطلاعات و ارتباطات

تفاوت الگوریتم های Symmetric و Asymmetric در چیست؟

قصد داریم تا امروز ضمن مروری بر انواع رمزنگاری، مقدمه ای بر بحث کدها نیز داشته باشیم تا بخواست خداوند در قسمت بعد بتوانیم انواع الگوریتم های کدنویسی را برای شما تشریح کنیم. پس با ما همراه باشید : همانطور که در بالا نیز گفته شد، برای شروع قصد داریم تا دو نوع رمزنگاری را برای شما توضیح دهیم:

دوره های شبکه، برنامه نویسی، مجازی سازی، امنیت، نفوذ و ... با برترین های ایران
  • رمزنگاری متقارن (Symmetric Encryption)
  • رمزنگاری نا متقارن (Asymmetric Encryption)

رمزنگاری متقارن (Symmetric Encryption)

روش رمزنگاری متقارن برای انجام رمزنگاری و رمزگشایی از یک کلید یکسان استفاده میکند. همانطور که در شکل زیر هم نشان داده شده است، فرستنده از یک کلید برای رمز کردن داده رمز نشده استفاده کرده و داده رمز شده را به سمت گیرنده ارسال میکند. گیرنده داده رمز شده را با همان کلیدی که برای رمزکردن داده بکار رفته بود، رمزگشایی کرده و دیتای رمزگشایی شده را میخواند.از آنجایی که یک کلید در این فرآیند مورد استفاده قرار میگیرد، رمزنگاری متقارن را با نام "رمزنگاری کلید امنیتی" و یا Secret Key Cryptography نیز عنوان میکنند. این نوع از رمزنگاری زمانی بخوبی کار خواهد کرد که با تعداد محدودی از مردم ارتباط و تبادل داده داشته باشید.

وب سایت توسینسو

مشکلی که کلید امنیتی دارد، انتقال آن در بطن شبکه های بزرگ و یا اینترنت و خطر افتادن بدست افراد غیر است. در این فرآیند، هرکسی که کلید امنیتی را در اختیار داشته باشد، میتواند براحتی داده ها را رمزگشایی کند. این مشکل با روش رمزنگاری نامتقارن حل شده است.

رمزنگاری نامتقارن ( Asymmetric Encryption)

رمزنگاری نامتقارن از کلیدهای متفاوتی برای رمزنگاری و رمزگشایی استفاده میکند. در این نوع رمزنگاری، کاربر نهایی در شبکه عمومی و یا خصوصی، یک جفت کلید در اختیار دارد: یک کلید عمومی برای رمزکردن و یک کلید اختصاصی برای رمزگشایی. در اینجا باید دقت داشت که کلید اختصای از کلید عمومی بدست نمی آید.روش رمزنگاری نامتقارن در مقابل حملات هکرها، امنیت را پایدار کرده است. در این روش، فرستنده داده را با کمک یک کلید عمومی کد کرده و گیرنده پیام را با استفاده از یک کلید تصادفی که توسط فرستنده کلید عمومی ایجاد میشود، کدگشایی میکند.

وب سایت توسینسو

کدها (Ciphers)

رمزنگاری بر بحث امن نویسی دلالت میکند و متعاقب آن برای تعریف کد چیزی نداریم بگوییم جر آن که الگوریتمی است که در رمزنگاری و رمزگشایی استفاده میشود. روش سنتی و مرسومی که در رمزنگاری و رمزگشایی مورد استفاده قرار میگیرد، در شکل متفاوتی قرار دارد. در این روش به ازای هر حرف از الفبا، شماره ای در نظر گرفته و بوسیله آن داده ها رمز میشوند. فقط در صورتی که هکر سیستم شماره گذاری را بشناسد، میتواند دیتا را رمزگشایی کند.در علم رمزنگاری، الگوریتم کد که برای رمزکردن مورد استفاده قرار میگیرد، با نام Enciphering و در بحث رمزگشایی با نام Deciphering شناخته میشود.

  • مثال : A b c d e f g h…z در دنباله اعداد 26....4 3 2 1 کد میشوند. داده ها نیز مانند این مثال کد میشوند و در مثابل بخوبی و امنیت کامل رمزگشایی خواهند شد. در یک کد، داده بشکل رمز نشده نمایش داده میشود اما در ادامه توسط یک کلید رمز خواهند شد. بسته به شرایط، کلید میتواند یک نماد یا بصورت اشکال دیگری از متن باشد. اگر داده بسیار محرمانه باشد، استفاده از کلید به فرستنده و گیرنده محدود خواهد شد اما در موارد عادی در شبکه های باز، برخی کلیدها بدون این که بر اصل داده اثر منفی بگذارند، به اشتراک گذارده میشوند. انواع مختلفی از کدها وجود دارند:

کدهای کلاسیک

کدهای کلاسیک اساسی ترین نوع کدها هستند که بر حسب حروف الفبا مثل A-Z عمل میکنند. پیاده سازی آن معمولا بصورت دستی و یا با استفاده از دیوایس های مکانیکی ساده انجام میشود. این روش زیاد قابل اعتماد نیست. دو نوع از کدهای کلاسیک عبارتند از:

  • کد جانشینی ( substitution cipher): بخش متنی توسط متن رمز شده جایگزین میشود. در این جایگزینی، بیت ها، کاراکترها یا عبارت ها با بیت ها، کاراکترها و عبارات متفاوتی جایگزین خواهند شد.
  • کد تقدم و تاخر (transposition cipher): حروف موجود در متن رمزنشده، به منظور تبدیل به متن رمزی، تغییر میکنند. در واقع متن رمز شده، جایگشتی از متن اولیه است.

کدهای مدرن

کدهای مدرن طوری طراحی شده اند تا بازه وسیعی از حملات را تحمل کنند. کدهای مدرن محرمانگی، یکپارچگی و احراز هویت فرستنده را در مورد داده تضمین میکنند. این کدها با کمک یک تابع یکطرفه ریاضی محاسبه میشوند که توانایی فاکتورگیری از تعداد زیادی اعداد اول را دارند. این کد ها بر حسب نوع کلید و داده ورودی به دودسته تقسیم میشوند:

بر اساس نوع کلیدی که مورد استفاده قرار میگیرد

  • •رمزنگاری کلید عمومی (الگوریتم کلید متقارن): بک کلید برای رمزکردن و رمزگشایی مورد استفاده قرار میگیرد.
  • •رمزنگاری کلید خصوصی (الگوریتم کلید نامتقارن): دو کلید مختاف در رمزنگاری و رمزگشایی مورد استفاده قرار میگیرند.

بر اساس نوع داده ورودی

  • •کدهای قطعه بندی شده: به الگوریتمی اشاره میکند که بر روی بلوکی (گروهی از بیت ها) با سایز و تغییر ثابتی که توسط کلید متقارن ایجاد میشود، عمل میکند.
  • •جریانی از کدها: به کدهای کلید متقارن اشاره میکند. این روش با ترکیب ارقام رمز نشده با جریانی از کلید ( جریانی از ارقام رمز شده شبه تصادفی) ایجاد میشود.

سربلند و توسینسو باشید.


احسان امجدی
احسان امجدی

کارشناس امنیت اطلاعات و ارتباطات

احسان امجدی ، مشاور امنیت اطلاعات و ارتباطات و تست نفوذ سنجی ، هکر کلاه سفید ، مدرس دوره های تخصصی امنیت اطلاعات و شبکه ، تخصص در حوزه های سرویس های مایکروسافت ، Routing و Switching ، مجازی سازی ، امنیت اطلاعات و تست نفوذ ، کشف جرائم رایانه ای و سیستم عامل لینوکس ، متخصص در حوزه SOC و ...

نظرات