کلید عمومی یا ( Public Key ) ،یک روش رمز نگاری داده ها با اعداد و حروف است، که میتوان آن را به اشتراک گذاشت؛ کلید خصوصی یا ( Private Key ) نیز یک روش رمزنگاری منحصر بفرد است، این دو کلید در کنار هم برای ساخت امضاهای دیجیتال مورد استفاده قرار میگیرند و به افزایش امنیت داده های تبادلی کمک میکنند.
کلید رمزنگاری شده چیست؟
در رمزنگاری، یک کلید یا key به اطلاعاتی گفته می شود که برای رمزنگاری کردن داده ها مورد استفاده قرار می گیرد تا داده به شکل تصادفی به نظر آیند. اغلب این اطلاعات شبیه به اعدادی طولانی یا مجموعی از حروف و اعداد هستند.
زمانی که داده های رمزنگاری نشده که به اصطلاح به آنها متن خام نیز گفته می شود، به وسیله کلید در الگوریتم رمزنگاری قرار می گیرد، پس از اتمام کار، خروجی یک داده ی رمزنگاری شده ای خواهد بود که کاملاً شبیه به یک داده تصادفی است. با این حال، هر شخصی که کلید رمزگشایی را داشته باشد، می تواند مجدداً آن را به همان متن خام اولیه برگرداند.
برای مثال فرض کنید پیامی به عنوان یک متن خام تحت عنوان "سلام" را دریافت کرده و بخواهیم با یک کلید آن را رمزنگاری کنیم. اگر فرضاً کلید ما این باشد: "2jd8932kd8" ، سلام ساده ی ما شکلی شبیه به این خواهد داشت: "X5xJCSycg14" که کاملاً شبیه به یک داده ی تصادفی بدرد نخور است.
اما با همان کلید می توان مجدد به کلمه "سلام" بازگشت.
Plaintext + key = ciphertext:
hello + 2jd8932kd8 = X5xJCSycg14
Ciphertext + key = plaintext:
X5xJCSycg14 + 2jd8932kd8 = hello
خب حال که با مفهوم رمزنگاری داده ها آشنا شدید، بگذارید با عبارت رمزنگاری کلید عمومی بیشتر آشنا شویم...
رمز نگاری کلید عمومی (public key encryption) چیست؟
رمزنگاری کلید عمومی یک روش رمزنگاری داده ها با دو کلید است که یکی از آنها را برای عموم به صورت public یا عمومی ایجاد می کند. کلید دوم نیز تحت عنوان کلید خصوصی یا private key شناخته می شود. داده هایی که با کلید عمومی رمزنگاری شده باشند.
تنها با کلید خصوصی متناظر آن می توانند رمزگشایی شوند و برعکس، داده هایی که با کلید خصوصی رمزنگاری شده باشند، تنها با کلید عمومی متناظرشان رمزگشایی می شوند. رمزنگاری کلید عمومی را با عبارت رمزنگاری نامتقارن نیز می شناسند؛ این عبارت در TLS/SSL که HTTPS را ممکن می سازند، بسیار کاربرد دارد.
با میزبان کلود همراه باشید.
پروسه رمزنگاری کلید عمومی به چه صورت است؟
ممکن است این فرآیند کمی فنی و پیچیده به نظر آید، اما برای توضیح بهتر این پروسه، با یک یا دو مثال مطلب را روشن تر خواهیم کرد.
فرض کنید که یک کامیونی که کلیدش در اختیار دو نفر، کریم و حمید، است، پوشه ای را جا به جا می کند. یک قفل معمولی دارای دو حالت است: قفل و باز. پس اگر کامیون قفل باشد، هر کسی که یک نسخه کپی از کلید در اختیار داشته باشد، می تواند قفل آن را باز کند.
زمانی که کریم کامیون را قفل کرده و آن را به حمید می دهد، می داند که حمید می تواند با نسخه دومی که از کلید در اختیار دارد، آن را باز کند.
این دقیقاً چیزی است که به رمزنگاری متقارن معروف است. یعنی یک کلید مخفی هم برای قفل کردن و هم برای باز کردن یا در اصل هم برای رمزنگاری و هم رمزگشایی مورد استفاده قرار می گیرد. در واقع هر دو طرف از یک کلید استفاده می کنند.
حالا فرض کنید که کریم از یک قفل خاص برای باز و بسته کردن کامیون استفاده کند که بجای دو حالت، سه حالت داشته باشد:
A: قفل، کلید قفل را کامل به سمت چپ برد.
B: باز: حالت وسطی.
C: قفل: کلید قفل را کامل به سمت راست برد.
پس بجای یک کلید، برای باز کردن این قفل به دو کلید احتیاج است:
کلید شماره یک: که فقط می تواند به سمت چپ برود.
کلید شماره دو: که فقط می تواند به سمت راست برود.
این یعنی اگر کامیون قفل شده و کلیدش آن را در حالت A قرار داده باشد، فقط کلید شماره دو می تواند آن را باز کند؛ چون جایگاه کلید درون قفل به سمت چپ قرار داشته و کلید دو که می تواند قفل را به سمت راست حرکت دهد، می تواند آن را به حالت باز برگرداند.
اگر کامیون با حالت C قفل شده باشد، تنها کلید شماره یک می تواند آن را به موقعیت B یا باز تغییر حالت دهد.
به عبارت دیگر، هر دو کلید می توانند کامیون را قفل کنند، اما زمانی که قفل شود، تنها کلید دیگر می تواند آن را باز کند.
حال فرض کنید که کریم از کلید شماره دو، چند نسخه کپی بگیرد، یعنی کلیدی که قفل را تنها به سمت راست حرکت می دهد؛ و آنها را به هر کسی که می شناسد یا هر کسی که یک نسخه کپی می خواهد، بدهد.
در واقع این کلید دیگر به یک کلید عمومی تبدیل شده است. اما کریم کلید شماره یک را تنها نزد خود نگه می دارد. این کلید یک کلید خصوصی است. خب چه اتفاقی می افتد؟
- حمید می تواند با خیال راحت از اینکه تنها کریم می تواند قفل کامیون را باز کند، با کامیون برای او اطلاعاتی محرمانه ارسال کند. زمانی که حمید کامیون را با کلید عمومی قفل می کند، که از سمت چپ به راست می چرخد، فقط کلیدی که بتواند از راست به چپ بچرخد، می تواند قفل را باز کند. پس فقط کلید خصوصی کریم می تواند کامیون را باز کند.
- اگر کریم کامیون را با کلید خصوصی اش قفل کند، حمید می تواند مطمئن باشد که کامیون ارسالی از سمت کریم بوده نه یکی از کسانی که کلید کپی دارند. تنها یک کلید وجود دارد که می تواند کامیون را قفل کند، پس قفل در حالت A قرار دارد ( کاملاً به سمت چپ ). درست است هر کسی که کلید عمومی را داشته باشد می تواند با چرخاندن قفل به سمت راست کامیون را باز کند، اما معلوم است که کامیون بازگشتی از طرف کریم است، چون در حالت کامل به سمت چپ است که فقط کلید کریم می تواند این کار را انجام داده باشد.
خب حال کامیون را با "متن خام" و کلیدهای فیزیکی درون مثال را با کلیدهای رمزنگاری مجازی جا به جا کنید.
پروسه به این شکل خواهد شد که تنها مالک کلید خصوصی می تواند داده ها را رمزنگاری کند تا صاحبین کلید عمومی بتوانند آن را باز کنند. در عین حال، هر کسی می تواند با کلید عمومی داده ها را قفل کند، اما فقط مالک کلید خصوصی می تواند آن را باز یا رمزگشایی کند.
بنابراین، همه می توانند با این روش داده ها را به شکلی امن به مالکین کلید خصوصی ارسال کنند. و در طرف مقابل نیز می توانند پس از دریافت پاسخ مطمئن شوند که داده ها تنها از مرجع اصلی آن ارسال شده است.
حال مثالی از دنیای دیجیتال خواهیم زد...
فرهاد قصد دارد تا ایمیلی رمزنگاری شده برای رضا ارسال کند؛ برای اینکار فرهاد کلید عمومی رضا را گرفته و پیام خود را برای او رمزنگاری می کند. سپس بعد از آنکه رضا پیام را دریافت کرد، با یک کلید خصوصی که برای رمزگشایی پیام فرهاد در اختیارش قرار داده شده، آن را باز یا رمزگشایی می کند.
با این که ممکن است مهاجمین به سرور حمله کرده و تلاش کنند تا پیام را بخوانند، با توجه به اینکه کلید خصوصی را برای رمزگشایی پیام ندارند، نمی توانند به آن پیام دسترسی پیدا کنند. پس فقط رضا می تواند پیام را دریافت و مطالعه کند.
اگر رضا بخواهد جوابی در برگشت ارسال کند، دقیقاً همین پروسه را تکرار می کند و با کلید عمومی فرهاد، پیام خود را رمزنگاری می کند.
تفاوت بین کلید عمومی و خصوصی
کلیدهای عمومی در بسیاری از موارد با آدرس تجاری یک کسب و کار که در وب سایت درج می شود، تشبیه شده است. این آدرس عمومی بوده و هر کسی می تواند به آن دسترسی داشته و آن را به اشتراک بگذارد. در رمزنگاری نامتقارن، کلیدهای عمومی می توانند با هر کسی درون سیستم به اشتراک گذاشته شوند.
زمانی که ارسال کننده کلید عمومی را در اختیار داشته باشد، از آن برای رمزنگاری پیامش استفاده می کند.
هر کلید عمومی با یک کلید خصوصی جفت شده ی منحصر به فرد همراه است. به کلید خصوصی چیزی مثل کلید ورودی درب شرکت نگاه کنید که فقط مالک آن را در اختیار دارد.
این مثال یکی از تفاوت های اصلی این دو نوع کلید را روشن می کند. کلید خصوصی از این موضوع اطمینان حاصل می کند که فقط شما که مالک کسب و کار هستید، می توانید وارد شرکت شوید.
در بحث پیام رمزنگاری شده، شما از این کلیدهای خصوصی برای رمزگشایی پیام ها استفاده می کنید.
این دو کلید در کنار یکدیگر به افزایش امنیت داده های تبادلی کمک می کند. پیامی که با یک کلید عمومی رمزنگاری شده باشد، نمی تواند بدون کلید خصوصی متناظرش باز یا رمزگشایی شود.
تولید کلیدهای عمومی و خصوصی
همانطور که گفته شد، کلیدهای عمومی و خصوصی عملاً کلید نیستند، بلکه اعدادی هستند که به صورت ریاضی بهم مرتبط بوده و شاید در برخی موارد تلفیقی از اعداد و حروف باشند. و این موضوع را نیز متوجه شدیم که هر چیزی که با یک کلید عمومی رمزنگاری شده باشد، تنها با کلید خصوصی متقارنش می تواند رمزگشایی شود.
یک فرد نمی تواند با توجه به کلید عمومی خود، کلید خصوصی را حدس بزند. به همین دلیل است که کلید عمومی را می توان با خیال راحت به اشتراک گذاشت. اما کلید خصوصی فقط در اختیار یک نفر قرار می گیرد.
چندین الگوریتم ریاضی شناخته شده وجود دارد که می توان به کمک آنها کلیدهای خصوصی و عمومی تولید کرد. تعدادی از این الگوریتم ها عبارتند از:
- Rivest-Shamir-Adelman (RSA) : قدیمی ترین سیستم رمزنگاری کلیدهای عمومی و خصوصی که گاهاً برای انتقال کلیدهای به اشتراک گذاشته شده جهت رمزنگاری کلید متقارن مورد استفاده قرار می گیرد.
- Digital Signature Standard (DSS) : یک استاندارد دولتی پردازش اطلاعات که مشخص کننده الگوریتم هایی است که می توانند برای ایجاد امضاهای دیجیتال مورد استفاده قرار گیرند.
- Elliptic curve cryptography (ECC): این الگوریتم برای تولید کلیدها بر منحنی های بیضی شکل تکیه می کند که اغلب برای توافق بین کلیدها و امضاهای دیجیتال مورد استفاده قرار می گیرد.
امضاهای دیجیتال و کلیدهای رمزنگاری
کلیدهای عمومی و خصوصی می توانند برای ساخت امضاهای دیجیتال مورد استفاده قرار گیرند. یک امضای دیجیتال از این امر اطمینان حاصل می کند که شخص ارسال کننده یک پیام دقیقاً همانی است که ادعا می کند.
معمولاً برای رمزنگاری داده ها از کلید عمومی دریافت کننده استفاده می کنیم و از سمت مقابل، دریافت کننده برای رمزگشایی از کلید خصوصی خود استفاده می کند. ولی، در چارچوب امضاهای دیجیتال، هیچ راهی برای اعتباردهی به منبع ارسالی پیام وجود ندارد. مثلا ممکن است جمشید با داشتن کلید عمومی سارا، پس از ارسال پیام تظاهر کند که این پیام از طرف مرجان ارسال شده است.
برای ایجاد امضای دیجیتال، مرجان با کلید خصوصی خود به طور دیجیتالی ایمیل ارسالی به سارا را امضا می کند. زمانی که سارا از طرف مرجان پیامی دریافت کند، می تواند آن امضای دیجیتال را با کلید عمومی خود شناسایی کرده و از هویت ارسال کننده اطمینان حاصل کند.
از آنجایی که امضای دیجیتال از کلید خصوصی مرجان استفاده کرده، پس مرجان تنها کسی است که می توانسته این امضا را تولید کند.
مزایای کلیدهای رمزنگاری شده برای کسب و کارها
با استفاده از کلیدهای عمومی و خصوصی برای رمزنگاری و رمزگشایی اطلاعات، دریافت کنندگان می توانند از سالم بودن داده هایی که ارسال کننده ادعا می کند، اطمینان حاصل کنند؛ به عبارت دیگر دریافت کننده از محرمانگی، درستی و اعتبار داده ها مطمئن می شود.
- محرمانگی: از آنجایی که محتوا با کلید عمومی ایمن شده و تنها به وسیله کلید خصوصی متناظرش باز می شود، محرمانگی اطلاعات تبادلی حفظ شده و تنها فرد مورد نظر یا ارگان خاصی می تواند آن محتوا را مشاهده کند.
- درستی: از آنجایی که در بخشی از فرآیند پیام دریافت شده با پیام ارسال شده چک و همانندجویی می شود، از صحت اطلاعات اطمینان به عمل می آید. پس اطلاعات و پیام تغییری نکرده و مستقیما از ارسال کننده به دریافت کننده رسیده است.
- اعتبار: اطلاعات به این علت اعتبار پیدا می کنند که هر پیام ارسال شده از فرد اول به فرد دوم می بایست با کلید خصوصی فرد اول امضا شود. تنها راه رمزگشایی کلید خصوصی فرد اول با در اختیار داشتن کلید عمومی آن فرد ممکن است.
جمع بندی
کلیدهای عمومی و خصوصی اصول و پایه یک رمزنگاری و امنیت داده های اینترنت را شکل می دهند. با وجود این کلیدها می توانید از هویت فرد ارسال کننده و دریافت کننده، اعتبار پیام ها و فایل های ارسالی و محرمانگی آنها اطمینان حاصل کرده و از هرگونه سوء استفاده توسط غیر و دستکاری توسط هکرها جلوگیری به عمل آورید.
ارائه دهنده خدمات زیرساخت یکپارچه ابری