برنامه نویسی, شبکه و امنیت

معرفی مقدماتی رمزنگاری و انواع الگوریتم های آن

معرفی مقدماتی رمزنگاری و انواع الگوریتم های آن

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

انواع رمز نگاری


بصورت کلی سه نوع رمز نگاری وجود دارد : فیزیکی – ریاضیاتی – کوانتومی 


  1. رمزنگاری فیزیکی : در رمز نگاری فیزیکی پردازش ریاضی روی متن صورت نمی گیرد.(Cipher) عمومی ترین این روش عبارتیست از جابجایی یا جایگزینی حروف ( کاراکترها ) یا کلمات میباشد و یا پنهان سازی اطلاعات داخل اطلاعات دیگر مانند یک تصویر (Stenography)
  2. رمزنگاری ریاضی :از فرآیندها و پردازشهای ریاضی روی متن یا کاراکترها استفاده می کند. معروفترین این روش ادغام سازی یا همان Hashing است. در این روش یک محاسبه روی پیام انجام می شود و آنرا به یک مقدار عددی تبدیل می کند که به آن Hash Value گفته می شود. بطور مثال هر کاراکتر را در ۳ ضرب و با هم جمع و حاصل را بر ۱۰ تقسیم کن.این الگوریتم یک طرفه است و نمی توان از مقدار Hash به متن رسید. یکی از پر کاربردترین استفاده های یک تابع درهم سازی در پایگاه داده هاست هنگامی که می خواهید به وب سایت وارد شوید ، رمز عبور شما دریافت می شود و تبدیل به مقدار Hash می شود و با پایگاه داده مورد نظر مقایسه می شود ، اگر مقادیر برابر بود یعنی رمز شما درست است .یکی دیگر از کاربردها اطمینان از صحت داده ارسالی یا دریافتی در مسیر یک شبکه استبه این صورت که در مبدا از فایل یک مقدار Hash تهیه شده و بعد از رسیدن به مقصد نیز مجددا یک Hash تهیه کنید و مقادیر را با هم مقایسه کنید ، در صورتیکه مقادیر یکسان باشد فایل شما حتی اگر چند ترابایت داده نیز داشته باشد قطعا سالم و درست خواهد بود.
  3. رمزنگاری کوانتومی : روشی جدید در رمز نگاری که تا قبل از ۲۰۰۲ کاربرد آن در آزمایشگاهها و برخی مراکز امنیتی دولتی بود. در این روش پیام با استفاده از یکسری فوتون ارسال می گردد. اگر دریافت کننده این فوتون ها را طبق الگوریتمی که دارد بفهمد میتواند پیام را decode کند . در غیر اینصورت فوتون ها تغییر یافتده اند و فرستنده شروع به ارسال مجدد پیام با یک سری جدیدی از فوتون ها می نماید. رمزنگاری کوانتومی بسیار پرهزینه است و کاربرد محدودی دارد. 

حملات به رمزنگاری


برخی از معروفترین روشهای شکستن کد ها عبارتند از :

  • Algorithm Errors
  • Social Engineering
  • Brute Force Attacks
  • Frequency Analysis
  • Human Error

الگوریتمهای رمز نگاری


۳ روش اصلی برای کد کردن عبارتند از Hashing – Asymmetric  – symmetric 


۱٫ الگوریتمهای متقارن ( Symmetric ): یک کلید امنیتی تولید می کند. یک کلید اختصاصی دارد که برای بقیه افراد غیر مجاز قابل استفاده نیست.کلید بین فرستنده و گیرنده یکسان است. 

انواع الگوریتمهای متقارن


  1. DES از سال ۱۹۷۰ ایجاد شده است. استاندارد اصلی که در مراکز دولتی و صنعتی بکار میرود. یک کلید ۱۲۸ بیتی ایجاد می کند.
  2. AES   : جایگزین DES می باشد.کلیدهای ۱۲۸ و ۱۹۲ و ۲۵۶ بیتی تولید می کند.توسط ۲ نفر بنامهای Vincent Rijmen و Joan Damon طراحی شده است.
  3. ۳DES نسخه ارتقا یافته DES می باشد.از DES امن تر می باشد و شکستن قفل آن بسیار مشکل است.
  4. CAST  : توسط Carlisle Adams and Stafford Tavares طراحی شده است.شرکتهای مایکروسافت و IBM از این الگوریتم استفاده میکنند.کلیدهای ۴۰ و ۱۲۸ بیتی استفاده میکند.
  5. RC : توسط آزمایشگاههای RSA استفاده می شود.طراح آن Ron Rivest می باشد. انواع نسخه ها : RC5 , RC6 کلید ۲۰۴۸ بیتی تولید می کند.
  6. Blowfish  : توسط سیستمهای Counterpane ایجاد گردیده است.نویسنده اصلی آن Bruce Schneier می باشد.نسخه بعدی آن Twoofish می باشد. از کلیدهای ۴۴۸ بیتی استفاده میکند.
  7. IDEA :از کلید ۱۲۸ بیتی استفاده میکند به لحاظ سرعت و قبلیت شبیه الگوریتم DES می باشد ولی امن تر از آن است.

