حتما تا به حال در مورد رمزنگاری و عملیات معکوس آن، یعنی رمزگشایی و مباحث جذاب مربوط به آن شنیده اید یا مطالبی در این مورد خوانده اید. در این مطلب قصد داریم به صورت علمی به برخی از مفاهیم بسیار مهم و کلیدی در این حوزه که دانستن آن برای علاقه مندان به این حوزه می تواند جذاب و مفید باشد بپردازیم.
اصلا رمزگذاری یعنی چی؟!
رمزگذاری که معادل نزدیک کلمه Cryptography است، کلمه ای است که دارای ریشه ای یونانی است به معنای نوشتن پنهانی. این واژه اشاره به علومی دارد که تمرکز آنها بر روی انتقال پیام ها به شکلی امن و مصون از شنود است.
کاربرد رمزگذاری کجاها میتواند باشد؟
همان طور که احتمالا می توانید حدس بزنید، رمزگذاری کاربردهای بسیار وسیعی دارد اما اگر بخواهیم چند نمونه از کاربردهای بسیار پراهمیت رمزگذاری را به عنوان نمونه معرفی کنیم، میتوانیم به مواردی مانند دستگاه های ATM ، پسورد کامپیوتر و تجارت الکترونیک اشاره کنیم.
دقیقا در علوم رمزگذاری چه کاری انجام می شود؟
اگر به طور خلاصه بخواهیم مواردی که در علوم مرتبط به رمزگذاری به آنها پرداخته می شود را نام ببریم، این موارد عبارت اند از :
- محرمانه بودن پیام : تنها فرستنده و گیرنده پیام باید از محتوای پیام اطلاع داشته باشند.
- اعتبارسنجی : فرستنده و گیرنده باید یکدیگر را از حیث اعتبار و صحت اعتبارسنجی کنند. به عبارت دیگر فرستنده و گیرنده باید بدانند که طرف مقابل همان فرستنده یا گیرنده مورد نظر ما می باشد.
- اطمینان از عدم تغییر پیام در مسیر انتقال.
- فرستنده نباید ارسال اطلاعات را تکذیب کند.
اجزای الگوریتم های رمزگذاری :
در عملیات رمزگذاری سه جزء بسیار مهم وجود دارد :
- متن آشکار (plaintext) : پیامی که قصد ارسال آن را داریم.
- متن رمزگذاری شده (ciphertext) : به پیام ارسال شده که بر روی آن عملیات رمزگذاری انجام شده است گفته می شود.
- کلید رمزگشایی (Key) : توسط این کلید می توانیم متن رمزگذاری شده را به متن آشکار که در واقع پیام اصلی است تبدیل کنیم.
جزئیات عملیات رمزگذاری :
به الگوریتم هایی که متن آشکار را به متن رمزگذاری شده تبدیل می کنند، الگوریتم های کدگذاری (encryption) گفته می شود و به الگوریتم هایی که متن رمزگذاری شده را به متن آشکار تبدیل می کنند، الگوریتم های رمزگشایی (decryption) گفته می شود. برای این که مطلب را به شکل جذاب تری دنبال کنیم، اجازه بدهید یک مثال بزنم.
به عنوان مثال فرض کنید میخواهید عبارت “Melec.ir” را برای کسی ارسال کنید، به شکلی که دیگران متوجه این عبارت نشوند. در اینجا Melec.ir متن آشکار ما هست.
خوب در مرحله اول ما نیاز به یک الگوریتم کدگذاری داریم.
الگوریتم های کدگذاری می توانند بسیار ساده باشند و یا بسیار پیچیده باشند. نکته ای که باید به آن توجه داشته باشیم این است که رمزگشایی الگوریتم های به ظاهر ساده نیز اغلب به ساده صورت نمی پذیرد.
به عنوان مثال فرض کنید ما الگوریتم کدگذاری خود را اینگونه تعریف می کنیم :
“به جای هر حرف الفبا، حرف بعدی حروف الفبا قرار داده شود”
حال بیایید با توجه به این الگوریتم عبارت Melec.ir را کدگذاری کنیم.
به جای حرف M ، حرف N را قرار می دهیم. به جای حرف e ، حرف f را قرار می دهیم. به همین ترتیب اگر ادامه دهیم عبارت Melec.ir تبدیل می شود به عبارت ” Nfmfd.js”
خوب حالا فرض کنید من این کلمه را برای کسی ارسال می کنم و شما نیز به طریقی متوجه این کلمه می شوید. چند درصد احتمال دارد که متوجه شوید که منظور من عبارت Melec.ir بوده است؟ (البته اگر مخاطب سایت Melec.ir باشید شاید متوجه شوید!)
سوال بعدی این است که شخصی که من برایش متن را ارسال کردم چگونه متوجه بشود که متن اصلی چه بوده است؟
برای فهمیدن این مسئله من باید کلید رمزگشایی را به او بدهم. کلید رمزگشایی ما در این مثال چیست؟
همان طور که احتمالا حدس زدید کلید رمزگشایی برای این مثال عبارت است از :
“به جای هر حرف الفبا، حرف قبلی حروف الفبا قرار داده شود”
همان طور که مشاهده می شود، برای رمزگشایی کافی است عکس عمل رمزگذاری انجام شود. البته بدیهی است که همیشه ممکن است صورت مسئله به این سادگی نباشد.
خوب تصور می کنم تا حدی متوجه اتفاق هایی که در علم رمزگذاری می افتد شده باشید. برای این که مطلب طولانی نشود و شما هم در این ایام تابستان حوصلتان سر نرود مطلب رو همینجا به پایان می رسونیم!
اگر مطالب این جلسه برایتان مفید بود و علاقه داشتید، شاید در جلسات دیگر نیز به این مبحث بپردازیم.
موفق باشید.
برگرفته از جلد چهارم کتاب Data Communications and Networking
اگر این نوشته برایتان مفید بود لطفا کامنت بنویسید.