الگوریتمستان - کمی در مورد رمزنگاری

تاریخچه‌ی روش‌های حفظ محرمانگی اطلاعات

✤    ۱۶ اسفند ۱۳۸۸ - آخرین به‌روزرسانی: ۱۶ مهر ۱۳۹۵

امروز به سرم زد ایمیل‌های قدیمی خودم را چک کنم و به یک ایمیل با متن اجغ وجغ برخوردم که طبق معمول سراغ تغییر Encoding رفتم، تا شاید متن آن خوانا شود. اما فایده نداشت. وقتی شروع نامه و پایان آن را خواندم حس کردم هر حرف فارسی با یک نشان دیگر جایگزین شده است. اولین کلمه‌ی نامه ÓáÇã بود که حدس زدم «سلام» باشد و همینطور از خداحافظی آخر نامه هم چند حرف را بیرون کشیدم. پس از این جایگزینی‌ها کلماتی وجود داشتند که فقط یک حرف نامشخص داشته و به راحتی قابل حدس بودند. با همین حدس زدن‌ها پیش رفتم و حدود نیم ساعت بعد متن فارسی را به دست آوردم.

استفاده از رمزنگاری در متون مهم و حساس قدمت زیادی دارد. در یونان قدیم به روش جالبی متن نامه را رمز می‌کردند. سزار روم هم روشی برای رمزنگاری استفاده می‌کرده که امروزه به روش رمزنگاری سزار مشهور است. به این ترتیب که به جای هر حرف از متن اصلی، سومین حرف بعد از این حرف در الفبای زبانشان را جایگزین می‌کرد. مثلا در زبان انگلیسی به جای A از D و به جای Y از B استفاده می‌شده و زمانی که قرار بوده نامه خوانده شود، عکس این عمل را انجام می‌دادند.

امروزه با پیشرفت علوم تحلیل و همینطور بالا رفتن سرعت محاسبات، شکستن الگوریتم‌های رمزنگاری مبتتی بر جایگزینی بسیار ساده است. در این روش‌ها هر حرف با یک حرف دیگر از همان زبان یا یک علامت عوض می‌شود و بزرگترین مشکل همین است که با توجه به زیاد بودن تعداد حروف زبان‌های رایج، هر دو طرف باید اطلاعات مربوط به اینکه هر حرف با چه حرف یا علامتی جایگزین شده را همراه خود داشته باشند. به ندرت کسی بتواند همه‌ی این اطلاعات را در ذهن خودش داشته باشد و مطمئن باشد که هرگز فراموش نمی‌کند. بنابراین نیاز به مستند کردن آنها وجود دارد که مثل ذخیره کردن رمز کارت بانکی در کنار خود کارت است! در این صورت اگر مفقود یا دزیده شود، یابنده یا سارق به راحتی می‌تواند به حساب دسترسی داشته باشد. با این تفاسیر امروزه از این روش‌های ابتدایی برای رمز کردن اطلاعات استفاده نمی‌شود.

تمامی روش‌های رمزنگاری نوین برای انجام عملیات خود از کلید رمز استفاده می‌کنند. با تغییر این کلید، متن رمز شده تغییر پیدا می‌کند. پس می‌توان گفت این کلید رمز نقش مهمی در سرّی باقی ماندن متن رمز شده ایفا می‌کند. حتی روش سزار نیز با وجود قدیمی بودن کلید رمز داشت. کلید رمز روش سزار عدد 3 بود. اگر قرار بذاریم که به جای سومین حرف، دهمین حرف بعدی را جایگزین حروف متن اصلی کنیم، در آن صورت کلید رمز ما عدد 10 خواهد بود. هر کس که از این عدد خبر نداشته باشد، نمی‌تواند متن رمز شده را به متن اصلی برگرداند. مگر اینکه بخواهد به روش آزمون و خطا همه‌ی اعداد مختلف برای کلید رمز را امتحان کند که در روش‌های رمزنگاری امروزی جوابگو نیست. کلید رمزهای امروزی دامنه‌ی بسیار بزرگی را شامل می‌شوند که قوی‌ترین ابررایانه‌ها هم به این سادگی از پس آن‌های بر نمی‌آیند. در ضمن ممکن است به صورت اتفاقی رمزگشایی با یک کلید رمز اشتباه، متنی را تولید کند که از نظر مفهومی درست به نظر بیاید. مثلا اگر روش سزار را برای ارقام استفاده کنیم جایگزین کردن هر رقم با یک رقم دیگر همچنان عدد معناداری می‌دهد و نمی‌توان تشخیص داد کدام یک درست است..

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