۲٫ الگوریتمهای نا متقارن ( Asymmetric Algorithm) : از ۲ کلید برای code و decode کردن داده ها استفاده می کند. این کلیدها را Public key و Private key می گویند. Public برای کد کردن پیام توسط فرستنده و Private key برای رمزگشایی توسط گیرنده استفاده می شود. 

انواع الگوریتمهای نامتقارن


  1. RSA  : طراحان آن Ron Rivest , Adi Shamir , Leonard Adleman می باشد. هم برای امضای دیجیتال و هم برای SSL استفاده می شود.
  2. الگوریتم Diffie Helman  : توسط ۲ نفر بنامهای دکتر W.Diffie و دکتر M.E.Hellman توسعه یافته است.
  3. ECC   : شبیه الگوریتم RSA است. در شبکه های وایرلس کاربرد دارد.
  4. EL Gamal  : نام دیگر آن DSA است.برای انتقال امضای دیجیتال و تبادل کلیدها استفاده می شود.در سال ۱۹۸۵ ایجاد شده است.

الگوریتم های: Hashing دو نوع اصلی دارد SHA :و MD الگوریتم SHA  یک طرفه است یک کد ۱۶۰ بیتی تولید می کند.الگوریتم MD : یک الگوریتم یکطرفه است.چندین نسخه دارد که مهمترین آنهاعبارتند از : MD2 ,MD4,MD5 یک کد ۱۲۸ بیتی تولید می کند.از hashing برای اطمینان از صحت اطلاعات استفاده می شود.

معرفی مقدماتی رمزنگاری و انواع الگوریتم های آن

انواع الگوریتم‌های رمزنگاری:

قبل از اینکه در مورد https توضیح دهم، باید ابتدا در مورد الگوریتم‌های رمزنگاری به طور مختصر توضیح دهم:

در دنیای امنیت، الگوریتم‌های رمزنگاری داده (یا Data Encryption Algorithms) را به دو دسته کلی تقسیم می‌کنند:

۱- الگوریتم‌های رمزنگاری برگشت‌پذیر یا Reversible Encryption Algorithms

در این نوع الگوریتم‌ها داده‌ی مورد نظر پس از رمزگذاری، قابل برگشت به داده‌ی اولیه است. موضوع بحث من در این مقاله همین نوع است.

۲- الگوریتم‌های رمزنگاری برگشت‌ناپذیر یا Irreversible Encryption Algorithms

در این نوع الگوریتم‌ها داده‌ای که رمزگذاری می‌شود، به هیچ وجه قابل برگشت به داده‌ی اولیه نیست.

انواع الگوریتم‌های رمزنگاری برگشت‌پذیر:

الگوریتم‌های برگشت‌پذیر، خودشان به دو دسته تقسیم می‌شوند:

۱- الگوریتم‌های رمزنگاری متقارن یا Symmetric-key algorithm

در این نوع الگوریتم، کلید رمزگذاری داده‌ها و کلید رمزگشایی داده‌ها یکسان است. (یعنی داده‌ها با همان کلیدی رمزگشایی می‌شوند که رمزگذاری شده‌اند) (در این مطلب هر گاه گفته می‌شود «کلید» شما تقریباً چیزی شبیه به «رمز» فرض کنید)

این، اولین نوع رمزگذاری بود که بشر تعریف کرد. هر چند تاریخچه رمزگذاری را حداقل به ۱۹۰۰ سال قبل از میلاد مسیح می‌دانند (یعنی حدود ۴۰۰۰ سال پیش) اما ساده‌ترین و شناخته‌شده‌ترین الگوریتم در این دسته، الگوریتمی است که پادشاه ژولیوس سزار در حدود ۵۰ سال قبل از میلاد به کار می‌برد و به همین دلیل به آن Caesar cipher (رمزنگاری سزار) گفته می‌شود.

 

گاهی که پادشاه سزار به فرمانداران خود در شهرهای دیگر نامه می‌فرستاد، راهزنان و جاسوسان در راه، پیک را می‌گرفتند و نامه را می‌خواندند و همه چیز لو می‌رفت… تا اینکه دانشمندان دربار، الگوریتم سزار را ابداع و استفاده کردند. در این الگوریتم، یک عدد (مثلاً ۴) به عنوان کلید در نظر گرفته می‌شد و سپس هر حرف الفبا به جای اینکه خودش در نامه نوشته شود، ۴ تا بعد از آن نوشته می‌شد. مثلاً اگر قرار بود بنویسند: Hamid، حرف H (و بقیه حروف را) ۴ تا به راست شیفت می‌دادند، پس می‌شد: Leqmh

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

