آشنایی با مبانی رمزنگاری (۱)

آشنایی با مبانی رمزنگاری (۱)

در این مقاله، بخش اول مبانی رمزنگاری به ظور اجمالی بیان شده است. این مباحث، شامل تعاریف و مفاهیم اساس رمزنگاری، اصول کرکهف در سیستم رمزنگاری، مفاهیم پنهان‌نگاری، رمزنگاری، کدگذاری و تفاوت آن‌ها می‌باشد.
رمزنگاری (Cryptography)، علمی است که به بررسی و شناخت اصول و روش‌های انتقال یا ذخیره‌ی اطلاعات به صورت امن (Secure)، می‌پردازد. رمزنگاری، استفاده از روش‌های ریاضی (Mathematical Methods)، برای برقراری امنیت اطلاعات (Information Security) است. در اصل، رمزنگاری دانش تغییر دادن متن پیام یا اطلاعات به کمک کلید رمز و با استفاده از یک الگوریتم رمز است،  به‌صورتی‌که تنها شخصی که از کلید و الگوریتم مطلع است قادر به استخراج اطلاعات اصلی از اطلاعات رمزشده باشد و شخصی که از کلید و الگوریتم مطلع است قادر به استخراج اطلاعات اصلی از اطلاعات رمزشده باشد و شخصی که از یکی یا هر دوی آن‌ها اطلاع ندارد، نتواند به اطلاعات دسترسی پیدا کند. دانش رمزنگاری بر پایه‌ی مقدمات بسیاری از قبیل تئوری اطلاعات، نظریه‌ی اعداد و آمار و احتمال بنا شده است و امروزه به طور خاص در حوزه‌ی فناوری اطلاعات و ارتباطات (ICT) مورد بررسی و استفاده قرار می‌گیرد.

مفاهیم و کلیات رمزنگاری (Cryptography) از دو کلمه‌ی یونانی Kryptos به معنای پنهان، مخفی و Graphein به معنای نوشتن، نگارش، گرفته شده است. رمزنگاری عبارت است از یک نظام یا الگوی ریاضی  و منطقی که بر اساس آن اطلاعات و مفاهسم آششکار و قابل فهم برای همگان، طبق روالی برگشت‌پذیر به اطلاعاتی نامفهموم وگنگ تبدیل می‌شود. این اطلاعات نامفهوم و گنگ توسط کسی که روال معکوس و پارامترهای لازم را می‌داند قابل برگشت و بهره‌برداری است. در ادامه به بیان اصول شش‌گانه‌‌ی کرکهف (Kerchoffs) که به ارائه قوانین اساسی در رمزنگاری مدرن می‌پردازد، خواهیم پرداخت:
  سیستم رمزنگاری (Cryptosystem)، اگر نه به لحاظ تئوری، که در عمل غیرقابل شکست باشد.
  سیستم رمزنگاری باید هیچ نکته‌ی پنهان و محرمانه‌ای نداشته باشد بلکه تنها چیزی که باید سری و مخفی نگه داشته شود، کلید رمز (Cryptographic Key) است. (اصل اساسی کرکهف) طراح سیستم رمزنگاری نباید جزئیات سیستم خود را حتی از دشمنان مخفی نگه دارد.
  کلید رمز باید به گونه‌ای قابل انتخاب باشد که در ابتدا بتوان به راحتی آن‌را عوض کرد، به‌علاوه بتوان آن‌را به خاطر سپرد و نیازی به یادداشت کردن رمز نباشد.
  متون رمزنگاری شده (Ciphertexts) باید از طریق خطوط تلگراف قابل مخابره باشند.
  دستگاه رمزنگاری یا اسناد رمزشده باید توسط یک نفر قابل حمل و نقل باشد.
  سیستم رمزنگاری باید به سهولت قابل راه‌اندازی و کاربری باشد، چنین سیستمی نباید به آموزش‌های مفصل و رعایت فهرست بزرگی از قواعد و دستورالعمل‌ها نیاز داشته باشد.

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

طبق اصل کرکهف، چون قرار نیست هیچ نکته‌ای در بطن الگوریتم رمزنگاری و روال معکوس آن (رمزگشایی) مخفی بماند، لذا در تمام الگوریتم‌های رمزنگاری، به پارامتری به نام "کلید رمز" یا (Cipher Key)، احتیاج است که با تغییر آن ماهیت گنگ و مبهم اطلاعات رمزشده به نحو غیرقابل پیش‌بینی تغییر می‌کند. لذا، می‌توان فرآیند رمزنگاری را تابعی دو متغیره مانند f از P و K، که دارای خروجی C می‌باشد، تصور کرد، در ادامه، به بیان این متغیرها می پردازیم:
  P: پیامی است که باید رمزنگاری شود، P را متن آشکار یا (Plaintext) می‌گوییم.
  K: پارامتری است که متن آشکار بر اساس مقدار آن به نحو غیرقابل پیش‌بینی و مبهم، درهم و بی معنی می‌شود. پارامتر K به "کلید رمز" شهرت دارد.
  C: حاصل فرآیند رمزنگاری متن P با کلید K و تابع  f، قطعه‌ای اطلاعات بی‌معنی، موسوم به "متن رمز" یا (Ciphertext) است.

به طور کلی عناصر مهمی که در رمزنگاری مورد استفاده قرار می‌گیرند به شرح زیر می‌باشد:
  متن آشکار (Plaintext): پیام و اطلاعات را در حالت اصلی و قبل از تبدیل‌شدن به حالت رمز، متن آشکار یا اختصارا پیام می‌نامند. در این حالت، اطلاعات قابل فهم توسط انسان است.
  متن رمز (Ciphertext): به پیام و اطلاعات بعد از درآمدن به حالت رمز، گفته می‌شود. اطلاعات رمزشده توسط انسان قابل فهم نیست.
  رمزگذاری (رمزکردن) یا (Encryption): عملیاتی است که با استقاده از کلید رمز، پیام را به رمز تبدیل می‌کند.
  رمزگشایی (باز کردن رمز) یا (Decryption): عملیاتی است که با استقاده از کلید رمز، پیام رمزشده را به پیام اصلی باز می‌گرداند. از نظر ریاضی، این الگوریتم، عکس الگوریتم رمزکردن است.
  کلید رمز (Cipher Key): اطلاعاتی معمولا عددی است که به عنوان پارامتر ورودی به الگوریتم رمز داده می‌شود و عملیات رمزگذاری و رمزگشایی با استقاده از آن انجام می‌گیرد. انواع مختلفی از کلیدهای رمز در رمزنگاری تعریف و استفاده می‌شود. ...

نویسنده: محمدحسین محمدیان سرچشمه