از ویکیپدیا، دانشنامه آزاد

یک عدد غیر قابل پیش بینی (معمولا بزرگ و تصادفی ) برای شروع تولید یک جفت کلید قابل قبول مناسب برای استفاده توسط یک الگوریتم کلید نامتقارن استفاده می شود.

در یک طرح رمزگذاری کلید نامتقارن، هر کسی می‌تواند پیام‌ها را با استفاده از یک کلید عمومی رمزگذاری کند، اما تنها دارنده کلید خصوصی جفت شده می‌تواند چنین پیامی را رمزگشایی کند. امنیت سیستم به محرمانه بودن کلید خصوصی بستگی دارد که نباید برای هیچکس دیگر شناخته شود.

در طرح تبادل کلید Diffie–Hellman ، هر طرف یک جفت کلید عمومی/خصوصی تولید می‌کند و کلید عمومی جفت را توزیع می‌کند. پس از به دست آوردن یک کپی معتبر (nb، این مهم است) از کلیدهای عمومی یکدیگر، آلیس و باب می توانند یک راز مشترک را به صورت آفلاین محاسبه کنند. به عنوان مثال، راز مشترک را می توان به عنوان کلید رمز متقارن استفاده کرد که اساساً در همه موارد بسیار سریعتر خواهد بود.

در این مثال پیام به صورت دیجیتالی با کلید خصوصی آلیس امضا شده است، اما خود پیام رمزگذاری نشده است. 1) آلیس با کلید خصوصی خود پیامی را امضا می کند. 2) با استفاده از کلید عمومی آلیس، باب می تواند تأیید کند که آلیس پیام را ارسال کرده است و اینکه پیام تغییر نکرده است.

رمزنگاری با کلید عمومی یا رمزنگاری نامتقارن ، یک سیستم رمزنگاری است که از جفت کلید استفاده می‌کند. هر جفت از یک کلید عمومی (که ممکن است برای دیگران شناخته شده باشد) و یک کلید خصوصی (که ممکن است توسط کسی به جز مالک شناخته نشود) تشکیل شده است. [1] تولید چنین جفت های کلیدی به الگوریتم های رمزنگاری بستگی دارد که بر اساس مسائل ریاضی بنام توابع یک طرفه هستند . امنیت مؤثر مستلزم خصوصی نگه داشتن کلید خصوصی است. کلید عمومی را می توان به صورت باز و بدون به خطر انداختن امنیت توزیع کرد. [2]

در چنین سیستمی، هر شخصی می تواند پیامی را با استفاده از کلید عمومی گیرنده مورد نظر رمزگذاری کند، اما آن پیام رمزگذاری شده تنها با کلید خصوصی گیرنده قابل رمزگشایی است . [3] این به عنوان مثال، به یک برنامه سرور اجازه می‌دهد تا یک کلید رمزنگاری را که برای رمزنگاری کلید متقارن مناسب در نظر گرفته شده، تولید کند، سپس از کلید عمومی مشترک کلاینت برای رمزگذاری آن کلید متقارن جدید استفاده کند.. سپس سرور می تواند این کلید متقارن رمزگذاری شده را از طریق یک کانال ناامن برای مشتری ارسال کند. فقط مشتری می تواند آن را با استفاده از کلید خصوصی مشتری (که با کلید عمومی استفاده شده توسط سرور برای رمزگذاری پیام جفت می شود) رمزگشایی کند. از آنجایی که کلاینت و سرور هر دو دارای یک کلید متقارن هستند، می توانند با خیال راحت از رمزگذاری کلید متقارن (احتمالاً بسیار سریعتر) برای برقراری ارتباط از طریق کانال هایی که در غیر این صورت ناامن هستند استفاده کنند. این طرح این مزیت را دارد که نیازی به اشتراک‌گذاری دستی کلیدهای متقارن (یک مشکل اساساً دشوار) نیست و در عین حال مزیت توان عملیاتی بالاتر رمزنگاری کلید متقارن را به دست می‌آورد .

با رمزنگاری کلید عمومی، احراز هویت قوی نیز امکان پذیر است. یک فرستنده می تواند یک پیام را با یک کلید خصوصی ترکیب کند تا یک امضای دیجیتال کوتاه روی پیام ایجاد کند. هر کسی که کلید عمومی مربوطه فرستنده را داشته باشد می تواند آن پیام را با امضای دیجیتال ادعا شده ترکیب کند. اگر امضا با پیام مطابقت داشته باشد، مبدا پیام تأیید می شود (یعنی باید توسط صاحب کلید خصوصی مربوطه ساخته شده باشد). [4] [5]

