رمزنگاری کلید عمومی: تفاوت میان نسخه‌ها

محتوای حذف‌شده محتوای افزوده‌شده
بدون خلاصۀ ویرایش
Rezabot (بحث | مشارکت‌ها)
خط ۱:
{{ویکی‌سازی}}
 
[[Fileپرونده:4-1-edited.png|thumbبندانگشتی|250px|leftچپ|یک عدد غیر قابل پیش‌بینی (معمولاً بزرگ و [[تصادفی]]) برای شروع تولید یک جفت قابل قبول از کلیدهای مناسب برای استفاده توسط یک الگوریتم کلید نامتقارن استفاده می‌شود.]]
[[Fileپرونده:4-2-edited.png|thumbبندانگشتی|250px|leftچپ|در یک طرح رمزگذاری کلید نامتقارن، هرکسی می‌تواند پیام‌ها را با استفاده از کلید عمومی رمزگذاری کند، اما تنها دارنده کلید خصوصیِ جفتِ آن کلید عمومی می‌تواند رمزگشایی کند. امنیت به محرمانگی کلید خصوصی بستگی دارد.]]
[[Fileپرونده:4-3-edited.png|thumbبندانگشتی|250px|leftچپ|در طرح تبادل کلید دیفی-هلمن، هر یک از طرفین یک جفت کلید عمومی و خصوصی تولید می‌کنند و کلید عمومی را توزیع می‌کنند. آلیس و باب پس از به دست آوردن یک کپی معتبر از کلیدهای عمومی یکدیگر می‌توانند یک راز آفلاین مشترک را محاسبه کنند. مثلامثلاً راز مشترک می‌تواند به عنوان کلید [[رمزنگاری متقارن]] استفاده شود.]]
[[Fileپرونده:4-4-edited.png|thumbبندانگشتی|250px|leftچپ|در این مثال، پیام فقط به صورت دیجیتالی امضا شده و رمزگذاری نشده است. ۱) آلیس با کلید خصوصی خود پیامی را امضا می‌کند. ۲) باب می‌تواند تأیید کند که آلیس پیام را ارسال کرده و پیام تغییر نکرده است.]]
]]
 
'''رمزنگاری کلید عمومی''' {{به انگلیسی|Public-key cryptography}} یا '''رمزنگاری نامتقارن'''، یک سیستم [[رمزنگاری]] است که از یک جفت [[کلید]] استفاده می‌کند: کلید عمومی که ممکن است به طور گسترده منتشر شود، و [[کلید خصوصی]] که فقط برای مالک شناخته شده است. تولید چنین کلیدهایی به [[الگوریتم]]‌هایهای رمزنگاری که بر اساس مسائل ریاضی و برای تولید توابع یک طرفه هستند، وابسته است. [[امنیت]] کارآمد فقط نیاز به حفظ کلید خصوصی دارد. کلید عمومی را می‌توان آشکارا و بدون اینکه امنیت را به خطر اندازد، منتشر کرد.
 
در چنین سیستمی، هر شخص می‌تواند با استفاده از کلید عمومی گیرنده، پیام را [[رمزگذاری]] کند اما آن پیام رمزگذاری شده فقط با کلید خصوصی گیرنده قابل [[رمزگشایی]] است.
سطر ۱۳ ⟵ ۱۲:
[[احراز هویت]] قوی نیز ممکن است. یک فرستنده می‌تواند یک پیام را با یک کلید خصوصی ترکیب کند تا یک [[امضای دیجیتال]] کوتاه روی پیام ایجاد کند. هر کسی که کلید عمومی مربوطه فرستنده را داشته باشد، می‌تواند همان پیام و امضای دیجیتال فرضی مربوطه را ترکیب کند که بررسی کند که آیا آن [[امضا]] معتبر است یا نه، یعنی توسط صاحب کلید خصوصی مربوطه ساخته شده است یا نه.
 
