دنیای سری کدها و رمزها
هر کدام از ما وقتی به دنیای مأموران مخفی و جاسوسان فکر میکنیم، چیز های زیادی به ذهنمان میرسد: سفرهای خارجی، مأموریت های خطرناک، اسلحه های عجیب و ماشین های سریع. کم تر کسی است که در کنار این مسائل به ریاضیات فکر کند. اما باید بدانیم ریاضیات در کشف پیام های سری و شکستن رمزها نقش اساسی بازی میکند و در طول تاریخ ریاضی دانها نتیجه ی نبردهای فراوانی را با شکستن رمزها، تغییر داده اند.
اولین بار سزار ( امپراتور رم باستان ) برای آن که بتواند بدون اطلاع دشمن با ا ارتش خود در سراسر دنیا ارتباط برقرارکند، نوعی رمز را به کار گرفت. این رمز به این شکل بود که برای فرستادن یک پیام جای هر حرف را با سومین حرف بعد از آن در حروف الفبا عوض میکردند، مثلاً به جای"A" حرف"D" و به جای"X" حرف"A" را قرار می دادند.
بنابراین برای از کد خارج کردن پیامها کافی بود که دریافت کننده جای هر حرف را با سومین حرف بعد از آن در الفبا عوض کند. مثلاً سعی کنید این پیغام سزاری را از رمز خارج کنید:
hqhpb dssurdfklqj
wkluwb ghdg
uhwuhdw wr iruhvw
حال ممکن است بپرسید چه ریاضیاتی در کار است. ریاضی وقتی وارد ماجرا میشود که به هر حرف، یک عدد نسبت دهیم. در این صورت فرایند کد کردن مانند اضافه کردن عدد 3 به عدد اولیه خواهد بود
A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z |
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 |
مثلاً برای به رمز درآوردن"A" : داریم0+3=3
برای این که در مورد حرف های پایانی الفبا دچار مشکل نشویم، بهتر است به جای جمع معمولی از جمع به پیمانه ی 26 استفاده کنیم، یعنی به جای هر عدد، از باقی مانده ی تقسیم آن عدد بر 26 استفاده کنیم. به مثال های زیر توجه کنید:
برای"X" داریم: (به پیمانه 26) 23+30
برای"Y" داریم: (به پیمانه 26) 24+3=271
برای"T" داریم: (به پیمانه 26) 19+3=2222
برای از رمز خارج کردن هم میتوانیم از تفریق به پیمانه ی 26 استفاده کنیم. واضح است که میتوانیم به جای انتقال 3 تایی از هر انتقالی بین 1 تا 25 استفاده کنیم، اما همان طور که احتمالاً حدس زده اید شکستن این رمز خیلی ساده است؛ یعنی یک جاسوس میتواند با امتحان کردن همه ی 25 انتقال ممکن، به سرعت رمز را بشکند.
با روشی که توضیح دادیم این نوشته را از رمز خارج کنید: RFYM KTW FQQ
حال به سراغ یک روش پیچیده تر میرویم. فرض کنید به ازای هر حرف الفبا یک علامت جایگزین کنیم، مثلاً "*" به جای"A" و "+" به جای "B". مانند رمزی که ماری ( ملکه ی اسکاتلند ) برای مکاتباتش بر علیه الیزابت اول ( ملکه ی انگلیس ) به کار میگرفت و نمونه ی آن را میبینید.
کد مورس و الفبای بریل هم در حقیقت رمزهایی از این نوع هستند.
تا مدتها کسی فکر نمیکرد که شکستن این رمز ممکن باشد تا این که آمار ریاضی وارد عمل شد.
نموداری که میبینید فراوانی حروف الفبا را در زبان انگلیسی نشان می دهد. این اطلاعات از شمارش حروف مختلف در حجم زیادی از نوشتهها مانند کتابها و روزنامهها به دست آمده است. این نمودار نشان میدهد که به طور میانگین 13.5 درصد از حروف به کار رفته در متن های انگلیسی، E است که فراوان ترین حرف الفبا می باشد. بنابراین وقتی رمزی از نوع بالا داریم، احتمالاً علامتی که بیش از همه تکرار میشود، علامت متناظر E است و فراوان ترین علامت بعد از آن متناظر "T" است. سرنخ های دیگری هم وجود دارد. مثلاً تنها دو کلمه ی یک حرفی در انگلیسی وجود دارد: "I" و "A" و هم چنین"AND" و"THE" کلمات معمولی هستند. با کمک این سرنخها و کمی آزمایش و خطا میتوان این گونه رمزها را شکست. همین روش باعث شد که ماری سرش را از دست بدهد.
بهتر است سعی کنیم جدولی مانند جدول بالا برای زبان فارسی تهیه کنیم. برای شروع با بررسی متن های در دسترس، سه حرف از فراوان ترین حروف الفبای فارسی را پیدا کنید.
روش های مطرح شده از روش های مقدماتی رمز نگاری و رمزگشایی و شکستن رمزها بود. برای مطالعه ی بیش تر در این زمینه میتوانید به این کتاب مراجعه کنید:
آشنایی با رمزگشایی به روش ریاضی، آبراهام سینکوف، ترجمه عبادالله محمودیان، ریاضیات پیش دانشگاهی - 22 ، مرکز نشر دانشگاهی، 1374
نویسنده: سید عباس موسوی