الگوریتم‌های کلید عمومی، اصول اولیه امنیتی در سیستم‌های رمزنگاری مدرن هستند، از جمله برنامه‌ها و پروتکل‌هایی که از محرمانه بودن، صحت و غیرقابل رد کردن ارتباطات الکترونیکی و ذخیره‌سازی داده‌ها اطمینان می‌دهند. آنها زیربنای استانداردهای اینترنت متعددی مانند امنیت لایه حمل و نقل (TLS) ، SSH ، S/MIME و PGP هستند. برخی از الگوریتم‌های کلید عمومی توزیع و محرمانه بودن کلید را ارائه می‌کنند (مثلاً تبادل کلید Diffie–Hellman )، برخی امضاهای دیجیتال (مانند الگوریتم امضای دیجیتال ) و برخی هر دو را ارائه می‌کنند (مانند RSA )). در مقایسه با رمزگذاری متقارن ، رمزگذاری نامتقارن نسبتاً کندتر از رمزگذاری متقارن خوب است و برای بسیاری از اهداف بسیار کندتر است. [6] سیستم‌های رمزنگاری امروزی (مانند TLS ، Secure Shell ) از رمزگذاری متقارن و رمزگذاری نامتقارن استفاده می‌کنند، اغلب با استفاده از رمزگذاری نامتقارن برای تبادل امن یک کلید مخفی که سپس برای رمزگذاری متقارن استفاده می‌شود.

فهرست

توضیحات [ ویرایش ]

قبل از اواسط دهه 1970، همه سیستم‌های رمزگذاری از الگوریتم‌های کلید متقارن استفاده می‌کردند، که در آن کلید رمزنگاری یکسان با الگوریتم زیربنایی توسط فرستنده و گیرنده استفاده می‌شود، که هر دو باید آن را مخفی نگه دارند. قبل از هر گونه استفاده از سیستم، به عنوان مثال، از طریق یک کانال امن ، الزاماً کلید در هر سیستمی باید بین طرف های ارتباطی به روشی امن مبادله می شد . این نیاز هرگز پیش پا افتاده نیست و با افزایش تعداد شرکت کنندگان، یا زمانی که کانال های امن در دسترس نیست، یا زمانی که (همانطور که رویه رمزنگاری معقول است)، کلیدها به طور مکرر تغییر می کنند، به سرعت غیرقابل مدیریت می شود. به ویژه، اگر قرار است پیام‌ها از سایر کاربران ایمن باشند، برای هر جفت کاربر ممکن یک کلید جداگانه لازم است.

در مقابل، در یک سیستم کلید عمومی، کلیدهای عمومی می توانند به طور گسترده و آشکار منتشر شوند و تنها کلیدهای خصوصی مربوطه باید توسط مالک آن مخفی نگه داشته شوند.

دو مورد از شناخته شده ترین کاربردهای رمزنگاری کلید عمومی عبارتند از:

  • رمزگذاری کلید عمومی ، که در آن یک پیام با کلید عمومی گیرنده مورد نظر رمزگذاری می شود. برای الگوریتم‌هایی که به درستی انتخاب شده و استفاده می‌شوند، پیام‌ها در عمل نمی‌توانند توسط کسی که کلید خصوصی منطبق را ندارد رمزگشایی کند، بنابراین فرض می‌شود مالک آن کلید و بنابراین شخص مرتبط با کلید عمومی است. این می تواند برای اطمینان از محرمانه بودن یک پیام استفاده شود. [7]
  • امضای دیجیتال ، که در آن یک پیام با کلید خصوصی فرستنده امضا می‌شود و هر کسی که به کلید عمومی فرستنده دسترسی دارد می‌تواند تأیید شود. این راستی‌آزمایی ثابت می‌کند که فرستنده به کلید خصوصی دسترسی داشته است، و بنابراین به احتمال زیاد شخص مرتبط با کلید عمومی است. همچنین ثابت می‌کند که امضا دقیقاً برای آن پیام آماده شده است، زیرا تأیید برای هر پیام دیگری که بتوان بدون استفاده از کلید خصوصی ایجاد کرد، ناموفق خواهد بود.

یکی از مسائل مهم اطمینان / اثبات معتبر بودن یک کلید عمومی خاص است، یعنی اینکه صحیح است و به شخص یا نهاد مورد ادعا تعلق دارد و توسط شخص ثالث (شاید مخرب) دستکاری یا جایگزین نشده است. چندین رویکرد ممکن وجود دارد، از جمله:

یک زیرساخت کلید عمومی (PKI)، که در آن یک یا چند شخص ثالث – معروف به مقامات گواهی – مالکیت جفت کلید را تأیید می‌کنند. TLS بر این متکی است. این بدان معناست که سیستم PKI (نرم‌افزار، سخت‌افزار و مدیریت) قابل اعتماد برای همه افراد درگیر است.

یک " وب اعتماد " که با استفاده از تاییدیه های فردی پیوندهای بین یک کاربر و کلید عمومی متعلق به آن کاربر، احراز هویت را غیرمتمرکز می کند. PGP علاوه بر جستجو در سیستم نام دامنه (DNS) از این رویکرد استفاده می کند. سیستم DKIM برای امضای دیجیتالی ایمیل ها نیز از این رویکرد استفاده می کند.