الگوریتم‌های کلید عمومی، عناصر اصلی امنیتی در سیستم‌های رمزنگاری مدرن، برنامه‌ها و پروتکل‌ها هستند که درمورد [[محرمانگی]]، صحت و عدم انکارپذیری ارتباطات الکترونیکی و ذخیره‌سازی داده اطمینان می‌دهند. آن‌ها مطابق استانداردهای مختلف [[اینترنت]] از جمله [[امنیت لایه انتقال]]
([[TLS]]), S/MIME, [[PGP]] و [[GPG]] هستند. برخی از الگوریتم‌های کلید عمومی، توزیع کلید و رازداری را ارائه می‌دهند (مثل تبادل کلید دیفی-هلمن)، برخی از آن‌ها امضاهای [[دیجیتال]] را فراهم می‌کنند (مثل الگوریتم امضای دیجیتال) و برخی از آن‌ها هردو را ارائه می‌دهند (مثل [[RSA]]).
 
== شرح ==
پیش از اواسط دهه ۱۹۷۰ تمام سیستم‌های رمزگذاری از [[الگوریتم‌های کلید متقارن]] استفاده می‌کردند که در آن کلید رمزنگاری یکسانی با الگوریتم اساسی توسط فرستنده و گیرنده استفاده می‌شود که هردو باید آن را مخفی نگه دارند. کلید در چنین سیستمی پیش از هرگونه استفاده از سیستم لزوماً باید از طریق یک [[کانال امن]] بین طرفین ارتباط تبادل شود. این نیاز اصلااصلاً بی‌اهمیت نیست و وقتی تعداد شرکت‌کنندگان افزایش یابد یا وقتی کانال‌های امن برای تبادل کلید در دسترس نباشند یا وقتی کلیدها مکرراً تغییر کنند (که کار معقولی در رمزنگاری است)، خیلی سریع غیر قابل [[مدیریت]] می‌شود. به طور خاص، اگر پیام‌ها از سایر کاربران مخفی بماند، یک کلید جداگانه برای هر جفت ممکن از کاربران لازم است.
 
در مقابل، در یک سیستم کلید عمومی، کلیدهای عمومی می‌توانند به طور گسترده و آشکارا پخش شوند و فقط کلید خصوصی باید توسط صاحبش [[ایمن]] نگه داشته شود.
سطر ۲۷ ⟵ ۲۶:
یک مسئله مهم؛ اثبات این است که یک کلید عمومی خاص معتبر است. یعنی صحیح است و متعلق به شخص یا موجودیتی است که ادعا شده است و شخص ثالث مخربی آن را دستکاری یا جایگزین نکرده است. چند روش ممکن وجود دارد، از جمله:
* یک زیرساخت کلید عمومی (PKI)؛ که در آن یک یا چند شخص ثالث که به عنوان مراجع صدور گواهی‌نامه (certificate authority) شناخته می‌شوند، مالکیت جفت‌های کلید را تأیید می‌کنند. [[TLS]] به این امر متکی است.
* یک وب اعتماد (web of trust)؛ که با استفاده از تأییدیه‌های فردیِ پیوند بین کاربر و کلید عمومی؛ احراز هویت را انجام می‌دهد. PGP و همچنین جستجو در سیستم نام دامنه ([[DNS]]) از این روش استفاده می‌کنند. سیستم DKIM نیز برای امضای دیجیتال [[ایمیل]]‌هاها از این روش استفاده می‌کند.
 
== مفاهیم زیرساخت کلید عمومی ==
سطر ۱۰۹ ⟵ ۱۰۸:
یکی دیگر از آسیب‌پذیری‌های امنیتی احتمالی در استفاده از کلیدهای نامتقارن، احتمال حمله «شخص ثالث» (man-in-the-middle attack) است که در آن، ارتباط کلیدهای عمومی توسط شخص ثالثی رهگیری می‌شود و سپس برای ایجاد کلیدهای عمومی دیگری به جای آن تغییر می‌کند. همچنین مهاجم باید پیام‌ها و پاسخ‌های رمزگذاری شده را با استفاده از کلیدهای عمومی صحیح برای بخش‌های مختلف ارتباطی، در همه موارد، رهگیری، رمزگشایی و رمزگذاری مجدد کند تا از ظن دیگران جلوگیری کند.
 
به نظر می‌رسد که این حمله در عمل ممکن است دشوار باشد؛ اما هنگام استفاده از [[رسانه]]‌هایهای ناامن (مثل شبکه‌های عمومی مانند اینترنت یا ارتباطات بی‌سیم) غیرممکن نیست. مثلامثلاً انجام این کار برای یک کارمند مخرب در یک سازمان ارائه‌دهنده خدمات اینترنت ([[ISP]]) ممکن است آسان باشد.
 
