learnmeabitcoin

آموزش ساده مفاهیم مهم در بیت کوین


امضاهای دیجیتال (امضا و راستی‌آزمایی)

اثبات این که امضا و کلید عمومی با یک کلید خصوصی یکسان تولید شدن.

فهرست




امضا کردن

یه امضای دیجیتال دو جزء داره:

۱- جزء تصادفی

۲- جزء مربوط به امضا (کلید خصوصی+داده‌ی تراکنشی که داریم امضای دیجیتالی رو براش ایجاد می‌کنیم.)


۱- جزء تصادفی

با تولید یه عدد تصادفی شروع می‌کنیم؛ و بعد، این عدد رو با نقطه‌ی تولیدکننده‌ی خم بیضوی (نقطه‌ای که برای تولید کلید عمومی هم استفاده می‌شه) ضرب می‌کنیم.



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





به اختصار بهش می‌گیم «r».





عملا این کار شبیه تولید یه کلید خصوصی و یه کلید عمومیه. با این تفاوت که این‌جا داریم این کار رو می‌کنیم که به امضای دیجیتال‌مون یه بخش تصادفی اضافه کرده باشیم.

پس حالا نصف امضای دیجیتال‌مون آماده‌ست؛ اما کلید خصوصی‌مون رو تا اینجا برای هیچ کاری استفاده نکردیم. اینجاست که می‌رسیم به نیمه‌ی دوم...


۲- جزء مربوط به امضا

اول، کلید خصوصی‌مون رو برمی‌داریم و در r (مختصات x از نقطه‌ی تصادفیِ روی خم، که تازه پیدا کردیم) ضرب می‌کنیم.





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



افزودن هش تراکنش، باعث می‌شه که امضا به یه تراکنش وصل بشه (و قابل استفاده برای تراکنش دیگه‌ای نباشه.)



در نهایت، به عنوان یه حرکت مفید، همه‌ی این‌ها رو به عدد تصادفی اولیه‌مون تقسیم می‌کنیم:





و… هجی مجی لاترجی! جزء حیاتی «امضا» از امضای دیجیتال‌مون آماده‌ست. به اختصار به این بخش می‌گیم «s».



Mr. D Signature.



و حالا بخش جالب ماجرا …

اگه کسی از ما بخواد که اثبات کنیم کلید خصوصی مربوط به یه کلید عمومی رو می‌دونیم، می‌تونیم امضای دیجیتال‌مون (r و s)‌ رو ارائه کنیم.

اما چطوری یه نفر می‌تونه از این اطلاعات به عنوان اثبات استفاده کنه؟


راستی‌آزمایی

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





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


نقطه‌ی ۱

پیام رو به s‌ تقسیم می‌کنیم. اولین نقطه، نقطه‌ی تولیدکننده است که در این مقدار ضرب شده:





نقطه‌ی ۲

r رو به s تقسیم می‌کنیم.

دومین نقطه کلید عمومیه که در این مقدار ضرب شده:





و در آخر …

اگه این دو تا نقطه رو با هم جمع کنیم، یه نقطه‌ی سومی روی خم به دست میاریم:





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






منبع

شاد زی..

اینم آخرین قسمت./