فهرست مطالب

+

  • فصل ۱:رمزنگاری
  • مقدمه۲
  • بخش ۱:مفاهیم رمز نگاری۴
  • بخش ۲:الگوریتمهای کلاسیک۲۰
  • بخش ۳: رمزهـای غیـرقابـل شکست۵۸
  • بخش ۴: الگوریتمهای مدرن۶۹
  • فصل ۲:اتوماتای سلولی
  • مقدمه۹۰
  • بخش ۱:تعاریف پایه۹۱
  • بخش ۲:انواع CA105
  • بخش ۳:مدلهای ساده CA119
  • بخش ۴:کاربرد CA127
  • بخش ۵:نتیجه گیری۱۵۵
  • فصل ۳:رمزنگاری به کمک اتوماتای سلولی
  • مقاله ۱:رمزنگاری اطلاعات بر اساس عوامل محیطی
  •  بااستفاده از اتوماتای سلولی۱۵۸
  • مقدمه۱۵۸
  • مفاهیم۱۵۹
  • فعالیتهای مربوطه۱۶۰
  • روش پیشنهادی تولیداعداد تصادفی­­­ ۱۶۰
  • رمز گذاری اطلاعات۱۶۴
  • رمزبرداری اطلاعات۱۶۴
  • رمزگذاری بر اساس دمای محیط۱۶۶
  • رمزبرداری بر اساس دمای محیط۱۷۰
  •  بررسی تاثیر دمای محیط بر سیستم رمزنگاری ۱۷۰
  •  بررسی تاثیر اختلاف دما در فرستنده و گیرنده۱۷۰
  •  نتیجه گیری۱۷۴
  • مقاله ۲:کشف نوشته ی رمزی از یک
  •  رمز بلوک پیچیده با استفاده از CA176
  • مقدمه۱۷۷
  • رمزهای بلوکی پیچیده۱۷۷
  • ویژگی جفت بودن۱۸۰
  • کاربردهای رمز نگاری باویژگی جفت بودن۱۸۰
  • نتیجه گیری۱۸۲
  • مراجع
  • ////////////////////////////////////////////////////////////////////////////////////

بخش هایی از متن این مقاله : 

فصل ۱ – رمزنگاری اطلاعات

مقدمه :

بیشتر مردم قبل از ارسال نامه، پاکت آنرا مهر و موم می کنند و در آن را چسب می زنند. اگر از آنها بپرسید که چرا این کار می کنند، احتمالاً بعضی سریعاً این چنین پاسخهایی می دهند که ک «واقعاً نمی دانم»، « از روی عادت چرا که نه؟» و یا «چون همه اینکار را می کنند» ولی بیشتر جوابها حول این محور خواهد بود که ؛ «برای اینکه نامه از پاکت بیرون نیفتد» و یا «برای اینکه بقیه نامه را نخوانند». حتی اگر نامه ها حاوی هیچ اطلاعات شخصی مهم و حساسی نباشد باز بیشتر ما دوست داریم که محتوای مکاتیات شخصی مان به صورت خصوصی حفظ شود و برای همین پاکت را چسب می زنیم تا کسی به غیر از آنکسی که ارتباط با او انجام شده آنرا باز نکند و محتوای آن را نفهمد. اگر ما پاکت را بدون چسب یا مم نفرستیم هرکسی که نامه به دستش برسد می تواند آنرا بخواند. در حقیقت آنها می خواهند که این نفوذ وجود داشته باشد و منعی هم برای آنچه می خواهد وجود ندارد. از این گذشته اگر آنها نامه را بعد از مطالعه درون پاکت قرار داده باشند ما متوجه نمی‌شویم که کسی آنرا خوانده.

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

اگر پیغام رمز شده ای بدست شخصی غیر از طرف ارتباطی شما بیافتد، باید برایش به صورت نامفهوم پدیدار شود. استفاده از رمزگذاری برای محافظت Email ها هنوز به طور گسترده در نیامده است اما در حال افزایش است و این افزایش کماکان ادامه دارد. در ما می سال ۲۰۰۱ یک گروه اروپایی پیشنهاد کرد که تمام کاربران کامپیوتری باید تمام Email هایشان را رمز کنند تا مورد جاسوسی از طرف شبکه های استراق سمع آمریکایی و انگلیس قرار نگیرد.

بخش ۱ – مـفاهیـم رمـز نگـاری

 

مقدمه

در این درس ما به معرفی اصطلاحات فنی و علمی و مفاهیم رمزنگاری می پردازیم. سمت و سوی کار ما غیررسمی شدن و ارائه مطالب به صورت یک نمای عمومی و کلی است.

مفاهیم پایه

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

اطلاعات پنهان سازی شده اغلب توسط عمل تغییر شکل بدست می آید که به آن رمزگذاری (encryption) گفته می شود. متن ساده ای که رمز شده، متن رمز شده (chiphertext) یا پیغام پنهان (cryptogram) نامیده می شود و مجموعه قواعد استفاده شده برای رمزگذاری متن ساده را الگوریتم رمزگذاری (encryption Algorithm) می نامند. معمولاً عملکرد این الگوریتم وابسته به یک کلید رمز است (encryption key) که توسط یک پیغام به الگوریتم وارد می شود. گیرنده می تواند پیغام را توسط یک الگوریتم رمزگشایی که، وقتی با یک کلید رمزگشایی مناسب استفاده می شود، متن اصلی را از متن رمز شده تولید می کند، از پیغام پنهان بدست بیاورد.

به طور کلی مجموعه قواعدی که این الگوریتم های رمزنگاری را تشکیل می دهند خیلی پیچیده هستند و نیاز به طراحی دقیق دارند.

شکل زیر بیان تصویری است از استفاده از سیستم رمزکننده برای محافظت یک پیغام انتقالی.

به هر شخصی که پیغام را در جریان انتقال قطع کند، جداسازنده (interceptor) می گویند. بعضی کلمات کلیدی دیگری نیز در نظر گرفته شده و استفاده می شود مثل ؛ استراق سمع کننده (earesdropper)، دشمن (enemy)، رقیب (adversay) و یا آدم بد (bad guy). اگر هم جدا سازنده الگوریتم رمزگشایی را بداند، کلید رمز را نمی داند. این ندانستن که ارزوی دانستنش را دارد باعث می شود که نتواند متن اصلی را بدست آورد. رمزنگاری (cryptography) علم طراحی سیستمهای رمز کننده است. در حالی که کشف رمز (cryptanalysis) نامی است که برای فرآیند کشف اطلاعات متن اصلی به وسیله متن رمزشده، بدون داشتن کلیدی خاص اطلاق می‌شود.

