تکنیک های رمزنگاری کلاسیک در شبکه چیست؟ – به زبان ساده
رمزهای «تکالفبایی» (Monoalphabetic)، «پلیفر» (Playfair)، «هیل» (Hill) و غیره چند مورد از تکنیک های رمزنگاری کلاسیک هستند. این تکنیک ها جزو اولین و سادهترین روشهاییاند که انسانها برای مخفی کردن اطلاعات و پیامهای خود به کار میبردند. تکنیک های رمزنگاری کلاسیک در دسته «رمزنگاری متقارن» قرار میگیرند. آشنایی با این روشها و یادگیری نحوه کار آنها تاثیر زیادی در درک روش کار تکنیک های رمزنگاری مدرن و پیشرفته دارد. مهندسان کامپیوتر، شبکه و امنیت اطلاعات باید با انواع روشها آشنا باشند. در این صورت میتوانند از اطلاعات و حریم خصوصی خودشان، سیستمها و کاربران تحت مدیریتشان مراقبت کنند.
- با لغات تخصصی مهم رمزنگاری آشنا میشوید.
- میتوانید مهمترین تکنیک های رمزنگاری کلاسیک را نام ببرید.
- تمام مراحل کار برای تبدیل متن ساده به متن رمزی را از ابتدا تا آخر میآموزید.
- با تکنیکهای «جایگزینی» و «جابهجایی» و تفاوت آنها در رمزنگاری آشنا میشوید.
- رمز سزار را میآموزید و میتوانید به راحتی با کمک آن پیام خود را به رمز تبدیل کنید.
- با حملات تحلیل رمز و «Brute-Force» و روش مقابله با آنها آشنا میشوید.


در این مطلب از مجله فرادرس به بررسی مشهورترین تکنیک های رمزنگاری کلاسیک میپردازیم. ابتدا مفهوم رمزنگاری کلاسیک را تعریف میکنیم. بعد از آن هم مهمترین تکنیک های این حوزه را بررسی خواهیم کرد. در انتهای مطلب نیز، روش رمزنگاری متقارن را به شکل کوتاه و مختصر توضیح میدهیم.
تعریف رمزنگاری کلاسیک
رمزنگاری کلاسیک با نامهای «رمزنگاری متقارن» (Symmetric Encryption)، «رمزنگاری سنتی» (Conventional Encryption) یا «رمزنگاری تککلیدی» (Single-Key Encryption) نیز شناخته میشود. این روشها، تنها نوع رمزنگاری مورد استفاده تا پیش از پیدایش رمزنگاری کلید عمومی در دهه ۱۹۷۰ بودند.
برای درک مفهوم رمزنگاری لازم است که با اصطلاحات تخصصی این حوزه آشنا بشویم. در فهرست پایین چند مورد از اصطلاحات تخصصی رمزنگاری را تعریف کردهایم.
- علم «رمزنگاری» (Cryptography): به مجموعه روشهای به کار برده شده برای رمزگذاری، علم «رمزنگاری» گفته میشود.
- «تحلیل رمز» (Cryptanalysis): روشهایی که برای رمزگشایی پیام بدون داشتن اطلاعات مربوط به جزئیات رمزگذاری به کار میروند در حوزه «تحلیل رمز» یا «رمزگشایی» قرار میگیرند.
- «رمزشناسی» (Cryptology): حوزههای رمزنگاری و رمزگشایی در کنار یکدیگر «رمزشناسی» را تشکیل میدهند.
- «متن ساده» (Plaintext): پیام اصلی را «متن ساده» یا Plaintext مینامند.
- «متن رمزی» (Ciphertext): پیام رمز شده، «متن رمزی» یا Ciphertext نام دارد.
- «رمزگذاری» (Encryption): به فرایند تبدیل متن ساده به متن رمزی، «رمزگذاری» یا Encryption میگویند.
- «رمزگشایی» (Decryption): بازیابی متن ساده از متن رمزی «رمزگشایی» یا Decryption نامیده میشود.
سیستمهای رمزنگاری را بر اساس سه موضوع اصلی و مستقل از هم تعریف میکنیم.
- عملیات مورد استفاده برای تبدیل متن ساده به متن رمزی
- تعداد کلیدهای مورد استفاده
- نحوه پردازش متن ساده
در ادامه هر سه موضوع را بررسی کردهایم.
عملیات مورد استفاده برای تبدیل متن ساده به متن رمزی
تمام الگوریتمهای رمزگذاری بر اساس دو اصل کلی زیر، بنا شدهاند.
- جایگزینی (Substitution): در این روش، هر بخش از متن اصلی (مانند حرف الفبا، بیت یا گروهی از حروف/بیتها) با بخش دیگری جایگزین میشود.
- جابجایی (Transposition): در این روش، ترتیب عناصر متن اصلی تغییر میکند و در هم ریخته میشوند.
مهمترین اصل این است که هیچ اطلاعاتی حذف نشود و بتوان تمام مراحل را به عقب برگرداند. بسیاری از سیستمها که «سیستمهای حاصلضرب» نام دارند، با تکرار فرآیندهای جایگزینی و جابجایی، این کار را انجام میدهند.
تعداد کلیدهای مورد استفاده
درباره تعداد کلیدهای مورد استفاده، دو نکته مهم وجود دارند.
- نکته اول: اگر فرستنده و گیرنده از کلید یکسانی استفاده کنند، سیستم «متقارن»، «تککلیدی»، «کلید محرمانه» یا «رمزگذاری مرسوم» نامیده میشود.
- نکته دوم: اگر فرستنده و گیرنده از کلیدهای متفاوتی استفاده کنند، سیستم «نامتقارن»، «دو-کلیدی» یا «رمزگذاری کلید عمومی» نامیده میشود.

