الگوریتم های رمزنگاری اغلب به دو دسته ی کلی رمزنگاری متقارن (Symetric Cryptography) و رمزنگاری نامتقارن (Asymmetric Cryptography) تقسیم می شوند. تفاوت کلی مابین این دو روش رمزگذاری در تعداد کلیدهای تولیدی در این الگوریتم هاست، که در الگوریتم متقارن یک و در نامتقارن دوتاست.
در ابتدای پیدایش رمزنگاری، بشر از رمزنگاری متقارن استفاده می کرد. بعدها رمزنگاری نامتقارن معرفی شد که بسیار ایمن تر، قابل اعتمادتر و کاراتر از رمزنگاری متقارن بود. اما با این حال رمزنگاری نامتقارن به طور کلی جایگزین الگوریتم متقارن نشد، چرا که هر کدام از این الگوریتم ها کاربردهای خاص خود را دارند.
در ابتدا با لزوم رمزنگاری داده ها و سپس با رمز نگاری متقارن و نامتقارن آشنا می شویم. در انتها نیز رمزنگاری نامتقارن را به تفضیل مورد بررسی قرار خواهیم داد و پس از بررسی تفاوتهای این دو الگوریتم نمونه هایی از کاربردهای آنها را معرفی خواهیم کرد. ا
همیت رمزنگاری داده ها با افزایش استفاده از کامپیوترها و رشد شبکه ها و مخصوصا اینترنت، اهمیت رمزنگاری نیز افزایش یافته است. به بیان ساده رمزنگاری حامی امنیت شماست. زمانی که در حال انجام خدمات بانکی اینترنتی هستید رمزنگاری از جزئیات حساب شما محافظت میکند که مبادا اطلاعات شما به دست افراد متفرقه بیفتد. همچنین رمزنگاری از دادههای شما در صورت دزدیده شدن سیستمتان محافظت میکند. رمزنگاری در حفظ ناشناسی شما در موارد خاص ضروری است. رمزنگاری از پیام هایی که شما در شبکه های اجتماعی (البته منظور از شبکه های اجتماعی ایمن برنامه ای مانند پیام رسان سروش نیست!) رد و بدل می کنید محافظت می کند که افراد متفرقه یا دولت ها و سازمان ها نتوانند شما را زیر نظر داشته باشند. و صدها کاربرد دیگر ...
در پرانتز برای افراد تازه وارد به این بحث باید گفت که رمزنگاری برابر با مخفی کردن چیزی به معنای واقعی کلمه نیست! تفاوت پنهان نگاری با رمزگذاری در دسترسی پذیری است. بدین معنا که مثلا وقتی پیامی رمزگذاری شود، تنها افرادی که کلید لازم برای رمزگشایی آن را داشته باشند میتوانند به اصل پیام دسترسی داشته باشند، وگرنه بدون رمز با یکسری داده ی بی معنا سروکار خواهند داشت.
رمزنگاری متقارن (Symetric)
در روش رمزنگاری متقارن تنها یک کلید داریم. مانند اینکه یک قفل داشته باشیم و تنها یک کلید. بدون داشتن کلید نمی توانیم قفل را باز کنیم. گیرنده با همان کلیدی که فرستنده، پیام را رمزنگاری کرده، آن را رمزگشایی میکند. برای این منظور باید فرستنده پیام قبلا کلید را از طریق یک کانال ایمن به دست گیرنده رسانده باشد. مناسب ترین کانال ارتباطی شبکه اینترنت است، اما اینترنت بستر بسیار نا امنی است.
در صورت استفاده از آن برای ارسال رمز بدون هیچ مکانیزم امنیتی ای، همیشه امکان لو رفتن کلید وجود دارد.
مثلا فرض کنید که می خواهید پیامی را که حاوی اطلاعات مهمی است به شخصی برسانید. اگر بخواهید که کسی به جز آن شخص نتواند اصل پیام را مشاهده نماید، باید پیام را با یک کلید قفل کرده و کلید را به نحوی که کسی نتواند ببیند (یک کانال ایمن) به او برسانید. اما بستر اینترنت ناامن بوده و برای ارسال پیام های این چنینی مناسب نیست! خب چه باید کرد؟ بهترین چاره استفاده از رمزنگاری نامتقارن یا دو کلیده است. معمولا منظور از کلید در رمزنگاری، یک رشته حاوی تعدادی کاراکتر می باشد که طول این رشته، بسته به الگوریتم های مختلف رمزنگاری می تواند متفاوت می باشد.
رمزنگاری نامتقارن (Asymmetric)
در الگوریتم های رمزنگاری نامتقارن یا asymmetric بر خلاف روش متقارن، دو کلید وجود دارد: کلید خصوصی یا Private key و کلید عمومی یا Public key. در این الگوریتم ها به جای استفاده از یک کلید، برای رمزنگاری و رمزگشایی از دو کلید متفاوت استفاده می شود که به عنوان یک جفت با یکدیگر کار می کنند. این که چگونه این دو کلید به هم وابسته اند به این علت است که بین این دو یک رابطه ریاضی وجود دارد. استفاده از الگوریتم های نامتقارن در رمزنگاری پردازش زیادی را برای پردازنده ایجاد می کند. به همین خاطر تنها در مواقع خیلی حساس و تنها داده های حساس را با این الگوریتم رمز می کنیم. داده هایی همانند شماره حساب ها و رمز کارت های مشتریان.
در رمزنگاری نامتقارن یا Asymmetric این قانون ها همیشه پابرجا هستند:
کلید عمومی در دسترس همگان قرار میگیرد و کلید خصوصی تنها نزد تولید کننده ی آن. از کلید خصوصی باید به خوبی مواظبت کرد و آن را در اختیار هیچ کسی قرار نداد. وقتی داده یا پیامی با کلید عمومی رمز شود، تنها با کلید خصوصی متناظر آن قابل رمزگشایی است.
روال کاری مثلا وقتی بخواهید پیامی مهم را به کسی ارسال نمایید، باید کلید عمومی شخص مورد نظر را برداشته (این کلید معمولا از اینترنت تهیه می گردد) و پیامتان را با آن رمز کنید. سپس پیامتان را به شخص مورد نظر بفرستید. پیام ارسالی شما تنها بوسیله ی آن شخص و کلید خصوصی او باز می شود و غیر از او احدی نخواهد توانست تا اصل پیام را بفهمد، مشروط بر این که کلید خصوصی آن شخص تنها نزد خود او باشد.
بعنوان یک مثال واقعی استفاده از این جفت کلیدها، یک سایت که از پروتکل ssl استفاده می کند را در نظر بگیرید. (همان وب سایت های https) در برقراری ارتباط با این وب سایت، برای امن کردن ارتباط از قبل یک جفت کلید در سرور آن ایجاد شده است. همانند مثال قبلی تنها سرور است که کلید خصوصی دارد.
شما داده های ارسالی به آن سرور را با کلید عمومی آن سرور رمز می کنید. بنابراین به جز سرور احدی نخواهد توانست به پیام های ارسالی شما به آن سرور دست یابد. به این دلیل است که همه ی وب سایت هایی که با اطلاعاتی حساس درگیرند - همانند درگاه های پرداخت بانک ها - از پروتکل https استفاده میکنند، تا اطلاعات کارت های بانکی مشتریان در اختیار هکرها قرار نگیرد! تفاوت در کاربردهای رمزنگاری متقارن و نامتقارن هر دو روش رمزگذاری بحث شده دارای مزایا و معایبی نسبت به یکدیگر هستند.
الگوریتم های رمزنگاری متقارن سریع تر بوده و به قدرت محاسباتی کمتری نیاز دارند ولی مهم ترین ضعف آنها دادن کلید به تمامی افراد گیرنده ی پیام است. از آنجایی که کلید یکسانی برای رمزگذاری و رمزگشایی اطلاعات به کار می رود، کلید باید در اختیار تمامی افراد نیازمند به رمزگذاری و رمزگشایی پیام قرار گیرد، که این امر احتمال لو رفتن کلید را بالامی برد. اما رمزنگاری نامتقارن قابلیت اطمینان بسیار بالاتری دارد، چرا که کلید اصلی (یا خصوصی) تنها در دست یک نفر است.
کاربردهای رمزنگاری متقارن و نامتقارن
- استفاده از رمزنگاری نامتقارن در پروتکل های اینترنتی برای ایمن سازی ارتباطات از روش رمزگذاری نامتقارن در برخی از پروتکل های اینترنتی امن استفاده می شود. البته نه بدین معنی که از الگوریتم های متقارن اصلا استفاده نشود، اما الگوریتم های نامتقارن امنیت پایدارتری را برای ارتباطات بوجود می آورند. به عنوان نمونه ای از این پروتکل ها می توان به پروتکل های ssl و tls اشاره کرد که برای فراهم سازی ارتباطات امن در بستر اینترنت طراحی شده اند.(همان وب سایت هایی که آدرس آنها با https شروع می شوند) بدون این پروتکل ها امکان پرداخت های امن اینترنتی به این راحتی وجود نداشت!
- کاربردهای رمزنگاری متقارن و نامتقارن در رمز ارز ها تکنیک های رمزگذاری متقارن و نامتقارن در بسیاری از کیف پول های مربوط به رمز ارز ها مورد استفاده قرار می گیرند تا سطح امنیت بالاتری را برای کاربران فراهم نمایند. برای مثال، زمانی که کاربران یک گذرواژه برای کیف پول خود تنظیم می کنند از الگوریتم های رمزنگاری بهره می برند، بنابراین فایل مورد استفاده برای دسترسی به نرم افزار به صورت رمزنگاری شده می باشد و هر کسی نمیتواند به کیف پول دیگری دسترسی داشته باشد.
- کاربرد رمزنگاری نامتقارن در امضای دیجیتال (Electronic Signature) امضای دیجیتال یکی از کاربردهای رمزنگاری نامتقارن است که برای اعتبار سنجی و بررسی صحت یک پیغام در یک نرم افزار یا سند دیجیتال به کار برده می شود. هنگامی که پیغامی از کانالی ناامن ارسال میشود، یک امضای دیجیتال میتواند دلیلی باشد تا شخص گیرنده پیام ادعای شخص فرستنده را باور کند (که همان شخص فرستنده پیغام را ارسال کرده یا خیر). این نوع امضا در انتقال اسناد الکترونیکی مهم بسیار کاربردی اند. بدین ترتیب امکان ارسال اسناد در بستر اینترنت با تایید هویت امکان پذیر خواهد بود.