رمز و رمزنگاری
الگوریتم‌های رمزنگاری > رمزنگاری کلید عمومی (نامتقارن) Public Key

رمزنگاری کلید عمومی که از آن با نام رمزنگاری نامتقارن نیز یاد می‌گردد، از دو کلید متفاوت برای رمزنگاری استفاده می‌نماید: یک کلید برای رمزنگاری و کلیدی دیگر برای رمزگشائی. در رمزنگاری کلید عمومی، با استفاده از یک روش کاملاً «ایمن یک کلید برای ارسال‌کننده اطلاعات ایجاد و وی با استفاده از کلید فوق، اقدام به رمزنگاری و ارسال پیام رمز شده برای گیرنده می‌نماید. امکان رمزگشائی پیام رمز شده صرفاً» توسط دریافت‌کننده، امکان‌پذیر خواهد بود. در رمزنگاری کلید عمومی، سیستم یک زوج کلید خصوصی و عمومی ایجاد می‌نماید. کلید عمومی برای شخصی که از آن به منظور رمزنگاری یک پیام استفاده می‌نماید، ارسال می‌گردد. وی پس از رمزنگاری پیام با استفاده از کلید عمومی، پیام رمز شده را ارسال می‌نماید. دریافت‌کننده با استفاده از کلید خصوصی، اقدام به رمزگشائی پیام می‌نماید. (ماهیت کلید خصوصی استفاده شده در رمزنگاری کلید عمومی، مشابه کلید خصوصی استفاده شده در رمزنگاری کلید خصوصی نمی‌باشد). حتی اگر یک فرد متخلف، به کلید عمومی دستیابی پیدا نماید وی نمی‌تواند با استفاده از آن اقدام به رمزگشائی پیام رمز شده نماید، چراکه رمزگشائی پیام صرفاً با استفاده از کلید خصوصی امکان‌پذیر می‌باشد. برخلاف رمزنگاری کلید خصوصی، کلیدهای استفاده شده در رمزنگاری کلید عمومی چیزی به‌مراتب بیشتر از رشته‌های ساده می‌باشند. کلید در این نوع رمزنگاری دارای یک ساختار خاص با هشت فیلد اطلاعاتی است که دو فیلد آن به منظور رمزنگاری با استفاده از کلید عمومی استفاده می‌گردد و شش فیلد دیگر به منظور رمزگشائی پیام با استفاده از کلید خصوصی مورد استفاده قرار می‌گیرد. در سیستم رمزنگاری کلید عمومی با توجه به عدم ضرورت مبادله رمز مشترک، اولین مسئله در مدیریت کلید برطرف می‌گردد.
معمولترین سیستم نامتقارن، سیستم رمزنگاری کلید عمومی بنام RSA می‌باشد (حروف اول پدیدآورندگان آن یعنی Rivest , Shamir و Adlemen).
می‌توان از یک سیستم نامتقارن برای نشان دادن اینکه فرستنده پیام همان شخصی است که ادعا می‌کند، استفاده کرد. این عمل اصطلاحاً امضاء نام دارد. RSA شامل دو تبدیل است:
۱- امضاء، برای اینکار متن اصلی با استفاده از کلید اختصاصی رمز می‌شود.
۲- رمزگشایی، در این مرحله، عملیات مشابه‌ای روی متن رمزشده صورت می‌گیرد ولی اینکار با استفاده از کلید عمومی است.
برای تأیید امضاء بررسی می‌کنیم که آیا این نتیجه با دیتای اولیه یکسان است؛ اگر اینگونه‌است، امضاء توسط کلید اختصاصی متناظر رمزشده‌است.
به بیان ساده‌تر چنانچه متنی از شخصی برای دیگران منتشر شود، آن متن شامل متن اصلی و متن رمز شده متن اصلی توسط کلید اختصاصی همان شخص می‌باشد. حال اگر متن رمزشده توسط کلید عمومی آن شخص که شما از آن مطلعید رمزگشایی شود، مطابقت متن حاصل و متن اصلی نشاندهنده صحت فرد فرستنده‌است، به این ترتیب امضای فرد تأیید می‌شود.
اساس سیستم RSA فرمول زیر است:
X = Y^k (mod r)
که X متن کد شده، Y متن اصلی، k کلید اختصاصی و r حاصلضرب دو عدد اولیه بزرگ است که با دقت انتخاب شده‌اند. این شکل محاسبات، روی پردازنده‌های بایتی بخصوص روی ۸ بیتی‌ها که در کارت‌های هوشمند استفاده می‌شود بسیار کند است؛ بنابراین، اگرچه RSA هم تصدیق هویت و هم رمزنگاری را ممکن می‌سازد، در واقع برای تأیید هویت منبع پیام است که از این الگوریتم در کارت‌های هوشمند استفاده می‌شود و برای نشان دادن عدم تغییر پیام در طول ارسال و رمزنگاری کلیدهای آتی استفاده می‌گردد. سایر سیستم‌های کلید نامتقارن شامل سیستم‌های لگاریتم گسسته می‌باشند مانند Diffie-Hellman, ElGamal و سایر طرح‌های چندجمله‌ای و منحنی‌های بیضوی. بسیاری از این طرح‌ها عملکردهای یک طرفه‌ای دارند که اجازه تأیید هویت را می‌دهند اما رمزنگاری ندارند.
معموماً سیستمی امن محسوب می‌شود که هزینه شکستن آن بیشتر از ارزش دیتایی باشد که نگهداری می‌کند.
شکل زیر، فرایند رمزنگاری مبتنی بر کلید عمومی بین دو کاربر را نشان می‌دهد: