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