Cryptology مجموعه ایست حاوی رمزنگاری و کشف رمز.

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

دقیقاً همانطور که بارها تاکید شده، حفاظت کلیدها برای سیستمهای امنیتی موضوعی حیاتی و مهم است.

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

یقیناً، یک حمله کننده فقط زمانی قادر به شکست یک الگوریتم است که اطلاعات کافی برای شناخت کلید صحیح یا تشخیص کلید نادرست را داشته باشد. اما رسیدن این اطلاعات اضافی به حمله کننده خودش امر بسیار مهمی است. برای مثال فرض کنید که حمله کننده می داند که متن اصلی به زبان انگلیسی است و رمزگشایی با یک کلید حدسی، متنی را به ما می دهد که بی معنی می‌باشد. در این حالت کلیدی که حدس زده شده اشتباه بوده است یک واقعیت مهم که باید از مقدمه ما تمیز داده شود این است که؛ برای بدست آوردن پیغام از روی متن رمز شده، لازم به داشتن کلید رمز نیست. این نظر ساده پایه ی مقاله ی Diffie-Hellman است. این مقاله تاثیر شدیدی روی رمزنگاری مدرن داشته است و منجر به این شد که یک بخشبندی طبیعی به ۲ نوع از سیستمهای رمزکننده ایجاد شود؛ متقارن (Symmetric) و نا متقارن (Asymmetric).

سیستم رمز کننده ای را متقارن یا موسوم (Conventional) گویند که استنباط کلید رمزگشایی از کلید رمز کننده ساده باشد. در عمل در سیستمهای متقارن اغلب این دو کلید یکسان هستند. بنابراین اینگونه سیستمها اغلب سیستمهای تک کلید (One-key) یا کلید- مخفی (Secret-Key) نامیده می شوند. در واقع اگر فهمیدن کلید رمزگشایی از روی کلید رمزکننده غیرممکن باشد، در آنصورت سیستم نامتقارن یا کلید عمومی نامیده می شود. باید یک دلیل برای مجزا کردن این دو نوع وجود داشته باشد. برای پیشگیری از یک جدا سازنده که، الگوریتم را هم در اختیار دارد، از بدست آوردن متن اصلی از متن رمزشده ی جدا شده، لازم است که کلید رمزگشایی مخفی باشد. لزومی به مخفی بودن کلید رمز نیست و دانستن این کلید به کار حمله کننده نمی آید. در حقیقت این کلید می تواند عمومی باشد و معمولاً هم اینگونه است. یک نتیجه این است که برای دریافت کننده و ارسال کننده یک متن نیازی به اشتراک گذاری هر رمز مشترکی بین دو طرف وجود ندارد. در اصل نیازی نیست که دو طرف به هم اطمینان داشته باشند.

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

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

یکی از اهداف مطالعه رمزنگاری این است که هرکس بخواهد بتواند تعیین کند که یک سیستم رمزکننده از لحاظ طراحی و پیاده سازی به اندازه کافی امنیت دارد یا نه. در رابطه با تعیین امنیت یک سیستم، ما ۳ فرض زیر را که معروف به شرایط، بدترین حالت، است را می سازیم:

(WC1) : کاشف رمز اطلاعات کاملی در مورد سیستم رمزکننده دارد.

(WC2) : کاشف رمز مقدار قابل توجهی ازمتن رمز شده را بدست آورده.

(WC3) : کاشف رمز متن اصلی هم ارز با مقداری از متن اصلی رمز شده را می داند.

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

باید روشن شود که فرض WC2 یک فرض معقولانه است. اگر امکان قطع وجود نداشته باشد پس دیگر نیازی هم به سیستم رمز کننده نیست. از این رو، اگر قطع تماس یا جداسازی امکان داشته باشد و قابل انجام باشد، احتمالاً طرفهای تماس وقتی که جداسازی انجام شود نمی توانند کاری انجام دهند. پس بهترین انتخاب این است که فرض شود تماس ها می توانند قطع شوند.

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

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

یک نتیجه ی پذیرش این شروط بدترین حالت این است که ما این فرض را داشته باشیم که تنها اطلاعاتی می تواند گیرنده اصلی را از جدا کننده تشخیص دهد کلید رمزگشایی است. این امنیت سیستم کاملاً وابسته به محرمانه بودن کلید رمزگشایی است. اینجا به اهمیت مدیریت کلید خوب و کامل پی می بریم.

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

اگر ما فرض کنیم که الگوریتم رمزگشایی ما معلوم باشد، یعنی در اختیار همه باشد، لذا یک روش واضح برای حمله در اختیار هر دشمنی قرار دارد. آنها می توانند هر کلید رمزگشایی را امتحان کنند و امید داشته باشند که بالاخره کلید صحیح را بدست می آوردند. این چنین حملات را حملات«جستجوی جامع کلید» یا حمله «Brute Force» می نامند. یقیقناً یک حمله می تواند موفق شود مگر اینکه حمله کننده بعضی راه های تشخیص کلید صحیح را داشته باشد و یا اینکه قادر به رفع تمام کلیدهای نادرست باشد. برای مثال، در حمله ی متن اصلی معلوم، واضح است که هر انتخاب کلید رمزگشایی که منجر به متن اصلی صحیح متناظرش نشود نمی تواند کلید رمزگشایی صحیح باشد.

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

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

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

گام ۱: فرستنده بسته را در کیف قرار داده، در کیف را با قفل lock کرده و کلید را از روی قفل برداشته. سپس کیف lock شده به سمت گیرنده فرستاده می شود.

نکته: در زمانی که کیف در مسیر از گیرنده به فرستنده است، خطری از جانب دشمنان تهدیدش نمی کند زیرا آنها نمی توانند قفل را از کیف جدا کنند. همچنین دریافت کننده نمی تواند بسته را بدست آورد.

