در علم کریپتوگرافی، هم کلید عمومی و هم کلید خصوصی برای دسترسی به اطلاعات رمزگذاری شده مورد نیاز هستند. در اصل، کریپتوگرافی، عمل رمزگذاری اطلاعات برای مخفی نگه داشتن آن از اشخاص ثالث است. با رمزگذاری دادهها، فقط شخص دارای مجوز میتواند اطلاعات را رمزگشایی کرده و استفاده کند. در این مقاله قصد داریم تا شما را با کلید عمومی (public key)، کاربردها و تفاوتهای آن با کلید خصوصی آشنا کنیم اگر به این موضوع علاقهمند هستید تا انتهای این مقاله همراه ما باشد.
کریپتوگرافی یا رمزنگاری چیست؟
اصطلاح کریپتوگرافی، ریشه یونانی دارد و در اصل به معنای «نوشتن مخفیانه» است. در گذشته از این علم فقط در سازمانهای اطلاعاتی و ارتش به منظور نوشتن و رمزگشایی پیامهای محرمانه استفاده میشد اما با گذر زمان این علم تکامل یافته و به شاخهای جداگانه از علوم کامپیوتر تبدیل شده است. بهطورکلی، کریپتوکارنسیها نیز مشابه اینترنت از حوزههای آکادمیک و نظامی منشأ گرفتند و در نهایت موفق به ورود به حوزه خصوصی شدند. در اواخر دهه ۱۹۸۰، جنبشی تحت عنوان «سایفرپانکها» از رمزنگاری به منظورحفظ حریم خصوصی کاربران استفاده میکرد و به شدت بر موضوع حفظ حریم خصوصی تأکید داشت.
کلید عمومی و خصوصی در کریپتو چیست؟
بهطورکلی، Public key برای دریافت تراکنشها و Private key برای ارسال تراکنشها مورد استفاده قرار میگیرد. اگر به نحوه عملکرد این سیستم با دقت نگاه کنید، همه چیز کمی پیچیدهتر به نظر میرسد. جالب است بدانید که به استفاده از دو کلید مختلف (یک کلید عمومی و یک کلید خصوصی)، رمزنگاری نامتقارن میگویند. این دو کلید از نظر ریاضی به یکدیگر متصل هستند و یک جنبه حیاتی از شبکه بلاکچین را تشکیل میدهند.
بهطورکلی، منشأ کلید عمومی در کلید خصوصی است و این موضوع به کاربران اجازه میدهد تا امضاهای غیرقابل جعل ایجاد کنند که توسط شرکتکنندگان شبکه که از کلید عمومی مربوطه اطلاع دارند، مورد تأیید قرار میگیرند. در صورتی که علاقهمند به مطالعه در مورد مبانی رمزارزها هستید، پیشنهاد میکنم کتاب مبانی رمز ارز و تکنولوژیهای مرتبط را مطالعه نمایید.
بهتر است بدانید که داراییهای دیجیتال مانند بیتکوین و اتریوم با استفاده از سه دسته اطلاعات مهم و اساسی کار میکنند: آدرس، موجودی و کلیدهای عمومی و خصوصی مربوط به آدرس. برای تولید آدرس بیتکوین ابتدا یک کلید خصوصی ساخته میشود و سپس کلید عمومی متناظر آن با استفاده از یک الگوریتم شناخته شده استخراج میشود و در نهایت، آدرس، شکل کوتاهتر و معرف کلید عمومی میباشد که از آن برای تأیید تراکنشها استفاده میشود.
بهطورکلی، کلید خصوصی چیزی است که مالکیت وجوه یک کاربر را در یک آدرس، مشخص میکند. اغلب کیف پولها به طور خودکار کلیدهای خصوصی را برای شما تولید و ذخیره میکنند. جالب است بدانید که هنگامی که شما از کیف پول خود تراکنش میزنید، نرم افزار این تراکنش را با کلید خصوصی شما امضا میکند و بدون افشای آن، آن را به کل شبکه نشان میدهد که این نشاندهنده صلاحیت شما برای انتقال وجه است.
امنیت این سیستم از مسیر یک طرفهای که از کلید خصوصی به آدرس عمومی میرسد، تأمین میشود. اگر از انتها به ابتدا نگاه کنیم، متوجه خواهید شد که استخراج کلید عمومی از آدرس ممکن نیست و به همین ترتیب، استخراج کلید خصوصی از کلید عمومی نیز غیرممکن است. در کیف پولهایی مانند اتمیک، عبارت ۱۲ کلمهای که در ابتدای ساخت کیف پول در اختیار شما قرار میگیرد همان عبارت بازیابی و کلیدهای خصوصی شما است. در واقع این همان چیزی است که به شما امکان میدهد تا در صورت از دست دادن کیف پول اصلی خود، وجوه آن را بازیابی کنید.
کریپتوگرافی کلید عمومی چگونه کار میکند؟
در این فرایند، کلید عمومی توسط فرستنده و با هدف رمزگذاری اطلاعات و کلید خصوصی توسط شخص گیرنده و به منظور رمزگشایی آن مورد استفاده قرار میگیرد. همانطور که در بخشهای قبلی مقاله توضیح دادیم، این دو کلید با یکدیگر متفاوت هستند. به همین دلیل شما میتوانید کلید عمومی خود را با خیال راحت و بدون به خطر انداختن امنیت کلید خصوصی، آن را در اختیار دیگران قرار دهید اما کلید خصوصی خود را باید به صورت مخفی و در جایی امن و به دور از دسترس دیگران نگهداری کنید.
رمزنگاری نامتقارن هر جفت کلید، فرایندی منحصربهفرد بوده و تضمین میکند که پیام رمزگذاری شده با استفاده از کلید عمومی فقط توسط شخصی که کلید خصوصی مربوطه به آن را در اختیار دارد، خوانده شود.
از آنجا که الگوریتمهای رمزنگاری نامتقارن، جفت کلیدی تولید میکنند که از نظر ریاضی با یکدیگر مرتبط هستند، طول کلید آنها بسیار طولانیتر از کلیدهایی است که در رمزنگاری متقارن تولید میشود. طول کلید معمولاً بین ۱۰۲۴ تا ۲۰۴۸ بیت است و محاسبه یک کلید خصوصی را از همتای عمومی آن بسیار دشوار میکند. یکی از رایجترین الگوریتمهای رمزنگاری نامتقارن که امروزه مورد استفاده قرار میگیرد، RSA نامیده میشود.
در RSA، کلیدها با استفاده از یک مدول تولید میشوند که با ضرب دو عدد (اغلب دو عدد اول بزرگ) به دست میآیند. به طور اساسی، مدول دو کلید تولید میکند (یک Public key و یک Private key). این الگوریتم، اولین بار در سال ۱۹۷۷ توسط Rivest، Shamir و Adleman (به همین دلیل RSA نامگذاری شد) معرفی شد و همچنان جزء سیستمهای رمزنگاری کلید عمومی در نظر گرفته میشود.
تفاوت بین آدرس، کلید و کیف پول
در مورد تفاوت بین آدرس، کلید و کیف پول، تصورات غلط زیادی وجود دارد. برای درک بهتر این موضوع در این قسمت از مقاله به توضیح آن میپردازیم و ویژگیهای آنها را یک به یک بررسی میکنیم.
آدرس (Address)
آدرس، مجموعهای از اعداد و حروف است که به صورت تصادفی ساخته میشود و نشاندهنده یک نوع شماره منحصربهفرد شبیه به شماره حساب بانکی است. به عنوان مثال، این اولین آدرس بیتکوین است:
۱A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa
یک آدرس میتواند به صورت رایگان توسط هر کسی و در عرض چند ثانیه بدون نیاز به شخص ثالث ایجاد شود. در نتیجه، شما میتوانید به تعداد دلخواه یا نیاز، آدرس عمومی ایجاد کرده و آنها را با دیگران به اشتراک بگذارید. به این ترتیب، کاربران میتوانند داراییهای دیجیتال را به آدرس شما ارسال کنند. توجه داشته باشید که داراییها و تراکنشهای شما توسط هر کسی که آدرس عمومی شما را میداند، قابل مشاهده است.
کلیدها (Keys)
دو نوع کلید وجود دارد: کلید عمومی و کلید خصوصی. کلیدهای عمومی شبیه شماره حساب بانکی شما هستند که آنها را به شکل آزادانه میتوانید با همه به اشتراک بگذارید و هر کسی میتواند تراکنشهایی را برای آن ارسال کند. از سوی دیگر، کلیدهای خصوصی همانطور که از نامشان پیداست باید خصوصی نگه داشته شوند و بهتر است آنها را به عنوان نوعی پین یا کد تأیید در نظر بگیرید که همراه با کلیدهای عمومی مربوطه، امکان دسترسی به وجوه شما در شبکه بلاکچین را فراهم میکنند.
توجه داشته باشید که شما هرگز و تحت هیچ شرایطی نباید کلیدهای خصوصی خود را با شخص دیگری به اشتراک بگذارید و بهتر است داراییهای خود را به ایمنترین شکل ممکن مثلاً روی یک کیف پول کاغذی یا یک کیف پول سختافزاری نگهداری کنید. نکته حائز اهمیت این است که کلیدها در شبکه بلاکچین ذخیره نمیشوند بلکه در عوض، میتوانید آنها را در یک فایل رمزگذاری شده و به صورت آفلاین نگهداری کنید.
کیف پول
کیف پول را میتوان به عنوان نوعی زنجیره کلید مجازی رمزگذاری شده در نظر بگیرید که حاوی تمام اطلاعات مورد نیاز برای دسترسی به وجوه شما در بلاکچین است. در واقع، یک کیف پول هم آدرس(های) و هم کلید(های) دیجیتال شما را ترکیب کرده و از آنها استفاده میکند. در واقع، سادهترین شکل کیف پول به صورت یک فایل حاوی پایگاه داده عمل میکند که میتوانند به صورت آفلاین کار کند چرا که نیازی به اتصال به یک بلاکچین واقعی ندارد.
کاربردهای رمزنگاری کلید عمومی
از رمزنگاری کلیدهای عمومی برای تأمین امنیت اطلاعات حساس در سیستمهای کامپیوتری مدرن استفاده میشود. به عنوان مثال، با کمک این روش میتوان ایمیلها را رمزگذاری کرد تا محتویات آنها محرمانه بماند. علاوه بر این، پروتکل SSL که موجب امنیت وبسایتها میشود، نیز از رمزنگاری نامتقارن استفاده میکند. در واقع، این سیستم میتواند بهعنوان وسیلهای برای ارائه یک محیط امن در رأیگیریهای الکترونیکی مورد استفاده قرار گیرد تا کاربران از خانه و با استفاده از رایانههای شخصی خود در انتخابات شرکت کنند.
یکی از برجستهترین کاربردهای رمزنگاری کلید عمومی، استفاده از آن در فناوری بلاکچین و رمزارزها است. هنگامی که یک کیف پول رمزنگاری جدید راهاندازی میشود، یک جفت کلید (کلیدهای عمومی و خصوصی) تولید میشود. همانطور که گفتیم، آدرس کیف پول با کمک کلید عمومی ایجاد میشود و به راحتی میتوان آن را با دیگران به اشتراک گذاشت اما کلید خصوصی، به منظور ایجاد امضای دیجیتال و تأیید تراکنشها ساخته شده و همیشه باید در جایی امن نگهداری شود. بعد از امضا و تأیید یک تراکنش، آن تراکنش به دفتر کل بلاکچین اضافه میشود. در واقع، این سیستم تضمین میکند که تنها شخصی که کلید خصوصی مرتبط با کیف پول مربوطه را در اختیار دارد، میتواند وجوه داخل آن را جابجا کند.
محدودیتهای کریپتوگرافی کلید عمومی
اگرچه از رمزنگاری کلید عمومی به منظور افزایش امنیت رایانه و تأیید صحت پیامها استفاده میشود اما این کار با محدودیتهایی نیز روبرو است. از آنجا که رمزگذاری و رمزگشایی با عملیات پیچیده ریاضی همراه است، هنگامی که الگوریتمهای نامتقارن با حجم زیادی از دادهها مواجه شوند، سرعت آنها بسیار کند میشود. علاوه بر این، در این نوع رمزنگاری باید کلید خصوصی، مخفی بماند و اگر یک کلید خصوصی به صورت اتفاقی به اشتراک گذاشته شود، امنیت همه پیامهایی که با کلید عمومی مربوطه رمزگذاری شدهاند به خطر میافتد.
جمعبندی
رمزنگاری کلید عمومی برای حفظ امنیت رایانهها و تأیید تراکنش رمزارزها اهمیت زیادی دارد. الگوریتمهای رمزنگاری نامتقارن، با استفاده از کلیدهای عمومی و خصوصی، بسیاری از نگرانیهای امنیتی مربوط به رمزنگاریهای متقارن را حل کرده است. اگرچه رمزنگاری کلیدهای عمومی سالهاست که در حال انجام است اما ما شاهد آن هستیم که کاربردهای آن در فضای بلاکچین و داراییهای دیجیتال روز به روز در حال افزایش است.