در این مطلب آموزشی گسترش اندیشه پویا، با این مفهوم امنیتی آشنا میشویم:
رمزهای «تکالفبایی» (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) کسی بود که اولین رمز جایگزینی شناخته شده و سادهترین نوع آن را استفاده کرده است.
رمز سزار شامل جایگزینی هر حرف الفبا با حرفی است که سه جایگاه پایینتر از آن در الفبا قرار دارد. برای مثال:
توجه داشته باشید که الفبا به صورت چرخشی عمل میکند، بنابراین بعد از حرف 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) را تعریف کنیم.
- جایگشت، دنباله مرتبی از تمام عناصر مجموعه متناهیSSSاست که هر عنصر فقط یک بار در آن ظاهر میشود. برای مثال، اگرS=a,b,cS = {a, b, c}S=a,b,cباشد، شش جایگشت برایSSSوجود دارد:
abc,acb,bac,bca,cab,cbaabc, acb, bac, bca, cab, cbaabc,acb,bac,bca,cab,cba
به طور کلی،n!n!n!جایگشت برای مجموعهای ازnnnعنصر وجود دارد، زیرا عنصر اول را میتوان از بینnnnحالت انتخاب کرد، عنصر دوم از بینn−1n-1n−1حالت، عنصر سوم از بینn−2n-2n−2حالت و به همین ترتیب بیشتر میشود.
یادآوری میکنیم که نگاشت حروف الفبای رمزی در رمز سزار به شکل زیر بود.
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» اثر «دوروتی سایرز» حل شده است.
در جدول بالا «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):معکوس ماتریس مربعیMMMباM−1M^{-1}M−1نمایش داده میشود. ماتریس معکوس، ماتریسی است که اگر در ماتریس اصلی ضرب شود (چهM×M−1M × M^{-1}M×M−1و چهM−1×MM^{-1} × MM−1×M)، حاصل آن «ماتریس همانی» (Identity Matrix) خواهد بود.ماتریس همانی:ماتریس همانیIII، ماتریس مربعی است که تمام عناصر آن صفر هستند، به جز عناصر روی قطر اصلی (از بالا سمت چپ به پایین سمت راست) که همگی ۱ هستند.توجه کنید که معکوس ماتریس، همیشه وجود ندارد، اما اگر وجود داشته باشد، این خاصیت را برآورده میکند.
برای ماتریسA=[58173]A = \begin{bmatrix} 5 & 8 \\ 17 & 3 \end{bmatrix}A=[51783]، معکوس آن در پیمانه262626برابر است باA−1(mod26)=[92115]A^{-1} \pmod{26} = \begin{bmatrix} 9 & 2 \\ 1 & 15 \end{bmatrix}A−1(mod26)=[91215]. با ضرب این دو ماتریس در پیمانه262626، مشاهده میکنید که نتیجه ماتریس همانی[1001]\begin{bmatrix} 1 & 0 \\ 0 & 1 \end{bmatrix}[1001]میشود.
مفهوم دترمینان (Determinant)
برای محاسبه معکوس ماتریس، ابتدا باید مفهوم دترمینان را درک کنیم. دترمینان برای هر ماتریس مربعیm×mm×mm×mاز طریق جمع جبری حاصل ضرب عناصری به دست میآید که به صورت دقیق یکی از هر سطر و یکی از هر ستون را شامل میشوند. البته برخی از این حاصلضربها علامت منفی خواهند داشت.
- برای ماتریس2×22×22×2:[k11k12k21k22]\begin{bmatrix} k_{11} & k_{12} \\ k_{21} & k_{22} \end{bmatrix}[k11k21k12k22]، دترمینان برابر است باk11k22−k12k21k_{11}k_{22} - k_{12}k_{21}k11k22−k12k21.برای ماتریس3×33×33×3:فرمول پیچیدهتر است و شامل مجموع و تفاضل حاصلضربهای سه عنصری از هر سطر و ستون است.
اگر دترمینان یک ماتریس مربعیAAA، غیر صفر باشد، آنگاه معکوس آن قابل محاسبه است. فرمول کلی برای محاسبه عنصر(i,j)(i,j)(i,j)ماتریس معکوس به صورت زیر است.
[A−1]ij=(detA)−1⋅(−1)i+j⋅(Dji)[A^{-1}]_{ij} = (\det A)^{-1} \cdot (-1)^{i+j} \cdot (D_{ji})[A−1]ij=(detA)−1⋅(−1)i+j⋅(Dji)
پارامترهای فرمول بالا را در فهرست زیر معرفی کردهایم.
- (detA)−1(\det A)^{-1}(detA)−1:(detA)−1(\det A)^{-1}(detA)−1معکوس ضربی دترمینانAAAدر پیمانه262626است.(−1)i+j(-1)^{i+j}(−1)i+j:این عبارت، علامت را تعیین میکند.(Dji)(D_{ji})(Dji):این عبارت هم «متمم جبری» (Cofactor) یا «ماتریس کهاد» (Adjugate Matrix) است. ماتریس کهاد با حذف سطرjjjو ستونiiiاز ماتریسAAAو محاسبه دترمینان ماتریس باقیمانده به دست میآید.
A=[58173]A = \begin{bmatrix} 5 & 8 \\ 17 & 3 \end{bmatrix}A=[51783]
(5×3)−(8×17)=15−136=−121(5 \times 3) - (8 \times 17) = 15 - 136 = -121(5×3)−(8×17)=15−136=−121
در پیمانه 26، این مقدار برابر با 9 میشود (−121(mod26)=9-121 \pmod{26} = 9−121(mod26)=9).
حالا باید معکوس ضربی999در پیمانه262626را پیدا کنیم. این یعنی عددی که اگر در999ضرب شود، حاصل آن در پیمانه262626برابر با111شود. معکوس ضربی999در پیمانه262626را با9−19^{-1}9−1نمایش میدهیم. در اینجا،9∗3=279 * 3 = 279∗3=27و27(mod26)=127 \pmod{26} = 127(mod26)=1. پس عبارت زیر برقرار است.
9−1(mod26)=39^{-1} \pmod{26} = 39−1(mod26)=3
با استفاده از این مقادیر، معکوس ماتریس A محاسبه میشود:
A−1(mod26)=3[3−8−175]A^{-1} \pmod{26} = 3 \begin{bmatrix} 3 & -8 \\ -17 & 5 \end{bmatrix}A−1(mod26)=3[3−17−85]
ماتریس بالا با علامتهای مثبت و منفی حاصل از(−1)i+j(-1)^{i+j}(−1)i+jوDjiD_{ji}Djiبه دست آمده است.
پس از اعمال عملیات پیمانه262626بر روی عناصر، به همان ماتریس معکوس اولیه[92115]\begin{bmatrix} 9 & 2 \\ 1 & 15 \end{bmatrix}[91215]میرسیم.
نکته:بخش مربوط به جزئیات جبر خطی ممکن است در اولین مطالعه کمی پیچیده به نظر برسد، اما درک آن برای فهم چگونگی عملکرد رمز هیل و نقاط ضعف آن در رمزنگاری بسیار مفید است.
این الگوریتم رمزنگاری،mmmحرف متوالی از متن اصلی را دریافت کرده و آنها را باmmmحرف از متن رمز شده جایگزین میکند. این جایگزینی توسطmmmمعادله خطی تعیین میشود. در این معادلهها به هر حرف، مقدار عددی مشخصی اختصاص داده میشود.
- a=0a = 0a=0b=1b = 1b=1...z=25z = 25z=25
برای حالتm=3m=3m=3این سیستم را میتوان به صورت زیر توصیف کرد:
c1=(k11p1+k21p2+k31p3)(mod26)c_1 = (k_{11}p_1 + k_{21}p_2 + k_{31}p_3) \pmod{26}c1=(k11p1+k21p2+k31p3)(mod26)
c2=(k12p1+k22p2+k32p3)(mod26)c_2 = (k_{12}p_1 + k_{22}p_2 + k_{32}p_3) \pmod{26}c2=(k12p1+k22p2+k32p3)(mod26)
c3=(k13p1+k23p2+k33p3)(mod26)c_3 = (k_{13}p_1 + k_{23}p_2 + k_{33}p_3) \pmod{26}c3=(k13p1+k23p2+k33p3)(mod26)
این را میتوان بر حسب بردارهای سطری و ماتریسها بیان کرد:
(c1c2c3)=(p1p2p3)[k11k12k13k21k22k23k31k32k33](mod26)(c_1 \ c_2 \ c_3) = (p_1 \ p_2 \ p_3) \begin{bmatrix} k_{11} & k_{12} & k_{13} \\ k_{21} & k_{22} & k_{23} \\ k_{31} & k_{32} & k_{33} \end{bmatrix} \pmod{26}(c1c2c3)=(p1p2p3)k11k21k31k12k22k32k13k23k33(mod26)
C=PK(mod26)C = PK \pmod{26}C=PK(mod26)
که در آنCCCوPPPبردارهای سطری به طول333هستند. این بردارها نمایانگر متن رمز شده و متن اصلی هستند.KKKماتریس3×33×33×3است که کلید رمزگذاری را نشان میدهد. عملیات ریاضی همگی به پیمانه 26 انجام میشوند.
یکی دیگر از روشهای بهبود رمزهای تکالفبایی ساده، این است که با پیشروی در متن پیام، از چندین روش جایگزینی تکالفبایی متفاوت استفاده کنیم. این روش هم در دسته تکنیک های رمزنگاری کلاسیک قرار میگیرد. نام کلی این روش «رمز جانشینی چندالفبایی» (Polyalphabetic Substitution Cipher) است. تمام این تکنیکها ویژگیهای مشترک زیر را دارند.
- از مجموعهای از قوانین جایگزینی تکالفبایی مرتبط استفاده میشود.«کلید» تعیین میکند که برای هر تبدیل، کدام قانون باید انتخاب شود.
تمام تکنیکهای معرفی شده در این مطلب را میتوانید با زبانهای برنامه نویسی، پیادهسازی بکنید. برای مثالرمزنگاری در پایتونیکی از حوزههای تخصصی در این زبان برنامه نویسی است. برای یادگیری این مهارت پیشنهاد میکنیم که مطلب مربوط به آن را در مجله مطالعه کنید.
شناختهشدهترین و یکی از سادهترین رمزهای چندالفبایی، «رمز ویژنر» (Vigenère Cipher) است. در این روش، مجموعه قواعد مرتبط جانشینی، شامل ۲۶ رمز سزار است که با شیفتهای ۰ تا ۲۵ ساخته میشوند. هر رمز با حرف کلید مشخص میشود. این حرف همان حرف رمز (Ciphertext) است که جایگزین حرف a در متن اصلی خواهد شد. بنابراین، رمز سزار با شیفت ۳ با مقدار کلید ۳ نشان داده میشود.
میتوان رمز ویژنر را به شکل زیر بیان کرد.
فرض کنید دنباله حروف متن اصلی (P) برابر باشد باP=p0,p1,p2,...,pn−1P = p_0, p_1, p_2,..., p_{n-1}P=p0,p1,p2,...,pn−1و کلیدKKKدنبالهای از حروف به صورتK=k0,k1,k2,...,km−1K = k_0, k_1, k_2,..., k_{m-1}K=k0,k1,k2,...,km−1باشد. به طور معمولm≤nm ≤ nm≤nاست. دنباله حروف متن رمز برابر باC=C0,C1,C2,...,Cn−1C = C_0, C_1, C_2,..., C_{n-1}C=C0,C1,C2,...,Cn−1است.
و به این صورت محاسبه میشود:
C=C0,C1,C2,...,Cn−1=E(K,P)C = C_0, C_1, C_2,..., C_{n-1} = E(K, P)C=C0,C1,C2,...,Cn−1=E(K,P)
=E[(k0,k1,k2,...,km−1),(p0,p1,p2,...,pn−1)]= E[(k_0, k_1, k_2,..., k_{m-1}), (p_0, p_1, p_2,..., p_{n-1})]=E[(k0,k1,k2,...,km−1),(p0,p1,p2,...,pn−1)]
=(p0+k0)(mod26),(p1+k1)(mod26),…,(pm−1+km−1)(mod26),= (p_0 + k_0) \pmod{26}, (p_1 + k_1) \pmod{26}, \dots, (p_{m-1} + k_{m-1}) \pmod{26},=(p0+k0)(mod26),(p1+k1)(mod26),…,(pm−1+km−1)(mod26),
(pm+k0)(mod26),(pm+1+k1)(mod26),…,(p2m−1+km−1)(mod26),…(p_m + k_0) \pmod{26}, (p_{m+1} + k_1) \pmod{26}, \dots, (p_{2m-1} + k_{m-1}) \pmod{26}, \dots(pm+k0)(mod26),(pm+1+k1)(mod26),…,(p2m−1+km−1)(mod26),…
در نتیجه، حرف اول کلید با حرف اول متن اصلی جمع میشود، حرفهای دوم با هم جمع میشوند، و این روند تاmmmحرف اول متن اصلی ادامه پیدا میکند. برایmmmحرف بعدی متن اصلی، حروف کلید دوباره از ابتدا تکرار میشوند. این فرایند ادامه مییابد تا کل متن اصلی رمز شود.
فرایند رمزگذاری تا پایان دنباله متن اصلی ادامه دارد. معادله کلی رمزگذاری به صورت زیر است.
Ci=(pi+ki(modm))(mod26)C_i = (p_i + k_i \pmod{m}) \pmod{26}Ci=(pi+ki(modm))(mod26)
این معادله را با رمز سزار مقایسه کنید. در واقع، هر حرف متن اصلی، با توجه به حرف متناظر در کلید، به شکلی متفاوت رمز میشود. به همین ترتیب، رمزگشایی نیز تعمیمی از الگوریتم رمزگذاری سزار به حساب میآید.
pi=(Ci−ki(modm))(mod26)p_i = (C_i - k_i \pmod{m}) \pmod{26}pi=(Ci−ki(modm))(mod26)
برای رمز کردن هر پیام، باید کلیدی به اندازه همان پیام داشته باشیم. بیشتر اوقات کلید به صورت «کلمهای تکرار شونده» نوشته میشود. برای مثال، اگر کلمه «deceptive» کلید باشد، پیام «we are discovered save yourself» به شکل زیر رمز میشود:
رمز ورنام (Vernam Cipher)
«رمز ورنام» (Vernam Cipher)، گزینه دیگری از تکنیک های رمزنگاری کلاسیک است. این روش در سال ۱۹۱۸ توسط گیلبرت ورنام، مهندس شرکت AT&T، معرفی شد. هدف از این تکنیک مقابله بیشتر با رمزگشایی بود. بهترین راه برای مقابله با «تحلیل رمز» (Cryptanalysis) رمزهای چندالفبایی، انتخاب «کلیدواژهای» (Keyword) است که دو شرط اصلی زیر را داشته باشد.
- هماندازه متن اصلی (Plaintext) باشدهیچ رابطه آماری با آن نداشته باشد.
سیستم ورنام به جای حروف، بر روی دادههای باینری (بیتها) کار میکند. این سیستم را میتوان به طور خلاصه به شکل زیر بیان کرد:
ci=pi⊕kc_i = p_i \oplus kci=pi⊕k
در فهرست پایین پارامترهای تابع بالا را توضیح دادهایم.
- pip_ipi:شماره i-امین رقم باینری در «متن اصلی» (Plaintext) است.kik_iki:شماره i-امین رقم باینری «کلید» (Key) است.cic_ici:شماره i-امین رقم باینری «متن رمز شده» (Ciphertext) است.⊕\oplus⊕:عملگر XOR
بنابراین، متن رمز شده با انجام عملیات XOR بیتی بین متن اصلی و کلید تولید میشود. به دلیل ویژگیهای عملگر XOR، فرآیند رمزگشایی نیز به صورت دقیق با همین عملیات بیتی انجام میشود.
pi=ci⊕kip_i = c_i \oplus k_ipi=ci⊕ki
نکته:بخش مهم در این روش، چگونگی ساخت کلید است. ورنام (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
پیام رمز شده عبارت است از.
MEMATRHTGPRYETEFETEOAAT
این نوع روش به سادگی قابل رمزگشایی است. طرح پیچیدهتر این است که پیام را سطر به سطر در مستطیل بنویسیم و سپس ستون به ستون آن را بخوانیم، اما ترتیب ستونها را جابجا کنیم. نکته اینجاست که باید ترتیب ستونها را به کلید الگوریتم تبدیل کنیم. برای نمونه به مثال زیر، توجه کنید.
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 را نیز به صورت کلی معرفی کردهایم.
- مجموعه آموزش رمزنگاری – مقدماتی تا پیشرفتهآموزش نقشه راه امنیت سایبری – حفاظت از اتوماسیون و کنترل صنعتی ICS/OT (رایگان)مجموعه آموزش امنیت شبکه (Network Security) – مقدماتی تا پیشرفتهآموزش امنیت شبکه – راهنمای شروع و یادگیریامنیت سایبری چیست؟ – توضیح مفاهیم پایه و مسیر یادگیری
برای دریافت آموزشهای تخصصی بیشتر در حوزه فناوری اطلاعات، با تیم گسترش اندیشه پویا در تماس باشید.