گام ۲: دریافت کننده کیف را با قفل خودش و کلید مربوطه lock می کند و کلید را از قفل خارج کرده و سپس کیف را به سمت فرستنده می فرستد.

نکته : حالا کیف توسط دو قفل lock شده و هیچ کدام هم نمی توانند بسته را بدست بیاورند.

گام۳: فرستنده توسط کلیدش، قفل مربوطه را از کیف جدا می کند و مجدداً آنرا به سمت گیرنده می فرستد.

نکته: تنها قفل باقی مانده در روی کیف به دریافت کننده است.

گام ۴: گیرنده قفل اش را از روی کیف باز می کند و بسته را بدست می آورد.

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

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

سیستمهای کلید متقارن

یک الگوریتم متقارن از یک کلید برای رمزنگاری و رمزگشایی استفاده می کند. بیشترین شکل استفاده از رمزنگاری که در کارتهای هوشمند و البته در بیشتر سیستمهای امنیت اطلاعات وجود دارد. Data encryption algorithm یا DEA است که بیشتر به عنوان DES شناخته می‌شود. DES یک محصول دولت ایالات متحده است که امروزه به طور وسیعی به عنوان یک استاندارد بین المللی شناخته می شود. بلوکهای ۶۴ بیتی دیتا توسط یک کلید تنها که معمولاً ۵۶ بیت طول دارد، رمزنگاری و رمزگشایی می شوند. DES از نظر محاسباتی ساده است و براحتی می تواند توسط پردازنده های کند (بخصوص آنهایی که در کارتهای هوشمند وجود دارند) انجام می گیرد.

این روش بستگی به مخفی بودن کلید دارد. بنابراین برای استفاده در دو موقعیت مناسب است که هنگامی که کلیدها می توانند به یک روش قابل اعتماد و امن توزیع و ذخیره شوند یا جایی که کلید بین دو سیستم مبادله می شوند که قبلاً هویت یکدیگر را تایید کرده اند عمر کلیدها بیشتر از مدت تراکنش طول نمی کشد. رمزنگاری DES عموما برای حفاظت دیتا از شنود در طول انتقال استفاده می شود.

کلیدهای DES 40 بیتی امروزه در عرض چندین ساعت توسط کامپیوترهای معمولی شکسته می شوند و بنابراین نباید برای محافظت اطلاعات مهم و با مدت طولانی اعتبار استفاده شود. کلید ۵۶ بیتی عموماً توسط سخت افزار یا شبکه های بخصوصی شکسته می شوند. رمزنگاری DES سه تایی عبارتست از کدکردن دیتای اصلی با استفاده از الگوریتم DES که در سه مرتبه انجام می گیرد. (دو مرتبه با استفاده از یک کلید به سمت جلو (رمزنگاری) و یک مرتبه به سمت عقب (رمزگشایی) با یک کلید دیگر) مطابق شکل زیر:

این عمل تاثیر دو برابر کردن طول موثر کلید را دارد؛ بعداً خواهیم دید که این یک عامل مهم در قدرت رمزکنندگی است.

الگوریتمهای استاندارد جدیدتر مختلفی پیشنهاد شده اند. الگوریتمهای مانند Blowfish و IDEA برای زمانی مورد استفاده قرار گرفته اند اما هیچکدام پیاده سازی سخت افزاری نشدندبنابراین به عنوان رقیبی برای استفاده در کاربردهای میکروکنترلی مطرح نبوده اند. پروژه استاندارد رمزنگاری پیشرفته دولتی ایالات متحده (AES) الگوریتم Rijndeal را برای جایگزینی DES به عنوان الگوریتم رمزنگاری اولیه انتخاب کرده است. الگوریتم Twofish مشخصاً برای پیاده سازی در پردازنده های توان پایین مثلاً در کارتهای هوشمند طراحی شد.

در ۱۹۹۸ وزارت دفاع ایالات متحده تصمیم گرفت که الگوریتمهای Skipjack و مبادله کلید را که در کارتهای Fortezza استفاده شده بود، از محرمانگی خارج سازد. یکی از دلایل این امر تشویق برای پیاده سازی بیشتر کارتهای هوشمند بر پایه این الگوریتمها بود.

برای رمزنگاری جریانی (Streaming encryption) (که رمزنگاری دیتا در حین ارسال صورت می گیرد، بجای اینکه دیتای کدشده رد یک فایل مجزا قرار گیرد) الگوریتم RC4 سرعت بالا و دامنه ای از طول کلیدها از ۴۰ تا ۲۵۶ بیت فراهم می کند. RC4 که متعلق به امنیت دیتای RSA است، به صورت عادی برای رمزنگاری ارتباطات دو طرفه امن در اینترنت استفاده می شود.

سیستمهای کلید نامتقارن

سیستمهای کلید نامتقارن از کلید مختلفی برای رمزنگاری و رمزگشایی استفاده می کنند. بسیاری از سیستمها اجازه می دهد که یک جزء (کلید عمومی یا Public key) منتشر شود در حالی که دیگری (کلید اختصاصی یا Private key) توسط صاحبش حفظ شود. فرستنده پیام، متن را با کلید عمومی گیرنده کد می کند و گیرنده آن را با کلید اختصاصی خودش رمزنگاری می کند. به عبارتی تنها با کلید اختصاصی گیرنده می توان متن کد شده را به متن اولیه صحیح تبدیل کرد. یعنی حتی فرستند نیز اگرچه از محتوای اصلی پیام مطلع است اما نمی تواند از متن کد شده به متن اصلی دست یابد، بنابراین پیام کشنده برای هر گیرنده ای بجز گیرنده مورد نظر فرستنده بی معنی خواهد بود. معمولترین سیستم نامتقارن به عنوان RSA شناخته می شود (حروف اول پدید آورندگان آن یعنی Rivest، Shamir و Adlemen است). اگرچه چندین طرح دیگر وجود دارند. می توان از یک سیستم نامتقارن برا نشان دادن اینکه فرستنده پیام همان شخصی است که ادعا می کند استفاده کرد که این عمل اصطلاحاً امضاء نام دارد. RSA شامل دو تبدیل است که هرکدام احتیاج به بتوان‌رسانی ماجولار با توانهای خیلی طولانی دارد:

  • امضاء متن اصلی را با استفاده از کلید اختصاصی رمز می کند؛
  • رمزگشایی عملیات مشابه ای روی متن رمزشده اما با استفاده از کلید عمومی است. برای تایید امضاء بررسی می کنیم که آیا این نتیجه با دیتای اولیه یکسان است؛ اگر اینگونه است، امضاء توسط کلید اختصاصی متناظر رمز شده است.

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