نحوه پردازش متن ساده
با دو روش مختلف میتوان متن ساده (یا همان پیام اولیه) را پردازش کرد.
- رمز بلوکی (Block Cipher): این نوع الگوریتمها دادهها را به صورت بلوکی پردازش میکنند. همچنین برای هر بلوک ورودی، یک بلوک خروجی تولید میکنند.
- رمز جریانی (Stream Cipher): این نوع الگوریتمها عناصر ورودی را به طور مداوم پردازش میکنند. همزمان با پیشرفت کار در هر لحظه یک عنصر در خروجی تولید میکنند.
تکنیک های رمزنگاری کلاسیک
در این بخش، چند نمونه از «تکنیک های رمزنگاری کلاسیک» را نام بردهایم. با مطالعه این تکنیکها میتوانیم رویکردهای اساسی رمزنگاری متقارن (که امروزه استفاده میشود) را بررسی کنیم.
همینطور که در بخشهای قبلی اشاره کردیم، دو بلوک ساختمانی اساسی در تمام تکنیکهای رمزنگاری وجود دارد.
- «جایگزینی» (Substitution): تکنیک جایگزینی، تکنیکی است که در آن حروف متن اصلی با حروف دیگر یا با اعداد یا نمادها جایگزین میشوند. اگر متن اصلی به عنوان دنبالهای از بیتها در نظر گرفته شود، آنگاه جایگزینی شامل جایگزینی الگوهای بیت متن اصلی با الگوهای بیت متن رمز است.
- «جابجایی» (Transposition): در تکنیک جابهجایی هم عناصر متن یا پیام اصلی در همریخته و نامفهوم میشوند.
در فهرست پایین، تکنیک های رمزنگاری کلاسیک را نام بردهایم.
- «رمز سزار» (Caesar Cipher)
- «رمزهای تکالفبایی» (Monoalphabetic Ciphers)
- «رمز پلیفر» (Playfair Cipher)
- «رمز هیل» (Hill Cipher)
- «رمزهای چندالفبایی»
- «رمز ویژنر» (Vigenère Cipher)
- «پد یکبار مصرف» (One-Time Pad)
تا به اینجای مطلب، با مفهوم رمزنگاری و تکنیک های رمزنگاری کلاسی به طور کلی آشنا شدهاید. در ادامه مطلب تمام این تکنیک ها را یک به یک بررسی کرده و توضیح میدهیم. در صورت تمایل به مطالعه مطالبی مانند این مورد، پیشنهاد میکنیم که اپلیکیشن مجله فرادرس را بر روی دستگاههای همراه خود نصب بکنید.
برای نصب اپلیکیشن رایگان مجله فرادرس، کلیک کنید.
در ادامه تمام تکنیکهای بالا را یک به یک معرفی و بررسی میکنیم.
رمز سزار (Caesar Cipher)
رمز سزار اولین مورد از تکنیک های رمزنگاری کلاسیک است که در این مطلب بررسی میکنیم. «ژولیوس سزار» (Julius Caesar) کسی بود که اولین رمز جایگزینی شناخته شده و سادهترین نوع آن را استفاده کرده است.
رمز سزار شامل جایگزینی هر حرف الفبا با حرفی است که سه جایگاه پایینتر از آن در الفبا قرار دارد. برای مثال:
| متن اصلی | متن رمزی |
| meet me after the toga party | PHHW PH DIWHU WKH WRJD SDUWB |
توجه داشته باشید که الفبا به صورت چرخشی عمل میکند، بنابراین بعد از حرف Z، حرف A دوباره ظاهر میشود. این تبدیل را میتوانیم با لیست کردن تمام احتمالات تعریف کنیم. به فهرست پایین توجه کنید.
- متن اصلی
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- متن رمزی
D E F G H I J K L M N O P Q R S T U V W X Y Z A B Cرمزهای تکالفبایی (Monoalphabetic Ciphers)
رمز سزار به هیچ وجه امن نیست، زیرا فقط ۲۵ کلید برای آن قابل استفاده است. با استفاده از «جایگزینی دلخواه» (Arbitrary Substitution)، میتوان «فضای کلید» (Key Space) را به طور قابل توجهی بزرگتر کرد. قبل از ادامه بحث باید «جایگشت» (Permutation) را تعریف کنیم.
- جایگشت، دنباله مرتبی از تمام عناصر مجموعه متناهی است که هر عنصر فقط یک بار در آن ظاهر میشود. برای مثال، اگر باشد، شش جایگشت برای وجود دارد:
به طور کلی، جایگشت برای مجموعهای از عنصر وجود دارد، زیرا عنصر اول را میتوان از بین حالت انتخاب کرد، عنصر دوم از بین حالت، عنصر سوم از بین حالت و به همین ترتیب بیشتر میشود.

یادآوری میکنیم که نگاشت حروف الفبای رمزی در رمز سزار به شکل زیر بود.
- متن اصلی
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- متن رمزی
D E F G H I J K L M N O P Q R S T U V W X Y Z A B Cدر این تکنیک، «جایگشت» حروف الفبای اصلی را برای ایجاد الفبای رمز جدید تعریف میکنیم. نکته مهم آن است که هر حرف الفبای اصلی همیشه به حرف رمز ثابتی نگاشت میشود. این نگاشت هرگز در کل پیام تغییر نمیکند. به این دلیل که فقط از «یک الفبای رمز» برای کل پیام استفاده میشود، به آن «تکالفبایی» میگویند.
از آنجایی که الفبای رمز میتواند هر جایگشتی از ۲۶ حرف باشد، تعداد کلیدهای ممکن به !۲۶ (بسیار بزرگتر از ۱۰ به توان ۲۶) میرسد. در این صورت، رمزگشایی با روش آزمون و خطا بسیار دشوار میشود. این نوع رمزها، رمز «تکالفبایی» نامیده میشوند. دلیل این نامگذاری آن است که هر حرف در متن اصلی، همیشه با یک حرف رمزی مشخص جایگزین میشود. این موضوع آنها را از رمزهای «چندالفبایی» متمایز میکند. در رمزهای چندالفبایی، یک حرف در متن اصلی ممکن است با حروف رمزی متفاوتی جایگزین شود.
اگر خط «رمز» بتواند هر جایگشتی از ۲۶ کاراکتر الفبا باشد، آنگاه !۲۶ یا بیش از کلید ممکن وجود خواهد داشت. این تعداد کلید ۱۰ برابر فضای کلید در DES است و روشهای «جستجوی فراگیر» (Brute-Force) را برای «رمزگشایی» (Cryptanalysis) غیرممکن میسازد. این روش «رمز جایگزینی تکالفبایی» نامیده میشود، چون در هر پیام از یک الفبای رمزی ثابت استفاده میکند (نگاشت حروف الفبای اصلی به الفبای رمزی).
با استفاده از تمام جایگشتهای ممکن برای الفبای رمزی (به جای شیفت ثابت در رمز سزار)، تعداد کلیدهای ممکن به طور چشمگیری افزایش مییابد. این تعداد بسیار بزرگ است و در واقع جستجوی تمام کلیدهای موجود را غیرممکن میسازد. بنابراین امنیت رمزهای جایگزینی تکالفبایی نسبت به رمز سزار به شدت افزایش پیدا میکند. با این حال، این نوع رمزها همچنان در برابر حملاتی که از «تحلیل فراوانی» حروف (Frequency Analysis) استفاده میکنند، آسیبپذیر هستند.
چطور با کمک فرادرس رمزنگاری را یاد بگیریم؟
فرادرس مجموعه آموزش اختصاصی درباره آموزش هرچه بهتر رمزنگاری تولید و منتشر کرده است. رمزنگاری و امنیت اطلاعات تاثیر مستقیم و زیادی در حفاظت از دادهها و مقابله با تهدیدات امنیتی در حوزه فناوری اطلاعات دارند. رمزنگاری شامل تکنیکهایی مانند رمزنگاری متقارن با کلید عمومی، رمزنگاری نامتقارن با جفت کلیدهای عمومی و خصوصی و رمزنگاری هش است. تمام افرادی که میخواهند در حوزه امنیت سایبری فعالیت کنند باید با این تکنیکها آشنا باشند.

