در این مقاله، دو مفهوم مهم کلیدهای خصوصی (Private Keys) و کلیدهای عمومی (Public Keys) که در رمزنگاری و رمزگشایی اطلاعات حساس استفاده میشوند را با هم بررسی میکنیم و سعی میکنیم تا با ایجاد دیدی بازتر از موضوع بتوانیم تفاوتها و نحوه عملکرد هر یک از آنها را بهتر درک کنیم.
رمزگذاری فرآیند ایمن نگه داشتن اطلاعات با تبدیل آن به یک کد مخفی است. با افزایش تهدیدات امنیتی مانند هکرها و سایر مخاطرات جهان آنلاین در اینترنت، رمزگذاری به یک امر ضروری تبدیل شده است.
زمانی که شخص مجاز اطلاعاتی را دریافت میکند، برای فهم یا رمزگشایی آن به یک کلید برای رمزگشایی دادهها نیاز دارد؛ به عبارت دیگر از کلیدهای عمومی و خصوصی برای رمزگذاری و رمزگشایی دادهها استفاده میشود. منظور از رمزگذاری، تبدیل اطلاعات به کد مخفی در هم ریخته شده و منظور از رمزگشایی، برگرداندن آنها به قالب اصلی و قابل خواندن است.
برای مثال، چندین نفر در یک شبکه آنلاین میتوانند به یک کلید عمومی دسترسی پیدا کنند. در مقابل، فقط مالک داده و افرادی که این اطلاعات بینشان به اشتراک گذاشته میشود، به یک کلید خصوصی دسترسی خواهند داشت. شکل رمزگذاری مورد استفاده، به نوع کلیدی که فرد استفاده میکند بستگی دارد. دو شکل رمزگذاری، رمزگذاری کلید عمومی و رمزگذاری کلید خصوصی است.
رمزگذاری کلید عمومی چیست؟
رمزگذاری کلید عمومی به صورت «رمزگذاری نامتقارن» است؛ زیرا از دو کلید مختلف برای رمزگذاری و رمزگشایی دادهها استفاده میکند. این روش، برای رمزگذاری اطلاعات از یک کلید عمومی استفاده میکند و گیرنده اطلاعات برای رمزگشایی به یک کلید خصوصی نیاز دارد. کلید عمومی برای چندین نفر در دسترس است، در حالیکه فقط گیرندهی مجاز به کلید خصوصی دسترسی دارد.
رمزگذاری کلید عمومی چگونه کار میکند؟
کلیدهای عمومی و خصوصی واقعا کلید نیستند، بلکه درواقع اعداد اول بزرگیاند که از نظر ریاضی با یکدیگر مرتبط هستند. از این رو اطلاعات رمزگذاری شده با استفاده از یک کلید عمومی فقط با یک کلید خصوصی مربوطه قابل رمزگشایی است.
شخص نمیتواند کلید خصوصی را براساس دانستن کلید عمومی حدس بزند. به همین دلیل، یک کلید عمومی میتواند آزادنه به اشتراک گذاشته شود. نکته مهم این است که کلید خصوصی فقط به یک نفر تعلق دارد؛ درواقع میتوان گفت به صورت منطقی باید در دسترس یک نفر باشد تا از این طریق امنیت دادههای تبادلی تضمین شود.
ارتباط امن با یک مثال ساده
به عنوان مثال، هنگام خرید کالایی از وبسایت دیجیکالا، برای رمزگذاری ارتباط وب خود از پروتکل امن SSL (که مخفف عبارت Secure Sockets Layer است) استفاده میکنیم، که همگی آن را با قفل سبز رنگ کنار آدرس بار در مرورگر وب خود میشناسیم. به این ترتیب، هکرها قادر به خواندن اطلاعات حساس، مانند جزئیات کارت اعتباری ما نخواهند بود. هنگام شروع ارتباط وب، مرورگر با استفاده از یک کلید عمومی اطلاعات را به سرور دیجیکالا میفرستد. از آن زمان به بعد، هر داده انتقال یافته، رمزگذاری میشود. اکنون، دیجیکالا باید برای خواندن آنچه که ما ارسال کردهایم، از یک کلید خصوصی برای رمزگشایی استفاده کند.
رمزگذاری کلید خصوصی چیست؟
در رمزگذاری کلید خصوصی فقط از یک کلید خصوصی برای رمزگذاری و رمزگشایی دادهها استفاده میشود. به همین دلیل، در گروه «رمزگذاری متقارن» قرار میگیرد.
رمزگذاری کلید خصوصی چگونه کار میکند؟
به یاد داشته باشید که کلیدهای خصوصی فقط در اختیار مالکین داده و افرادی است که دادهها را با آنها به اشتراک میگذارند. به همین دلیل، وقتی یک فایل رمزگذاری شده با کلید خصوصی را برای همکار خود ارسال میکنید، باید رمز خصوصی آن را نیز برای رمزگشایی به او بدهید و داده با همان کلیدی که رمزنگاری شده قابل رمزگشایی خواهد بود.
تولید کلید عمومی و خصوصی
چندین الگوریتم ریاضی معروف وجود دارد که برای تولید کلید عمومی و خصوصی استفاده میشود. در این مقاله به برخی از الگوریتمهای رایج میپردازیم:
Rivest-Shamir-Adelman (RSA)
قدیمیترین سیستم رمزنگاری کلید عمومی-خصوصی. معمولا برای انتقال کلیدهای مشترک برای رمزنگاری کلید متقارن استفاده میشود.
Digital Signature Standard (DSS)
یک استاندارد پردازش اطلاعات فدرال با تعیین الگوریتمهایی است که میتواند برای تولید امضاهای دیجیتالی استفاده شود و برای اولین بار توسط NIST توسعه یافته و استفاده شده است.
Elliptic Curve Cryptography (ECC)
همانطور که از نام آن پیداست، ECC برای تولید کلید به منحنیهای بیضوی متکی است. اغلب برای تطابق کلید و امضاهای دیجیتالی استفاده میشود.
تفاوت بین کلید خصوصی و کلید عمومی
در برخی تعابیر، کلیدهای عمومی را مانند آدرس کسبوکار در وب توصیف میکنند؛ به این نحو که این آدرس کسبوکار عمومی است و هر کسی میتواند آن را جستوجو کرده و پیدا کند، همچنین به صورت گسترده با سایرین به اشتراک بگذارد. در رمزگذاری نامتقارن، کلیدهای عمومی را میتوان با همه افراد در سیستم به اشتراک گذاشت. هنگامی که فرستندهی داده، کلید عمومی را در اختیار داشته باشد، از آن برای رمزگذاری پیام خود استفاده میکند.
![The difference between public and private keys](https://derak.cloud/wp-content/uploads/2021/07/4-The-difference-between-public-and-private-keys-fa-1.jpg)
هر کلید عمومی با یک کلید خصوصی منحصربهفرد همراه است. عملکرد کلید خصوصی را شبیه عملکرد قفل درب ورودی یک مغازه بدانید که فقط شما یک نسخه از کلید این قفل را در اختیار دارید. کلید خصوصی تضمین میکند که فقط شما میتوانید از این درب ورودی عبور کنید. در مورد پیامهای رمزگذاری شده نیز فقط شما از این کلید خصوصی برای رمزگشایی پیامها استفاده میکنید.
این کلیدها در کنار هم امنیت دادههای مبادله شده را تضمین میکنند. پیام رمزگذاری شده با کلید عمومی، فقط با استفاده از کلید خصوصی آن قابل رمزگشایی است.
تفاوتها
در جدول زیر، برخی از مهمترین تفاوتهای بین مکانیزمهای کلید خصوصی و کلید عمومی نشان داده شده است.
کلید خصوصی | کلید عمومی | ||
---|---|---|---|
۱ | الگوریتم | کلید خصوصی برای رمزگذاری و رمزگشایی دادهها استفاده میشود و بین فرستنده و گیرنده دادههای رمزگذاری شده به اشتراک گذاشته میشود. | کلید عمومی فقط برای رمزگذاری دادهها استفاده میشود و برای رمزگشایی دادهها از کلید خصوصی استفاده و به اشتراک گذاشته میشود. |
۲ | عملکرد | سریعتر | کندتر |
۳ | رمز | کلید خصوصی به غیر از فرستنده و گیرنده از همه مخفی نگه داشته میشود و عمومی نیست. | کلید عمومی آزاد و در دسترس همه است و فقط کلید خصوصی آن به صورت مخفی نگهداری میشود. |
۴ | مکانیزم | متقارن | نامتقارن |
۵ | اشتراک گذاری | کلید خصوصی بین دو طرف مشترک است. | کلید عمومی را همه میتوانند استفاده کنند اما کلید خصوصی فقط بین دو طرف به اشتراک گذاشته میشود. |
۶ | اهداف | قابلیت اطمینان، مقیاسپذیری و سرعت سیستم را بررسی میکند. معمولا برای محافظت از درایو دیسک و دیگر دستگاههای ذخیرهسازی استفاده میشود. | معمولا برای امنیت نشستهای وب و ایمیلها استفاده میشود. |
مزایای تجاری رمزگذاری کلید خصوصی عمومی
با استفاده از یک کلید عمومی و خصوصی برای رمزگذاری و رمزگشایی دادهها، گیرندگان میتوانند اطمینان داشته باشند که داده دریافتی دقیقا همان چیزی است که فرستنده ارسال کرده است. همچنین در این فرایند، گیرنده از محرمانه بودن، یکپارچگی و اصالت دادهها اطمینان حاصل میکند.
محرمانه بودن
محتوایی که با کلید عمومی ایمن است، فقط با کلید خصوصی قابل رمزگشایی است. این بدان معناست که فقط گیرنده میتواند به محتوای مورد نظر دسترسی داشته باشد.
یکپارچگی
بخشی از فرایند رمزگشایی نیاز به بررسی مطابقت پیام دریافتی با پیام ارسالی دارد. این اطمینان میدهد که پیام در این بین تغییر نکرده است.
اصالت
هر پیامی که فرستنده به گیرنده ارسال میکند، توسط کلید خصوصی فرستنده امضا میشود. تنها راه رمزگشایی کلید خصوصی فرستنده با کلید عمومی وی است که گیرنده میتواند به آن دسترسی پیدا کند. با امضای پیام توسط کلید خصوصی، فرستنده از صحت پیام اطمینان حاصل میکند و نشان میدهد که پیام واقعا از طرف او فرستاده شده است.
کلید خصوصی یا کلید عمومی؟
استفاده از کلید عمومی یا از کلید خصوصی برای رمزگذاری، به نیاز و روش کاری شما بستگی دارد؛ مهمترین نکته این است که امروزه در فضای اینترنت باید حتما از همهی دادهها و ارتباطات خود محافظت نمایید. استفاده از انواع روشهای رمزنگاری، از رهگیری و دسترسی به دادهها توسط هکرها جلوگیری نمیکند، اما آنها را غیرقابل استفاده و غیرقابل خواندن و یا به سختی قابل دسترسی مینماید. این امر تا زمانی که کلید خصوصی امن باشد، تضمین شده است و امنیت دادهها را تامین میکند.