;زیرساخت کلید عمومی
 
یک رویکرد برای جلوگیری از چنین حملاتی؛ استفاده از یک زیرساخت کلید عمومی (PKI) است. مجموعه‌ای از نقش‌ها، [[سیاست]]‌هاها و رویه‌هایی که باید ایجاد شوند، مدیریت، توزیع، استفاده، ذخیره‌سازی و ابطال گواهینامه‌های دیجیتال و مدیریت رمزگذاری کلید عمومی. اگرچه این نیز به نوبه خود نقاط ضعف بالقوه‌ای دارد. مثلامثلاً به صادرکننده گواهینامه باید اعتماد کرد که [[هویت]] دارنده کلید را به درستی بررسی کرده است. صادرکننده گواهی‌نامه باید هنگام صدور گواهی‌نامه از صحت کلید عمومی اطمینان حاصل کند، باید از دزدی رایانه‌ای ایمن باشد و باید تمهیدات لازم را با همه شرکت‌کنندگان اندیشیده باشد تا قبل از شروع ارتباطات محافظت شده، تمام گواهینامه‌های آنان را بررسی کند. مثلامثلاً در [[مرورگرهای وب]] یک لیست طولانی از «گواهی‌نامه‌های هویت امضا شده توسط خود» (self-signed identity certificates) از ارائه‌دهندگان PKI ذخیره شده است که از این گواهی‌نامه‌ها برای بررسی صلاحیت مراجع گواهی‌نامه و سپس، در مرحله دوم، گواهی‌نامه‌های ارتباطات بالقوه استفاده می‌شود. مهاجمی که بتواند هر یک از این مراجع گواهی‌نامه را وادار کند که یک گواهی‌نامه برای یک کلید عمومی جعلی صادر کند، می‌تواند حمله «شخص ثالث» (man-in-the-middle) را به آسانی به نتیجه برساند، انگار اصلااصلاً از این طرح گواهی‌نامه استفاده نشده است. در یک سناریوی دیگر که به ندرت مورد بحث قرار می‌گیرد، مهاجمی که به سرورهای یک مرجع نفوذ کرده و منبع گواهی‌نامه‌ها و کلیدها (عمومی و خصوصی) را به دست آورده، بدون محدودیت قادر به انجام [[کلاهبرداری]]، جعل هویت، رمزگشایی و جعل معاملات است.
 
با وجود مشکلات تئوری و بالقوه، از این رویکرد به طور گسترده استفاده می‌شود. مثال‌هایی از آن شامل TLS و SSL قبلی آن می‌شود که معمولامعمولاً از آن برای تأمین امنیت برای معاملات مرورگر وب (مثلامثلاً ارسال ایمن جزئیات اطلاعات [[کارت اعتباری]] به یک فروشگاه آنلاین) استفاده می‌شود.
 
گذشته از مقاومت در برابر حمله به یک جفت کلید خاص، باید امنیت سلسله مراتب صدور گواهی‌نامه هنگام استقرار سیستم‌های کلید عمومی در نظر گرفته شود. برخی از مراجع صدور گواهی‌نامه (معمولامعمولاً یک برنامه که با هدف ساخته شده و روی یک رایانه [[سرور]] اجرا می‌شود) با تولید یک گواهی‌نامه دیجیتال، تهیه هویت‌های اختصاص‌یافته به کلیدهای خصوصی خاص را تضمین می‌کنند. گواهی‌نامه‌های دیجیتال کلید عمومی معمولامعمولاً هربار چندین سال معتبر هستند؛ بنابراین کلیدهای خصوصی مربوط به آن‌ها باید در این مدت مخفی نگه داشته شوند. وقتی یک کلید خصوصی که برای ایجاد گواهی‌نامه‌ای استفاده می‌شود که در سلسله مراتب سرور PKI بالاتر است به خطر می‌افتد یا به طور تصادفی فاش می‌شود، پس از آن حمله «شخص ثالث» (man-in-the-middle) امکان‌پذیر می‌شود و هر گواهی‌نامه وابسته به آن را کاملاکاملاً ناامن می‌کند.
 