به منظور کمک به یادگیری مفاهیم و روشهای مهم رمزنگاری، فرادرس برای مهندسان کامپیوتر، برنامه نویسان و افراد علاقهمند به این حوزه، مجموعهای از فیلمهای آموزشی را تولید کرده است. فیلمهای مذکور بسیار جامع بوده و تقریبا بیشتر بخشهای این حوزه را پوشش میدهند. با مشاهده آنها میتوانید مهارت خود را در حوزه رمزنگاری دادهها افزایش بدهید.
- فیلم آموزش رمزنگاری Cryptography در دات نت .NET
- فیلم آموزش ساخت اپلیکیشن چت با رمزنگاری سراسری در جاوا و نود جی اس
- فیلم آموزش رایگان الگوریتم های رمزگذاری و رمزنگاری شبکه های بی سیم
- فیلم آموزش امنیت اطلاعات و رمزنگاری + گواهینامه
در بخش بعد تکنیک رمزنگاری پلیفر را بررسی میکنیم.
رمز پلیفر (Playfair Cipher)
رمزنگاری «پلیفر» معروفترین مثال استفاده از حروف چندتایی است. این روش «جفتحروف» (Digrams) متن اصلی را به صورت واحد در نظر گرفته و آنها را به جفتحروف متن رمزی تبدیل میکند.
الگوریتم پلیفر بر اساس استفاده از ماتریس ۵×۵ از حروف است که با استفاده از کلمه کلیدی ساخته میشود. در پایین مثالی آورده شده است. این مثال توسط لرد «پیتر ویمزین» در رمان «Have His Carcase» اثر «دوروتی سایرز» حل شده است.
| R | A | N | O | M |
| D | B | Y | H | C |
| K | I/J | G | F | E |
| T | S | Q | P | L |
| Z | X | W | V | U |
در جدول بالا «monarchy»، کلمه کلیدی است. ماتریس با قرار دادن حروف کلمه کلیدی (بدون تکرار) از چپ به راست و از بالا به پایین شروع میشود. سپس بقیه خانهها با حروف باقیمانده الفبا تکمیل میشوند. حروف I و J معادل یک حرف به حساب میآیند.
این روش نسبت به رمزهای جایگزینی تکالفبایی، امنیت بیشتری را فراهم میکند. زیرا الگوهای تکرار حروف را پیچیدهتر میکند. در این روش، ابتدا متن اصلی به جفتحروف تقسیم میشود. سپس بر اساس موقعیت این جفتحروف در ماتریس و قوانین خاصی، رمزنگاری انجام میگیرد. در بخش بعد قوانین رمزنگاری پلیفر را نوشتهایم.
قوانین رمزنگاری پلیفر
رمزنگاری به صورت «جفتحروف» (Digrams) و با پیروی از قوانین زیر انجام میشود:
- جدا کردن حروف تکراری در جفت: اگر دو حرف یکسان در جفت قرار بگیرند، حرف دوم با «حرف پرکننده» (Filler Letter) مانند «x» جدا میشود. بنابراین، کلمه «balloon» به صورت «ba lx lo on» در نظر گرفته میشود.
- حروف در سطر: اگر دو حرف متن اصلی در سطری از ماتریس قرار بگیرند، هر کدام با حرف سمت راست خود جایگزین میشوند. حرف اول سطر به صورت دایرهای (Circularly) حرف آخر همان سطر را دنبال میکند. به عنوان مثال، اگر «a» و «r» در سطری باشند، «a» به «R» و «r» به «M» تبدیل میشود. البته با فرض اینکه «R» و «M» حروف سمت راست «a» و «r» در همان سطر باشند.
- حروف در ستون: اگر دو حرف متن اصلی در ستونی از ماتریس قرار بگیرند، هر کدام با حرف زیرین خود جایگزین میشوند. حرف بالایی هر ستون به صورت دایرهای حرف آخر همان ستون را دنبال میکند. به عنوان مثال، اگر «m» و «u» در ستون یکسانی باشند، «m» به «C» و «u» به «M» تبدیل میشود. البته با فرض اینکه «C» و «M» حروف زیرین «m» و «u» در آن ستون باشند.
- قانون کلی (حروف در سطرهای مختلف و ستونهای مختلف): هنگامی که دو حرف متن اصلی نه در یک سطر و نه در یک ستون قرار گیرند، هر حرف با حرفی جایگزین میشود که در سطر همان حرف و ستون حرف دیگر واقع شده است. برای مثال، اگر جفت «h» و «s» را در نظر بگیریم، «h» به «B» (حرفی که در سطر «h» و ستون «s» قرار دارد) و «s» به «P» (حرفی که در سطر «s» و ستون «h» قرار دارد) تبدیل میشود. علاوه بر این، «e» و «a» به «I» و «M» (یا «J» و «M»، بسته به اینکه رمزگذار کدام را انتخاب کند) نگاشت میشوند.

