در این درس، نحوه عملکرد واقعی امضای دیجیتال در بیت کوین و سایر ارزهای دیجیتال را بررسی خواهیم کرد.
برای رسیدن به این مرحله، ابتدا باید چندین مفهوم فنی را بیاموزیم، زیرا آنها “بلوک های سازنده” مورد نیاز برای ایجاد امضای دیجیتال هستند:
- توابع درهم سازی (Hash functions)
- کلیدهای خصوصی و عمومی
- رمزنگاری نامتقارن
اگر با این مفاهیم آشنا نیستید، آنها در درس های قبلی به روشی مبتدی پسند توضیح داده شده اند. برای اطلاعات بیشتر روی لینک های بالا کلیک کنید.
چگونه یک امضای دیجیتال ایجاد می شود؟
بیایید به صورت گام به گام نحوه ایجاد یک امضای دیجیتال را بررسی کنیم:
- ایجاد پیام تراکنش: هنگامی که می خواهید بیت کوین ارسال کنید، کیف پول شما یک پیام تراکنش ایجاد می کند. این پیام حاوی اطلاعاتی مانند مقدار بیت کوین هایی که می خواهید ارسال کنید و آدرس گیرنده است.
- محاسبه Hash پیام: این پیام از طریق یک تابع درهم سازی (Hash function) اجرا می شود. تابع درهم سازی خروجی به نام “Hash پیام” یا به طور خلاصه “Hash” تولید می کند.
- امضای Hash پیام با کلید خصوصی: سپس این Hash پیام با کلید خصوصی شما رمزگذاری می شود.
- ایجاد امضای دیجیتال: Hash پیام رمزگذاری شده به “امضای دیجیتال” تبدیل می شود.
در اینجا یک نمودار کلی از این فرآیند وجود دارد:
بنابراین در پایان این فرآیند، کیف پول شما دو «مورد» ایجاد کرده است:
- پیام تراکنش
- امضای دیجیتال (یک Hash رمزگذاری شده از پیام تراکنش)
تا این مرحله، هنوز چیزی به شبکه بیت کوین ارسال نشده است.
چرا به پیام تراکنش برای امضای دیجیتال نیاز است؟
توجه کنید که خود پیام تراکنش به عنوان یک “ماده اولیه” برای ایجاد امضای دیجیتال مورد نیاز است. بنابراین شما فقط از کلید خصوصی خود برای ایجاد امضای دیجیتال استفاده نمی کنید … بلکه از کلید خصوصی خود و Hash پیام تراکنش استفاده می کنید.
این بدان معناست که شما نمی توانید از این امضای دیجیتال برای تراکنش دیگری استفاده کنید. اگر سعی کنید از این امضای دیجیتال در تراکنش دوم استفاده کنید، توسط شبکه بیت کوین رد می شود زیرا امضای دیجیتال صرفاً بر اساس داده های تراکنش اول است. هر امضای دیجیتال برای یک تراکنش خاص منحصر به فرد است.
چگونه یک امضای دیجیتال در بیت کوین تأیید می شود؟
برای اینکه بیت کوین را از یک آدرس بیت کوین خاص خرج کنید، باید “مالکیت” (یا: دانش) کلید خصوصی که با کلید عمومی مرتبط با آن آدرس جفت شده است را ثابت کنید. اما شما می خواهید این کار را بدون نیاز به فاش کردن کلید خصوصی خود انجام دهید.
یک امضای دیجیتال چیزی است که شما می توانید برای اثبات اینکه کلید خصوصی مرتبط با یک کلید عمومی را می دانید، بدون اینکه کلید خصوصی واقعی را فاش کنید، استفاده کنید.
ببینیم چگونه کار می کند:
- ارسال اطلاعات به شبکه بیت کوین: هنگامی که یک تراکنش بیت کوین را آغاز می کنید، نرم افزار کیف پول شما در واقع سه “مورد” را به شبکه بیت کوین ارائه می دهد: پیام تراکنش اصلی، امضای دیجیتال و کلید عمومی شما (که به آدرسی که در آن بیت کوین مورد نظر شما در حال حاضر ذخیره شده است، مرتبط است).
- بررسی اطلاعات توسط گره های شبکه: هنگامی که یک گره بیت کوین این “موارد” را دریافت می کند، آنها را جدا می کند.
- تطبیق Hash پیام تراکنش: گره، پیام تراکنش اصلی را دریافت کرده و آن را از طریق همان تابع درهم سازی که شما قبلا استفاده کرده اید، اجرا می کند. (تمام نرم افزارهای بیت کوین از یک تابع درهم سازی استفاده می کنند.) در مورد امضای دیجیتال، از کلید عمومی که ارائه کرده اید برای رمزگشایی آن استفاده می کند.
- مقایسه Hash ها: سپس هر دو Hash با هم مقایسه می شوند.
- نتیجه گیری از مقایسه Hash ها: آیا هر دو Hash کاملاً مطابقت دارند؟ اگر هر دو Hash مطابقت داشته باشند، این ثابت می کند که شما مالک واقعی بیت کوینی هستید که می خواهید ارسال کنید.
در اینجا یک نمودار کلی از این فرآیند وجود دارد:
نکات کلیدی:
- اثبات هویت: توانایی رمزگشایی با کلید عمومی، هویت فرستنده را ثابت می کند. در مرحله 3، پس از اینکه یک گره بتواند امضای دیجیتال را رمزگشایی کند، این “هویت” شما را ثابت می کند. به یاد داشته باشید، از آنجایی که یک کلید خصوصی و یک کلید عمومی از نظر ریاضی به هم مرتبط هستند، اگر بتوانید پیامی را با کلید عمومی “من” رمزگشایی کنید، به این معنی است که من آن را با کلید خصوصی “خودم” رمزگذاری کرده ام. اگر نمی توانستید پیام را رمزگشایی کنید، به این معنی است که توسط کلید خصوصی شخص دیگری رمزگذاری شده است. و این بدان معناست که پیام از من نیامده است.
- تطبیق Hash ها برای اثبات عدم تغییر پیام: در مرحله 6، بررسی اینکه آیا هر دو Hash دقیقاً مطابقت دارند، تضمین می کند که پیام اصلی “تغییر” نیافته است. دانستن این نکته مهم است زیرا برخلاف امضای دیجیتال که رمزگذاری شده است، پیام تراکنش اصلی به صورت متن ساده است زیرا همه تراکنش های بیت کوین برای همه قابل مشاهده هستند. به یاد داشته باشید، هر تغییر جزئی Hash کاملاً متفاوتی ایجاد می کند. بنابراین اگر کسی پیام تراکنش اصلی را در حین ارسال به یک گره رهگیری و اصلاح کند (مثلاً برای ارسال بیت کوین به آدرس خود)، زمانی که پیام از طریق تابع درهم سازی عبور کند، Hash کاملاً متفاوتی از امضای دیجیتال ایجاد می کند.
همانطور که یک امضای دست نوشته یک شخص را به یک سند خاص مرتبط می کند، یک “امضای دیجیتال” با استفاده از رمزنگاری … به طور رمزنگاری … هویت را به یک پیام خاص مرتبط می کند.
خلاصه:
اکنون که نحوه ایجاد و تأیید امضای دیجیتال را درک کردید، در اینجا یک نمای کلی از آنچه “امضای” یک تراکنش واقعاً به معنای آن است و چگونه “امضای دیجیتال” فرستنده برای تأیید مالکیت بیت کوین هایی که می خواهد ارسال کند استفاده می شود:
- ایجاد پیام تراکنش: پیام تراکنش شامل اطلاعاتی مانند مقدار بیت کوین هایی که می خواهید ارسال کنید و آدرس گیرنده است.
- محاسبه Hash پیام: Hash پیام از طریق تابع درهم سازی محاسبه می شود.
- امضای Hash پیام با کلید خصوصی: Hash پیام با کلید خصوصی فرستنده رمزگذاری می شود.
- ارسال پیام تراکنش، امضای دیجیتال و کلید عمومی به شبکه بیت کوین: نرم افزار کیف پول فرستنده این سه مورد را به گره های شبکه بیت کوین ارسال می کند.
- تأیید امضای دیجیتال توسط گره های شبکه: گره های شبکه Hash پیام را با استفاده از پیام تراکنش و کلید عمومی فرستنده بازسازی می کنند. سپس Hash پیام بازسازی شده را با Hash پیام امضا شده توسط فرستنده مقایسه می کنند. اگر دو Hash مطابقت داشته باشند، امضای دیجیتال تأیید می شود و تراکنش معتبر تلقی می شود.
مزایای استفاده از امضای دیجیتال در بیت کوین:
- امنیت: امضای دیجیتال به ایمن سازی تراکنش های بیت کوین و جلوگیری از تقلب کمک می کند.
- احراز هویت: امضای دیجیتال هویت فرستنده تراکنش را تأیید می کند.
- عدم انکار: امضای دیجیتال به فرستنده اجازه می دهد تا ثابت کند که یک تراکنش را ارسال کرده است.
امضای دیجیتال نقش مهمی در ایمن و کارآمد نگه داشتن شبکه بیت کوین ایفا می کند.
آیا سوال دیگری دارید؟