رمزنگاری یک موضوع بزرگ است. ما قصد داریم اصول اولیه آن را بررسی کنیم تا شما درک پایهای از آن داشته باشید. رمزنگاری توسط طیف گستردهای از برنامهها استفاده میشود و تقریباً در همه جای اینترنت کاربرد دارد.
بدون رمزنگاری، ارتباطات از طریق اینترنت بسیار ناامن خواهد بود و هر کسی میتواند به راحتی دادههای شما را مشاهده کند. خوشبختانه اینطور نیست، و تقریباً تمام دادههایی که شما از اینترنت دریافت یا ارسال میکنید، رمزگذاری شده و به صورت متن ساده توسط کسی که به آن دسترسی پیدا میکند قابل مشاهده نیست. اکنون بیایید به جزئیات بیشتری از رمزنگاری بپردازیم. دو نوع رمزنگاری وجود دارد:
فرض کنید باب میخواهد پیامی به آلیس ارسال کند، اما او نمیخواهد پیام به صورت متن ساده ارسال شود زیرا هر کسی میتواند آن را بخواند.
باب یک دستورالعمل دارد که چگونه حروف را به صورتی به هم بریزد که هیچ کس نتواند معنای آن را بفهمد (این رمزگذاری-encryption نامیده میشود). باب هم همان دستورالعمل را دارد اما او از آن استفاده میکند تا حروف را مرتب کند و دوباره قابل خواندن شود (این رمزگشایی- decryption نامیده میشود)، و او متوجه خواهد شد که باب چه نوشته است. به این دستورالعمل در رمزنگاری "Key" گفته میشود. در رمزنگاری متقارن، هر دو کاربر کلید یکسانی برای رمزگذاری و رمزگشایی پیامها دارند.
در رمزنگاری نامتقارن، کلیدهای رمزگذاری و رمزگشایی متفاوت هستند. کلید رمزگذاری فقط برای رمزگذاری استفاده میشود و نمیتوان از آن برای رمزگشایی استفاده کرد و بالعکس. کلید رمزگذاری "Public key" و کلید رمزگشایی "Private key" نامیده میشود.
زیرا امنیت بیشتری دارد! اگر از رمزنگاری متقارن استفاده کنید و کسی کلید شما را بدست آورد، میتواند پیامهایی را که ارسال میکنید رمزگذاری و رمزگشایی کند. اما در رمزنگاری نامتقارن، کسی نمیتواند پیامهایی را که شما با استفاده از کلید عمومی رمزگذاری کردهاید، رمزگشایی کند. فقط کسی که کلید خصوصی را دارد میتواند آنها را رمزگشایی کند. بیایید یک مثال بزنیم:
آلیس میخواهد با باب صحبت کند.
آلیس پیام خود را با استفاده از کلید عمومی رمزگذاری کرده و به باب ارسال میکند.
باب پیام را با استفاده از کلید خصوصی خود رمزگشایی میکند و پاسخی به آلیس میدهد.
و اینگونه مکالمه ادامه مییابد...
هشها رشتههای طولانی از حروف و اعداد هستند که توسط الگوریتمهای هشسازی تولید میشوند. آنها متن ساده را گرفته و آن را به هش تبدیل میکنند.
نکته مهم درباره هشها این است که غیرقابل بازگشت هستند. هیچ راهی برای decrypt/decode یک هش وجود ندارد.
الگوریتمهای هشسازی محبوب عبارتند از: MD5 (Message Digest 5) و SHA (Secure Hash Algorithm).
این همان شکلی است که کلمه "hello" به عنوان یک هش MD5 دارد:
5d41402abc4b2a76b9719d911017c592
محبوبترین استفاده از هشها برای شناسایی فایل و ذخیره دادههای حساس، مانند رمزهای عبور است. وقتی شما یک حساب کاربری در یک وبسایت ایجاد میکنید، رمز عبور شما به یک هش تبدیل میشود و این هش در پایگاه داده سرور ذخیره میشود. بنابراین، وقتی وارد حساب کاربری خود میشوید، رمزی که وارد میکنید به یک هش تبدیل میشود و سرور آن را گرفته و با هش موجود در پایگاه داده مقایسه میکند. اگر آنها یکی باشند، یعنی رمز عبور شما درست است و سرور به شما اجازه ورود میدهد.
هشهای MD5 همچنین برای اطمینان از یکپارچگی دادههای فایلها استفاده میشوند. زیرا الگوریتم هشسازی MD5 همیشه برای یک ورودی مشخص، خروجی یکسانی تولید میکند. بنابراین میتوان از هش یک فایل منبع با هش جدیدی که از فایل مقصد ساخته شده مقایسه کرد تا مطمئن شد که فایل سالم و بدون تغییر باقی مانده است.
الگوریتمهای هشسازی زیادی وجود دارند که آنها را در اینجا پوشش نخواهیم داد. تفاوتی بین رمزگذاری و کدگذاری وجود دارد. فرض کنید شما یک فایل رمزگذاریشده دارید، تنها راه برای رمزگشایی آن استفاده از کلید است. در حالی که دادههای کدگذاریشده را میتوان بلافاصله و بدون کلید رمزگشایی کرد. این یک شکل از رمزنگاری نیست، بلکه فقط یک روش نمایش دادههاست.
یکی از کدگذاریهای بسیار محبوب Base64 است. اینگونه است که "hi there" با کدگذاری Base64 نمایش داده میشود:aGkgdGhlcmU=
Source:TryHackMe