رمز پلیفر پیشرفت بزرگی نسبت به رمزهای جایگزینی تکالفبایی ساده است. این قوانین، اساس کار رمز پلیفر را تشکیل میدهند و آن را به روشی قویتر نسبت به رمزهای جایگزینی تکالفبایی تبدیل میکنند، زیرا در فرآیند رمزگذاری، به ارتباط بین دو حرف در هر جفت توجه میکند.
رمز هیل (Hill Cipher)
«رمز هیل» (Hill Cipher)، یکی دیگر از تکنیک های رمزنگاری کلاسیک است. این تکنیک در میان روشهای رمزنگاریهای چندحرفی دستهبندی میشود. این رمز توسط لستر هیل ریاضیدان در سال ۱۹۲۹ توسعه یافت. رمز هیل الگوریتم رمزنگاری است که در آن، به جای رمز کردن تک به تک حروف به صورت جداگانه، گروهی از حروف برای مثال «m» حرف را با هم در نظر میگیرند و آنها را با گروه دیگری از حروف جایگزین میکند.
مفاهیم جبر خطی
پیش از توصیف رمز هیل، اجازه دهید به طور خلاصه برخی اصطلاحات جبر خطی را مرور کنیم. در این بحث با حساب ماتریسی به پیمانه ۲۶ سروکار داریم.
ماتریس معکوس و همانی
ابتدا باید با مفاهیم ماتریس معکوس و همانی آشنا بشویم.
- ماتریس معکوس (Inverse Matrix): معکوس ماتریس مربعی با نمایش داده میشود. ماتریس معکوس، ماتریسی است که اگر در ماتریس اصلی ضرب شود (چه و چه )، حاصل آن «ماتریس همانی» (Identity Matrix) خواهد بود.
- ماتریس همانی: ماتریس همانی ، ماتریس مربعی است که تمام عناصر آن صفر هستند، به جز عناصر روی قطر اصلی (از بالا سمت چپ به پایین سمت راست) که همگی ۱ هستند. توجه کنید که معکوس ماتریس، همیشه وجود ندارد، اما اگر وجود داشته باشد، این خاصیت را برآورده میکند.
مثال
برای ماتریس ، معکوس آن در پیمانه برابر است با . با ضرب این دو ماتریس در پیمانه ، مشاهده میکنید که نتیجه ماتریس همانی میشود.
مفهوم دترمینان (Determinant)
برای محاسبه معکوس ماتریس، ابتدا باید مفهوم دترمینان را درک کنیم. دترمینان برای هر ماتریس مربعی از طریق جمع جبری حاصل ضرب عناصری به دست میآید که به صورت دقیق یکی از هر سطر و یکی از هر ستون را شامل میشوند. البته برخی از این حاصلضربها علامت منفی خواهند داشت.
- برای ماتریس : ، دترمینان برابر است با .
- برای ماتریس : فرمول پیچیدهتر است و شامل مجموع و تفاضل حاصلضربهای سه عنصری از هر سطر و ستون است.

محاسبه معکوس ماتریس
اگر دترمینان یک ماتریس مربعی ، غیر صفر باشد، آنگاه معکوس آن قابل محاسبه است. فرمول کلی برای محاسبه عنصر ماتریس معکوس به صورت زیر است.
پارامترهای فرمول بالا را در فهرست زیر معرفی کردهایم.
- : معکوس ضربی دترمینان در پیمانه است.
- : این عبارت، علامت را تعیین میکند.
- : این عبارت هم «متمم جبری» (Cofactor) یا «ماتریس کهاد» (Adjugate Matrix) است. ماتریس کهاد با حذف سطر و ستون از ماتریس و محاسبه دترمینان ماتریس باقیمانده به دست میآید.
مثال
دترمینان ماتریس زیر
برابر است با:
در پیمانه 26، این مقدار برابر با 9 میشود ().
حالا باید معکوس ضربی در پیمانه را پیدا کنیم. این یعنی عددی که اگر در ضرب شود، حاصل آن در پیمانه برابر با شود. معکوس ضربی در پیمانه را با نمایش میدهیم. در اینجا، و . پس عبارت زیر برقرار است.
با استفاده از این مقادیر، معکوس ماتریس A محاسبه میشود:
ماتریس بالا با علامتهای مثبت و منفی حاصل از و به دست آمده است.
پس از اعمال عملیات پیمانه بر روی عناصر، به همان ماتریس معکوس اولیه میرسیم.
نکته: بخش مربوط به جزئیات جبر خطی ممکن است در اولین مطالعه کمی پیچیده به نظر برسد، اما درک آن برای فهم چگونگی عملکرد رمز هیل و نقاط ضعف آن در رمزنگاری بسیار مفید است.
الگوریتم رمز هیل
این الگوریتم رمزنگاری، حرف متوالی از متن اصلی را دریافت کرده و آنها را با حرف از متن رمز شده جایگزین میکند. این جایگزینی توسط معادله خطی تعیین میشود. در این معادلهها به هر حرف، مقدار عددی مشخصی اختصاص داده میشود.
- ...