اساس سیستم RSA این فرمول است:

که X متن کد شده، Y متن اصلی، k کلید اختصاصی و r حاصلضرب دو عدد اولیه بزرگ است که با دقت انتخاب شده اند. برا اطلاع از جزئیات بیشتر می توان به مراجعی که در این زمینه وجود دارد رجوع کرد. این شکل محاسبات روی پردازنده های بایتی بخصوص روی ۸ بیتی ها که در کارتهای هوشمند استفاده می شود بسیار کند است. بنابراین، اگرچه RSA هم تصدیق هویت و هم رمزنگاری را ممکن می سازد، در اصل برای تایید هویت منبع پیام از این الگوریتم در کارتهای هوشمند استفاده می شود و برای نشان دادن عدم تغییر پیام در طول ارسال و رمزنگاری کلیدهای آتی استفاده می شود.

سایر سیستمهای کلید نامتقارن شامل سیستمهای لگاریتم گسسته می شوند مانند Diffe-Helman، Eigamal و سایر طرحهای چند جمله ای و منحنی های بیضوی. بسیاری از این طرحهای عملکردهای یک طرفه ای دارند که اجازه تایید هویت را می دهند اما رمزنگاری ندارند. یک رقیب جدیدتر الگوریتم RPK است که از یک تولید کننده مرکب برای تنظیم ترکیبی از کلیدها با مشخصات موردنیاز استفاده می کند. RPK یک پروسه دو مرحله ای است: بعد از فاز آماده سازی در رمزنگاری و رمزگشایی (برای یک طرح کلید عمومی) رشته هایی از دیتا به طور استثنایی کار است و می تواند براحتی در سخت افزارهای رایج پیاده سازی شود. بنابراین به خوبی با رمزنگاری و تصدیق هویت در ارتباطات سازگار است.

طولهای کلیدها برای این طرحهای جایگزین بسیار کوتاهتر از کلیدهای مورد استفاده در RSA است که آنها برای استفاده در چیپکارتهای مناسبتر است. اما RSA محکی برای ارزیابی سایر الگوریتمها باقی مانده است؛ حضور و بقای نزدیک از این الگوریتم، تضمینی در برابر ضعفهای عمده به شمار می رود.

بخش ۲ – الگـوریتمهـای کلاسیـک: مثالهـایـی سـاده

 

مقدمه

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

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

رمز سزار

یکی از قدیمی ترین مثالهای رمزنگار، رمزسزار بود که توسط جولیوس سزار در جنگهای روم و «گل» بکار رفت. در این روش رمزنگاری هریک از حروف از A تا W به صورت حرفی نمایش داده می شد که در الفبا ۳ عدد جلوتر از آن است. حروف X، Y و Z به ترتیب به صورت حروف A ، B و C نمایش داده می شد. اگر چه سزار شیفت ۳ را به کاربرد، با این حال هر شیفتی از ۱ تا ۲۵ را نیز می توان انجام. در حقیقت هر نوع شیفتی به این صورت را عموماً رمزسزار می نامند.

بار دیگر از یک نمودار برای شرح یک نوع رمز استفاده می کنیم. در شکل ۲ حلقه متحد المرکزی نمایش داده که حلقه ی بیرونی می تواند چرخش داشته باشد. اگر حرف A درونی با A بیرونی منطبق باشد و یک شیفت ۲ را انجام دهیم نتیجه C حلقه درونی و A حلقه بیرونی خواهد شد و به همین صورت برای تمام حروف. در رمز سزار کلید رمز و کلید کشف رمز هر دو توسط یک شیفت تعیین می شود.

وقتی یک شیفت مورد موافقت قرار گرفته شد، رمزنگاری روش سزار برای هریک از حروف موجود در متن اصلی به وسیله حلقه های گفته شده انجام می پذیرد. برای رمزگشایی نیز دقیقاً همین عمل بالعکس انجام می پذیرد. با توجه به شکل، برای شیفت ۳ متن رمز شده برای متن اصلی DOG می شود GRJ و به همین صورت متن اصلی مربوط به متن رمز شده برای متن رمز شده ی FDW می شود CAT.

با توجه به توضیحات داده شده در مورد روش سزار متوجه می شویم که کلید رمز کننده و کلید رمزگشایی هر دو برابر است با شیفت، اما نقشهای رمزکننده با رمزگشایی متفاوت است. همچنین ما کمتر می توانیم فرمولهای این روش را طوری تغییر دهیم که دو قانون همزمان برای رمزگذاری و رمزگشایی داشته باشیم و کمتر می توان کلید رمز کننده و کلید رمزگشایی متفاوتی داشته باشیم. با دیدن این موضوع، ملاحظه می شود که یک شیفت ۲۶ اثری برابر با شیفت صفر دارد و همچنین هر شیفتی از صفر تا ۲۵ برای رمزگذاری، دارای شیفتی به مقدار تفریق شیفت اصلی از ۲۶، برای رمزگشایی است.

برای مثال رمزگذاریی با شیفت ۸ مثل رمزگشایی با شیفت ۱۸ = ۸-۲۶ است. این به ما قابلیت را یم دهد که بتوانیم از قانون یکسانی برای رمزگذاری و رمزگشایی استفاده کنیم.

شکل ۲: ماشینی برای پیاده سازی روش رمزسزار

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