و یا مثلاً یکی از راه‌های شکستن این الگوریتم، استفاده از علم آمار است: فرض کنید می‌خواهید یک نامه انگلیسی را رمزگشایی کنید. باید ببینید کدام حرف الفبای انگلیسی بیشترین کاربرد را دارد؟ آمار می‌گوید e بیشترین کاربرد را دارد. خوب! تمام شد دیگر! حالا کافی‌ست ببینید در نامه‌ی رمزنگاری شده، چه حرفی بیش از بقیه تکرار شد؟ آن حرف، در ابتدا e بوده. حالا فاصله حرف جدید با e را به دست آورید، کلید پیدا می‌شود…

طبیعتاً این الگوریتم‌ها هر روز پیشرفته‌تر و پیچیده‌تر شد تا کم‌کم رسیدیم به الگوریتم DES (مخفف Data Encryption Standard) که البته DES با اینکه بسیار پیچیده بود اما به خاطر یافتن چند نمونه داده‌ی رمزگذاری شده که با طی کردن مراحلی، بدون داشتن کلید به داده‌ی اولیه رسیدند، این الگوریتم زیرسؤال رفت و فعلاً دنیا در حال استفاده از الگوریتم AES (مخفف Advanced Encryption System) است. به طور مثال وقتی شما BitLocker را روی فلش یا هارد اکسترنال خود فعال می‌کنید و یا وقتی به صورت بی‌سیم به مودم (یا بهتر است بگوییم اکسس پوینت) متصل می‌شوید، داده‌های شما با الگوریتم AES رمزنگاری می‌شوند.

معرفی مقدماتی رمزنگاری و انواع الگوریتم های آن

به هر حال، در همه این الگوریتم‌ها از شما یک رمز (یا همان کلید) پرسیده می‌شود و داده‌های شما با آن رمز و طبق فرمول‌های بسیار بسیار پیچیده، رمزنگاری می‌شود. سپس در مقصد (یعنی هنگام استفاده از داده‌ها) نیز همان رمز پرسیده می‌شود و داده‌ها به حالت اول برمی‌گردد و قابل استفاده است.

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

۲- الگوریتم‌های رمزنگاری نامتقارت یا ASymmetric-key algorithm یا Public-key cryptography

در این الگوریتم، کلید رمزگذاری با کلید رمزگشایی متفاوت است. در اصطلاح گفته می‌شود داده‌ها با کلید عمومی (Public Key) رمزگذاری می‌شوند اما با کلید خصوصی (Private Key) رمزگشایی می‌شوند.

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

– ممکن است بگویید خوب، طلا را می‌گذاریم داخل گاوصندوق و می‌فرستیم! خوب، کلیدش را هم باید بفرستید! راهزنی که صندوق را می‌گیرد، کلید را هم از شما می‌گیرد و صندوق را باز می‌کند…
– ممکن است بگویید کلید را در بارها قایم می‌کنیم! خوب، من اگر راهزن باشم تمام بار شما را مو به مو می‌گردم و کلید را پیدا می‌کنم!
– ممکن است بگویید صندوق را از یک مسیر و کلید را از مسیر دیگر می‌فرستیم! خوب، راهزن‌ها از شما زرنگ‌ترند! در همه مسیرها یکی از همکارانشان منتظر شماست تا کلید را بگیرد!

همانطور که می‌بینید، راه‌حل، خیلی ساده است: هر گاه قرار است یک نفر یک قطعه طلا به شهر دیگر بفرستد، ابتدا یک پیک به آن شهر می‌رود و یک گاوصندوق با قفلِ باز به شهر اول می‌آورد. کلیدِ قفل، نزد گیرنده می‌ماند. حالا طلا را در صندوق قرار می‌دهد و قفل را می‌بندد و به مقصد می‌فرستد… حالا دیگر اینطور نیست که کلید هم ارسال شود که دست راهزن‌ها بیفتد! به همین سادگی!

HTTPS ترکیبی از HTTP و SSL است. HTTP که همان پروتکل انتقال صفحات وب است. SSL مخفف Secure Socket Layer و به معنی «لایه‌ی میانیِ امن» است. (سوکت یعنی چیزی که بین دو چیز قرار گیرد. وقتی شما به یک کابل شبکه سوکت می‌زنید، سوکت بین کابل و پریز قرار می‌گیرد).

SSL یک لایه امنیتی، بین مبدأ و مقصد است. الگوریتمی به نام RSA که یک الگوریتم نامتقارن به حساب می‌آید، دقیقاً به همان صورتی که در گذشته طلا را بین دو شهر منتقل می‌کردند، داده‌های حساس و طلاگونه‌ی کاربران را بین مبدأ و مقصد، به صورت امن منتقل می‌کند تا دست راهزنان نیفتد. (یکی از مهم‌ترین هک‌ها که در صورت عدم استفاده از HTTPS باعث دزدیده شدن داده‌های شما می‌شود، هکی به نام Man-in-the-middle یا به فارسی، «حمله مرد میانی» است که در حقیقت همان راهزنی است که طلا را در وسط راه می‌دزدد)

درباره محمد محسن خاشعی نژاد

بیش از ۱۰ سال است که به عنوان مدرس در حوزه های مختلف ICT فعالیت دارم و همیشه در حال یادگیری و یاد دادن هستم.

دیدگاهتان را بنویسید