برای حالت این سیستم را میتوان به صورت زیر توصیف کرد:
این را میتوان بر حسب بردارهای سطری و ماتریسها بیان کرد:
یا به صورت خلاصه:
که در آن و بردارهای سطری به طول هستند. این بردارها نمایانگر متن رمز شده و متن اصلی هستند. ماتریس است که کلید رمزگذاری را نشان میدهد. عملیات ریاضی همگی به پیمانه 26 انجام میشوند.
رمزهای چندالفبایی
یکی دیگر از روشهای بهبود رمزهای تکالفبایی ساده، این است که با پیشروی در متن پیام، از چندین روش جایگزینی تکالفبایی متفاوت استفاده کنیم. این روش هم در دسته تکنیک های رمزنگاری کلاسیک قرار میگیرد. نام کلی این روش «رمز جانشینی چندالفبایی» (Polyalphabetic Substitution Cipher) است. تمام این تکنیکها ویژگیهای مشترک زیر را دارند.
- از مجموعهای از قوانین جایگزینی تکالفبایی مرتبط استفاده میشود.
- «کلید» تعیین میکند که برای هر تبدیل، کدام قانون باید انتخاب شود.
تمام تکنیکهای معرفی شده در این مطلب را میتوانید با زبانهای برنامه نویسی، پیادهسازی بکنید. برای مثال رمزنگاری در پایتون یکی از حوزههای تخصصی در این زبان برنامه نویسی است. برای یادگیری این مهارت پیشنهاد میکنیم که مطلب مربوط به آن را در مجله فرادرس مطالعه کنید.
رمز ویژنر
شناختهشدهترین و یکی از سادهترین رمزهای چندالفبایی، «رمز ویژنر» (Vigenère Cipher) است. در این روش، مجموعه قواعد مرتبط جانشینی، شامل ۲۶ رمز سزار است که با شیفتهای ۰ تا ۲۵ ساخته میشوند. هر رمز با حرف کلید مشخص میشود. این حرف همان حرف رمز (Ciphertext) است که جایگزین حرف a در متن اصلی خواهد شد. بنابراین، رمز سزار با شیفت ۳ با مقدار کلید ۳ نشان داده میشود.
میتوان رمز ویژنر را به شکل زیر بیان کرد.
فرض کنید دنباله حروف متن اصلی (P) برابر باشد با و کلید دنبالهای از حروف به صورت باشد. به طور معمول است. دنباله حروف متن رمز برابر با است.
و به این صورت محاسبه میشود:
در نتیجه، حرف اول کلید با حرف اول متن اصلی جمع میشود، حرفهای دوم با هم جمع میشوند، و این روند تا حرف اول متن اصلی ادامه پیدا میکند. برای حرف بعدی متن اصلی، حروف کلید دوباره از ابتدا تکرار میشوند. این فرایند ادامه مییابد تا کل متن اصلی رمز شود.

فرایند رمزگذاری تا پایان دنباله متن اصلی ادامه دارد. معادله کلی رمزگذاری به صورت زیر است.
این معادله را با رمز سزار مقایسه کنید. در واقع، هر حرف متن اصلی، با توجه به حرف متناظر در کلید، به شکلی متفاوت رمز میشود. به همین ترتیب، رمزگشایی نیز تعمیمی از الگوریتم رمزگذاری سزار به حساب میآید.
برای رمز کردن هر پیام، باید کلیدی به اندازه همان پیام داشته باشیم. بیشتر اوقات کلید به صورت «کلمهای تکرار شونده» نوشته میشود. برای مثال، اگر کلمه «deceptive» کلید باشد، پیام «we are discovered save yourself» به شکل زیر رمز میشود:
| کلید | deceptivedeceptivedeceptive |
| پیام | wearediscoveredsaveyourself |
| عبارت رمز شده | ZICVTWQNGRZGVTWAVZHCQYGLMGJ |
رمز ورنام (Vernam Cipher)
«رمز ورنام» (Vernam Cipher)، گزینه دیگری از تکنیک های رمزنگاری کلاسیک است. این روش در سال ۱۹۱۸ توسط گیلبرت ورنام، مهندس شرکت AT&T، معرفی شد. هدف از این تکنیک مقابله بیشتر با رمزگشایی بود. بهترین راه برای مقابله با «تحلیل رمز» (Cryptanalysis) رمزهای چندالفبایی، انتخاب «کلیدواژهای» (Keyword) است که دو شرط اصلی زیر را داشته باشد.
- هماندازه متن اصلی (Plaintext) باشد
- هیچ رابطه آماری با آن نداشته باشد.
سیستم ورنام به جای حروف، بر روی دادههای باینری (بیتها) کار میکند. این سیستم را میتوان به طور خلاصه به شکل زیر بیان کرد:
در فهرست پایین پارامترهای تابع بالا را توضیح دادهایم.
- : شماره i-امین رقم باینری در «متن اصلی» (Plaintext) است.
- : شماره i-امین رقم باینری «کلید» (Key) است.
- : شماره i-امین رقم باینری «متن رمز شده» (Ciphertext) است.
- : عملگر XOR
بنابراین، متن رمز شده با انجام عملیات XOR بیتی بین متن اصلی و کلید تولید میشود. به دلیل ویژگیهای عملگر XOR، فرآیند رمزگشایی نیز به صورت دقیق با همین عملیات بیتی انجام میشود.
نکته: بخش مهم در این روش، چگونگی ساخت کلید است. ورنام (Vernam) پیشنهاد کرد که از نوار حلقهای چرخانی استفاده شود که کلید را تکرار میکرد. در نتیجه، این سیستم در عمل با کلید بسیار طولانی اما تکراری کار میکرد. البته این نوع طرح با کلید طولانی، چالشهای قابل توجهی در رمزگشایی ایجاد میکند. اما با داشتن حجم کافی از متن رمز شده، یا با استفاده از بخشهایی از متن اصلی که شناخته شده یا قابل حدس زدن هستند (یا هر دو)، این رمز نیز قابل شکستن است.
پد یک بار مصرف (One-Time Pad)
افسر «یگان سیگنال ارتش» (Army Signal Corp)، «جوزف موبورن» (Joseph Mauborgne)، اصلاحیه مهمی برای رمز ورنام پیشنهاد داد. این ارتقا ساختار، حداکثر امنیت ممکن را فراهم میکند. موبورن چند پیشنهاد مهم درباره اصلاح کلید کرد.
- از کلیدی استفاده شود که به طور کامل تصادفی است.
- طول این کلید باید به اندازه طول پیام باشد. در نتیجه دیگر نیازی به تکرار کلید نیست.
- علاوه بر موارد بالا هر کلید باید فقط برای رمزگذاری و رمزگشایی پیام مشخصی به کار برده شده و سپس دور انداخته شود. یعنی اینکه هر پیام جدید به کلید جدیدی با طول هم اندازه خودش نیاز دارد.