بهترین راه برای نشان دادن یک جستجوی جامع کلید، کار روی یک مثال کامل است، که ۲۶ کلید دارد، به خصوص وقتی ساده تر می شود که برای روش سزار باشد. بیایید فرض کنیم که می دانیم که روش سزار استفاده شده و حدس می زنیم که پیغامها به زبان انگلیسی باشد در این هنگام متن رمز شده ی XMZVH را جداسازی کردیم. اگر فرستنده شیفت ۲۵ را برای رمزگذاری به کار برده باشد، رمزگشایی باید با انجام یک عمل شیفت ۱ بدست بیاید که می شود YNAWI. هنگامی که با کلمه بی معنی در انگلیسی مواجه می شویم، متوجه می شویم که ۲۵ کلید رمزکننده نبوده است. نتایجی که برای امتحان کردن تمام ۲۶ حالت انجام شده را به صورت سیستماتیک در جدول ۱ می بینید.

جدول ۱: یک مثال برای جستجوی جامع کلید متن رمز شده XMZVH

تنها کلمه ی انگلیسی در بین ۲۶ پیغام بدست آمده که دارای معنی می باشد، پیغام CREAM است. بنابراین می توانی بفهمیم کلید رمزکننده ۲۱ بوده است. این ما را قادر می کند که تمام پیغامهایی که از این پس رد و بدل می شود را بتوانیم رمزگشایی کنیم. با وجود موفقیت کامل این جستجوی کلید خاص، به خصوص در دنیای واقعی، برای روشهای پیچیده تر یک جستجوی کلید تنها نمی تواند کلید را به وضوح به ما نشان دهد. به عنوان مثال در یک روش سزار و با استفاده از روش جستجوی جامع برای تعیین کلید رمز کننده مربوط به متن رمز شده ی HSPPW، ۲ کلمه انگلیسی معنی دار برای پیغام موردنظر کسب شده است. (با شیفت ۴ کلمه DOLLS و با شیفت ۱۱ کلمه WHEEL را) وقتی چنین اتفاقی می افتد ما احتیاج به اطلاعات اضافه دیگری داریم، مثلاً متن پیغامهای دیگر با متن رمز شده ی اضافه، تا بتوانیم کلید اصلی را پیدا کنیم. با این وجود نتایج بدست آمده از جستجو باعث می شود که سطح و محیط جستجوی ما از ۲۶، در این مثال به ۲ کاهش پیدا کند که برای متن رمز شده ی بعدی می تواند فقط ۲ بار انجام جستجو کلید را بدست آورد که در اینجا ما باید جستجو را برای مقادیر ۱۱ و ۴ امتحان کردیم.

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

هنگام معرفی روش سزار گفتیم که شیفت ۲۶ برابر است با شیفت صفر. این بدین دلیل است که شیفت ۲۶ چرخ سزار را یک دور کامل می چرخاند. از روی این می توان این را استدلال کرد که هر شیفتی هم ارز با شیفتی بین صفر تا ۲۵ است. به عنوان مثال شیفت ۳۷ بعد از یک دور کامل چرخ سزار عدد ۱۱ را می دهد. در اینجا به جای اینکه بگوییم که شیفت ۳۷ هم ارز با شیفت ۱۱ است می‌گوییم ۱۱ = ۳۷ (بپیمانه ۲۶).

این با نام استفاده ی پیمانه ی حسابی ۲۶ شناخته می شود و ۲۶ به عنوان یک پیمانه شناخته می شود. حساب پیمانه ی، برای بسیاری پیمانه های دیگر مثل ۲۶، نقش اساسی در تعداد نواحی رمزنگاری بازی می کند. در انتهای این قسمت ما یک پیوست قرار داده ایم تا خواننده با تعاریف مربوطه و نتایج این نظریه اعداد مقدماتی آشنا شود.

بعضی اوقات روشهای سزار با نام روشهای افزایشی شناخته می شود. در اینجا ما از روش زیر برای انتساب مقادیر عددی به حروف استفاده می شود.

A = 0,B =1,….,Z = 25

رمزگذاری برای یک روش سزار با شیفت y، برای x می تواند به صورت (پیمانه ۲۶) x+y نشان داده می شود. برای مثال، چون N چهاردهمین حرف الفباست، پس N = 13 برای رمزگذاری N با شیفت ۱۵، داریم x=13 و y=15 که نسخه رمز شده ی N به صورت ۱۳ + ۱۵=۲۸=۲ (به پیمانه ۲۶) را نتیجه می دهد که N به صورت C رمز می شود.

همانطور که قبلاً گفته شد، تعداد کلیدها برای روشهای افزایش خیلی کم است، اگر به فکر سیستم رمزی با یک تعداد وسیع از کلیدها بیافتیم، ممکن است از تکثیر به عنوان نقش دیگر رمزگذاری برای بدست آوردن یک چنین سیستمی استفاده می شود. ولی اگر بخواهیم همچنین کاری انجام دهیم باید توجه داشت که رمزگذاری باید برگشت پذیر هم باشد که این خود محدودیتی روی اینگونه کلیدها است. فرض کنید که بخواهیم پیغامها را با ضرب بر ۲ با استفاده از حساب پیمانه ای ۲۶ رمز کنیم. وقتی از این روش برای رمزگذاری A و N استفاده کنیم هر دو به صورت A رمز می‌شود و B و O هر دو به صورت C رمز می شود. در این حالت هر حرف موجود در متن اصلی که رمز شده است می تواند چند حرف باشد که باید برای رمزگشایی تمام حالات را امتحان کرد. این حالت می تواند رمزگشایی را واقعاً غیرممکن کند، پس ضرب بر ۲ نمی تواند برای رمزگذاری استفاده شود. یک نمونه دیگر از اینگونه رمزگذاری ها حالت رمزگذاری به وسیله ضرب در ۱۳ است. در این حالت نصف حرف الفبا به صورت A رمز می شوند و نصف دیگر به صورت N. در حقیقت تنها اعداد ۱، ۳، ۵، ۷، ۱۱، ۹، ۱۳، ۱۵، ۱۷، ۱۹، ۲۱، ۲۳ یا ۲۵ می تواند به عنوان ضربی برای رمزگذاری به کار رود.

رمزهای جانشینی ساده

واضح است که تعداد زیاد کلیدها برای امنیت رمزنگاری یک نیاز ضروری است ولی قابل توجه است که داشتن کلیدهای زیاد مطمئناً نمی تواند داشتن یک سیستم نیرومند را ضمانت کند. ما اینجا روش جانشینی ساده را همراه با جزئیات معرفی می کنیم. بحث این قسمت نه تنها به خطرات مربوط به یک سیستم که دارای کلیدهای زیاد می باشد به عنوان یک سیستم نیرومند می پردازد بلکه به بیان نقش آمار مربوط به یک زبان برای شکست یک رمز می پردازد. (در اینجا زبان انگلیسی)

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

