وانفینکس

امضای دیجیتال (Digital Signature)

3 آبان 1405

318

زمان تقریبی مطالعه: 3 دقیقه

امضای دیجیتال نتیجه یک فرایند رمزنگاری است که به دیگران امکان می‌دهد بررسی کنند داده‌ای با کلید خصوصیِ مرتبط با یک کلید عمومی امضا شده و پس از امضا تغییر نکرده است. در بسیاری از تراکنش‌های کریپتوکارنسی، کیف پول با امضای داده‌های تراکنش نشان می‌دهد دارنده کلید خصوصی مربوط، آن را مجاز کرده است. شبکه برای این بررسی به دیدن خود کلید خصوصی نیاز ندارد.

امضای دیجیتال شبیه تصویر امضای دست‌نویس نیست. هر امضا به داده‌ای که برای امضا انتخاب شده وابسته است؛ بنابراین تغییر در آن داده می‌تواند اعتبار امضا را از بین ببرد. این ویژگی به بررسی منشأ و یکپارچگی داده کمک می‌کند، اما به‌تنهایی هویت واقعی صاحب کلید یا درست بودن تصمیم او را ثابت نمی‌کند.

advertise blog post start

امضای دیجیتال چگونه کار می‌کند؟

کار از یک جفت کلید مرتبط آغاز می‌شود: کلید خصوصی باید محرمانه بماند و کلید عمومی برای بررسی امضا به کار می‌رود. هنگام امضا، نرم‌افزار داده مشخصی را طبق قواعد همان سامانه پردازش می‌کند و با کلید خصوصی امضایی می‌سازد. بررسی‌کننده سپس با استفاده از داده، امضا و کلید عمومی مربوط، معتبر بودن آن را می‌سنجد. نتیجه معتبر یعنی امضا با آن کلید عمومی و داده بررسی‌شده سازگار است.

در این فرایند معمولاً از تابع هش هم استفاده می‌شود تا داده برای عملیات امضا به شکلی با طول مشخص تبدیل شود. جزئیات دقیق، از جمله اینکه کدام بخش‌های یک تراکنش امضا می‌شوند، به پروتکل و نوع تراکنش بستگی دارد. به همین دلیل نمی‌توان فرض کرد همه شبکه‌ها امضا را به یک شکل می‌سازند یا بررسی می‌کنند.

یک مثال ساده

فرض کنید سارا می‌خواهد مقداری رمزارز را به نشانی کیف پول رضا بفرستد. او در کیف پولش نشانی گیرنده و مقدار انتقال را وارد می‌کند. کیف پول، داده‌های لازم برای تراکنش را با کلید خصوصی سارا امضا می‌کند و تراکنش امضاشده به شبکه فرستاده می‌شود. بررسی‌کنندگان شبکه می‌توانند طبق قواعد آن شبکه بسنجند که امضا برای داده‌های ارائه‌شده معتبر است و شرایط خرج کردن دارایی برقرار است.

اگر مقدار یا گیرنده در بخشی از تراکنش که امضا آن را پوشش می‌دهد تغییر کند، امضای قبلی دیگر با داده جدید سازگار نخواهد بود. البته اعتبار امضا به معنی انجام شدن انتقال نیست. تراکنش همچنان باید سایر قواعد شبکه را رعایت کند و در فرایند ثبت تراکنش پذیرفته شود.

کاربرد در شبکه‌های رمزارزی

امضای دیجیتال یکی از ابزارهای بررسی مجوز خرج کردن دارایی در بلاک چین است. گره‌های شبکه می‌توانند امضای یک تراکنش را بدون دریافت کلید خصوصی بررسی کنند. این امکان به کاربر اجازه می‌دهد درخواست انتقال را از طریق شبکه منتشر کند، در حالی که ابزار لازم برای ساخت امضا نزد او می‌ماند.

امضا می‌تواند برای مجاز کردن تعامل با قرارداد هوشمند نیز به کار رود؛ برای مثال، کاربر تراکنشی را امضا می‌کند که اجرای عملی مشخص را درخواست می‌کند. امضا نشان می‌دهد کلید مربوط آن درخواست را تأیید کرده است. نتیجه اجرای قرارداد به محتوای درخواست، وضعیت شبکه و قواعد خود قرارداد بستگی دارد.

امضا چه چیزی را ثابت نمی‌کند؟

تأیید رمزنگاریِ امضا فقط رابطه میان داده امضاشده و کلید مربوط را بررسی می‌کند. اگر معلوم نباشد کلید عمومی واقعاً به چه شخصی تعلق دارد، از اعتبار امضا نمی‌توان هویت واقعی او را نتیجه گرفت. همچنین ممکن است صاحب کلید، جزئیات درخواست را اشتباه خوانده باشد یا در اثر فریب آن را تأیید کرده باشد. امضای معتبر چنین خطاهایی را آشکار نمی‌کند.

امضای دیجیتال محتوای تراکنش را پنهان نمی‌کند و به‌تنهایی جلوی ارسال دوباره داده امضاشده را نمی‌گیرد. شبکه‌ها برای مدیریت این موضوع و جلوگیری از ثبت تراکنش‌های نامعتبر، قواعد دیگری نیز دارند. امضا همچنین تضمین نمی‌کند که گیرنده درست انتخاب شده، دارایی کافی وجود دارد یا تراکنش حتماً ثبت خواهد شد.

محدودیت‌ها و نکته‌های عملی

امنیت امضا به حفاظت از کلید خصوصی وابسته است. کسی که به این کلید دسترسی پیدا کند، ممکن است بتواند درخواست‌هایی را به نام دارنده آن امضا کند. در مقابل، گم کردن کلید خصوصی می‌تواند توانایی ساخت امضا برای دارایی‌های تحت کنترل آن را از بین ببرد. به همین دلیل، نگهداری امن کلید و بررسی جزئیات درخواست پیش از تأیید آن اهمیت دارد.

متن قابل‌نمایش در کیف پول همیشه برای فهم کامل اثر یک امضا کافی نیست، به‌ویژه هنگام تعامل با برنامه‌ها و قراردادها. کاربر باید تا جایی که ابزارش اجازه می‌دهد، گیرنده، مقدار و نوع عملی را که تأیید می‌کند بررسی کند. امضای دیجیتال ابزار بررسی مجوز و یکپارچگی داده است؛ پیامد عملی آن به داده امضاشده و قواعد سامانه‌ای بستگی دارد که امضا را می‌پذیرد.

آیا مطالعه این مقاله برای شما مفید بود؟!

advertise blog post end