این روش، «پد یک بار مصرف» (One-Time Pad) نام دارد و غیرقابل شکستن است. «پد یک بار مصرف» خروجیای تولید میکند که هیچ رابطه آماری با متن اصلی ندارد. از آنجا که متن رمز هیچ اطلاعاتی از متن اصلی در خود ندارد، میتوان گفت که هیچ راهی نیز برای شکستن آن وجود ندارد.
برای روشن شدن موضوع، مثالی را بررسی میکنیم. فرض کنید ازطرح ویژنر با ۲۷ نویسه استفاده میکنیم. در این روش، نویسه بیست و هفتم، کاراکتر «فضای خالی» (Space) است. البته از کلید یکبارمصرفی استفاده کردهایم که طولی به اندازه خود پیام دارد. متن رمز زیر را در نظر بگیرید:
ANKYODKYUREPFJBYOJDSPLREYIUNOFDOIUERFPLUYTSکلید اول برابر با «pxlmvmsydofuyrvzwc tnlebnecvgdupahfzzlmnyih» است.
- متن رمز:
ANKYODKYUREPFJBYOJDSPLREYIUNOFDOIUERFPLUYTS- عبارت رمزگشایی شده:
mr mustard with the candlestick in the hallکلید دوم برابر با «pftgpmiydgaxgoufhklllmhsqdqogtewbqfgyovuhwt» است.
- متن رمز:
ANKYODKYUREPFJBYOJDSPLREYIUNOFDOIUERFPLUYTS- عبارت رمزگشایی شده:
miss scarlet with the knife in the libraryفرض کنید تحلیلگر رمز موفق شده باشد این دو کلید را پیدا کند. هر دو متن اصلی به دستآمده معنیدار و معقول هستند. تحلیلگر چگونه میتواند تشخیص دهد کدام رمزگشایی صحیح است (یعنی کدام کلید درست است)؟ اگر کلید واقعی، به طور کامل به شکل تصادفی تولید شده باشد، تحلیلگر نمیتواند بگوید کدام یک از این دو کلید پاسخ قطعی است. بنابراین هیچ راهی برای تصمیمگیری درباره کلید درست وجود ندارد و در نتیجه هیچ راهی برای تعیین متن اصلی واقعی وجود ندارد.
در حقیقت، برای هر پیامی که هماندازه با متن رمز باشد، کلیدی وجود دارد که آن پیام را تولید میکند. بنابراین، اگر تمام کلیدهای ممکن را به صورت کامل و جامع بررسی کنید، به تعداد زیادی متن قابل خواندن خواهید رسید، بدون هیچ شاخصی برای تشخیص اینکه کدام یک اصلی و صحیح است.
امنیت پد یک بار مصرف به شکل کامل به تصادفی بودن کلید بستگی دارد. اگر جریان کاراکترهایی که کلید را تشکیل میدهند تصادفی واقعی باشد، آنگاه جریان کاراکترهایی که متن رمز را تشکیل میدهند نیز به شکل کامل تصادفی خواهد بود. در نتیجه، هیچ الگو یا نظم خاصی وجود ندارد که تحلیلگر رمز بتواند از آن برای حمله به متن رمز استفاده کند.
تکنیکهای جابجایی (Transposition Techniques)
نوع دیگر تکنیک های رمزنگاری کلاسیک مربوط به روشهای جابهجایی دادهها است. تمام تکنیکهایی که تاکنون بررسی شدهاند، شامل جایگزینی کاراکترهای «متن رمز» (Ciphertext) با کاراکترهای متن اصلی (Plaintext) بودند. در این بخش از مطلب، تکنیکهای «رمزنگاری جابهجایی» (Transposition Cipher) را بررسی میکنیم. در این تکنیک با انجام نوعی جایگشت (Permutation) بر روی حروف متن اصلی، نوع متفاوتی از مبهمسازی یا رمزنگاری را انجام میدهیم.
سادهترین نوع این رمزنگاری، «تکنیک حصار راهآهن» (Rail Fence Technique) است که در آن متن اصلی به صورت دنبالهای از قطرها نوشته شده و سپس به صورت دنبالهای از سطرها خوانده میشود.

به عنوان مثال، برای رمز کردن پیام «meet me after the toga party» با عمق ۲ حصار راهآهن، به صورت زیر مینویسیم.
m e m a t r h t g p r y
t e f e t e o a a t
پیام رمز شده عبارت است از.
MEMATRHTGPRYETEFETEOAAT
این نوع روش به سادگی قابل رمزگشایی است. طرح پیچیدهتر این است که پیام را سطر به سطر در مستطیل بنویسیم و سپس ستون به ستون آن را بخوانیم، اما ترتیب ستونها را جابجا کنیم. نکته اینجاست که باید ترتیب ستونها را به کلید الگوریتم تبدیل کنیم. برای نمونه به مثال زیر، توجه کنید.
- کلید: 4312567
| 7 | 6 | 5 | 2 | 1 | 3 | 4 |
- متن اصلی:
| p | k | c | a | t | t | a |
| e | n | o | p | t | s | o |
| t | l | i | t | n | u | d |
| z | y | x | m | a | o | w |
- متن رمز شده:
TTNAAPTMTSUOAODWCOIXKNLYPETZبنابراین، در این مثال، کلید «4312567» است. برای رمز کردن، با ستونی که با ۱ برچسبگذاری شده شروع میکنیم، که در این مورد ستون ۳ است. تمام حروف آن ستون را مینویسیم. سپس به سراغ ستون ۴ که با ۲ برچسبگذاری شده میرویم، سپس ستون ۲، سپس ستون ۱ و بعد ستونهای ۵، ۶ و ۷.
رمزنگاری جابهجایی ساده را میتوان به راحتی تشخیص داد. دلیلش این است که فراوانی حروف آن شبیه متن اصلی است. برای نوع جابهجایی ستونی، تحلیل رمز تقریبا ساده است. این تحلیل شامل قرار دادن متن رمز شده در ماتریس است. سپس باید با موقعیت ستونها بازی کرد. برای حل چنین رمزهایی استفاده از جداول فراوانی جفت حروف (Digram) و سهحروف (Trigram) کمک زیادی میکند.
میتوان امنیت رمزنگاری جابهجایی را با انجام بیش از یک مرحله جابجایی به طور قابل توجهی افزایش داد. در نتیجه جایگشت پیچیدهتری به دست میآید که به راحتی قابل بازسازی نیست. بنابراین، اگر متن قبلی دوباره با استفاده از همین الگوریتم رمزنگاری شود، امنیت آن افزایش مییابد.
مدل رمز متقارن
مدل زمر متقارن یکی از جدیدترین تکنیکهای رمزنگاری است. در این بخش آشنایی کلی با این مدل و لغات تخصصی حوزه رمزنگاری پیدا میکنیم.
- «متن ساده» (Plaintext): پیام یا داده اصلی و قابل فهم که بهعنوان ورودی در اختیار الگوریتم قرار میگیرد.
- «الگوریتم رمزگذاری» (Encryption algorithm): این الگوریتم مجموعهای از عملیات مخصوص را روی متن ساده انجام میدهد.
- «کلید محرمانه» (Secret Key): کلید محرمانه نیز به عنوان ورودی به الگوریتم داده میشود. این کلید مقداری مستقل از متن ساده و مستقل از خود الگوریتم است. الگوریتم بسته به اینکه از چه کلیدی استفاده شود، خروجی متفاوتی تولید میکند.
- «متن رمزی» (Ciphertext): این همان پیام درهمریختهای است که به عنوان خروجی تولید میشود. متن رمزی به متن ساده و کلید محرمانه وابسته است. برای مثال اگر پیام خاصی با دو کلید متفاوت رمز شود، دو خروجی مختلف به دست میآید. متن رمزی در ظاهر، مجموعهای تصادفی از دادههاست و به تنهایی معنای قابل درکی ندارد.
- «الگوریتم رمزگشایی» (Decryption algorithm): این الگوریتم در واقع همان الگوریتم رمزگذاری است که به صورت معکوس اجرا میشود. ورودی آن متن رمزی و کلید محرمانه بوده و خروجی آن متن اصلی است.