A  B  C  D  E  F  G  H  I  J  K  L  M

D  I  Q  M  T  B  Z  S  Y  K  V  O  F

 

N  O  P  Q  R  S  T  U  V  W  X  Y  Z

E  R  J  A  U  W  P  X  H  L  C  N  G

کلیدهای رمز کننده و رمزگشایی یکی است. طرز کار رمزگذاری، جانشینی هر حرف با کلمه های زیرش است که برای رمزگشایی نیز همین کار را به صورت بالعکس انجام می دهیم. به عنوان مثال در کلید نمایش داده شده در بالا متن رمز شده مربوط به کلمه GET می شود ZTP و همچنین پیغام مرتبط با متن رمز شده IYZ می شود BIG. مقایسه این روش با روش سزار اینرا نشان می دهد که در روش جانشینی ساده برای هر حرف می توان یک شیفت جداگانه همچون شیفت در روش سزار داشت.

تعداد کلیدهای مربوط به روش جانشینی ساده برابر است با تعداد راههای که می توان ۲۶ حرف الفبا را کنار هم نوشت. این برابر است با ۲۶ فاکتوریل یا به صورت ! ۲۶ نوشته می شود که در واقع ۲۶ x 25 x 24 x …. x3 x 2 x 1 است که برابر است با ک

۴۰۳,۲۹۱,۴۶۱,۱۲۶,۶۰۵,۶۳۵,۵۸۴,۰۰۰,۰۰۰

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

WEHOPYUNJTISBKACDFGLMQRVXZ

این نکته واضح است که اگر بخواهیم کلیدها را طوری محدود کنیم که بتوان آنها را از عبارات کلید بدست آورد. پس ما تعداد کلیدهای ممکن را کاهش دادیم زیرا که تمام ! ۲۶ حالات ممکن کلید در جانشینی ساده نمی توان از عبارات انگلیسی بدست بیاید. با این وجود باز هم تعداد کلیدها برای جستجوی جامع بسیار زیاد است همچنین توانستیم که براحتی آنرا به خاطر بسپاریم.

دومین نظر بدیهی در مورد رمزهای جانشینی ساده این است که کلید مختلف یک متن یکسان را به متن رمز شده یکسانی می برند. به عنوان مثال متن MEET ME TONIGHT را فرض کنید که اگر ما اولین مثال کلید را استفاده کنیم متن رمز به صورت FTTP FT PREYZSP در خواهد آمد با این وجود هر کلیدی که E را به Z ، H را به S ، I را به Y ، M را به F ، N را به E ، O را به P نگاشت کند، متن رمز شده ی یکسانی را تولید می کند. پس

۱۸! = ۶,۴۰۲,۳۷۳,۷۰۵,۷۲۸,۰۰۰

کلید خواهیم داشت. در انتها برای این نوع رمز مشخص می شود که ما نباید فرض کنیم که حمله کننده باید جستجوی کلید کاملی را انجام دهد تا بتواند پیغام را رمزگشایی کند.

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

مثال ۱: G WR W RWL

در این مثال ۲ تک حرفی وجود دارد و در زبان انگلیسی فقط ۲ تک حروفی معنی دار وجود دارد. پس ما فرض می کنیم که G نشاندهنده A و W نشاندهنده I و یا بالعکس. خیلی ساده می توان این امکان که G،A است را تشخیص داد و به این نتیجه می رسیم که تا اینجای کار ابتدای کلمه اینگونه است که I AM A MA و فقط حالات کمی برای قرار گیری در جایگاه آخر جمله باقی می ماند اگر ما بدانیم که جمله یک جمله ی کامل در انگلیسی است، لذا تقریباً می توان گفت که جمله I AM A MAN است. پی بردن به این نکته مهم است که برای این مثال نیازی به استفاده از تکنیکهای تحلیل رمز نیست و تعیین نشده است ولی تعداد حالات ممکن برای رمزگشایی بقیه پیامها را از ۲۶! به ۲۲! تقلیل داده. اگر پیغام طولانی تر بود، به آرگومانهای دیگری برای تعیین کلید نیاز بود ولی جستجوی کلید با محاسبه هنوز هم غیر ممکن بود.

مثال ۲: HKC

حالا چه می توان گفت؟ چیز زیادی قابل فهم نیست. در اینجا اطلاعات خاصی وجود ندارد. این مثال می تواند هر جمله ی معنی دار سه حرفی باشد. می توان به سرعت کلیدهایی را امتحان کرد. برای مثال می توان در یک زمان Z را به H، Q را به K و K را به C رمزگشایی کرد. با این وجود تعداد حالات ممکن بسیار زیاد است و ما نمی توانیم مطمئناً بگوییم که این حرف کدام است. بدست آوردن اینگونه متن رمز شده هیچ کمکی به ما نمی کند. مطمئناً درست است اگر بگوییم که: اگر بخواهیم فقط یک پیغام سه حرفی را بفرستیم، روش جانشینی ساده می تواند روش امنی برای ارسال باشد چون حمله کننده باید یک جستجوی جامع را برای تمام کلمات سه حرفی انجام دهد.

مثال ۳: HATTPT

در این مثال می توان به سرعت تعداد حالات را به تعداد حروف متن اصلی که ممکن است به T نگاشته شوند محدود کرد. همچنین به سادگی می توان متوجه شویم که T یا P نشان دهنده یک حرف صدا دار است. اگر ما بدانیم که این پیغام کامل است، می توان کلمات تنهایی را برای این مثال به دست آورد. چند مثال می تواند اینگونه باشد: MISSES, CHEESE و CANNON.

مثال ۴ : HATTPT (با این فرض که پیغام نام یک کشور است)

با این مثال می توان فهمید که پیغام نام کشور GREECE است. تفاوت بین مثال ۳ و ۴ این است که در مثال ۴ یک سری اطلاعات اضافه در اختیار داریم که وضعیت حمله کننده برای گشودن پیغام را از غیرممکن به ساده تغییر می دهد. مطمئناً این یکی از فعالیتهای حوزه هوش در وضعیت جنگی است. اینها اغلب اطلاعات هوشمندانه ای است که فاکتور نهایی برای تحلیلگران رمز می باشد تا بتوانند رمزهای دشمن را بشکنند.

