نتیجه فرآیند رمزنگاری متن رمز (Ciphertext) نامیده می شود. پیامی که باید رمزنگاری شود، متن آشکار(Plaintext) نامیده می شود و توسط یک تابع خاص به نام کلید (Key) به متن رمز، تبدیل می گردد. به طور کلی الگوریتم های رمزنگاری به دو دسته متقارن و نامتقارن تقسیم می شوند که ما در ادامه قصد داریم تا در این رابطه اطلاعاتی را به شما ارائه دهیم.
کلمه رمزنگاری (Cryptography)، برگرفته از لغات یونانی به معنای محرمانه نوشتن متون می باشد. نخستین کاربرد شناخته شده رمزنگاری در سال های 1900 تا سال قبل از میلاد در دیوار آرامگاه پادشاهی قدیم مصر کشف شده است.
متخصصین رمزنگاری بین رمز(Cipher) و کد (Code) تفاوت قائل هستند.
هدف از رمزنگاری: ذخیرهسازی و انتقال دیتا به شیوهای امن است به طوری که در فرآیند ارسال و دریافت دیتا در بستر نا امن اینترنت، صرفاً افراد مد نظر ما توانایی رمزگشایی دیتای رمزگذاریشده را داشته باشند.
در این مقاله، در ادامه مقاله همه چیز درمورد رمزنگاری (Cryptography) به بررسی رمزنگاری متقارن و نامتقارن و انوع آن ها و تابع هش پرداخته می شود.
اصل اساسی کرکهف می گوید، بنا را بر این بگذارید که الگوریتم رمزنگاری شما برای دشمن شناخته شده است و امنیت سامانه خود را با پنهان نگه داشتن کلید رمزنگاری حفظ کنید. البته این الزاماً به این معنی نمی باشد که باید روش و الگوریتم رمزنگاری در اختیار همگان باشد، اما بایستی در زمان ساخت هر الگوریتم چنین پنداشته شود که همه به آن دسترسی دارند و به عبارت دیگر امنیت سامانه به پنهان ماندن الگوریتم وابسته نباشد.
یکی دیگر از ویژگی های این اصل در این است که اگر الگوریتم را در دسترس همه قرار دهیم درواقع باعث افزایش امنیت آن می شویم زیرا پژوهشگران امنیتی بسیار بیشتری به بررسی آن خواهند پرداخت و با کشف حفره های امنیتی آن از سوءاستفاده از آن ها، توسط دشمنان و جاسوس ها جلوگیری می کنند.
یکی از ویژگی های مثبت استفاده از کلید در این می باشد که اگر به دلیل لو رفتن آن و یا به خطر افتادن امنیت سامانه (به هر شکلی) نیاز به تغییر روش رمزنگاری داشته باشیم، بدون دستکاری الگوریتم که کاری دشوار و زمان بر است، با انتخاب کلیدی نوین که به مراتب فرآیندی راحت تر و سریع تر می باشد می توانیم سیستمی کاملا ایمن داشته باشیم و بدون هیچ نگرانی از کشف کلید قبلی توسط دشمن از آن استفاده کنیم.
مثل: DES،3DES و AES
برخلاف رمزنگاری متقارن در رمزنگاری به شیوه نامتقارن از یک جفت کلید عمومی (Public Key) برای رمزگذاری و حفظ محرمانی و کلید خصوصی (Private Key) جهت رمزگشایی استفاده می شود که یک رابطه ریاضی بین آن ها وجود دارد.
مثل: RSA،DH و DSA
استفاده از الگوریتم های asymmetric پردازش زیادی را برای CPU در زمان رمزنگاری و رمزگشایی داده ایجاد می کند. به همین خاطر بجای استفاده از این روش برای رمزنگاری کل اطلاعات، در مراحل خاصی از ارتباط (مانند authentication) استفاده می شود.
یکی از دلایلی که این روش را رمزنگاری public key می نامند این می باشد که ما این کلید را به صورت عمومی در اختیار همه قرار می دهیم. کلید دیگری که در این روش استفاده می شود private key نامیده می شود و این کلید در اختیار کسی قرار نمی گیرد و مخصوص خود دستگاه است.
یک مثال استفاده از این جفت کلید ، دیدن یک سایت امن می باشد. در پشت صحنه صفحه سایت، از این جفت کلید جهت امن سازی ارتباط استفاده می شود. کامپیوتر شما به کلید Public دسترسی دارد و فقط سرور است که کلید private را دارد.
شایان ذکر می باشد که سرعت الگوریتم های کلید عمومی از الگبوریتم های رمزگذاری متقارن پایین تر است و طول کلید بیشتری دارد.
به طور کلی عملکرد الگوریتم های هَش، رمزنگاری و تولید اعداد تصادفی از اصول Shannon تحت عناوین Confusion و Diffusion پیروی می کنند که Confusion در رمزنگاری به این معنی می باشد که هر بیت تشکیل دهنده متن رمزگذاری شده در خروجی باید به قسمت های مختلفی از کلید و دیتای ورودی ربط داشته باشد، به طوری که رابطه بین دیتای ورودی، کلید و دیتا رمزگذاری شده به سادگی قابل تشخیص نباشد.
Diffusion به این معنی می باشد که تغییر یک بیت در دیتای ورودی باید منجر به تغییر قابل توجهی در دیتای خروجی رمزگذاری شده شود.
هش در واقع محصول یک تابع رمزنگاری هش می باشد.
تابع هش عملیات یک سویه ریاضی می باشد که بر روی Plain Text انجام می شود که یک مقدار ورودی با طول نامعلوم را به مقدار فشرده شده ی دیگر تبدیل میکند.
ورودی تابع هش یک مقدار با طول نامعلوم است اما خروجی همیشه طول ثابتی دارد. توابع هش به شدت کاربردی (ذخیره رمز عبور، بررسی صحت داده و ….) هستند و تقریبا در همه حوزه های امنیت اطلاعات حضور دارند.