برای استفاده امن از تکنیک های رمزنگاری کلاسیک، دو شرط اساسی وجود دارد:
- الگوریتم رمزگذاری باید قوی باشد. به طوری که مهاجم حتی اگر الگوریتم را بشناسد و به چند متن رمز دسترسی داشته باشد، نباید بتواند متن رمز را رمزگشایی کرده یا کلید را پیدا کند.
- فرستنده و گیرنده باید نسخههایی از کلید محرمانه را به شکل امن دریافت کنند و آن را در نزد خود به صورت مخفی نگه دارند. اگر شخصی بتواند کلید را کشف کند و الگوریتم را بداند، تمام ارتباطاتی که از آن کلید استفاده میکنند، قابل خواندن خواهند بود.
سیستم رمزنگاری متقارن طوری طراحی شده است که رمزگشایی هر پیام بر اساس متن رمزی و دانستن الگوریتمهای رمزگذاری و رمزگشایی در عمل غیرممکن است. زیرا عنصر سومی به نام کلید رمزگذاری نیز وجود دارد. بهعبارت دیگر، لازم نیست الگوریتم محرمانه بماند. تنها چیزی که باید محرمانه نگه داشته شود «کلید» است. این ویژگی رمزنگاری متقارن همان چیزی است که باعث شده کاربرد بسیار گسترده و متنوعی پیدا بکند. این مسئله که نیازی به مخفی نگهداشتن الگوریتم نیست، باعث شده تولیدکنندگان بتوانند پیادهسازیهای کمهزینه سختافزاری از الگوریتمهای رمزنگاری داده ارائه دهند. یعنی تراشههای خاصی برای اجرای الگوریتم ثابت رمزنگاری تولید بکنند.
چطور در فرادرس اصول امنیت شبکه را بیاموزیم؟
امنیت شبکههای کامپیوتری به مجموعه اقدامات و دستورالعملهایی گفته میشود که به منظور حفاظت از اطلاعات، سیستمها، شبکهها و منابع مرتبط در هر شبکه کامپیوتری انجام میشود. هدف اصلی این رشته، جلوگیری از دسترسی غیرمجاز، تخریب، دستکاری و سرقت اطلاعات است. برای افراد دارای مهارت حفظ امنیت شبکه، موقعیتهای شغلی خوبی وجود دارد. بنابراین گروه مدرسان حرفهای فرادرس تلاش کردهاند تا با کمک فیلمهای آموزشی با کیفیت به تمام افراد علاقهمند به این حوزه کمک کنند تا مهارتهای مربوط به امنیت سایبری را فرا بگیرند.
در فهرست پایین، چند مورد از فیلمهای مربوط به این مجموعه آموزشی را معرفی کردهایم.
- فیلم آموزش رایانش امن، مبانی تا پیاده سازی امنیت با ۴ روش مختلف + گواهینامه
- فیلم آموزش «سیسکو آیس» (Cisco ISE) برای امنیت شبکه های کامپیوتری + گواهینامه
- فیلم آموزش مانیتورینگ در لینوکس
- فیلم آموزش امنیت شبکه با پایتون از مبانی تا تست نفوذ + گواهینامه
- فیلم آموزش امنیت «شبکه های بی سیم» (Wireless Networks) بخش یکم + گواهینامه
در صورت تمایل به مشاهده فیلمهای بیشتر میتوانید بر روی تصویر پایین کلیک کنید.