آمار زبان انگلیسی

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

جدول ۲: فراوانی نسبی مورد انتظار حروف در متن انگلیسی

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

وقتی که یک رمز جانشینی ساده به کار رفته باشد، هر حرف به خصوص از الفبا با یک حرف جانشین جابجا می شود. مهم نیست که آن کجای متن دیده شود. بنابراین برای مثال اگر ما رمزی داشته باشیم که در آن E با R جانشین شده باشد، فراوانی R در متن رمزشده برابرست با فراوانی E در پیغام. این موضوع بدین معنی است که اگر فراوانی حرفی در پیغام را به جدول ۲ انعکاس دهیم و سپس فراوانی حروف در متن رمزشده را نشان دهیم، عدم تعدال یکسانی را مشاهده می کنیم. برای وضوح بیشتر این موضوع ما نمودار فراوانی برای یک متن رمز شده طولانی که توسط رمز جانشینی ساده رمز شده را نشان می دهیم. با مقایسه جدول ۲ با این شکل، یک تحلیلگر رمز به صورت معقولانه ای می توان حدس بزند که H برابر است با E و W برابر است با T. با توجه به این نکته که پر استفاده ترین کلمه سه حرفی در انگلیسی THE است، حمله کننده می تواند ازاین نکته سود برد. بدین صورت که اگر بیشترین سه حرفی مورد استفاده در متن رمز W*H بود، که نشاندهنده ی حرف کامل کننده است، می توان با اطمینان بگویند که * برابرست با H. اگر کسی مایل باشد که آسانی این روش را برای شکستن متون رمز شده بفهمد باید پراگراف بعدی که مبتنی است که به روش جانشینی ساده رمز شده را بخواهند

نمودار نشانداده شده مربوط به فراوانی نسبی حروف در متن رمز شده ای است که توسط رمز جانشینی ساده رمز شده.

هر خواننده ای که این متن رمز را رمزگشایی کند حتماً از اطلاعاتی که توسط جاهای خالی (SPACE) در متن قرار دارد استفاده می کند. مشکلی که کار تشخیص را سخت می کند مربوط به زمانی می شود که در متن زبان انگلیسی اصلی، جاهای خالی حذف شده باشد.

ما این بحث را با اقرار به این موضوع به پایان می بریم که هنوز مفهوم متن رمز شده «طولانی» را مشخص نکرده ایم. مطمئناً جواب دقیقی وجود ندارد. تا ۲۰۰ کاراکتر اغلب برای معتبر بودن آمار حروف کافی است ولی کسانی بوده اند که با ۱۰۰ کاراکتر یا بیشتر هم توانسته اند به طور معمولی متن رمزشده ای را رمزگشایی کنند.

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

(ترجمه Gilbert Adair از کتاب A Void نوشته Georges Perec)

رمز Play fair

رمز Play fair توسط سر چالز ویتستون (Sir Charles Wheatstone) و بارون لیون پلیفایر (Baron Loyn Play fair) در سال ۱۸۵۴ اختراع شد و توسط وزارت جنگ انگلستان تا ابتدای قرن ۲۰، شامل استفاده در جنگ بوئر (Boer)، مورد استفاده قرار می گرفت. آن نمونه ای از رمز بیگرام است. این بدین معنی است که حروف به جای اینکه جداگانه رمز شوند به صورت جفتی رمز می شوند. کلید، مربع ۵×۵ ای است (با ۲۵ حرف الفبا که با حذف J بدست آمده) و دارای ۲۵! کلید یا

۱۵,۵۱۱,۲۱۰,۰۴۳,۳۳۰,۹۸۵,۹۸۴,۰۰۰,۰۰۰

کلید می باشد. قبل از استفاده از روش Playfair برای رمزگذاری باید کمی متن بازچینی شود.

برای این کار:

  • بجای حرف J، I را جایگزین کنید.
  • پیغام را به صورت جفتهایی از حروف بنویسید.
  • اجازه وقوع یک جفت همسان ندهید. اگر چنین اتفاقی افتاد، حرف Z را بین آنها اضافه کنید.
  • اگر تعداد حروف فرد شد یک حرف Z به انتهای پیغام اضافه کنید.

برای نشان دادن طرز کار این روش کلید خاصی را انتخاب کردیم. در هر صورت دلیل خاصی برای انتخاب این کلید وجود ندارد.

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

قانون های رمزگذاری در زیر آمده است:

  • اگر ۲ حرف در یک سطر باشند به جای هر حرف، حرف سمت راستش را در کلید پیشرفته جایگزین می کنیم.
  • اگر ۲ حرف در یک ستون قرار بگیرند، بجای هر حرف، حرف پایینی اش را در کلید پیشرفته جایگزین می کنیم.
  • اگر ۲ حرف در یک سطر ستون قرار نداشته باشند، حرف اول با حرفی که در سطر حرف اول و ستون حرف دوم جایگزین می شود و حرف دوم با حرفی که گوشه چهارم چهارضلعی که ۳ راس اش قبلاً بدست آمده جایگزین می شود.

حال ما پیغام روبرو را رمز می کنیم :

GOOD BROOKS SWEEP CLEAN

تا اینجا هیچ حرف J در پیغام وجود ندارد و فقط ما حروف را به صورت جفتهایی همراه با اضافه کردن Z های اضافه مناسب بازنویسی می کنیم که نتیجه به صورت زیر درمی آید:

GO OD BR OZ OM SZ SW EZ EP CL EA NZ

این جفتها برای کلید پشرفته ما اینچنین است که؛ GO می شود FP، OD می شود UT، OM می‌شود PO. متن رمز شده کامل اینگونه است:

FP UT EC UW PO DV TV BV CM BG CS DY

