رمزنگاری کلید عمومی (یا نامتقارن) از یک جفت کلید برای رمزنگاری و رمزگشایی استفاده می کند. این جفت حاوی یک کلید عمومی و یک کلید خصوصی است که معمولا با یک ارتباط بسیار پیچیده ریاضی به یکدیگر مرتبط هستند.
در ارتباط رمزنگاری شده با استفاده از این روش هر موجودیتی که یک جفت از این کلیدها را دارد ، کلید عمومی خود را در اختیار سایر موجودیت ها قرار میدهد و کلید خصوصی خود را مخفیانه حفظ میکند و در دسترس کسی قرار نمی دهد. اطلاعاتی که با یکی از این دو کلید از یک جفت ، رمزنگاری شود با استفاده از کلید دیگر آن جفت قابل رمزگشایی می باشد. برای مثال فرض کنید که علی قصد ارسال یک پیام رمزنگاری شده را به مریم دارد رمزنگاری نامتقارن بدین شکل انجام خواهد شد:
۱- علی و مریم هر یک ، یک جفت کلید دارند. آن ها کلید عمومی خود را مستقیما در اختیار همدیگر قرار میدهند و کلید خصوصی خود را مخفی نگه میدارند.
۲- علی از کلید عمومی مریم برای رمزنگاری پیام استفاده می کند و پیام رمزنگاری شده را برای مریم می فرستد.
۳- مریم از کلید خصوصی خود برای رمزگشایی پیام دریافتی استفاده می کند.
این مثال ساده یک مشکل موجود در این روش را مشخص میکند و آن این است که علی نمی تواند مطمئن باشد که کلید عمومی مریم واقعا مال مریم است.ممکن است یک فرد اخلالگر ارتباط بین علی و مریم را مانیتور کرده باشد و یک کلید دیگر را بجای کلید عمومی مریم جایگزین کرده باشد.
یکی از اهداف زیرساخت کلید عمومی رفع این مشکل می باشد. زیرساخت کلید عمومی (PKI) شامل مؤلفه های سخت افزاری و نرم افزاری است که یک موجودیت دیگر به اسم Certificate Authority یا بصورت مخفف CA (که مسئول فراهم کردن گواهینامه های دیجیتال است) از آن برای یکپارچه سازی و مالکیت کلید های عمومی بهره می برد.
CA گواهینامه هایی امضا(رمزنگاری) شده را برای یک subject (که می تواند نام یک کامپیوتر ، کاربر و … باشد) صادر و توزیع میکند و بدین وسیله موجودیت آن subject را تأیید می کند و کلید عمومی آن موجودیت را نیز اعلام می نماید.این گواهینامه ها بوسیله کلید خصوصی CA رمزنگاری می شود.CA کلید عمومی خود را نیز در یک گواهینامه خودامضا (self-signed) در اختیار دیگران قرار میدهد.
بدین ترتیب مثال ارتباط علی و مریم بدین شکل تغییر خواهد کرد:
۱- فرض می کنیم که CA کلید عمومی خود را در قالب یک گواهینامه خودامضا (با استفاده از کلید خصوصی خود) صادر کرده است.
۲- علی و مریم برسر استفاده از CA برای تأیید موجودیت های همدیگر توافق میکنند.
۳- مریم در خواست یک کلید عمومی از CA را میدهد.
۴- CA موجودیت مریم را تأیید میکند سپس داده های موجود در گواهینامه را hash می کند و این مقدار hash شده را با استفاده از کلید خصوصی خود امضا میکند. بدین وسیله یک گواهینامه جدید شامل داده های گواهینامه و مقدار hash شده امضا شده آن ایجاد می کند و آن را به صورت عمومی منتشر میکند.
۵- علی گواهینامه صادر شده برای مریم توسط CA را دریافت می کند ، سپس hash داده های گواهینامه را محاسبه میکند و با مقدار hash رمزنگاری شده موجود در گواهینامه (که با استفاده از کلید عمومی CA رمزگشایی میکند) مقایسه می نماید. اگر این دو مقدار hash با هم برابر باشند علی مطمئن می شود که کلید عمومی موجود در گواهینامه واقعا مربوط به مریم است.
۶- علی از کلید عمومی موجود در گواهینامه مریم برای رمزنگاری پیامش به مریم استفاده میکند.
۷- مریم پیام دریافت شده از طرف علی را با استفاده از کلید خصوصی خود رمزگشایی می کند.
بدین روش علی از صحت کلید عمومی مریم اطمینان حاصل می کند و مطمئن است که کسی در میانه راه کلید عمومی او را تغییر نداده است.
source:network.tosinso