رمز نگاری

11 views
Skip to first unread message

Behzad Behzadian

unread,
Feb 19, 2010, 9:57:19 PM2/19/10
to mi...@googlegroups.com

رمز نگاری

کلمه Cryptography (رمز نگاری) برگرفته از لغات یونانی به معنای «محرمانه نوشتن متون» است. رمز نگاری پیشینه ای طولانی و درخشان دارد که به هزاران سال قبل بر می گردد. در این فرصت برخی نکات برجسته از تاریخ رمز نگاری را به عنوان اطلاعات عمومی (که دانستن آن ها نیز بسیار مفید خواهد بود)، بررسی خواهیم کرد. برای آشنایی با پیشینه دقیق و کامل رمزنگاری، کتاب Kahm 1995 نیز توصیه می شود؛ برای تحلیل جامع مفاهیم مدرن و پیشرفته در امنیت و آشنایی با الگوریتم های رمزنگاری، پروتکل ها و برنامه های کاربری به کتاب Kaumfman 2002 مراجعه کنید. برای آشنایی با جزئیات ریاضی این روش ها کتاب Stinson 2002 را ببینید. برای بررسی اسن روش ها، بدون جزئیات ریاضی، به کتاب Burnett & Paine 2001 مراجعه کنید.

متخصصین رمزنگاری بین «رمز» (Clipher) و «کد» (Code) تمایز قایل می شوند. «رمز» عبارتست از تبدیل کاراکتر به کاراکتر یا بیت به بیت بدون آن که به محتویات زبان زبان شناختی (ادبیات) آن پیام توجه شود. در طرف مقابل، «کد» تبدیلی است که کلمه ای را با یک کلمه، علامت یا نماد (Symbol) دیگر  جایگزین می کند. امروزه از کدها استفاده چندانی نمی شود اگرچه استفاده از آن پیشینه طولانی و پر سابقه ای دارد. موفق ترین «کدهایی» که تا کنون ابداع شده اند توسط ارتش ایالات متحده و در خلال جنگ های جهانی دوم در اقیانوس آرام به کار گرفته شد. آن ها از لحجه محلی Navajo در میان سرخپوستان الهام گرفته و برای عبارات و کلمات نظامی به سادگی از بغات خاص این زبان محلی استفاده کردند؛ به عنوان مثال عبارت chay-dagahi-nail-tsaidi (در زبان محلی سرخپوستان به معنای کشتنده لاک پشت!) رمزی برای سلاح ضد تانک بود. زبان Navajo لهجه ای بسیار آهنگین و به شدت پیچیده است و هیچ ادبیات نوشتاری و الفبای خطی ندارد و یک فرد ژاپنی (آن هم در جنگ جهانی دوم) هیچ چیز در مورد آن نمی دانست.

در سپتامبر 1945 در مجمع متفقین در سن دیه گو این کد با بیان گزارشی اینگونه توصیف شد: «برای سه سال متوالی، هرگاه ناوگان دریایی در خشکی پهلو می گرفت، آنچه که جاسوسان ژاپنی (از بیسیم) استراق سمع می کردند یک صدای نامفهوم و شلوغ بود که با دیگر اصوات در هم آمیخته و در نتیجه صدایی شبیه به لحن راهبان تبت یا صدای یک بطری آب که آب در حال خالی شدن باشد، می شنیدند!» ژاپنی ها هرگز نتوانستند این کد را بشکنند؛ پس از جنگ بسیاری از افرادی که مبادبه پیام های سسری را به زبان رمزی Navajo بر عهده داشتند به خاطر خدمات شایان و شجاعتشان در طول جنگ، مفتخر به دریافت نشان های عالی نظامی شدند. ارتش ایالات متحده توانست کدهای رمز ژاپنی ها را بشکند در حالی که ژاپنی ها نتوانستن کد Navajo را بشکنند و این حقیقت، نقش بسیار مهمی در پیروزی های آمریکایی ها درجنگ اقیانوس آرام (با نیروی دریایی ژاپن) ایفا کرد.

از دیدگاه تاریخ، چهار گروه از مردم در شکل گیری هنر رمزنگاری دخیل بوده اند: «نظامیان»، «هیئت های سیاسی»، «خاطره نویسان/واقعه نگاران» و «عشاق!». از بین اینها نظامیان نقش بسیار مهمتری دارند و در طول قرن ها به تکوین این شاخه از علم پرداخته اند. سابقا در موسسات نظامی، پیام هایی که باید رمز نگاری می شدند به یک کارمند (منشی) درون پایه و حقوق بگیر تحویل می شد تا آن ها را رمز و ارسال کند. حجم عظیم پیام هایی که در طی یک روز باید رمز و ارسال می شد مانع از آن بود که بتوان این کار خطیر را بر عهده معدود متخصصین خبره حاضر در یک موسسه گذاشت.

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

 پیامی که باید رمزنگاری شود، «متن آشکار» (Plaintext) نامیده می شود و توسط یک تالع خاص با پارامتری به نام «کلید»  (Key) به متن رمز، تبدیل می گردد. نتیجه فرآیند رمزنگاری که «متن رمز» (Ciphertext) نامیده می شود بر روی کانال منتقل خواهد شد. فرض کنیم که دشمن یا اخلالگر (Intruder) متن رمز شده را به صورت کامل می شنود و آن را در اختیار می گیرد. به هر حال او بر خلاف گیرنده اصلی به راحتی قادر به رمز گشایی پیام و بهره برداری از آن نخواهد بود زیرا کلید رمز را نمی داند. برخی اوقات یک اختلالگر غیر فعال (Passive Intruder) نه تنها قادر است به جریان اطلاعات بر روی کانال مخابراتی گوش بدهد بلکه می تواند آن ها را در جایی ثبت کرده و بعدا آن را بارها به جریان بیندازد؛ در مقابل یک اخلالگر فعال (Active Intruder) می تواند پیام مورد نظر خود را در داخل یک پیام مجاز و معتبر جاسازی کند یا در آن دستکاری نماید. هنر شکستن رمز بدون در اختیار داشتن کلید آن، «علم تحلیل رمز» (CryptoAnalysis) نام دارد؛ به هنر ابداع روش های رمزنگاری جدید «علم رمزنگاری» (Cryptology) اطلاق می شود.

در اختیار داشتن یک نماد و فرمول ریاضی که ارتباط بین متن آشکار، متن رمز شده و کلید رمز را مشخص کند بسیار مفید خواهد بود. ما از نماد C=EK(P) استفاده خواهیم کرد، بدین معنا که عملیات رمزنگاری بر روی متن آشکار P توسط کلید رمز K انجام شده و متن رمز شده C به دست آمده است. به روش مشابه، فرمول P=DK(C) عمل رمزگشایی متن رمز شده توسط کلی K (به منظور استخراج اصل پیام) توصیف می کند. بنابراین داریم: DK(EK(P))=P

این نماد بیانگر آن است که E و D توابع ریاضی و معکوس یکدیگر هستند. تنها نکته قابل اشاره آن است که این تابع دارای دو پارامتر هستند، اگرچه کلید رمز K را که در حقیقت یکی از پارامترهای این توابع است به صورت پانویس برای E یا D نشان داده ایم تا تمایز آن از پیام مشخص باشد.