به همان راحتی که در رمزهای جانشینی ساده توضیح داده شد، می توان عباراتی را به عنوان عبارت کلید برای تعیین ماتریس کلید در این روش نیز به کار برد. طرز کار به همان صورت رمزهای جانشینی ساده است. به اینصورت که: عبارت کلید را بنویسید، حروف تکراری را حذف کنید و سپس حروف استفاده نشده در الفبا را به ترتیب الفبا در انتهای عبارت اضافه کنید. برای مثال اگر که عبارت کلید؛ UNIVERSITY OF LONDON باشد، با حذف حروف تکراری می شود UNIVERSTYOFLD و مربع کلید را می توانید در دیاگرام بعدی ببینید.

رمزگشایی معمولاً پروسه ی معکوس رمزنگاری است.

اگر کسی مایل باشد که واقعاً بفهمد که روش Playfair چگونه کار میک ند باید متن MBOUBTZE را بتواند با جدول کلید نشان داده شده در زیر رمزگشایی کند (جواب یک کلمه ۷ حرفی انگلیسی است). قصد ما در مورد روشهای رمزگشایی این رمز نیست. مثالهای بسیار زیاد دیگری از روشهایی که آسان برای شرح دادن و جالب برای کار با آنها هستند، وجود دارد. مراجع مناسبی در انتهای این کتاب ارائه شده.

کدگذاری همنوا

راهی دیگر برای اصلاح رمز جانشینی ساده می تواند افزایش و گسترش الفبا به وسیله اضافه کردن بعضی از کاراکترهای اضافی به این صورت که، برای مثال حرف E در یک متن ساده می تواند با بیشتر از یک حرف در متن رمز شده نمایش داده شود.

این کاراکترهای اضافی با نام عناصر تصادفی شناخته می شوند و عمل فرآیند افزایش الفبا را کدگذاری همنوا می نامند. برای نمایش ممکن است رمزی داده شود که الفبا برای متن رمز شده به صورت اعداد باشند به این صورت ۳۱,…,۰۳,۰۲,۰۱,۰۰٫ هر عدد متن رمز نشاندهنده یک حرف متن اصلی منحصر به فرد است اما حروف A، E، N، O، R و T هرکدام به وسیله دو حرف جدا نشان داده می‌شوند.

برای نمایش این موضوع در دیاگرام زیر ما اعدادی را به حروف اختصاص داده ایم.

اگر ما این دیاگرام را بکار ببریم کلمه TEEETH که دارای ۲ جفت از حروف تکراری است ممکن است اینگونه نوشته شود ۲۴  ۲۷  ۱۳  ۰۸  ۳۱٫ برای کسی که کلید را در اختیار ندارد ۵ حرف مختلف در متن رمز شده وجود دارد اما دریافت کننده ی اصلی که کلید را دارد این اشتباه خطرناک را نخواهد کرد.

۶ حرفی که انتخاب شده بودند مشابه رایجترین حروف در متنها هستند. اگر برای مثال داشته باشیم که ۲ عدد منتخب تصادفی نشان دهنده وقوع حرف E باشند در آنصورت می توان انتظار داشت که هر ۲ عددی در حدود ۶% از کل متن رمز شده را اشغال کند. به طور کلی اثر کدگذاری همنوا به صورت مسطحتر شدن نمودار فراوانی نسبی حروف در متن رمز می شود در حالی که این نمودار برای متن اصلی به همان صورت قبل است. این کار حمله آماری را بسیار مشکلتر می کند.

نکته ۱: درا ین رمز ما بجای ۲,۱,۰ قراردادیم ۰۲,۰۱,۰۰ و غیره. هنگامی که از فاصله ها استفاده نشده باشد، این نوع نمادسازی نیاز به تمایز بینشان دارد. به عنوان مثال، Twelve و
one fllowed by two.

نکته ۲: شکستن رمز با رمزجانشینی ساده ی معمولی نسبتاً راحت است و ما امیدواریم تمام خوانندگان موفق به شکستن پاراگراف طولانی متن رمز شده که قبلاً ذکر شده، شوند. شکستن این نوعی که ما اینجا در موردش بحث کردیم احتیاج به شانس و صبر و طاقت نسبتاً بیشتری دارد. هرکس مجبور به شکستن اینگونه رمزها است و یا از اینگونه معماها لذت می برد باید تلاش کند تا متن رمز شده زیر را بخواند. تنها اطلاعات که در اختیارتان گذاشته می شود این است که نوشته به زبان انگلیسی است و توسط رمز جانشینی ساده با کدگذاری همنوا که قبلاً ذکر شده رمز شده. کلید مشخص نیست ولی آن لیستی که قبلاً ارائه شد نیست. به علاوه کلمات در گروههای ۵ تایی نوشته شده اند. (این به این معنی است که حمله کننده نمی تواند کلمات کوچک را تشخیص دهد مخصوصاً آنهایی که یک حرف دارند) این متن ابداً ساده نیست و خوانندگان مجبور نیستند که آنرا انجام دهند.

رمزهای چند الفبایی

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

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

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

رمزهای ویگنر

رمز ویگنر شاید بهترین رمز چند الفبایی معمولی شناخته شده باشد که از روی نام بلیز دو ویگنر (Blaise de Vigenere) که یک دیپلمات فرانسوی در قرن ۱۶ میلادی بود گرفته شد. با اینکه این رمز در سال ۱۵۸۶ انتشار یافت، تا ۲۰۰ سال بعد به طور وسیعی مورد بحث قرار نگرفته بود و سرانجام در میانه قرن ۱۹ میلادی توسط کاسیسکی (Kasiski) و بابیچ (Babbage) شکسته شد. جالب توجه است که رمز ویگنر به وسیله فدراسیون نظامی در جنگهای داخلی آمریکا مورد استفاده قرار گرفت. جنرال الیس اس گرانت (S.Grant Ulysses) درباره این رمز گفته:

رمز ویگنر برای انجام عمل رمزگذاری از یک مربع ویگنر استفاده می کند. در ستون سمت چپ این مربع الفبای انگلیسی جا داده شد و برای هر حرف، سطری با شروع از آن حرف و با نوشتن یک دو کامل الفبا تعیین می شود. همچنین هر حرف در تسون سمت چپ، که ستون کلید نام دارد، یک رمز سزار را به ما می دهد به طوری که شیفت هر حرف از روی همان حرف تعیین می شود. به عنوان مثال حرف g رمزسزاری با شیفت ۶ را می دهد.

======