کلید خصوصی، کلید عمومی و آدرس بیت کوین چه تفاوتی با هم دارند؟
انتقال بیت کوین بین افراد و سرویسهای مختلف با استفاده از آدرسهای بیت کوین انجام میشود. از سوی دیگر واژههایی مانند کلید خصوصی و کلید عمومی که از سیستم رمزنگاری نامتقارن راه خود را به بیت کوین باز کردهاند، کاربران تازه وارد را سردرگم کرده و آنها را درباره استفاده به جای هر کدام از آنها به اشتباه میاندازند. در این مطلب درباره تفاوتها و چگونگی ایجاد هرکدام از این موارد میپردازیم تا با جایگاه این واژگان در فرهنگ لغت ارزهای دیجیتال بیشتر آشنا شویم.
به دلیل طولانی بودن و استفاده از عبارات و حروف مختلف، به خاطر سپردن آدرس کیف پول همانند به یاد داشتن یک شماره کارت بانکی کار سادهای نیست. همچنین استفاده از یک آدرس کیف پول هنگام انتقال بیت کوین نیز به خاطر حفاظت از حریم خصوصی کاربر، عاقلانه نیست و بسیاری از کیف پولهای بیت کوین در هر تراکنش آدرس جدیدی تولید میکنند.
از طرفی تولید جفت کلید عمومی و خصوصی بیت کوین، ربطی به شبکه آن ندارد و میتواند در حالت آفلاین و بدون اتصال به شبکه بیت کوین هم انجام شود. این کلیدها امکان برقراری یک اعتماد غیرمتمرکز را در شبکه فراهم میکنند و مالکیت کامل را در اختیار صاحب کلیدها قرار میدهند. اما برای آشنا شدن با اینکه کلید عمومی و خصوصی چیست و اصلا آدرس کیف پولها چگونه به وجود میآیند، ابتدا باید کمی با رمزنگاری نامتقارن آشنا شوید.
رمزنگاری نامتقارن
رمزنگاری نامتقارن یا رمزنگاری کلیدعمومی که در دهه ۷۰ میلادی اختراع شد، یک روش بنیادی در علوم کامپیوتر و امنیت اطلاعات است. رابطه ریاضی که بین جفت کلیدها در بیت کوین وجود دارد، باعث شده تا با استفاده از کلید عمومی بتوان عمل دریافت را انجام داد و کلید خصوصی را برای امضا کردن تراکنشها استفاده نمود.
رمزنگاری نامتقارن که در آن هر نفر از یک جفت کلید برای رمزگذاری و رمزگشایی استفاده میکند، نسبت به حالت قدیمیتر خود یعنی رمزنگاری متقارن که برای رمزگذاری و رمزگشایی بین هر دو فرد از یک کلید استفاده میشد، زمانی که تعداد افراد مجموعه بیشتر شود برای استفاده مناسبتر خواهد بود.
کلید خصوصی و کلید عمومی
برای توضیح اینکه کلید خصوصی و کلید عمومی چگونه به دست میآیند و وظیفه آنها چیست، پروتکل بیت کوین را انتخاب میکنیم.
کلید خصوصی یک عدد تصادفی ۲۵۶ بیتی است. به عبارتی اگر یک سکه را ۲۵۶ بار پرتاب کنید بطوریکه شیر را ۰ و خط را ۱ در نظر بگیرید و تمامی نتایج پرتاب را به ترتیب کنار هم قرار دهید، یک عدد تصادفی ۲۵۶ بیتی تولید کردهاید که همان کلید خصوصی است.
برای درک تصور بزرگی این عدد بهتر است بدانید که تقریبا با تمام اتمهای جهان هستی قابل مشاهده برابر است! با این مقایسه درباره احتمال تولید کلیدخصوصی تکراری (دست گذاشتن بر روی یک اتم خاص در جهان هستی برای دوبار!) درک بهتری خواهید داشت.
کلید خصوصی به دست آمده در پروتکل بیت کوین با استفاده از رمزنگاری منحنی بیضوی، کلید عمومی را تولید میکند. یکی از مهمترین خصوصیتهای این شیوه رمزنگاری یک طرفه بودن آن است؛ یعنی از کلید خصوصی میتوان به کلید عمومی رسید اما برعکس آن امکان پذیر نیست.
همانطور که گفته شد کلید خصوصی یک عدد تصادفی است که مالکیت و کنترل کامل بر روی داراییهای دیجیتال همان دارنده کلید خصوصی خواهد بود. از کلید خصوصی برای ایجاد امضای دیجیتال استفاده میشود تا مالکیت بیت کوینهای یک تراکنش را بتوان به اثبات رساند.
نکته مهم در تولید یک کلیدخصوصی اطمینان یافتن از تصادفی بودن یا آنتروپی تولیدکننده است. به عبارتی روشی که مورد استفاده قرار میگیرد نباید قابل پیشبینی یا تکرار مجدد باشد. برای همین نیز سایتهایی که کلید خصوصی تولید میکنند، از شما درخواست تکان دادن ماوس یا وارد کردن عباراتی را برای ایجاد آنتروپی میکنند. برای همین نیز امنترین کلید خصوصی که میتوان تولید کرد، با قلموکاغذ و نوشتن ۲۵۶ عدد صفر و یک پشت سر هم به دست میآید.
معمولا به دلیل طولانی بودن رشته اعداد، کلید خصوصی را به صورت صفر و یک نمایش نمیدهند و آن را به فرمتهای مختلفی مانند هگزادسیمال (سیستم عددنویسی مبنای ۱۶) نشان میدهند.
کلید خصوصی را باید محرمانه نگهداری کرد، چرا که افشای آن به افراد دیگر برابر با اعطای کنترل بیت کوینهایتان به آنهاست. همچنین از کلیدهای خصوصی باید نسخه پشتیبان تهیه کرد تا در صورت از دست رفتن یکی از نسخهها، دسترسی خود را به بیت کوینها از دست ندهیم.
برای اطلاعات بیشتر درباره کلیدخصوصی مقاله «هر آنچه که باید درباره کلیدهای خصوصی بدانید» را بخوانید.
کلید عمومی تولید شده از کلید خصوصی که در تراکنشها همراه با امضای دیجیتال ارائه میشود، برای تایید صحت امضا از آن استفاده میشود. در واقع نودها شبکه با تطابقت دادن کلید عمومی و امضای دیجیتال، از اینکه مالک بیت کوین کلید خصوصیهایش را برای امضای تراکنش استفاده کرده (بدون اطلاع از اینکه کلید خصوصی چه بوده است) مطمئن میشوند.
آدرس بیت کوین
آدرس بیت کوین در واقع رشتهای از اعداد و حروف است که میتوانید آن را با بقیه به اشتراک بگذارید تا به آن بیت کوین بفرستند. آدرسها از کلیدهای عمومی با استفاده از توابع هش یکطرفه به دست میآیند؛ به عبارتی امکان ایجاد کلیدهای عمومی از طریق داشتن آدرسها وجود ندارد.
توبع هش یا الگوریتمهای هش، توابع یکطرفهای هستند که همانند اثرانگشت یک خروجی منحصربفرد با سایز ثابت تولید میکنند.
آدرس بیت کوین نهایی در سه فرمت مختلف P2PKH، P۲SH و bech32 نمایش داده میشوند.
انواع آدرس بیت کوین
- لگاسی (P2PKH)
در صورتی که آدرس بیت کوین با عدد ۱ شروع شود، فرمت آن P2PKHخواهد بود، مانند:
۱BvBMSEYstWetqTFn۵Au۴m۴GFg۷xJaNVN۲
این اولین فرمت آدرس بیت کوین بود که هنوز هم از آن استفاده میشود.
این آدرسها با آدرسهای سگویت (bech32) سازگار نیستند و نمیتوان از آدرس سگویت به آنها بیت کوین ارسال کرد، اما امکان ارسال از آنها به آدرسهای bech32 وجود دارد. همچنین میانگین کارمزد تراکنش در تراکنشهای انجام شده با این آدرسها معمولا بیشتر است.
- آدرس فشرده (P2SH)
ساختار آدرسهای P2SH مشابه آدرسهای P2PKH است، با این تفاوت که به جای عدد ۱ با عدد ۳ آغاز میشوند. این آدرسها قابلیتهای بیشتری نسبت به آدرسهای نوع قبلی دارند و اغلب برای آدرسهای امضای چندگانه مورد استفاده قرار میگیرند.
این نوع از آدرس به طور گستردهای پشتیبانی میشود و میتوان از آن برای ارسال ارز به هر دو آدرس P2PKH و bech32 استفاده کرد.
- آدرس بومی سگویت (bech32)
آدرسهای bech32 کاملا متفاوت از آدرسهای نوع P۲ هستند.
هر آدرس bech32 با عبارت bc1 آغاز میشود و طولانیتر از دو نوع آدرس دیگر است. این نوع آدرس که بیشتر کیف پولها هماکنون از آن پشتیبانی میکنند، هنوز موفق به پذیرش گسترده در صرافیها نشده است. در حال حاضر بسیاری از صرافیهای امکان ارسال بیت کوین به این آدرس را فراهم کردهاند، اما کاربرانشان قادر به دریافت بیت کوین با این فرمت آدرس نیستند.
برای اطلاعات بیشتر درباره سگویت، مطلب «سگویت (SegWit) چیست؟» را بخوانید. همچنین مطلب «آموزش قدمبهقدم ساخت آدرس سفارشی بیت کوین» که آموزش ساخت آدرسهای ویژهای از P2PKH است را از دست ندهید.
تفاوت آدرس و کلید عمومی
آدرس کیف پولها از کلید عمومی به دست میآیند و این دو را نباید با یکدیگر اشتباه گرفت. کاربران هنگام انتقال بیت کوین به یکدیگر از آدرسها استفاده میکنند و وظیفه کلیدهای عمومی که در تراکنشها همراه با امضای دیجیتال به شبکه مخابره میشود، تایید صحت امضا و اطمینان از درستی کلید خصوصی مربوط به آدرس بیت کوین مورد نظر است.
کلید عمومی و آدرس را میتوان بر خلاف کلید خصوصی با بقیه به اشتراک گذاشت. دانستن این نکته نیز بد نیست که کلید عمومی را نمیتوان از طریق آدرس عمومی به دست آورد، از طرفی کلید عمومی مربوط به یک آدرس پس از انجام یک تراکنش مشخص میشود. با این حساب تراکنشهای کوینبیس بیت کوین که پاداش و کارمزد ماینرها به آن وارد میشود، تا زمانی که خرج نشوند نمیتوان آدرس عمومی آنها را به دست آورد. یعنی با اینکه آدرس عمومی اولین بلاک بیت کوین که ساتوشی ناکاموتو احتمالا آن را استخراج کرده مشخص است، اما کلید عمومی آن به دلیل خرج نکردن بیت کوینها نامشخص باقی مانده است.
کلید خصوصی به دست آمده در پروتکل بیت کوین با استفاده از رمزنگاری منحنی بیضوی، کلید عمومی را تولید میکند. یکی از مهمترین خصوصیتهای این شیوه رمزنگاری یک طرفه بودن آن است؛ یعنی از کلید خصوصی میتوان به کلید عمومی رسید اما برعکس آن امکان پذیر نیست.