موضوع مقاله: رمزنگاری کلید عمومی | مخاطب: عمومی | لحن: دانشنامه‌ای | ساختار: عنوان، مقدمه، 3 بخش، جمع‌بندی | مقاله: | # رمزنگاری کلید عمومی | مقدمه: آلیس و باب پس از به دست آوردن یک کپی معتبر از کلیدهای عمومی یکدیگر می‌توانند یک راز آفلاین مشترک را محاسبه کنند؛ مثلاً راز مشترک می‌تواند به عنوان کلید رمزنگاری متقارن استفاده شود. | ## بخش 1: رمزنگاری کلید عمومی | رمزنگاری کلید عمومی یا رمزنگاری نامتقارن یک سیستم رمزنگاری است که از یک جفت کلید استفاده می‌کند: کلید عمومی که ممکن است به‌طور گسترده منتشر شود، و کلید خصوصی که فقط برای مالک شناخته شده‌است. تولید چنین کلیدهایی به الگوریتمهای رمزنگاری که بر اساس مسائل ریاضی و برای تولید توابع یک طرفه هستند، وابسته است. در چنین سیستمی، هر شخص می‌تواند با استفاده از کلید عمومی گیرنده، پیام را رمزگذاری کند اما آن پیام رمزگذاری شده فقط با کلید خصوصی گیرنده قابل رمزگشایی است. یک فرستنده می‌تواند یک پیام را با یک کلید خصوصی ترکیب کند تا یک امضای دیجیتال کوتاه روی پیام ایجاد کند. هر کسی که کلید عمومی مربوط فرستنده را داشته باشد، می‌تواند همان پیام و امضای دیجیتال فرضی مربوط را ترکیب کند که بررسی کند که آیا آن امضا معتبر است یا نه، یعنی توسط صاحب کلید خصوصی مربوط ساخته شده‌است یا نه. الگوریتم‌های کلید عمومی، عناصر اصلی امنیتی در سیستم‌های رمزنگاری مدرن، برنامه‌ها و پروتکل‌ها هستند که در مورد محرمانگی، صحت و عدم انکارپذیری ارتباطات الکترونیکی و ذخیره‌سازی داده اطمینان می‌دهند. برخی از الگوریتم‌های کلید عمومی، توزیع کلید و رازداری را ارائه می‌دهند (مثل تبادل کلید دیفی-هلمن)، برخی از آن‌ها امضاهای دیجیتال را فراهم می‌کنند (مثل الگوریتم امضای دیجیتال) و برخی از آن‌ها هر دو را ارائه می‌دهند (مثل RSA). شرح پیش از اواسط دهه ۱۹۷۰ تمام سیستم‌های رمزگذاری از الگوریتم‌های کلید متقارن استفاده می‌کردند که در آن کلید رمزنگاری یکسانی با الگوریتم اساسی توسط فرستنده و گیرنده استفاده می‌شود که هردو باید آن را مخفی نگه دارند. کلید در چنین سیستمی پیش از هرگونه استفاده از سیستم لزوماً باید از طریق یک کانال امن بین طرفین ارتباط تبادل شود. این نیاز اصلاً بی‌اهمیت نیست و وقتی تعداد شرکت‌کنندگان افزایش یابد یا وقتی کانال‌های امن برای تبادل کلید در دسترس نباشند یا وقتی کلیدها مکرراً تغییر کنند (که کار معقولی در رمزنگاری است)، خیلی سریع غیرقابل مدیریت می‌شود. به‌طور خاص، اگر پیام‌ها از سایر کاربران مخفی بماند، یک کلید جداگانه برای هر جفت ممکن از کاربران لازم است. در مقابل، در یک سیستم کلید عمومی، کلیدهای عمومی می‌توانند به‌طور گسترده و آشکارا پخش شوند و فقط کلید خصوصی باید توسط صاحبش ایمن نگه داشته شود. دو مورد از شناخته شده‌ترین کاربردهای رمزنگاری کلید عمومی عبارت‌اند از: رمزگذاری کلید عمومی، که در آن یک پیام با کلید عمومی گیرنده رمزگذاری می‌شود. پیام توسط کسی که کلید خصوصیِ مطابق با آن کلید عمومی را ندارد، نمی‌تواند رمزگشایی شود؛ بنابراین آن شخص باید صاحب آن کلید و شخص مرتبط با آن کلید عمومی باشد. امضاهای دیجیتال، که در آن یک پیام با کلید خصوصی فرستنده امضا شده و توسط هرکسی که به کلید عمومی فرستنده دسترسی داشته باشد، می‌تواند تأیید شود. این تأیید؛ اثبات می‌کند که فرستنده به کلید خصوصی دسترسی داشته و بنابراین احتمالاً شخص مرتبط با کلید عمومی است. همچنین تضمین می‌کند که پیام دستکاری نشده‌است؛ زیرا یک امضا از نظر ریاضی به پیامی که در ابتدا با آن ساخته شده محدود شده‌است و هر پیام دیگری (فارغ از اینکه چقدر به پیام اصلی شباهت دارد) تأیید نخواهد شد. یک مسئله مهم؛ اثبات این است که یک کلید عمومی خاص معتبر است؛ یعنی صحیح است و متعلق به شخص یا موجودیتی است که ادعا شده‌است و شخص ثالث مخربی آن را دستکاری یا جایگزین نکرده‌است. مفاهیم زیرساخت کلید عمومی زیرساخت کلید عمومی یا PKI؛ زیرساختی است که بر اساس اعتماد و نه امنیت؛ طراحی و پیاده‌سازی شده‌است و هدف آن؛ برقراری امنیت و آرامش خاطر کاربران شبکه‌های کامپیوتری است. PKI را می‌توان به صورت مجموعه سخت‌افزار، نرم‌افزار، کاربران، سیاست‌ها و رویه‌هایی که برای ایجاد، مدیریت، ذخیره، توزیع و ابطال گواهی مبتنی بر رمزنگاری با کلید عمومی مورد نیاز می‌باشند؛ تعریف نمود. رمزنگاری به عنوان یکی از روش‌های قابل اعتماد جهت فراهم آوردن سرویس‌های امنیتی قابل استفاده می‌باشد، ولی امروزه به صورت کلی‌تری جهت فراهم آوردن ابزارهایی که می‌توانند سرویس‌هایی را برای امنیت اطلاعات و داده‌ها ارائه نمایند، استفاده می‌شود. برای هر دو عمل رمزنگاری و تصدیق هویت کلید عمومی از زوج کلید (یک کلید عمومی و یک کلید خصوصی) استفاده می‌شود. در رمزنگاری، فرستنده با کلید عمومی فایل را رمزگذاری می‌کند و گیرنده پس از دریافت، آن را با کلید خصوصی خود از رمز خارج می‌کند؛ و در بحث تصدیق هویت، فرستنده با کلید خصوصی خود پیام را امضا می‌کند و گیرنده، پیام فرستنده را با کلید عمومی تصدیق می‌نماید.Raina, K. بین یک زوج کلید و یک «نقش» یک تناظر قوی وجود دارد؛ مثلاً ممکن است یک موجودیت از یک کلید برای امضای یک خرید برای بخش کاری خودش و از کلید دیگر برای امضای یک فرم کرایه فیلم و از یکی دیگر برای امضای یک ایمیل شخصی استفاده کند. مفهوم زوج کلیدهای چندتایی برای هر موجودیت برای بعضی از محیطها به دلیل نقش‌های مختلفی که موجودیت ایفا می‌کند منطقی است، چون هر زوج کلید در حوزه کوچکی از کاربرد محدود شده‌است. برای صورت گرفتن تمام وظایفی که با یک نقش مشخص در ارتباط است، یک موجودیت PKI نیاز است که چند زوج کلید داشته باشد. خصوصاً اینکه یک زوج کلید در الگوریتم امضای دیجیتال (DSA) زمانی‌که بر طبق خصوصیاتی پیاده‌سازی شده‌است، نمی‌تواند برای رمزگذاری یا رمزگشایی بکار رود. به‌طور مشابه زوج کلید DH نمی‌تواند برای امضا نمودن داده‌ها و راست‌آزمایی امضا بکار رود. به‌علاوه حتی یک زوج کلید بر اساس الگوریتم RSA _ که به صورت ریاضی برای تصدیق، یکپارچگی، محرمانگی یا معاوضه کلید بکار می‌رود_ ممکن است به وسیله سیاست‌ها، احکام، یا انتخاب پیاده‌سازی برای استفاده تک منظوره محدود شود. کشف رمز کلید موضوع کشف رمز کلید در دو حوزه مورد بحث قرار می‌گیرد: کشف رمز کلید خصوصی موجودیت نهایی کشف رمز کلید خصوصی یک CA در حالت اول، به محض اینکه شخصی متوجه می‌شود که کلید خصوصی اش کشف رمز شده‌است، باید اقدامات زیر را انجام دهد: یک پیام درخواست ابطال برای مرجع قدرت امنیتی مربوط جهت صدور اعلان به تمام طرف‌های مرتبط مبنی بر عدم استفاده از کلید عمومی در صورت لزوم، پیمودن مراحل برای تولید و صدور گواهی برای یک زوج کلید جدید پیامد کشف رمز کلید یک موجودیت نهایی، بستگی به نوع کلید دارد. | ## بخش 2: رمزنگاری کلید عمومی | اگر کلید امضاکننده کشف رمز شده باشد، دارنده این کلید باید گواهی مورد نظر را باطل کند و همین کار از دسترسی بیشتر افراد غیرمجاز جلوگیری خواهد کرد. اما اگر کلید کشف رمز شده، کلید خصوصی و برای از رمز درآوردن اسناد باشد، بعلاوه نکته بالا، باید تمام اسنادی که با این کلید از رمز خارج می‌شدند و کلیدهایی که این اسناد را به رمز درآورده‌اند، شناسایی شوند. بازیابی و آماده‌سازی در برابر حوادث آگاه ساختن طرف اعتمادکننده در صورتی که کلید CA کشف رمز شود، به دلیل تعدد افراد، وی نمی‌تواند به طرف‌های اعتمادکننده اطلاع دهد که این مسئله اتفاق افتاده‌است و هیچ راه قابل اعتمادی برای این شکل از اطلاع‌رسانی وجود ندارد. یک راه اطلاع‌رسانی از طریق پیام‌های CRL است که آن را با ارائه یک مکانیزم بیان می‌کنیم. در این مکانیزم، CRL شامل کلید کشف رمز شده می‌باشد که توسط کلید خصوصی جدید CA صادر و امضا شده‌است. اعضای اعتمادکننده این امضا را با بازیابی کلید عمومی CA و محاسبه عدد HASH این کلید معتبر می‌شمارند و آن را با عدد HASH قبلی در گواهی قدیمی CA مقایسه می‌کنند. این مکانیزم نیاز بدان دارد که CA در زمان گواهی کردن زوج کلید فعلی، زوج کلید بعدی را نیز تولید کند. آماده‌سازی در شرایط کشف رمز CA باید اقدامات زیر را در جهت کاهش آسیب‌ها انجام دهد: تلاش به هر شکل ممکن برای شناخت طرف‌های اعتمادکننده تا پیام اخطار فقط به این افراد فرستاده شود. ذخیره نمودن کلید عمومی مورد اعتماد به عنوان یک گواهی در حوزة محلی طرف‌های اعتمادکننده، پشتیبانی از انتشار پیام CRL و تقویت نرم‌افزاری طرف‌های اعتمادکننده برای چک کردن پیام CRL. این کار تا حد زیادی زیان را کمینه می‌کند چون بدون مداخله موجودیت‌های نهایی و به‌طور خودکار، اعتماد نسبت به کلید کشف رمز شده از بین می‌رود. این روش برای محیط‌هایی که وضعیت گواهی خود را از طریق لیست ابطال چک می‌کنند، مناسب‌ترین است. کشف رمز یک کلید پس از ده سال استفاده نسبت به کشف رمز کلید پس از یک سال استفاده، عواقب وخیم تری دارد؛ بنابراین هرچه این دورة زمانی کوتاهتر باشد، میزان خسارت کمتر خواهد بود. بازیابی تنها راه بازیابی این است که به PKI دوباره ارزش دهی شود؛ بنابراین یک کلید از سمت CA تولید می‌شود و یک کپی از کلید عمومی در محل هر موجودیت PKI قرار داده می‌شود. به عبارتی PKI باید برای موجودیت‌ها به شکلی ساخته شود که انگار هیچ وقت وجود نداشته‌است. مدیریت گواهی مستقل اگر یک کلید عمومی در چند گواهی قرار داده شده و کلید خصوصی در معرض خطر باشد، باید به یاد داشت که کدام گواهی‌ها دارای این کلید بودند تا بتوان آن‌ها را باطل نمود. در مقابل، چنین ریسکی کاهش می‌یابد اگر کلید عمومی فقط در یک گواهی ظاهر شود؛ چون بار اجرایی یافتن و ابطال یک گواهی به مراتب کمتر است. بعلاوه، گواهی‌های جداگانه در ارتباط با زوج کلیدهای جداگانه، از نظر ساخت مستقل اند: آن‌ها از نظر دورة اعتبار، سیاست‌ها، کاربرد و رویه‌های مدیریتی مستقلند؛ بنابراین ابطال یکی از آن‌ها بر بقیه اثرگذار نیست. پشتیبانی از عدم انکار برای پشتیبانی از عدم انکار، شرط لازم آن است که کلید خصوصی همراه با فعالیت عدم انکار مورد نظر (مانند امضای یک رسید برای اثبات انتقال آن) نباید برای بخش‌های دیگر شناخته شده باشد. در غیر اینصورت، موجودیت مزبور به سادگی می‌تواند اعلام کند که بخش دیگری عدم انکار نموده‌است؛ بنابراین سرویس عدم انکار به مانع برخورد می‌کند. کلید خصوصی مربوط به گواهی که هدفش پشتیبانی از عدم انکار است، نباید در معرض دید موجودیت‌های دیگر قرار گیرد. کاربردها بارزترین کاربرد سیستم رمزنگاری کلید عمومی در رمزگذاری ارتباطات برای ارائه محرمانگی است. (یک پیام که یک فرستنده با استفاده از کلید عمومی گیرنده آن را رمزگذاری می‌کند، فقط با کلید خصوصی گیرنده که جفت آن است می‌تواند رمزگشایی شود). سیستم عدم بازپرداخت از امضاهای دیجیتال استفاده می‌کند تا اطمینان یابد که یک طرف نمی‌تواند با موفقیت در تأیید صحت سند یا ارتباط خود مخالفت کند. کاربردهای دیگری که بر این اساس بنا شده‌اند، عبارتند از: پول نقد دیجیتال، توافق‌نامه کلید تصدیق‌شده با گذرواژه، خدمات مهرزنی، پروتکل‌های عدم بازپرداخت و… از آنجا که الگورکاربردهایتم‌های کلید نامتقارن تقریباً همیشه دارای محاسبات بسیار بیشتری از الگوریتم‌های کلید متقارن هستند، در بسیاری از موارد رایج است که با استفاده از یک الگوریتم تبادل کلید، یک کلید را مبادله می‌کنند و سپس داده‌ها را با استفاده از آن کلید و یک الگوریتم کلید متقارن انتقال می‌دهند. نقاط ضعف مانند همه سیستم‌های امنیتی، در این سیستم هم شناسایی نقاط ضعف بالقوه مهم است. الگوریتم‌ها همه طرح‌های کلید عمومی در تئوری مستعد «حمله جستجوی کلید نیروی بی‌رحم» هستند. اگرچه چنین حملاتی در صورتی که میزان محاسبات لازم برای موفقیت (که توسط کلود شانون «عامل کار» نامیده شده‌است) از دسترس همه مهاجمان بالقوه خارج باشد، عملی نیستند. در بسیاری از موارد، عامل کار به راحتی با انتخاب یک کلید طولانی‌تر می‌تواند افزایش یابد؛ اما الگوریتم‌های دیگر ممکن است عامل کار بسیار کمتری داشته باشند که مقاومت در برابر حمله نیروی بی‌رحم را بیهوده می‌کند. برخی الگوریتم‌های خاص و مخصوص برای کمک به حمله به برخی الگوریتم‌های رمزگذاری کلید عمومی ایجاد شده‌اند (هر دو رمزگذاری RSA و ElGamal حملات شناخته‌شده‌ای دارند که بسیار سریع‌تر از روش نیروی بی‌رحم است). مانند همه کارکردهای رمزنگاری، پیاده‌سازی‌های کلید عمومی ممکن است در برابر حملات کانال جانبی که از نشت اطلاعات برای ساده‌سازی جستجو برای یک کلید مخفی بهره‌برداری می‌کنند، آسیب‌پذیر باشند. | ## بخش 3: رمزنگاری کلید عمومی | تغییر کلیدهای عمومی یکی دیگر از آسیب‌پذیری‌های امنیتی احتمالی در استفاده از کلیدهای نامتقارن، احتمال حمله «شخص ثالث» (man-in-the-middle attack) است که در آن، ارتباط کلیدهای عمومی توسط شخص ثالثی رهگیری می‌شود و سپس برای ایجاد کلیدهای عمومی دیگری به جای آن تغییر می‌کند. همچنین مهاجم باید پیام‌ها و پاسخ‌های رمزگذاری شده را با استفاده از کلیدهای عمومی صحیح برای بخش‌های مختلف ارتباطی، در همه موارد، رهگیری، رمزگشایی و رمزگذاری مجدد کند تا از ظن دیگران جلوگیری کند. به نظر می‌رسد که این حمله در عمل ممکن است دشوار باشد؛ اما هنگام استفاده از رسانههای ناامن (مثل شبکه‌های عمومی مانند اینترنت یا ارتباطات بی‌سیم) غیرممکن نیست؛ مثلاً انجام این کار برای یک کارمند مخرب در یک سازمان ارائه‌دهنده خدمات اینترنت (ISP) ممکن است آسان باشد. زیرساخت کلید عمومی یک رویکرد برای جلوگیری از چنین حملاتی؛ استفاده از یک زیرساخت کلید عمومی (PKI) است. مجموعه‌ای از نقش‌ها، سیاستها و رویه‌هایی که باید ایجاد شوند، مدیریت، توزیع، استفاده، ذخیره‌سازی و ابطال گواهینامه‌های دیجیتال و مدیریت رمزگذاری کلید عمومی. اگرچه این نیز به نوبه خود نقاط ضعف بالقوه‌ای دارد؛ مثلاً به صادرکننده گواهینامه باید اعتماد کرد که هویت دارنده کلید را به درستی بررسی کرده‌است. صادرکننده گواهی‌نامه باید هنگام صدور گواهی‌نامه از صحت کلید عمومی اطمینان حاصل کند، باید از دزدی رایانه‌ای ایمن باشد و باید تمهیدات لازم را با همه شرکت‌کنندگان اندیشیده باشد تا قبل از شروع ارتباطات محافظت شده، تمام گواهینامه‌های آنان را بررسی کند؛ مثلاً در مرورگرهای وب یک لیست طولانی از «گواهی‌نامه‌های هویت امضا شده توسط خود» (self-signed identity certificates) از ارائه‌دهندگان PKI ذخیره شده‌است که از این گواهی‌نامه‌ها برای بررسی صلاحیت مراجع گواهی‌نامه و سپس، در مرحله دوم، گواهی‌نامه‌های ارتباطات بالقوه استفاده می‌شود. مهاجمی که بتواند هر یک از این مراجع گواهی‌نامه را وادار کند که یک گواهی‌نامه برای یک کلید عمومی جعلی صادر کند، می‌تواند حمله «شخص ثالث» (man-in-the-middle) را به آسانی به نتیجه برساند، انگار اصلاً از این طرح گواهی‌نامه استفاده نشده‌است. در یک سناریوی دیگر که به ندرت مورد بحث قرار می‌گیرد، مهاجمی که به سرورهای یک مرجع نفوذ کرده و منبع گواهی‌نامه‌ها و کلیدها (عمومی و خصوصی) را به دست آورده، بدون محدودیت قادر به انجام کلاهبرداری، جعل هویت، رمزگشایی و جعل معاملات است. مثال‌هایی از آن شامل TLS و SSL قبلی آن می‌شود که معمولاً از آن برای تأمین امنیت برای معاملات مرورگر وب (مثلاً ارسال ایمن جزئیات اطلاعات کارت اعتباری به یک فروشگاه آنلاین) استفاده می‌شود. گذشته از مقاومت در برابر حمله به یک جفت کلید خاص، باید امنیت سلسله مراتب صدور گواهی‌نامه هنگام استقرار سیستم‌های کلید عمومی در نظر گرفته شود. برخی از مراجع صدور گواهی‌نامه (معمولاً یک برنامه که با هدف ساخته شده و روی یک رایانه سرور اجرا می‌شود) با تولید یک گواهی‌نامه دیجیتال، تهیه هویت‌های اختصاص‌یافته به کلیدهای خصوصی خاص را تضمین می‌کنند. گواهی‌نامه‌های دیجیتال کلید عمومی معمولاً هربار چندین سال معتبر هستند؛ بنابراین کلیدهای خصوصی مربوط به آن‌ها باید در این مدت مخفی نگه داشته شوند. وقتی یک کلید خصوصی که برای ایجاد گواهی‌نامه‌ای استفاده می‌شود که در سلسله مراتب سرور PKI بالاتر است به خطر می‌افتد یا به‌طور تصادفی فاش می‌شود، پس از آن حمله «شخص ثالث» (man-in-the-middle) امکان‌پذیر می‌شود و هر گواهی‌نامه وابسته به آن را کاملاً ناامن می‌کند. این کلید که هر دو طرف آن را کاملاً مخفی نگه داشته بودند، می‌توانست برای تبادل پیام‌های رمزگذاری‌شده استفاده شود. تعدادی از مشکلاتی که به‌طور قابل توجهی عملی بودند، با این رویکرد در توزیع کلیدها به وجود می‌آمدند. پیش‌بینی ویلیام استنلی جوونز در کتاب خود، اصول علم، در سال ۱۸۷۴ نوشت: آیا خواننده می‌تواند بگوید که کدام دو عددی اگر در هم ضرب شوند، عدد ۸۶۱۶۴۶۰۷۹۹ تولید خواهد شد؟ در ژوئیه ۱۹۹۶، سلیمان گلومب ریاضیدان گفت: «جوونز یک ویژگی کلیدی الگوریتم RSA را برای رمزنگاری کلید عمومی پیش‌بینی کرد، اگرچه او قطعاً مفهوم رمزنگاری کلید عمومی را اختراع نکرد.» کشف محرمانه در سال ۱۹۷۰، جیمز الیس، رمزنگار انگلیسی در دفتر مرکزی ارتباطات دولت (GCHQ) انگلستان، احتمال «رمزگذاری غیر مخفی» (که اکنون رمزنگاری کلید عمومی نامیده می‌شود) را متصور شد؛ اما هیچ راهی برای اجرای آن نمی‌دید. در سال ۱۹۷۳، همکارش کلیفورد کاکس، آنچه را که به الگوریتم رمزگذاری RSA معروف شده‌است، پیاده‌سازی کرد که یک روش عملی «رمزگذاری غیر مخفی» را ارائه می‌داد و در سال ۱۹۷۴، ریاضیدان و رمزنگار دیگری در GCHQ، مالکولم ویلیامسون، آنچه را که امروزه به عنوان تبادل کلید دیفی-هلمن شناخته شده‌است، توسعه داد. با تمرکز نظامی و قدرت محاسباتی کم، قدرت رمزنگاری کلید عمومی در هر دو سازمان غیرقابل تحقق بود: من این را برای استفاده نظامی بسیار مهم دانستم … اگر شما می‌توانید کلید خود را به سرعت و به صورت الکترونیکی به اشتراک بگذارید، شما مزیت بزرگی نسبت به حریف خود دارید. تنها در پایان تحولات از برنرز-لی که یک معماری اینترنت باز را برای سِرن (CERN) طراحی می‌کرد، توافق و پذیرش آن برای آرپانت … رمزنگاری کلید عمومی متوجه پتانسیل کامل آن بود. —رالف بنجامین کشف آن‌ها به مدت ۲۷ سال به‌طور عمومی اعلام نشده بود، تا اینکه در سال ۱۹۹۷ این تحقیق توسط دولت انگلیس به‌طور قطعی فاش شد. کشف عمومی در سال ۱۹۷۶، یک سیستم رمزنگاری کلید نامتقارن توسط ویتفیلد دیفی و مارتین هلمن منتشر شد که تحت تأثیر کار رالف مرکل روی توزیع کلید عمومی، روشی از توافق کلید عمومی را افشا کردند. این اولین روش عملی منتشرشده برای ایجاد کلید مخفی مشترک بر روی یک کانال ارتباطی معتبر (اما نه محرمانه) بدون استفاده از یک راز مشترک قبلی بود. «تکنیک توافق‌نامه کلید عمومی» مرکل با عنوان معماهای مرکل شناخته شد و در سال ۱۹۷۴ اختراع و در سال ۱۹۷۸ منتشر شد. در سال ۱۹۷۷ کلیاتی از طرح کاکس به‌طور مستقل توسط ران ریوست، ادی شمیر و لئونارد آدلمن در MIT اختراع شد. نویسندگانِ آخر کار خود را در سال ۱۹۷۸ منتشر کردند و این الگوریتم از ابتدای کارشان به RSA معروف شد. RSA برای رمزگذاری و رمزگشایی از مدول به توان رساندن حاصل‌ضرب دو عدد اول بسیار بزرگ استفاده می‌کند که هم رمزگذاری کلید عمومی و هم امضای دیجیتال کلید عمومی را انجام می‌دهد. امنیت آن دشواری شدیدی در زمینه فاکتورسازی اعداد صحیح بزرگ دارد؛ مشکلی که هیچ تکنیک عمومی کارآمد شناخته‌شده‌ای برای حل آن وجود ندارد. | ## جمع‌بندی | از دهه ۱۹۷۰ تعداد و تنوع زیادی از رمزگذاری، امضای دیجیتال، توافق‌نامه کلید و سایر تکنیک‌ها در زمینه رمزنگاری کلید عمومی توسعه یافته‌اند؛ از جمله سیستم رمزنگاری Rabin، رمزگذاری ElGamal, DSA و رمزنگاری منحنی بیضوی.