در مقاله قبلی در مورد اجماع در شبکه بیت کوین بحث کردیم.
ما گفتیم که امنیت بیشتری وجود دارد که مانع از دریافت وجوه بازیگران بد از کیف پول شخص دیگری می شود. این در این مقاله توضیح داده خواهد شد.
وجوه در کیف پول دیجیتال نگهداری می شود. یا ترجیح می دهم بگویم که توسط کیف پول های دیجیتال ردیابی می شود. یک تصور غلط رایج وجود دارد که سکه های شما در کیف پول شما ذخیره می شود. سکه ها (یا بهتر است بگوییم اعداد) در واقع به صورت معاملات در بلاک چین ذخیره می شوند.
کیف پول دیجیتال چیزی جز یک قطعه کد نیست که تعادل مالک را با اسکن تراکنش ها در بلوک های بلاک چین ردیابی و محاسبه می کند.
معاملات ساختارهایی در ساختار بلوک هستند. کل زنجیره ای از بلوک ها بر روی هارد دیسک شرکت کنندگان بیت کوین ذخیره می شود.
یکی از ویژگی های اصلی کیف پول این است که معاملات را از طرف مالک خود امضا کنید.
کمی شبیه امضاهای دنیای واقعی هستند اما بسیار قوی ترند. امضاهای دیجیتال می توانند:
- ثابت کنید که صاحب یک حساب تنها کسی است که هزینه های بودجه خود را مجاز می داند
- اثبات مجوز غیرقابل انکار است (عدم انکار)
- ثابت کنید که معامله پس از امضا توسط کسی قابل تغییر نبوده و نمی تواند باشد
کلیدهای خصوصی / عمومی و نشانیهای بیت کوین
برای رسیدن به این هدف هر صاحب حساب در شبکه باید یک جفت کلید عمومی / خصوصی ایجاد کند. به عنوان یک " جفت " در نظر گرفته می شوند زیرا کلید عمومی از کلید خصوصی گرفته شده است. کلید خصوصی شما چیزی جز یک عدد نیست! یک عدد 256 بیتی بین 0 تا 22 (به یاد داشته باشید در دنیای دیجیتال همه چیز در بیت نشان داده شده است). این طیف عظیمی از اعداد است که باعث می شود 2 نفر کلیدهای مشابه را دریافت کنند (10 کلید اصلی در دسترس است).
این کلیدها بر اساس توابع ریاضی هستند که خاصیت خاصی دارند: به راحتی محاسبه می شوند اما محاسبه معکوس دشوار است.
کلید عمومی نتیجه ریاضی کلید خصوصی مرتبط است. حتی اگر تابع ریاضی ایجاد شده را بدانید نمیتوانید کلید خصوصیاش را استنباط کنید.
کلید عمومی شما از کلید خصوصی شما با استفاده از ضرب منحنی بیضوی مشتق شده است. نشانی شما از کلید عمومی شما گرفته شده است. هر دوی این اقدامات برگشت ناپذیر هستند. منبع
خوب است در اینجا ذکر کنید که نشانی بیت کوین شما از طریق استفاده از یک هش رمزنگاری یک طرفه از کلید عمومی شما گرفته شده است. نشانی شما راهی برای معامله با بقیه صاحبان بیت کوین است. این فقط نشان دهنده مقصدی است که بیت کوین باید ارسال شود.
راه شما کلید خصوصی خود را ایجاد هر چند فوق العاده مهم است. شما هرگز شماره 1 را به عنوان کلید خصوصی خود انتخاب نمی کنید. این خیلی خطرناک است! هر کسی با استفاده از همان توابع ریاضی می تواند نشانی بیت کوین را از یک کلید خصوصی استنباط کند. و اگر نشانی بیت کوین صاحب سکه باشد به راحتی قابل دزدیده شدن است.
در حقیقت, اگر شما یک اسکریپت است که تلاش می کند هر تعداد (کلید خصوصی), شمارش از تعداد 1 به 100,000, شما را پیدا خواهد (در چند ثانیه) ده ها تن از نشانی های بیت کوین قابل استفاده! به منظور پیدا کردن اگر یک نشانی قابل استفاده است (نشانی داشتن برخی از سکه ها در شبکه بیت کوین), یکی به از طریق کل بلاکچین تکرار و اگر یک مرجع به حساب پیدا شده است, رونق! با استفاده از این تعداد ضعیف (کلید خصوصی) می توان تمام سکه ها را سرقت کرد.
در واقع نشانی بیت کوین مشتق شده از کلید خصوصی شماره 1 قابل استفاده است: 1هنا6کی4جز2وونکسل497م43کیکسهوف6کیلومتر.
اگر روی لینک کلیک کنید خواهید دید که هر چیزی که وارد این نشانی می شود در عرض چند ثانیه پس گرفته می شود! به محض ورود پول, کسی می تواند به سرعت یک معامله ایجاد کند (با استفاده از نشانی خود به عنوان مقصد), با کلید خصوصی شماره 1 امضا کنید, و به بقیه شبکه تبلیغ کنید!
عالیه! چرا فقط هر کس همان سپس?
دلیل این امر این است که بررسی همه شماره های کلید خصوصی ممکن کار بسیار دشواری است. به عنوان مثال برای پنجاه ابر رایانه به حدود 3×10 درجه 1 سال نیاز دارد (که یک کوینتیلیون کلید در ثانیه را بررسی می کنند!) برای تخلیه کل فضای کلید 22 متری.
الگوریتم های تولید کلید خصوصی ضعیف
برخی از کیف پول ها برای ایجاد کلیدهای خصوصی (اساسا اعداد) با استفاده از رمزهای عبور توسط انسان استفاده می شوند. با این وجود هکرها به راحتی می توانند رمزهای عبور ضعیف یا متداول را خیلی سریع بررسی کنند (این محدوده بسیار کمتر است).
نمونه هایی از حساب ها با کلیدهای خصوصی به سرقت رفته (مشتق شده از رمزهای عبور ضعیف):
اس دی — 1 گرم4متی5جلتردج4هم6مکیکاقفمزووجلفکس3 گربه — 162ترزودگلونکسمومیجسایبفیتب4ق8تمام سلام — 1هوسفیموقتیرمر7س3جدقیقمگوکساک37 رمز عبور — 16گا2نف1نفوقپاوک7استکادوودیجاو — 1ساعت کوکتیمپبتز8ا5زکوییباولردکسی فوکسی2مقدفت3وسیسیدپیکسل4گید1مقایس8لکی 1 — 12اکرنهپفدهدسبدد9رسن74وزل3774پیکسل بستنی–1کیکسپوک4دو8د7اکدبج4بج8بیکدبج8بیکدبج3 الفانومریکو — 19جاسلفدرکسوتسا 79فگوندب2نو5 متری [رشته خالی] — 1 هرتزوکیازفتسدو6اککسپ45اژدیزن
امضاهای دیجیتال
روند امضای معاملات شامل یک تابع ریاضی است که هم به پیام (اطلاعات معامله) و هم به کلید خصوصی شما بستگی دارد.
امضا (پیام, کلید خصوصی) = امضا
نتیجه یک امضا است که می تواند با استفاده از کلید عمومی و پیام (اطلاعات معامله) تایید شود.
بررسی(پیام, امضا, کلید عمومی) = [درست یا غلط]
همه 3 با هم, خصوصی, کلید عمومی و امضا ریاضی همبستگی.
فرایند تایید بدون شک تعیین می کند که معامله فقط می تواند از طرف شخصی با کلید خصوصی باشد که با کلید عمومی او مطابقت دارد. بنابراین تمام شرکت کنندگان شبکه دریافت یک معامله اطمینان دارند که تنها توسط صاحب کلید خصوصی تایید شده است!
مالک همچنین می تواند اطمینان حاصل کند که هیچ کس نمی تواند قسمت های امضا شده معامله خود را تغییر دهد. این به این دلیل است که یک تغییر ساده معامله او را باطل می کند و بنابراین توسط همه شرکت کنندگان شبکه کاهش می یابد.
اهمیت تصادفی بودن در امضاها
هکرها با تمرکز بر مولدهای اعداد تصادفی ضعیف که برای تراکنش ها استفاده می شوند همچنان می توانند کنترل سکه های نشانی را در دست بگیرند.
مبنای ریاضی مورد استفاده برای ایجاد امضای پیام از یک عدد تصادفی استفاده می کند (به فرمول زیر مراجعه کنید). اگر همان عدد تصادفی استفاده شده است به ثبت نام دو پیام های مختلف (معاملات), سپس کسی, با استفاده از دو امضا منجر می توانید تعداد کلید خصوصی استخراج.
فرمول ریاضی تولید امضا از این طریق محاسبه می شود:
س = ک-1 (هش(متر) + دا * ر) وزارت دفاع پ جایی که: ک عدد تصادفی است ر است ایکس مختصات شکل مشتق شده عدد تصادفی ک دا امضای کلید خصوصی است م داده های تراکنش است پ ترتیب اصلی منحنی بیضوی است
مردم در واقع بودجه به دلیل استفاده مجدد سهوی از این عدد تصادفی به سرقت رفته بود.
برای جلوگیری از این ضعف کیف پولها باید از الگوریتم استاندارد صنعت برای مقداردهی اولیه قطعی این عدد تصادفی که در شماره 6979 تعریف شده پیروی کنند.
حالا که تمام اطلاعات لازم را در ذهن دارید بیایید سفر یک معامله را طی کنیم :
- کیف پول شما برنامه ای است که به عنوان رابط کاربری عمل می کند. تعادل شما را نشان می دهد و هنگام ارسال پول از شما اجازه می گیرد. برای انجام این کار معاملات ورودی و خروجی شما را ردیابی می کند و پول قابل خرج شما را جمع می کند و معاملات را از طرف شما ایجاد و امضا می کند.
- شما با تعیین مقدار و مقصد مالک بیت کوین شروع می کنید. بر اساس این اطلاعات کیف پول شما یک معامله (طبق پروتکل بیت کوین) ایجاد می کند و با کلید خصوصی شما امضا می کند.
- کیف پول شما شروع به پخش تراکنش جدید شما (حاوی اطلاعات تراکنش, امضا و کلید عمومی) به شبکه بیت کوین از طریق همتایان فوری خود می کند, که تراکنش را به همسالان خود تحویل می دهند, و غیره. در چند ثانیه, کل شبکه تایید کرده است و به تصویب رسید در معامله خود را به هر گره دیگر در شبکه بیت کوین.
4. هر شرکت کننده در شبکه که تراکنش شما را دریافت می کند اعتبار خود را بررسی می کند. بررسی می کنند که امضا خوب است یا خیر, اگر خطایی وجود دارد, خواه سعی در انجام هزینه مضاعف داشته باشید و غیره. اگر تراکنش شما هیچ یک از معیارها را با شکست مواجه کند به طور کامل توسط شرکت کننده نادیده گرفته می شود. در غیر این صورت شرکتکننده تراکنش شما را در یک حافظه موقت به نام ممپول نگه میدارد.
5. معاملات با کارمزد کمتر از متغیر ماینرلایتکسفی (0.00001 بیت کوین) به صورت رایگان در نظر گرفته می شوند و فقط در صورت وجود فضای خالی در ممپول ارسال می شوند. اگر کارمزد پیوست شده کمتر از میانگین کارمزد تراکنش های رقیب باشد (که معمولا توسط کیف پول شما محاسبه می شود اما می توانید هزینه ها را نیز مشخص کنید) ماینرها/استخرهای معدن هنگام ایجاد بلوک اولویت کمتری به تراکنش شما می دهند.
6. در نهایت تراکنش شما به استخرهای معدن و کیف پول گیرنده تراکنش شما می رسد. دومی معامله جدید را در کیف پول خود می بیند و یک کپی از این را به طور نامحدود ذخیره می کند اما به عنوان تایید صفر ظاهر می شود. استخرهای معدن با جمع کردن معاملات خارج از ممپول یک بلوک نامزد ایجاد می کنند. بسته به هزینه شما در نهایت شما را در یک بلوک بعدی قرار می دهند.
7. این استخر کار جستجوی نانسی را که سطح دشواری بلوک را برای استخراج کنندگان استخر خود ارضا می کند تقسیم می کند. معدنچیان چیزی در مورد معامله شما نمی دانند. کار خود را به بحران اعداد, برای بررسی اعتبار بلوک نیست, به عنوان یک کار برای استخر است.
8. در نهایت تراکنش شما در یک بلوک گنجانده می شود که حل می شود. از طریق شبکه بیت کوین پخش می شود و همه در بلاک چین(های) محلی خود ذخیره می کنند (اگر درگیری های معاملاتی وجود داشته باشد بلاک چین موجود خود را چنگ می زنند و هر دو زنجیره بلوک را حفظ می کنند). در حال حاضر معامله خود را دارای یک تایید (یک بلوک معتبر پذیرفته شده توسط شبکه).
9. روند ایجاد بلوک ادامه دارد و هرچه بلوک های بیشتری در بالای بلوکی که تراکنش شما گنجانده شده است ایجاد می شود تاییدیه های بیشتری کسب می کند. هنگامی که به 6 یا بیشتر تایید می رسد, در نظر گرفته می شود به طور کامل تایید. هرچه تاییدیه ها بیشتر شود باطل کردن معامله با حمله سخت تر می شود.
معاملات ساختارهای بسیار پیچیده تری هستند. در پشت صحنه بسیار متفاوت به نظر می رسند. ورودی ها و خروجی هایی دارند که با اسکریپت هایی همراه هستند که مقادیر بیت کوین را قفل و باز می کنند.