کلید عمومی بخشی از یک جفت کلید رمزنگاری است که بخش دیگر آن کلید خصوصی نام دارد. در شبکههای ارز دیجیتال، کیف پول از کلید خصوصی برای امضای تراکنش استفاده میکند و دیگران میتوانند با اطلاعات عمومی، درستی امضا را بررسی کنند. کلید عمومی همچنین مبنای ساخت بسیاری از نشانیهای دریافت دارایی است. به همین دلیل شناخت آن کمک میکند بفهمیم یک تراکنش چگونه به حساب یا دارایی مشخصی مربوط میشود، بیآنکه صاحب کلید خصوصی آن را در اختیار شبکه بگذارد.
در این مقاله چه میخوانیم؟
واژه «عمومی» یعنی افشای این کلید، در حالت عادی، اختیار امضای تراکنش را به دیگران نمیدهد. با این حال، کلید عمومی و نشانی کیف پول یک چیز نیستند. آنچه کاربر برای دریافت دارایی کپی میکند معمولاً نشانی است؛ قالب و روش ساخت این نشانی به شبکه بستگی دارد.

کلید عمومی چگونه ساخته میشود؟
کیف پول ابتدا یک کلید خصوصی میسازد و با محاسبات رمزنگاری، کلید عمومی متناظر را از آن به دست میآورد. این رابطه یکطرفه طراحی شده است: به دست آوردن کلید عمومی از کلید خصوصی ممکن است، اما محاسبه کلید خصوصی از روی کلید عمومی با روشهای معمول عملی نیست. هر کس کلید خصوصی را در اختیار داشته باشد، میتواند امضاهای مربوط به آن جفت کلید را تولید کند. بنابراین محرمانه نگه داشتن کلید خصوصی برای کنترل دارایی ضروری است.
شکل دقیق کلیدها در همه شبکهها یکسان نیست. برای نمونه، بیتکوین و حسابهای معمولی اتریوم از رمزنگاری مبتنی بر منحنی بیضوی استفاده میکنند، اما روش تبدیل کلید عمومی به نشانی در این دو شبکه تفاوت دارد. کاربر معمولاً این محاسبات را انجام نمیدهد؛ کیف پول کلیدها را مدیریت میکند و نشانی قابل استفاده را نشان میدهد.
نقش کلید عمومی در امضای تراکنش
وقتی دارنده یک حساب تراکنشی را تأیید میکند، کیف پول دادههای لازم را با کلید خصوصی امضا میکند. شبکه سپس امضا را طبق قواعد همان بلاک چین بررسی میکند. کلید عمومی در این بررسی نقش دارد: امضای معتبر نشان میدهد که امضاکننده به کلید خصوصی متناظر دسترسی داشته و داده امضاشده پس از امضا تغییر نکرده است. خود کلید خصوصی برای این بررسی منتشر نمیشود.
اعتبار امضا تنها یکی از شرطهای پذیرش تراکنش است. شبکه باید شرایط دیگر، مانند قواعد مربوط به دارایی و ساختار تراکنش، را نیز بررسی کند. از سوی دیگر، امضا بهتنهایی نام یا هویت واقعی صاحب کیف پول را ثابت نمیکند؛ فقط رابطه رمزنگاری میان داده امضاشده و کلید را نشان میدهد.
تفاوت کلید عمومی با نشانی کیف پول
نشانی، شناسهای است که معمولاً برای دریافت دارایی به فرستنده داده میشود. این شناسه میتواند از کلید عمومی مشتق شود، ولی الزاماً خود کلید عمومی نیست. در یک شیوه رایج بیتکوین، کیف پول از هش کلید عمومی برای ساخت نشانی استفاده میکند. در اتریوم نیز نشانی حساب معمولی از هش کلید عمومی به دست میآید، اما روش و قالب آن با بیتکوین فرق دارد.
این تفاوت هنگام دریافت وجه اهمیت عملی دارد. کافی نیست رشتهای ظاهراً شبیه نشانی در اختیار داشته باشید؛ نشانی باید متعلق به کیف پول مورد نظر و با شبکه انتقال سازگار باشد. کلید عمومی نیز جای کلید خصوصی را نمیگیرد: داشتن نشانی یا کلید عمومی یک حساب، بهتنهایی امکان خرج کردن دارایی آن را فراهم نمیکند.
یک مثال ساده
فرض کنید سارا میخواهد برای نیما مقداری دارایی دیجیتال بفرستد. نیما نشانی دریافت را از کیف پولش میگیرد و برای سارا میفرستد. سارا تراکنش را به آن نشانی ثبت میکند. در این مرحله نیما لازم نیست کلید خصوصی خود را به سارا بدهد؛ نشانی، اطلاعات لازم برای مشخص شدن مقصد پرداخت را در قالب مورد قبول شبکه فراهم میکند.
مدتی بعد، نیما میخواهد دارایی دریافتی را منتقل کند. کیف پول او تراکنش خروجی را با کلید خصوصی متناظر امضا میکند. بررسیکنندگان شبکه با اطلاعات عمومی و قواعد آن شبکه، اعتبار امضا و سایر شرایط تراکنش را میسنجند. این مثال نشان میدهد چرا دریافت دارایی و اجازه خرج کردن آن دو کار جداگانهاند.
کاربردهای عملی
کاربرد اصلی کلید عمومی در این حوزه، کمک به تأیید امضای تراکنش و فراهم کردن مبنایی برای نشانی دریافت است. همین سازوکار اجازه میدهد کیف پولی فقط نشانیها را برای دریافت یا پیگیری پرداختها آماده کند، در حالی که ابزار امضاکننده کلیدهای خصوصی را جداگانه نگه دارد. چنین جداسازیای در طراحی بعضی کیف پولها و سامانههای پرداخت کاربرد دارد.
امضای پیام نیز از همین ایده استفاده میکند. برای نمونه، کاربر میتواند پیامی را در کیف پول امضا کند تا یک برنامه بررسی کند آیا او کلید مربوط به یک حساب را کنترل میکند یا نه. در کاربردهای مرتبط با توکن یا قرارداد هوشمند هم حساب کاربر ممکن است با امضا اجازه انجام عملی را بدهد. معنی و نتیجه هر امضا به متن پیام و قواعد برنامه وابسته است.
محدودیتها و نکات امنیتی
عمومی بودن کلید به معنی عمومی بودن کلید خصوصی نیست. اگر کلید خصوصی یا اطلاعات بازیابی کیف پول در اختیار دیگری قرار گیرد، او ممکن است بتواند تراکنش امضا کند. برعکس، گم شدن راه دسترسی به کلید خصوصی میتواند استفاده از دارایی را ناممکن کند. نگهداری امن اطلاعات بازیابی، بخشی از مسئولیت صاحب کیف پول است.
کلید عمومی همچنین حریم خصوصی کامل ایجاد نمیکند. در شبکههایی که تراکنشها آشکارند، استفاده مکرر از یک نشانی میتواند پیگیری پرداختهای مرتبط با آن را آسانتر کند. افزون بر این، امضای معتبر تضمین نمیکند که مقصد انتقال درست انتخاب شده یا کاربر پیام امضاشده را درست فهمیده است. پیش از تأیید، باید نشانی مقصد، شبکه و متن درخواست امضا را در خود کیف پول بررسی کرد.

