گزارش خرابی لینک
اطلاعات را وارد کنید .
گزارش انتشار نسخه جدید
اطلاعات را وارد کنید .
no-img
رهاپروژه

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


رهاپروژه

ادامه مطلب

: انواع الگوریتم‌های رمزنگاری
۱۳۹۶-۱۰-۲۷
212 بازدید
گزارش نسخه جدید

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


 

 

 

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

 

 

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

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

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

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

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

در این نوع الگوریتم‌ها داده‌ای که رمزگذاری می‌شود، به هیچ وجه قابل برگشت به داده‌ی اولیه نیست. در مورد این الگوریتم و کاربرد و نکات آن در مطلب «hash چیست؟ MD5 چیست؟ و چگونه بفهمید یک فایل به درستی دانلود شده است؟» توضیح داده‌ام که پیشنهاد می‌کنم حتماً مطالعه کنید.

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

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

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

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

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


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

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

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

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


(توجه: بدون خواندن این مطلب، امکان BitLocker را فعال نکنید)

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

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

۲الگوریتم‌های رمزنگاری نامتقارت یا 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 یا به فارسی، «حمله مرد میانی» است که در حقیقت همان راهزنی است که طلا را در وسط راه می‌دزدد)

HTTPS چگونه کار می‌کند؟

با توجه به داستان مهم بالا، وقتی شما وارد یک سایت مثل gmail.com که از پروتکل https استفاده می‌کند، می‌شوید، مرورگر شما ابتدا یک سر به سرور آن سایت می‌زند و یک گاوصندوق در-باز از سرور درخواست می‌کند: سرور جان! صاحبِ من می‌خواهد یک قطعه طلا به تو بفرستد، لطفاً یک گاوصندوقِ در-باز بفرست… منظور از گاوصندوقِ در-باز این است: سرور، با استفاده از الگوریتم RSA روال زیر را طی می‌کند:


و نهایتاً خروجی آن روال، دو کلید می‌شود: کلید عمومی یا Public Key و کلید خصوصی یا Private Key.

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

مرورگر شما داده‌ها را با کلید عمومی رمزنگاری می‌کند و به سرور می‌فرستد. اگر در راه، داده‌های شما دست راهزن بیفتد، هیچ جای نگرانی نیست! چون یک مشت چرت‌و‌پرت را خواهد دید و تا وقتی کلید خصوصی وجود نداشته باشد، این چرت‌وپرت‌ها به داده‌ی قابل فهم تبدیل نمی‌شوند.

(دقت کنید که منظور از راهزن، می‌تواند یک نفر مثل شخصی باشد که در کافی‌نت به عنوان مسؤول نشسته است یا شاید یک جوان در ISP شما یا شاید حتی یک نفر در کمیته فیلترینگ و یا یک نفر در مرکز داده‌ی کشورهای همسایه که داده‌های شما از آنجا عبور می‌کند تا به سایت مقصد برسد یا حتی یک نفر در شرکت گوگل!؟ هر کسی که داده‌های شما از سیستم او عبور می‌کند می‌تواند راهزن به حساب آید)

وقتی داده‌های رمزنگاری شده به سرور سایت رسید، سرور با کلید خصوصی که نزد خودش دارد آن‌ها را رمزگشایی می‌کند و مثلاً نام کاربری و رمز عبور شما را از آن استخراج می‌کند و بررسی می‌کند که صحیح است یا خیر و اگر صحیح بود، حالا می‌خواهد ایمیل‌های شما را به سیستم شما بفرستد… مجدداً این روال اما برعکسِ آن اتفاق می‌افتد. یعنی سرور به مرورگر شما می‌آید و درخواست یک گاوصندوق در-باز می‌کند و مرورگر شما با الگوریتم RSA کلیدهای عمومی و خصوصی را تولید می‌کند و کلید عمومی را به سرور می‌فرستد و ادامه ماجرا

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

خوب، این هم توضیحی نسبتاً مفصل در مورد الگوریتم‌های نامتقارن.

و اما اگر خوب فکر کنید، شما با فهمیدن روش عملکرد https، چیزهای زیادی یاد گرفتید:

نکاتی در مورد HTTPS:

چرا گاهی که وارد برخی سایت‌های https می‌شویم، رنگ نوار آدرس قرمز می‌شود؟

خوب، برای اینکه هر کسی نیاید از https سوء استفاده کند، سازمان‌های معتبری هستند که مجوز SSL سایت‌ها را پس از دریافتِ مشخصات و ضمانت‌های لازم، تأیید می‌کنند. مثلاً یکی از مهم‌ترین‌های این سازمان‌ها، سازمان کومودو (Comodo) است. هر سایتی که بخواهد از https استفاده کند، اگر می‌خواهد کاربرها به او اعتماد کنند، بهتر است برود از این سازمان‌ها یک مجوز SSL بخرد. آن سازمان‌ها در ازای آن هزینه که مشتری به صورت سالیانه می‌پردازد، مشخصات کامل صاحب آن سایت را می‌پرسند که اگر سوء استفاده کرد، قابل ردگیری باشد و حالا وقتی کاربران وارد آن سایت https می‌شوند، مرورگشان ابتدا آدرس سایت را به این سازمان‌ها می‌فرستد و از آن‌ها می‌خواهد که بررسی کنند که آیا این سایت، یک مجوز معتبر خریده است و مشخصاتش را جایی ثبت کرده؟ اگر آن سایت در یکی از آن سازمان‌ها ثبت نام کرده بود، رنگ نوار آدرس سبز می‌شود اما اگر آن سایت یک مجوز SSL غیررسمی استفاده کند و جایی ثبت نکند، مرورگر به رنگ قرمز درمی‌آید یا مثل فایرفاکس ابتدا یک صفحه حاوی هشدار نشان می‌دهد (که ای کاربر! این سایت مجوز SSLش معتبر نیست، نکند یوزرنیم و پسوردهایت را به این امید که https دارد پس امن است، در آن وارد کنی و بیچاره شوی!؟) و کاربر باید روی I Understand the risks (یعنی من ریسک‌ها را می‌فهمم و می‌پذیرم) کلیک کند تا وارد سایت شود.

(مدتی بود که به خاطر تحریم، هیچ سازمانی مثل کومودو، مجوزهای SSL بانک‌های دولتی ایران را نمی‌پذیرفت، بنابراین شما وارد سایت‌های ایرانی هم که می‌شدید مرورگر هشدار می‌داد که این سایت ناامن است!!)


 



موضوعات :
ترجمه
ads

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

admin 162 نوشته در رهاپروژه دارد . مشاهده تمام نوشته های

دیدگاه ها


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

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *