رمزنگاری کلید عمومی

رمزنگاری کلید عمومی یا رمزنگاری نامتقارن روشی از رمزنگاری است که کلید مورد استفاده برای رمزگذاری با کلید مربوط برای رمزگشایی با هم متفاوت است (برخلاف رمزنگاری متقارن که در آن رمزگذاری و رمزگشایی با یک کلید انجام می‌شود).
در رمزنگاری نامتقارن، کاربر یک جفت کلید در اختیار دارد:
۱- کلید عمومی (برای رمزگذاری متن اصلی و راست‌آزمایی امضای دیجیتال)
۲- کلید خصوصی (برای رمزگشایی متن رمز و امضای دیجیتال داده‌ها)
مشخص است که کلید خصوصی مخفی باقی می‌ماند ولی کلید عمومی ممکن است به‌طور وسیع منتشر شود. پیام‌های دریافتی کد شده توسط کلید عمومی کاربر فقط برای خودش قابل خواندن می‌باشد زیرا تنها خود کاربر کلید خصوصی جهت رمزگشایی را در اختیار دارد.
دو کلید با هم رابطه‌ای ریاضی دارند ولی عملا کلید خصوصی از روی کلید عمومی محاسبه پذیر نیست.
مفاهیم زیرساخت کلید عمومی
زیرساخت کلید عمومی یا PKI، زیرساختی است که بر اساس اعتماد، و نه امنیت، طراحی و پیاده‌سازی شده‌است و هدف آن برقراری امنیت و آرامش خاطر کاربران شبکه‌های کامپیوتری است.
PKI را می‌توان به صورت مجموعه سخت‌افزار، نرم‌افزار، کاربران، سیاست‌ها و رویه‌هایی که برای ایجاد مدیریت، ذخیره، توزیع و ابطال گواهی مبتنی بر رمزنگاری با کلید عمومی مورد نیاز می‌باشند تعریف نمود. رمزنگاری به عنوان یکی از روش‌های قابل اعتماد جهت فراهم آوردن سرویس‌های امنیتی قابل استفاده می‌باشد، ولی امروزه به صورت کلی‌تری جهت فراهم آوردن ابزارهایی که می‌توانند سرویس‌هایی را برای امنیت اطلاعات و داده‌ها ارائه نمایند، استفاده می‌شود. برای هردو عمل رمزنگاری و تصدیق هویت کلید عمومی از زوج کلید (یک کلید عمومی و یک کلید خصوصی) استفاده می‌شود. در رمزنگاری، فرستنده با کلید عمومی فایل را رمزگذاری می‌کند و گیرنده پس از دریافت، آن را با کلید خصوصی خود از رمز خارج می‌کند؛ و در بحث تصدیق هویت، فرستنده با کلید خصوصی خود پیام را امضا می‌کند و گیرنده، پیام فرستنده را با کلید عمومی تصدیق می‌نماید.
ساختار موجودیت‌های PKI
ارتباط بین موجودیت‌های PKI طی یک ساختار کلی ارائه می‌شود.
زوج کلیدهای چندتایی
هر موجودیت PKI می‌تواند چند زوج کلید داشته باشد. بین یک زوج کلید و یک «نقش» یک تناظر قوی وجود دارد. مثلا ممکن است یک موجودیت از یک کلید برای امضای یک خرید برای بخش کاری خودش و از کلید دیگر برای امضای یک فرم کرایه فیلم و از یکی دیگر برای امضای یک ایمیل شخصی استفاده کند.
مفهوم زوج کلیدهای چندتایی برای هر موجودیت برای بعضی از محیط‌ها به دلیل نقشهای مختلفی که موجودیت ایفا می‌کند منطقی است، چون هر زوج کلید در حوزه کوچکی از کاربرد محدود شده‌است. برای صورت گرفتن تمام وظایفی که با یک نقش مشخص در ارتباط است، یک موجودیت PKI نیاز است که چند زوج کلید داشته باشد.
پرونده:Kpair.JPG
زوج کلیدهای مختلف می‌توانند کاربردهای متفاوت داشته باشند. خصوصا اینکه یک زوج کلید در الگوریتم امضای دیجیتالی (DSA) زمانی‌که بر طبق خصوصیاتی پیاده‌سازی شده‌است، نمی‌تواند برای رمزگذاری یا رمزگشایی بکار رود. بطور مشابه زوج کلید DH نمی‌تواند برای امضا نمودن داده‌ها و راست‌آزمایی امضا بکار رود. به‌علاوه حتی یک زوج کلید بر اساس الگوریتم RSA _ که به صورت ریاضی برای تصدیق، یکپارچگی، محرمانگی یا معاوضه کلید بکار می‌رود_ ممکن است به وسیله سیاستها، احکام، یا انتخاب پیاده‌سازی برای استفاده تک منظوره محدود شود.
کشف رمز کلید
موضوع کشف رمز کلید در دو حوزه مورد بحث قرار می‌گیرد:
کشف رمز کلید خصوصی موجودیت نهایی
کشف رمز کلید خصوصی یک CA
در حالت اول، به محض اینکه شخصی متوجه می‌شود که کلید خصوصی‌اش کشف رمز شده‌است، باید اقدامات زیر را انجام دهد:
یک پیام درخواست ابطال برای مرجع قدرت امنیتی مربوط جهت صدور اعلان به تمام طرفهای مرتبط مبنی بر عدم استفاده از کلید عمومی
در صورت لزوم، پیمودن مراحل برای تولید و صدور گواهی برای یک زوج کلید جدید
پیامد کشف رمز کلید یک موجودیت نهایی، بستگی به نوع کلید دارد. اگر کلید امضاکننده کشف رمز شده باشد، دارنده این کلید باید گواهی مورد نظر را باطل کند و همین کار از دسترسی بیشتر افراد غیرمجاز جلوگیری خواهد کرد. اما اگر کلید کشف رمز شده، کلید خصوصی و برای از رمز درآوردن اسناد باشد، بعلاوه نکته بالا، باید تمام اسنادی که با این کلید از رمز خارج می‌شدند و کلیدهایی که این اسناد را به رمز درآورده‌اند، شناسایی شوند.
بازیابی و آمادسازی در برابر حوادث
آگاه ساختن طرف اعتمادکننده
در صورتی که کلید CA کشف رمز شود، به دلیل تعدد افراد، وی نمی‌تواند به طرفهای اعتمادکننده اطلاع دهد که این مسئله اتفاق افتاده‌است و هیچ راه قابل اعتمادی برای این شکل از اطلاع‌رسانی وجود ندارد.
یک راه اطلاع‌رسانی از طریق پیام‌های CRL است که آن را با ارائه یک مکانیزم بیان می‌کنیم. در این مکانیزم، CRL شامل کلید کشف رمز شده می‌باشد که توسط کلید خصوصی جدید CA صادر و امضا شده‌است. اعضای اعتمادکننده این امضا را با بازیابی کلید عمومی CA و محاسبه عدد HASH این کلید معتبر می‌شمارند و آن را با عدد HASH قبلی در گواهی قدیمی CA مقایسه می‌کنند. این مکانیزم نیاز بدان دارد که CA در زمان گواهی کردن زوج کلید فعلی، زوج کلید بعدی را نیز تولید کند.
آماده‌سازی
در شرایط کشف رمز CA باید اقدامات زیر را در جهت کاهش آسیبها انجام دهد:
تلاش به هر شکل ممکن برای شناخت طرفهای اعتمادکننده تا پیام اخطار فقط به این افراد فرستاده شود. این کار در مدل وب شدنی نیست، اما از طریق دیگر مدل‌های اعتماد PKI حاصل می‌شود.
ذخیره نمودن کلید عمومی مورد اعتماد به عنوان یک گواهی در حوزه محلی طرفهای اعتمادکننده، پشتیبانی از انتشار پیام CRL و تقویت نرم‌افزاری طرفهای اعتمادکننده برای چک کردن پیام CRL. این کار تا حد زیادی زیان را کمینه می‌کند چون بدون مداخله موجودیت‌های نهایی و بطور خودکار، اعتماد نسبت به کلید کشف رمز شده از بین می‌رود. این روش برای محیط‌هایی که وضعیت گواهی خود را از طریق لیست ابطال چک می‌کنند، مناسب‌ترین است.
داشتن یک دوره زمانی معتبر برای زوج کلیدها. کشف رمز یک کلید پس از ده سال استفاده نسبت به کشف رمز کلید پس از یک سال استفاده، عواقب وخیم‌تری دارد؛ بنابراین هرچه این دوره زمانی کوتاهتر باشد، میزان خسارت کمتر خواهد بود.
اجرای مکانیزم خودکار و کنترل شده جابجایی کلید CA.
بازیابی
تنها راه بازیابی این است که به PKI دوباره ارزش دهی شود؛ بنابراین یک کلید از سمت CA تولید می‌شودو یک کپی از کلید عمومی در محل هر موجودیت PKI قرار داده می‌شود. به عبارتی PKI باید برای موجودیت‌ها به شکلی ساخته شود که انگار هیچ وقت وجود نداشته‌است.
مدیریت گواهی مستقل
اگر یک کلید عمومی در چند گواهی قرار داده شده و کلید خصوصی در معرض خطر باشد، باید به یاد داشت که کدام گواهی‌ها دارای این کلید بودند تا بتوان آن‌ها را باطل نمود. عدم ابطال هرکدام از این گواهی‌ها می‌تواند منجر به یک ریسک امنیتی جدی شود. در مقابل، چنین ریسکی کاهش می‌یابد اگر کلید عمومی فقط در یک گواهی ظاهر شود؛ چون بار اجرایی یافتن و ابطال یک گواهی به مراتب کمتر است.
بعلاوه، گواهی‌های جداگانه در ارتباط با زوج کلیدهای جداگانه، از نظر ساخت مستقلند: آن‌ها از نظر دوره اعتبار، سیاستها، کاربرد و رویه‌های مدیریتی مستقلند؛ بنابراین ابطال یکی از آن‌ها بر بقیه تاثیرگذار نیست. داشتن یک کلید عمومی در چند گواهی، مدیریت آن را پیچیده می‌کند.
پشتیبانی از عدم انکار
برای پشتیبانی از عدم انکار، شرط لازم آن است که کلید خصوصی همراه با فعالیت عدم انکار مورد نظر (مانند امضای یک رسید برای اثبات انتقال آن) نباید برای بخش‌های دیگر شناخته شده باشد. در غیر اینصورت، موجودیت مزبور به سادگی می‌تواند اعلام کند که بخش دیگری عدم انکار نموده‌است؛ بنابراین سرویس عدم انکار به مانع برخورد می‌کند.
کلید خصوصی مربوط به گواهی که هدفش پشتیبانی از عدم انکار است، نباید در معرض دید موجودیت‌های دیگر قرار گیرد. در بعضی محیطها، لازم است که چنین کلیدهایی تولید شوند تا از کلیدهایی که درگیر با فعالیت‌های عدم انکار نیستند، توسط یک موجودیت مورد اعتماد نسخه پشتیبان تهیه شود یا این کلیدها در نرم‌افزار ذخیره گردند.