یکی از توعد اساسی در علم رمزنگاری آن است که شخص باید فرض را بر آن بگذارد که دیگران ]از جمله تحلیل گران رمز و رمز شکن ها[ الگوریتم بکار رفته در عملیات رمزنگاری را می دانند. به عبارت دیگر شخص رمز شکن، روش رمزنگاری یعنی تابع E و روش رمزگشایی یعنی تابع D را می داند و آنچه از او پنهان نگه داشته می شود فقط کلید رمز (K)  است. میزان نیرو و تلاشی که باید برای ابداع، آزمایش و نصب یک الگوریتم رمزنگاری جدید (در صورت فاش شدن رمز قبلی) انجام بگیرد به قدری زیاد است که محرمانه نگه داشتن روش رمزنگاری، عملا ممکن نیست. تصور آن که الگوریتم رمزنگاری می تواند سری و مخفی بماند (در حالی که ممکن نیست) خطرات و زیان های بیشتر از منافع آن دارد.

اینجاست که «کلید رمز» وارد قضیه می شود. «کلید رمز» یک رشته کاراکتری نسبتا کوتا است که پیام بر اساس آن رمز می شود. بر خلاق آن که روش رمزنگاری ممکن است هر چند سال یکبار تغییر کند، کلید رمز می تواند بر طبق نیاز و به دفعات عوض شود. بنابراین مدل پایه سیستم های رمزگاری، مدلی است پایدار (ثابت) که همه از عملکرد و الگوریتم آن مطلع هستند و فقط با یک کلید محرمانه و قابل تغییر کار می کند. این نظریه که «تحلیلگر رمز» (رمزشکن/ CryptaAnalist) از الگوریتم رمزنگاری آگاه است و سری ماندن یک پیام صرفا به مخفی ماندن کلید رمز وابسته است «اصل کرکهف» نامیده می شود که توسط یکی از رمزنگاران ارتش فلاندرز به نام Angust Kerckhoff در سال 1883 بیان شده است بنابراین داریم:

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

شاید نتوان حق این مطلب را که «تکیه بر مخفی ماندن الگوریتم رمزنگاری اشتباه است»، به درستی ادا کرد. تلاش برای سری نگه داشتن الگوریتم رمزنگاری که در عرف عامه به اصطلاح «امنیت در سایه گمنامی و  ابهام» (Security by Obscurity) مشهور است، هرگز محقق نخواهد شد. با عمومی سازی یک الگوریتم، طراح یک الگوریتم رمزنگاری می تواند از نیروی عظیم متخصصین رمزنگاری که مشتاق به شکستن یک سیستم هستند، مشورت بگیرد و آن ها را به مبارزه بطلبد؛ آن ها نیز می توانند در خصوص تلاش هایی که برای درهم شکستن یک سیستم رمزنگاری مصروف کرده اند مقاله بنویسند و خبرگی و هوش خود را به رخ بکشند! هرگاه متخصصین کثیری سعی در شکستن یک الگوریتم کردند و با گذشت پنج سال پس از انتشار عمومی آن هیچ گزارشی مبنی بر موفقیت آنان مشاده نشد، آن الگوریتم احتمالا به قد کافی سخت و محکم بوده است!

از آنجایی که سری ماندن پیام ها وابسته به کلید است لذا طول کلید یکی از نکات بسیار مهم در طراحی الگوریتم های رمزنگاری است. به عنوان مثالی ساده، یک قفل رمزدار ترکیبی ]مثل قفل بعضی از کیف های شخصی[ را در نظر بگیرید. قاعده کلی برای باز شدن این قفل آن است که چند رقم را به ترتیب وارد کنید. همه این موضوع ]الگوریتم[ را می دانند و لیکن کلید رمز محرمانه است. کلید رمز دو رقمی تنها صد حالت مختلف دارد. کلید سه رقمی معادل با هزار و کلید شش رقمی معادل یک دسترسی به کلید رمز باید انجام بدهد زیادتر خواهد بود. حجم عملیات (Work Factor)  برای شکستن یک سیستم رمز از طریق آزمون تمام فضای حالات کلید، برحسب طول کلید به صورت نمایی رشد خواهد کرد. سری ماندن و امنیت پیام ها با داشتن یک الگوریتم بسیار قدرتمند (ولی آشکار و همگانی) به همراه یک کلید طولانی تضمین می شود. برای آن که نگذارید برادر کوچک شما نامه های الکترونیکی شما را بخواند یک کلید 64 بیتی (هشت کاراکتری) کفایت می کند. برای انجام عملیات معمول اقتصادی باید از کلیدی با حداقل 128 بیت استفاده شود. برای حراست از پیام های سری دولتی به کلیدهایی با طول حداقل 256 بیت یا حتی بیشتر نیاز است.

از دیدگاه یک تحلیلگر رمز (رمزشکن)، مسئله کشف رمز سه منظور اساسی را در بر می گیرد: (1) هرگاه او فقط توده ای از متن رمز شده (بدون هیچ متن آشکار و بدون کلید) در اختیار داشته باشد با مسئله ای به نام «صرفا متن رمز شده» مواجه است. (2) وقتی رمزشکن بخشی از متن آشکار را به همراه معادل رمز شده آن، در اختیار دارد، اصطلاحا با مسئله «متن آشکار و شناخته شده» مواجه است. (3) نهایتا هرگاه رمزشکن قادر باشد هر قسمت دلخواه از یک متن آشکار را رمز کند اصطلاحا با مسئله «متن آشکار و انتخابی» مواجه است. هرگاه به یک دلخواه از یک متن آشکار را رمز کند اصطلاحا با مسئله «متن آشکار و انتخابی» مواجه است. هرگاه به یک رمزشکن اجازه داده شود تا بپرسد مثلا حاصل رمزنگاری ABCDEFGHIJKL چیست به سادگی قادر خواهد بود تا رمزهای معمولی را بشکند و کلید رمز را بدست بیاورد.

نوآموزان حرفه رمزنگاری به اشتباه می اندشند که هرگاه یک متن رمز شده بتواند در مقابل حمله نوع «صرفا متن رمز شده» استقامت کند و فاش نشود، آن سیستم رمز مطمئن است. این فرض کاملا خام و ناشیانه است زیرا بسیاری از حالات، رمزشکن قادر است حدس های درست و موثقی را در مورد برخی از قسمت های یک متن رمز شده آزمایش کند. به عندان مثال اولین جمبه ای که در حین برقراری ارتباط شخص از راه دور  (مثلا با یک سرویس دهنده TelNet)، ارسال می شود معمولا کلمه: login (به صورت رمز شده) است. حال رمزشکن پاره ای متن رمز شده به همراه معادل رمز نشده آن را در اختیار دارد؛ کار او نسبتا ساده و سر راست است. برای رسیدن به امنیت کامل، طراح الگوریتم رمزنگار باید محافظه کار بوده و مطمئن شود که سیستم رمز او بگونه ای است که حتی در صورتی که حریف رمزشکن، معادل رمز شده یک متن آشکار را در اختیار داشته باشد باز هم قادر به شکستن رمز و بدست آوردن کلید رمز نیست.

روش های رمزنگاری به طور کلی به دو رده تقسیم می شوند:

1.       رمزهای جانشینی (Substitution)

2.      رمزهای جایگشتی (TransPosition)


گردآوری و ویرایش اطلاعات : بهزاد بهزادیان

Reply all
Reply to author
Forward
0 new messages