== نمونه‌ها ==
 
'''نمونه‌هایی از تکنیک‌های کلید نامتقارن که برای اهداف متنوعی مورد توجه قرار گرفته‌اند، عبارتند از:'''
 
* [[پروتکل تبادل کلید دیفی-هلمن]] (Diffie-Hellman)
 
* استاندارد امضای دیجیتال ([[DSS]]) که شامل الگوریتم امضای دیجیتال است
 
* ElGamal
 
* تکنیک‌های مختلف [[منحنی بیضوی]]
 
* تکنیک‌های مختلف توافق‌نامه کلید تصدیق‌شده با گذرواژه
 
* سیستم رمزنگاری Paillier
 
* الگوریتم رمزگذاری RSA (PKCS#1)
 
* سیستم رمزنگاری Cramer-Shoup
 
* پروتکل توافق‌نامه کلید تصدیق‌شده توسط YAK
 
'''نمونه‌هایی از الگوریتم‌های کلید نامتقارن که به طور گسترده پذیرفته نشده‌اند، عبارتند از:'''
 
* سیستم رمزنگاری NTRUEncrypt
 
* سیستم رمزنگاری McEliece
 
'''نمونه‌هایی از الگوریتم‌های کلید نامتقارن که قابل توجه ولی در حال حاضر ناامن هستند، عبارتند از:'''
 
* سیستم رمزنگاری کوله‌پشتی Merkle-Hellman
 
'''نمونه‌هایی از پروتکل‌هایی که از الگوریتم‌های کلید نامتقارن استفاده می‌کنند، عبارتند از:'''
 
* S/MIME
 
* GPG، یک پیاده‌سازی از OpenPGP
 
* [[EMV]]، مرجع گواهی‌نامه EMV
 
* تبادل کلید اینترنتی
 
* PGP
 
* ZRTP، یک پروتکل [[VoIP]] ایمن
 
* امنیت لایه انتقال که توسط [[IETF]] و لایه سوکت ایمن قبلی آن استاندارد شده‌است
 
* SILC
 
* SSH
 
* [[بیت کوین]]
 
* پیام‌رسانی محرمانه
 
== تاریخچه ==
 
در طول تاریخچه اولیه رمزنگاری، دو طرف با كلیدیکلیدی کار می‌کردند كهکه آن را با یک روش ایمن اما غیر رمزنگاری، مانند ملاقات چهره به چهره یا پیک مورد اعتماد، مبادله می‌کردند. این کلید که هر دو طرف آن را کاملاکاملاً مخفی نگه داشته بودند، می‌توانست برای تبادل پیام‌های رمزگذاری‌شده استفاده شود. تعدادی از مشکلاتی که به طور قابل توجهی عملی بودند، با این رویکرد در توزیع کلیدها به وجود می‌آمدند.
 
;پیش‌بینی
سطر ۱۸۵ ⟵ ۱۶۱:
آیا خواننده می‌تواند بگوید که کدام دو عددی اگر در هم ضرب شوند، عدد ۸۶۱۶۴۶۰۷۹۹ تولید خواهد شد؟ فکر می‌کنم بعید است کسی به جز من هیچ‌گاه این را بداند.
</blockquote>
در اینجا او رابطه توابع یک‌طرفه را با رمزنگاری شرح داد و در ادامه، به طور خاص درباره مسئله فاکتور گیری (factorization) که برای ایجاد یک تابع دریچه (trapdoor function) استفاده شده، بحث کرد. در جولای ۱۹۹۶، سلیمان گلومب ریاضیدان گفت: «جوونز یک ویژگی کلیدی الگوریتم RSA را برای رمزنگاری کلید عمومی پیش‌بینی کرد، اگرچه او قطعاقطعاً مفهوم رمزنگاری کلید عمومی را اختراع نکرد.»
 
;کشف محرمانه
 
در سال ۱۹۷۰، جیمز الیس، رمزنگار انگلیسی در دفتر مرکزی ارتباطات دولت (GCHQ) انگلستان، احتمال «رمزگذاری غیر مخفی» (که اکنون رمزنگاری کلید عمومی نامیده می‌شود) را متصور شد؛ اما هیچ راهی برای اجرای آن نمی‌دید. در سال ۱۹۷۳، همكارشهمکارش کلیفورد کاکس، آن‌چه را كهکه به الگوریتم رمزگذاری RSA معروف شده است، پیاده‌سازی كردکرد که یک روش عملی «رمزگذاری غیر مخفی» را ارائه می‌داد و در سال ۱۹۷۴، ریاضیدان و رمزنگار دیگری در GCHQ، مالكولممالکولم ویلیامسون، آن‌چه را كهکه امروزه به عنوان تبادل کلید دیفی-هلمن شناخته شده است، توسعه داد. این طرح همچنین به [[آژانس امنیت ملی ایالات متحده آمریکا]] فرستاده شد. با تمرکز نظامی و قدرت محاسباتی کم، قدرت رمزنگاری کلید عمومی در هر دو سازمان غیر قابل تحقق بود:
<blockquote>
من این را برای استفاده نظامی بسیار مهم دانستم … اگر شما می‌توانید کلید خود را به سرعت و به صورت الکترونیکی به اشتراک بگذارید، شما مزیت بزرگی نسبت به حریف خود دارید. تنها در پایان تحولات از برنرز-لی که یک معماری اینترنت باز را برای سِرن ([[CERN]]) طراحی می‌کرد، توافق و پذیرش آن برای [[آرپانت]] … رمزنگاری کلید عمومی متوجه پتانسیل کامل آن بود.
سطر ۲۰۳ ⟵ ۱۷۹:
در سال ۱۹۷۷ کلیاتی از طرح کاکس به طور مستقل توسط ران ریوست، ادی شمیر و [[لئونارد آدلمن]] در [[MIT]] اختراع شد. نویسندگانِ آخر کار خود را در سال ۱۹۷۸ منتشر کردند و این الگوریتم از ابتدای کارشان به RSA معروف شد. RSA برای رمزگذاری و رمزگشایی از مدول به توان رساندن حاصل‌ضرب دو عدد اول بسیار بزرگ استفاده می‌کند که هم رمزگذاری کلید عمومی و هم امضای دیجیتال کلید عمومی را انجام می‌دهد. امنیت آن دشواری شدیدی در زمینه فاکتورسازی اعداد صحیح بزرگ دارد؛ مشکلی که هیچ تکنیک عمومی کارآمد شناخته‌شده‌ای برای حل آن وجود ندارد. توضیحی از این الگوریتم در ستون بازی‌های ریاضی در انتشار آگوست ۱۹۷۷ نشریه Scientific American منتشر شد.
 
از دهه ۱۹۷۰ تعداد و تنوع زیادی از رمزگذاری، امضای دیجیتال، توافق‌نامه کلید و سایر تکنیک‌ها در زمینه رمزنگاری کلید عمومی توسعه یافته‌اند؛ از جمله سیستم رمزنگاری Rabin، رمزگذاری ElGamal, [[DSA]] و رمزنگاری منحنی بیضوی.<ref>صفحه رمزنگاری کلید عمومی در ویکی‌پدیای انگلیسی https://en.wikipedia.org/wiki/Public-key_cryptography</ref>
<ref>صفحه رمزنگاری کلید عمومی در ویکی‌پدیای انگلیسی https://en.wikipedia.org/wiki/Public-key_cryptography</ref>
 
== منابع ==
سطر ۲۱۱ ⟵ ۱۸۶:
== لینک‌های مرتبط ==
 
[https://en.wikipedia.org/wiki/Public-key_cryptography] صفحه رمزنگاری کلید عمومی در ویکی‌پدیای انگلیسی
 
== جستارهای وابسته ==
سطر ۲۱۹ ⟵ ۱۹۴:
{{داده‌های کتابخانه‌ای}}
 
[[رده:رمزنگاری کلید عمومی|رمزنگاری کلید عمومی]]
[[رده:رمزنگاری]]
[[رده:رمزنگاری با کلید نامتقارن]]
[[رده:زیرساخت کلید عمومی]]
[[رده:شبکه‌های ناشناس ماندن]]
[[رده:نرم‌افزارهای رمزنگاری]]
[[رده:ویکی‌سازی رباتیک]]