تحلیل رمز و حمله Brute-Force
به طور معمول، هدف از حمله به هر سیستم رمزگذاری، بازیابی کلید مورد استفاده است. دو رویکرد کلی برای حمله به طرحهای مرسوم رمزگذاری وجود دارد که در فهرست پایین آنها را معرفی کردهایم.
- تحلیل رمز (Cryptanalysis): حملات تحلیل رمز بر ماهیت خود الگوریتم همراه با مقداری دانش در مورد ویژگیهای عمومی متن ساده یا حتی چند نمونه جفت «متن ساده–متن رمزی» تکیه میکنند. این نوع حمله از ویژگیهای الگوریتم کمک میگیرد تا متن ساده یا کلید مورد استفاده را از متن رمزی استنتاج کند.
- «حمله جستجوی فراگیر» (Brute-Force attack): حمله Brute-Force به این صورت است که مهاجم تمام کلیدهای ممکن را روی متن رمزی امتحان میکند تا به متن اصلی قابل فهم برسد. به طور معمول، برای موفقیت، باید نیمی از کلیدهای ممکن را امتحان کند.
اگر هر کدام از این حملهها در استنتاج کلید موفق شوند، اثر آن فاجعهبار است. زیرا تمام پیامهای آینده و گذشته که با آن کلید رمزگذاری شدهاند، به خطر میافتند.
تحلیل رمز
دشوارترین مسئله مربوط به زمانی است که متن رمز، تنها اطلاعات در دسترس باشد. در برخی موارد، حتی الگوریتم رمزنگاری نیز شناخته شده نیست، اما به طور کلی میتوان فرض کرد که هکر، الگوریتم مورد استفاده برای رمزنگاری را میداند. حمله احتمالی در این شرایط، «جستجوی فراگیر» (Brute-Force) است. در این روش باید تمام کلیدهای ممکن امتحان شوند. اگر فضای کلید بسیار بزرگ باشد، این روش غیرعملی است. بنابراین، هکر باید فقط به تحلیل متن رمز تکیه کرده و آزمونهای آماری مختلفی را بر روی آن اعمال کند. برای استفاده از این رویکرد، حریف باید ایدهای کلی از نوع متن اصلی پنهان شده داشته باشد. برای مثال اینکه آیا متن انگلیسی، فرانسوی یا زبان دیگری است. یا شاید هم پیام از نوع فایل EXE، لیست سورس جاوا، فایل حسابداری و حتی غیره باشد.
در سادهترین نوع حمله، تنها چیزی که در اختیار مهاجم قرار میگیرد متن رمز است. بنابراین دفاع در برابر آن آسانتر است، چون کمترین حجم اطلاعات افشا شدهاند. اما در بسیاری از موقعیتها تحلیلگر یا مهاجم به دادههای بیشتری دسترسی دارد. برای نمونه، ممکن است چند پیام اصلی و نسخههای رمز شده آنها را ضبط کند یا بداند که قرار است الگوهای متنی مشخصی در پیامها ظاهر شوند. برای مثال، فایلهای کدگذاری شده با فرمت «PostScript» همیشه با الگوی ثابتی شروع میشوند یا پیامهای «انتقال الکترونیکی وجوه» (Electronic Funds Transfer) به طور معمول دارای هدر یا بنر استاندارد هستند. این موارد نمونههایی از «متن رمز آشکار» محسوب میشوند.
وقتی تحلیلگر چنین دانشی داشته باشد، ممکن است بتواند با بررسی نحوه تبدیل بخشهای شناخته شده به متن رمز، کلید رمزنگاری را حدس بزند.
«حمله متن ساده مشخص» (Known-Plaintext Attack) رابطه نزدیکی با «حمله کلمه احتمالی» (Probable-Word Attack) دارد. اگر مهاجم در حال رمزگشایی پیام متنی عمومی باشد، به احتمال زیاد اطلاعات کمی درباره محتوای این پیام دارد. اما اگر مهاجم به دنبال اطلاعات خاصی باشد، ممکن است بخشهایی از پیام را بشناسد. برای مثال، اگر یک فایل حسابداری کامل در حال انتقال باشد، مهاجم ممکن است بداند که به طور معمول کدام کلمات کلیدی در هدر آن فایل ظاهر میشوند. به عنوان مثال دیگر، اگر کد منبع برنامهای متعلق به شرکت X ارسال است، احتمال دارد عبارت حقنشر مشخصی همیشه در موقعیت ثابتی از فایل قرار داشته باشد.

حمله جستجوی فراگیر (Brute-Force Attack)
در زمان حمله Brute-Force باید تمام کلیدهای ممکن را امتحان کنیم. این عملیات را تا زمانی انجام میدهیم که ترجمهای قابل فهم از رمز به متن اصلی به دست بیاوریم. به طور متوسط، برای موفقیت باید نیمی از تمام کلیدهای ممکن امتحان شوند. به عبارت دیگر، اگر X کلید مختلف وجود داشته باشد، به طور متوسط مهاجم پس از «X/2» تلاش، کلید واقعی را کشف خواهد کرد.
نکته مهم این است که حمله Brute-Force فراتر از امتحان کردن تمام کلیدهای ممکن است. مگر اینکه متن اصلی شناخته شدهای ارائه شود، تحلیلگر باید بتواند متن واقعی را به عنوان متن اصلی تشخیص دهد. اگر پیام فقط متن ساده انگلیسی باشد، نتیجه به راحتی به دست میآید، هرچند وظیفه تشخیص انگلیسی باید خودکار انجام شود. اگر پیام متنی قبل از رمزنگاری فشرده شده باشد، تشخیص دشوارتر است. البته ممکن هم هست که پیام از نوع داده کلیتری مانند فایل عددی ساخته شده و سپس فشرده شده باشد. انجام خودکار این کار حتی دشوارتر نیز میشود. بنابراین، برای اجرای کامل حمله جستجوی فراگیر، باید حداقل دانشی درباره متن اصلی مورد انتظار داشته باشیم. همچنین به وسیلهای هم برای تشخیص خودکار متن اصلی از درهمریختگی نیاز داریم.
رمزنگاری قوی (Strong Encryption)
کاربران، مدیران امنیتی و مدیران سازمانها، لازم است از «رمزنگاری قوی» (Strong Encryption) برای محافظت از دادهها استفاده کنند. اصطلاح “رمزنگاری قوی”اصطلاح دقیقی نیست، اما به طور کلی به طرحهای رمزنگاری اشاره دارد که دسترسی افراد یا سیستمهای غیرمجاز به متن اصلی رمز شده را به طور عملی دشوار میسازند.
NAS18 ویژگیهایی را فهرست میکند که باعث میشوند یک الگوریتم رمزنگاری قوی باشد.
- انتخاب الگوریتم رمزنگاری مناسب
- استفاده از طول کلید کافی
- انتخاب پروتکلهای مناسب
- پیادهسازی دقیق و با مهندسی خوب
- و عدم وجود نقصهای پنهان که به صورت عمدی وارد شدهاند.
جمعبندی
انسانها از قدیم از رمزنگاری برای مخفی کردن اطلاعات خود استفاده میکردند. یکی از نمونه این کارها تکنیک رمز سزار است که با نام ژولیوس سزار امپراطور روم نامگذاری شده است. امپراطور با کمک این تکنیک اطلاعات محرمانه خودش را مخفی میکرد. البته امروزه میدانیم که این روش رمزنگاری، امنیت خیلی پایینی دارد. انسانها به مرور زمان، تکنیک های رمزنگاری کلاسیک مختلفی را طراحی کرده و به کار بردهاند. اکنون این علم پیشرفت زیادی کرده و تقریبا در تمام بخشهای زندگی انسان به کار برده میشود.
در این مطلب از مجله فرادرس چند نمونه از تکنیک های رمزنگاری کلاسیک را معرفی کردهایم. بعد از نام بردن و تعریف این روشها در پایان روش رمزنگاری متقارن و تحلیل رمز و حمله Brute-Force را نیز به صورت کلی معرفی کردهایم.