رمزنگاری متقارن: در این روش کلید رمز کردن متن و کلید گشایش رمز یکی هستند. به عبارت دیگر رمزگشایی با همان کلیدی انجام می‌شود که متن رمز شده است. الگوریتم‌های DES و AES از این دست روش‌ها هستند.

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

  

اصول کرکهف

  [برگرد بالا]

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

1- سیستم رمزنگاری اگرنه به لحاظ تئوری که در عمل باید غیرقابل شکست باشد.

2- اصل اساسی کرکهف: سیستم رمزنگار باید هیچ نکته پنهان و محرمانه‌ای نداشته باشد. بلکه تنها چیزی که باید سری نگاه داشته شود، کلید رمز است. طراح سیستم رمزنگار نباید جزئیات سیستم خود را حتی از دشمنان مخفی نگاه دارد.

3- کلید رمز باید به گونه ای قابل انتخاب باشد که اولا بتوان براحتی آنرا عوض کرد و ثانیا بتوان آنرا به خاطر سپرد و نیازی به یادداشت کردن کلید رمز نباشد.

4- متون رمزنگاری شده باید از طریق خطوط تلگراف قابل مخابره باشند.

5- دستگاه رمزنگاری یا اسناد رمزشده باید توسط یک نفر قابل حمل باشد.

6- سیستم رمزنگاری باید به سهولت قابل راه‌اندازی و کاربردی باشد. چنین سیستمی نباید به آموزش‌های مفصل و رعایت فهرست بزرگی از قواعد و دستورالعمل‌ها نیاز داشته باشد.

از بین این اصول، اصل دوم به اصل اساسی کرکهف مشهور است. بر اساس این اصل، هیچ الگوریتم رمزنگاری معتبر و استانداردی وجود ندارد که روش رمزنگاری یا رمزگشایی آن از کسی مخفی باشد. بزرگترین رقابت هم زمانی پیش می‌آید که سعی شود با در اختیار داشتن جزئیات این الگوریتم‌ها راه‌هایی برای نفوذ در آن‌ها یا شکستن ساده‌تر متون رمز شده پیدا کرد.


نسخه‌ی اولیه‌ی این نوشته از وبلاگ ریاضیکده به الگوریتمستان منتقل شده است.

تا کنون ۱ امتیاز ثبت شده
نوشته لایک نداشت؟
 
به اشتراک گذاری نوشته

amasoudfam.ir/l/jihnm

اشتراک‌گذاری در LinkedIn     اشتراک‌گذاری در Twitter     ارسال با Telegram

نام: *  
پست الکترونیک (محرمانه):
پیام: *  
• آرزو
۱۲ دی ۱۳۹۵، ساعت ۱۴:۱۷

سلام

امروز سر زدم وبلاگای قدیممون

به رسم دید و بازدید هم که باشه اومدم سر زدم

چقد خوبه تاریخ وبلاگت به روزه، که هنوز نوشتنو ادامه میدی

موفق باشی دوست قدیمی

۱۷ دی ۱۳۹۵، ساعت ۰۰:۴۷
• مسعود اقدسی‌فام

سلام دوست قدیمی

یاد آن دوران پر شور نویسنده‌گی به خیر واقعا. امید ریاضی و لبخند ریاضی و ...

ممنون که سر زدی. 01