همه چیز درمورد رمزنگاری (Cryptography)
رمزنگاری دانشی است که بر روی روش های انتقال یا ذخیره اطلاعات به صورت امن تمرکز دارد. در این مقاله به بررسی اولیه رمزنگاری پرداخته می شود.
آیا شما هم در دوران کودکی، زبان رمزی برای صحبت با دوستتان ایجاد کرده بودید؟ با این حال لذت این بازی ها معمولاً به رمزنگاری و رمزگشایی پیام ها و مخفی بودن آن ها بود، وگرنه احتمالاً محتوای پیام ها ارزش چندانی نداشت.
یا شاید هم تا به حال روی رقم چک ها را با نوار چسب شفاف پوشانده باشید.
همهی این کارها، به نوعی در حوزه امنیت ارتباطات (Communication Security) و امنیت اطلاعات (Information Security) قرار می گیرند.
تاریخچه رمزنگاری
پادشاهان کهن نیز همیشه در حفظ امنیت پیام های خود دچار مشکل می شدند. حفظ پیام و اطمینان از صحت آن وقتی هفته ها و ماه ها طول می کشید تا نامه ای از گوشه ی یک امپراطوری به گوشه ی دیگر برسد، چندان ساده نبود. با این حال حفظ امنیت اطلاعات در آن دوران به شکل های متفاوتی انجام می شد.
به عنوان مثال هنگامی که ژوليوس سزار پيام هایی را براي فرمانده ارتش خود در جنگ می فرستاد از بيم كشته شدن يا خيانت پيک، در تمام متن نامه خود هرحرف را با حرفي كه سه تا بعد از آن قرار گرفته بود عوض می كرد. (مثلاً بجای A حرف D و بجاي B حرف E را قرار می داد.) با اين كار متن حالت معنی دار خود را از دست می داد و تنها كسی می توانست از مفهوم متن چيزی بفهمد كه به رمز آن (يعني Shift by 3 ) آگاهی داشته باشد.
پادشاهان ایران در آن زمان از روش دیگری استفاده می کردند، زیرا نگرانی آن ها بیشتر به دلیل تغییر محتوای پیام بود. به همین علت، نامه های مهم دو بار نوشته شده و توسط دو چاپار که یکدیگر را نمی شناختند از دو مسیر مختلف به سمت مقصد فرستاده می شدند. دریافت کننده تنها بعد از دریافت دو نسخه و اطمینان از یکسان بودن آن ها، دستورات مطرح شده در نامه را اجرا می کرد.
در کشور ما هم از کد گذاری و نماد ها استفاده می شد ولی هدف آن ها عموما حفاظت اطلاعات نبوده است. به عنوان مثال جابر ابن حیان از نماد ها برای تعریف سبک فرمول های شیمیایی خود استفاده کرده بود و اساساً به فرمول نویسی و کدگذاری علاقه ی خاصی داشت.
معرفی رمزنگاری
در دنيای شبكه های كامپيوتری، رمزنگاری سلسله ای از عمليات رياضی می باشد كه مجموعه ای از اطلاعات خالص و قابل فهم را به مجموعه ای از اطلاعات غيرقابل فهم، بی معنا و بلا استفاده تبديل می كند، به گونه ای كه فقط گيرنده اصلی بتواند آن را از حالت رمز خارج و از آن بهره برداری نمايد. امروزه رمزنگاری داده ها، نقش بسیار مهمی در تامین امنیت شبکه های کامپیوتری دارند و بدون این الگوریتم ها، اساسا امکان ارسال ایمن اطلاعات در فضای شبکه وجود نخواهد داشت.
داده هایی كه به راحتی قابل فهم هستند و هيچ نكته و ابهام خاصی در درک آن ها وجود ندارد، متن آشكار (Plain text) ناميده می شوند.
روشی كه باعث می شود متن ساده، حالت قابل درک و فهم خود را از دست بدهد رمزنگاري (Encryption) ناميده می شود.
در مقابلِ علم رمزنگاری، علم تحليل رمز (Cryptoanalysis) قرار دارد كه روش های تجزيه و شكستن رمز اطلاعات (بدون نياز به كليد) و كشف كليد رمز را مورد بحث قرار می دهد.
الگوريتم يا روشی كه بر اساس آن متن رمز می شود بايد به گونه ای قابل برگشت (وارون پذير) باشد تا بتوان به متن اصلی دست پيدا كرد.
رمزهای کلاسیک
- جانشینی (substitution)
- جایگشت – جابه جایی (Transposition-Permutation)
روش جانشينی
روش جانشينی قديمی ترين نوع رمزنگاری می باشد كه اولين بار سزار آن را بكار برد. البته اين روش بعداً بهبود داده شد و بجای آن كه تمام حروف به طور منظم و با قاعده به يكديگر تبديل شوند، حروف الفبا طبق يک قاعده نامشخص كه “جدول رمز” ناميده می شد به هم تبديل می شدند.
رمز تک الفبایی
در رمز تک الفبایی (Monoalphabetic)، همواره یک حرف با یک حرف مشخص جایگزین می شد.
شايد حس كنید كه اين روش امروزه نیز بسیار مفيد خواهد بود، چرا كه جدول رمز دارای 26 ! (معادل 1026*4) حالت متفاوت خواهد بود و امتحان تمام اين حالات مختلف برای يافتن جدول رمز مشكل است.
در حالي كه چنين نيست و اين نوع رمزنگاری برای متون معمولی در كسری از ثانيه و بدون كليد رمز شكسته خواهد شد.
روش های شکستن روش جانشینی
اولين اقدام در رمزشكنی (رمزشكنی همان رمزگشایی، بدون در اختيار داشتن كليد يا جدول رمز می باشد.)، تحلیل آماری متن رمز شده می باشد. در نتیجه هر كاراكتری كه بيش از همه در متن تكرار شده باشد معادل e و به همين ترتيب ادامه می يابد. البته ممكن است برخی از حروف اشتباه درنظر گرفته شوند ولی می تواند در مراحل بعدی اصلاح شود.
دومين نكته این می باشد كه حروف كنار هم وابستگی آماری به یکدیگر دارند. مثلاً در 99/9 درصد مواقع در سمت راست حرف q، حرف u قرار گرفته (qu)، يا در كنار حرف t معمولاً (البته با احتمال پائين تر) h قرار گرفته است و هرکدام کشف شود، دیگری نیز آشکار خواهد شد.
سومين نكته نيز در مورد سه حرفی ها می باشد. مثلاً در زبان انگليسی سه حرفی های and, the, ing, ion بسیار استفاده می شوند که می تواند ملاک رمزشكنی قرار بگيرند.
چهارمين نكته، مراجعه به فرهنگ لغات يک زبان است كه بر اساس پيدا شدن چند حرف از يک كلمه رمز بقيه حروف آن نيز آشكار می شود.
براي رمزگشایی روش جانشینی، گيرنده پيام بايد كليد جايگشت را بداند که جهت راحت تر به خاطر سپردن كليد رمز، يک كليد متنی انتخاب می شود و سپس جايگشت بر اساس ترتيب حروف كلمه رمز انجام می شود.
رمز چند الفبایی
در رمز چند الفبایی (Polyalphabetic) ممکن است یک حرف هر بار با یک حرف جدید جایگزین شود.
- استفاده از مجموعه ای از جانشینی های تک الفبایی مختلف بصورت متوالی.
- کلید نمایانگر این است که چه ترتیبی از قواعد جانشینی باید به کار برده شود.
- همچنان میتوان از توزیع حروف، جهت شکستن رمز استفاده کرد.
مثال : جانشینی Vigenere
- نوعی رمز جانشینی تک حرفی چند الفبایی محسوب می شود.
- از یک ماتریس 26 در 26 و یک کلید برای رمزگذاری متن استفاده می کند.
- حروف متوالی کلید، سطر ماتریس و حروف متوالی متن، ستون ماتریس را مشخص می کنند.
- کلید معمولا یک کلمه چند حرفی است که تکرار می شود.
- برای رمزگذاری و رمزگشایی از تابلوی رمز Vigenere میتوان استفاده نمود.
رمزگذاری
- ستون = حرف موردنظر
- سطر = حرف کلید
- محل تقاطع = رمزشده حرف موردنظر
رمزگشایی
- سطر= حرف کلید
- محل تقاطع = حرف رمز شده
- ستون = حرف رمزگشایی شده
تحلیل رمز Vigenère
برای هر حرف، جانشین های مختلفی را به کار می برد که موجب می شود تحلیل فرکانسی مشکل شود، ولی کاملا غیرممکن نمی باشد. ابتدا باید مشخص کرد که جانشینی تک الفبایی است یا خیر که با تحلیل فرکانس حروف به سادگی این مساله مشخص می شود.
در صورت استفاده از Vigenere میتوان از روش Kasiski طول کلید را به دست آورد.
گسترش کلید به اندازه متن آشکارهم مشکل را حل نمی کند، زیرا خصوصیات توزیع حروف در کلید حاصله مشکل آفرین می باشد.
روش Kasiski بر مبنای یافتن الگوهای تکراری (عموماً سه حرفی) در متن رمزشده و پیدا کردن طول کلید مورد استفاده، استوار است.
رمز هم آوایی
در رمز هم آوایی (Homophonic) ممکن است یک حرف با چند حرف جایگزین شود.
- جهت متوازن ساختن فراوانی حروف:
- حروف با فروانی زیاد (مثل e) با چند نماد جایگزین می شوند.
- حروف با فراوانی زیاد (مثل z) با یک نماد جایگزین می شوند.
- نمادها می توانند نام اشخاص، موقعیت ها و … باشند.
رمز چند نگاری
در رمز چند نگاری (Polygraphic) چند حرف با چند حرف جایگزین می شوند.
حالت ساده: دو نگاری ( Digraphic)
- جایگزینی دو حرف با دو حرف
- نمونه: رمز Playfair
- ماتریس 5 در 5 بر اساس کلید و 4 قانون ساده
حالت کلی
- جایگزینی چند حرف با چند حرف
- نمونه: رمز Hill
- استفاده از جبرخطی برای رمزنگاری.